Pricing auction cars before the timer ends
A tool for a small Omaha dealership that reads an auction car's photos, lists the parts it needs and prices the repair as a range in 30 seconds.
- 30 s
- per appraisal, down from about 10 minutes
- 16 of 21
- part numbers matched a real dealer quote, up from 5
- 140
- automated tests
- ~$0.05
- of AI per car

At a glance
- Role
- Operations Lead and Developer
- Organization
- RBC Motors, Omaha
- Dates
- May 2024 – present
- Status
- In beta testing at the dealership
- Stack
- Python · FastAPI · Claude API · httpx · BeautifulSoup · JavaScript
- Hard skills
- Python · JavaScript · FastAPI · Claude vision API · Monte Carlo simulation · Tests from real catalog pages
- Soft skills
- Turning a voice memo into a spec · Explaining risk to non-technical buyers · Working inside a fixed scraping budget
- Why it matters
- A small lot can price a damaged car while the auction is still running, without a team of appraisers.
Problem
Small dealers in Omaha buy cars at insurance auctions like IAAI and Copart, bidding against companies with whole appraisal teams. Pricing one damaged car by hand means finding every part it needs, looking each one up and adding labor. That took about 10 minutes a car. In a timed auction, that’s the difference between bidding and watching.
The owner’s brief was a voice memo: one input box, usable by anyone from 12 to 81, under a minute a car. The tool informs the bid; the buyer decides.
What I built
It takes an auction link, stock number or VIN. I send the photos to Claude once per car and get back structured JSON: each damaged part, whether to replace, repair or inspect it, and which photos show it.
The rest is deterministic code I wrote. Rules expand visible damage into the full parts list: on an all-wheel-drive car, a front wheel pushed back also means the axle, knuckle, tie rod and lower control arm. Used parts from car-part.com set the low price and new dealer parts the high one, with paid scraping metered on every run and capped per car. A 10,000-draw Monte Carlo simulation turns prices and labor hours into a typical cost, a range and a risk tier. The results page lists parts by their plain names under the photo that shows them.
Try the cost range
Example numbers, not a real quote.
Each part is needed at the chance shown, priced between a used yard part and a new one, plus labor.
Front bumper cover
Right headlight
Right fender
Radiator support
A/C condenser
- Low (P10)
- $1,365
- Typical (P50)
- $2,366
- High (P90)
- $3,314
How I checked it
I scored it against a real Porsche dealer quote for a damaged 2021 Taycan 4S: 24 lines, $27,010 at list. The first run matched 5 of 21 part numbers. After fixes it matched 16: 13 exact and 3 the same part in another color or version.
Every miss became a rule plus a test built from the real catalog page. For example, I had been treating the catalog’s fitment notes as a hard filter, which threw out the exact grilles the dealer sold. Now fitment notes only rank results. Because photo reads are cached, re-running the whole check after a fix costs nothing. There are 140 automated tests. I tuned the hidden-damage rules on more than 200 past repair orders.
What happened
Appraisals went from about 10 minutes to 30 seconds a car. The AI costs about $0.05 per car, and the tool is built for up to 50 cars a week.
Next: Carfax total-loss checks and Manheim market value, so the tool can also say whether a car is worth bidding on.