All work

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
Salvage estimator results for photo 10 of a damaged Tesla Model Y: the front bumper cover and right headlight outlined on the photo, and the headlight marked probably needs replacing, with used and new prices and three eBay listings.

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 $180–$640 · 2.5 h labor

    Front bumper cover: chance it's needed
  • Right headlight $220–$1,150 · 0.8 h labor

    Right headlight: chance it's needed
  • Right fender $150–$520 · 2 h labor

    Right fender: chance it's needed
  • Radiator support $260–$900 · 4 h labor

    Radiator support: chance it's needed
  • A/C condenser $120–$480 · 1.5 h labor

    A/C condenser: chance it's needed
$100/h
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.