Case study · Automotive · collision repair · 2025–2026

A collision repair estimate from 10 phone photos before the customer drives to a shop

A customer with a damaged car wants to know what the repair will cost before choosing a shop. A reliable estimate needed the car on site, often with the bumper cover off, so people drove from one body shop to the next. Now the customer takes 10 guided photos with a phone. The system reads the VIN, finds the damaged panels, looks up OEM part numbers and their prices, and returns a panel-by-panel estimate in minutes. The customer confirms or rejects each part and books a slot in a shop’s calendar without a phone call. The estimate is not the repair price. When the shop finds damage the photos could not show, such as damage behind the bumper, it can change the price

10phone photos
0shop visits before the estimate
4AI passes
5parts price sources
Before

An estimate needed the car at the shop

A reliable estimate needed a technician to see the car, so customers drove from shop to shop to learn what the repair would cost

A technician has to look at the car to write an estimate, and often removes the bumper cover to see what is behind it. A customer with a dented fender wants a number before deciding where to drive. So the shop is asked to guess over the phone, and the customer calls three more shops with the same question.

The client did not want an online quote form. The client wanted the estimate before the drive: the customer gets it on a phone, and the shop the customer picks gets a request it can work from.

Where the client lost work
  • No estimate without the car on site. Every inquiry from a customer not ready to drive in was lost before it started
  • Inquiries came by phone and email during business hours, to whoever was free. People often find the damage in the evening or on a weekend. Those inquiries went nowhere
  • Parts prices came from memory, not from a catalog. With a remembered price, the estimate is either too high to compete or too low to cover the part
  • A quote request was a paragraph of email and a few photos from unknown angles. The shop retyped it by hand into its own system
  • Setting a time took a phone call. Changing it took another one
What we built

From ten photos to a held slot in a shop’s calendar

Guided photos

The customer photographs the car in the phone app or in a browser. The app shows an outline for each shot, up to ten photos. Before the customer pays, an AI model checks which angle each photo shows. The app reads the VIN from its barcode, or from a photo of it when the barcode fails.

The estimate, in four passes

A model looks at the photos four times: repair (which panels, what work, how many hours), lights, parts and paint. Each pass must return a fixed set of fields, so the model cannot add a line the estimate does not have. Labor hours and paint are priced from a rate table the platform owner manages. Each estimate records which version of the table priced it, so an old estimate can always be explained.

OEM parts and their prices

The system finds the OEM part numbers for the exact car from its VIN. It then checks five price sources in a fixed order, and the first one with a real price wins. Clips, brackets and a plate frame do not show in a photo. Fixed rules add them to the parts list, so nobody has to guess them.

The customer confirms each part

The AI result is a proposal. The customer confirms or rejects each part it found and can add a part it missed. The totals recompute with every change. How this works is shown below.

Finding a shop and booking

The customer sees shops on a map, nearest first. Then the customer sends one of two requests: ask this shop for its own price, or take a time slot in its calendar. Slots come from the shop’s working hours. A twelve-hour repair is split across working hours over several days instead of one twelve-hour block. A chosen slot is held for 30 minutes.

For the shop

The shop owner creates the company, adds locations and invites staff. Each invite code is encrypted and works only for the email it was sent to, so a forwarded invite does not open the shop’s data. Roles are set per location. Requests arrive with the panels, labor hours and a parts list with part numbers.

For the platform owner

The platform owner approves new shops, sees revenue and per-shop numbers for a chosen date range, and exports them. If a payment went through but the estimate failed, the platform owner restarts the estimate from the payment record.

iOS and Android app

The same product runs as a native app for iPhone and Android, with the phone’s camera and a live preview of the VIN while it scans.

What the customer gets

The damaged panels, marked on a drawing of the car

The model shades each damaged panel on a drawing of the car. The parts for those panels become lines the customer confirms or rejects before the totals recompute

A car drawn from above and from both sides, with the damaged door panels, the front bumper and a wheel shaded
The AI proposes, the customer decides

Before the customer changes anything, the system saves the AI result exactly as it came out. Confirming or rejecting a part recomputes the totals from that saved result. A customer who changes their mind can undo a change, and the AI’s original result is never overwritten.

Parts the AI only suggests start outside the total. The customer adds each one, and every part carries its own source: found by the AI or added by the customer. The total at the bottom is made of parts the customer chose.

The rules that made it work

Four rules every estimate and booking follows

The analysis starts when the payment clears, not in the browser

The payment provider sends a notification when the charge succeeds, and that notification starts the analysis. A customer who closes the tab does not lose a paid estimate. A retry and the platform owner’s restart start from the same place.

One payment runs one analysis

Payment providers can send the same notification twice. The system records the ID of each notification and ignores a repeat, so a duplicate does not start a second AI analysis.

A catalog price beats a marketplace price

A price from an OEM catalog counts as the price. A listing on a marketplace website only adds information. Some of the five sources read those websites, and those sources break from time to time. When one breaks, the estimate is less precise, but it is still produced.

Two customers cannot book the same slot

Two customers will click the same 9 a.m. slot in the same second. The database accepts only one hold per shop and start time, so the second request is refused and no bay is booked twice.

Results

Stated as what the system does, because that is what we can check ourselves. Business results are the client’s to publish

  • A customer gets a panel-by-panel estimate with OEM part numbers and current prices from 10 phone photos, without a shop visit
  • The shop receives the request as structured data instead of an email with attachments: panels, repair operations, labor hours, paint, and a parts list with part numbers and sources
  • A customer can get an estimate in the evening or on a weekend and send a price request or hold a slot
  • A shop signs itself up and runs a calendar that cannot be double-booked
  • The same product runs as an iOS and Android app with guided photos and VIN scanning

Tell us where the work is retyped, waits or breaks

A 30-minute call about one process in your business. We will say where automation fits and where it does not

Zen Software builds software that takes manual work off small and mid-size businesses. We map how the work runs, automate the steps that follow clear rules, and add AI only where something has to be understood, weighed and chosen

© Zen Software LLC2 Buck Ln, Suite 8, Marlboro, NJ 07746, USAsales@zen.software