Inspiration

Almost everyone has stared at a bill they couldn't read and understand The problem isn't that people don't care it's that questioning a bill requires knowing what "normal" looks like. Most people can't tell whether a charge is standard or absurd, so they assume the institution is right and pay. A billing error only matters if someone catches it.

What it does

You upload a photo or PDF of a confusing bill — medical, insurance EOB, utility, phone, or loan statement and it will Extracts every line item, Flag what's worth questioning, Gives you a verdict and Hands you a script,

How we built it

React + Vite frontend, Express backend, and Gemini reading the PDF or photo natively with a forced JSON response schema — no OCR library, no database, nothing written to disk. The server recomputes the arithmetic in JavaScript rather than trusting the model's addition.

Challenges we ran into

The model I built on was retired mid-build, and the newest replacement took 80 seconds and kept hitting free-tier overload

Accomplishments that we're proud of

The math is verified server-side rather than asserted by the model, and the app degrades honestly — an unreadable bill reports "inconclusive" instead of a confident false mismatch. Every failure mode, from a retired model to a wrong file type, produces a readable sentence instead of a stack trace.

What we learned

Let the model do perception and check its work in code extraction is what it's good at, arithmetic is what it's bad at. Benchmarking beat assuming: the newest model was 10x slower than a smaller one that produced the same answer.

What's next for Explain My Bill

Real medical bills and EOBs at volume, since everything tested so far is synthetic, plus cross-checking an EOB against the matching bill. After that, generated dispute letters and comparison against hospitals' published price lists.

Built With

Share this project:

Updates

Submission history