Elias Bellouti
FR
← Back to projects

Personal project · Car market monitoring

CarHunter : used car purchase research

A listing price does not tell me whether a car is worth visiting. I created CarHunter to compare offers with my budget, likely repairs and the information still missing from the description. It tracks listing changes and reserves more expensive analysis for promising vehicles. My work covers the collection library, analysis graph, persistent records and contact scheduling. Collection and initial screening have run unattended on my infrastructure; the wider workflow is designed to prepare an informed purchase decision.

Collection across three marketplaces and initial screening ran unattended; deeper analysis and contact planning are implemented.

Proprietary code, private repository.

Car listings are collected and screened to prepare a buying dossier: price, maintenance and questions for the seller.
Car listings are collected and screened to prepare a buying dossier: price, maintenance and questions for the seller. Open full-size image ↗

Preparing a purchase and a visit

I started CarHunter for my own used-car search. Comparing advertised prices helped, but an apparently attractive offer could involve immediate repairs, an unclear maintenance history or expensive running costs. I wanted to bring those factors together before spending time on a vehicle.

I designed the analysis around acquisition cost, unresolved risks and questions for the seller. Planned outputs include negotiation points and a checklist for the visit. They help prepare the checks I need to make with the seller and in person, rather than treating a listing description as a complete assessment of the car.

Collecting meaningful changes

The collectors cover LeBonCoin, LaCentrale and AutoScout24. I developed a shared library for field definitions, searches, saved results and site-specific behaviour, using Scrapling to access the pages.

Listings are normalised and stored in SQLite with their processing state. A content fingerprint distinguishes new, changed and unchanged offers, allowing a price reduction to reopen a rejected listing. Previously collected details are reused to avoid repeatedly requesting the same pages. The organisation separates collection mechanisms from automotive rules; a second domain for bicycles reuses the collection capability without inheriting the entire car analysis workflow.

Spending analysis effort progressively

LangGraph organises three analysis levels. The first performs a quick economic screen. The next examines maintenance, costs, risks and missing information. The final level is designed to produce a detailed report once the essential questions have been resolved.

I separated model judgement from calculations. For market research, the model chooses criteria for comparable vehicles; a dedicated tool collects listings and calculates statistics. These are advertised prices, interpreted against the characteristics of the selected cars. SQLite retains each dossier’s progress and information about the models involved, while LangSmith makes the individual analyses inspectable. Models can differ by stage, matching the depth of work to the interest of the offer.

Planning the next useful action

I also developed a contact planner for Hermès, my agent environment. Rules select the dossiers needing attention, respect quiet hours and schedule reply checks and follow-ups before invoking the agent. Seller responses are intended to feed the analysis again without repeating questions that have already been resolved.

As of 10 September 2026, collection and initial screening had run unattended. I had used and then paused the intermediate analysis; the complete final level and seller messaging had not yet been used. The project remains in development. Its repository is private, and this account distinguishes the wider system I built from the part I have operated.

Skills applied in this project

AI agent engineering

I organised analysis into stages to help choose a vehicle: acquisition cost, repairs and information still to check.

Software architecture

I separated collection from the automotive domain, then distinguished model judgement, calculations and persistent assessment tracking.

← Back to projects