Inspiration

After a crash, the average family waits 19.3 days to get their car back (J.D. Power 2025). In the Central Valley, no car means no ride to school, work, or the doctor. Most claims go through insurer partner programs (46.7% of appraisals, CCC 2026), and insurers grade every shop on a scorecard. But many shops see that grade only once a quarter, with no detail on which repairs hurt them, so slow repairs keep happening.

What it does

A shop uploads its insurer scorecard (photo, PDF, or screenshot) and a CSV of its repair orders. ShopStats:

  • Reads every metric with AI and turns it into a game-style stat sheet (0–100 per stat)
  • Flags the exact jobs that took far longer than their labor hours explain
  • Suggests concrete fixes, like ordering all parts at teardown In our fictional sample shop, cycle time is 4.3 days over target across 142 repairs: about 610 extra days families went without a car in one quarter.

How we built it

Next.js, TypeScript, and Tailwind, deployed on Vercel. OpenAI (gpt-5.4-mini vision) reads the scorecard, with Gemini as a backup. A fixed formula does the scoring, so the AI never invents scores. Slow jobs are found with robust regression (ML anomaly detection) on days-in-shop vs. labor hours. Live AI is limited to 2 requests per IP to protect credits (see the judge guide PDF for the admin code).

Challenges we ran into

Getting the AI to read messy scorecards reliably, and making sure it says "not on this scorecard" instead of guessing. We also had to protect our API credits on a public site and pick an anomaly method that's stable on small data.

Accomplishments that we're proud of

A full working flow, from uploading a photo to seeing which specific jobs to fix, built in one day. Every number can be edited if the AI misreads it, and every stat on the site has a source.

What we learned

How insurer programs grade body shops, how to combine AI extraction with plain math so results stay trustworthy, and how to ship and secure a real app under a deadline.

What's next for ShopStats

We plan to pilot it with a real local body shop using anonymized data, support more insurer scorecard formats, and expand to any business graded by a platform it can't see inside.

Share this project:

Updates

Submission history