Inspiration
Medical billing has a strange problem: patients are responsible for paying bills they usually can't verify. When you're insured, your provider sends a claim to your insurer. The insurer sends you an Explanation of Benefits (EOB) showing what was charged, what was allowed, what insurance paid, and what you owe. Separately, the provider sends you a bill. Those two documents are supposed to agree. Checking whether they do means comparing procedure codes, charges, payments, adjustments and patient responsibility across two documents that look nothing alike. And billing problems aren't rare: 43% of U.S. adults say they've received a medical or dental bill they believed was wrong (KFF). Among insured working-age adults who challenged a bill, 38% had it reduced or eliminated (Commonwealth Fund, 2024). Among those who didn't challenge, more than half didn't know they could (Commonwealth Fund, 2024).Fighting back works, but most people never try. I wanted to give every patient a second set of eyes. The goal became simple: Before you pay a medical bill, make sure the amount matches what your insurance says you owe.
What it does
- Upload your provider bill and your insurer's EOB as a PDF, Word document, PNG or JPG. Gemini reads both and extracts every charge, payment, adjustment, allowed amount, procedure code and patient-responsibility line. I don't blindly trust AI extraction: before any analysis, you see the extracted numbers and can correct them.
2.My own rules engine compares the bill against the EOB and catches duplicate charges, insurance payments that were never applied, missing contractual adjustments, charges that don't match what the insurer processed, services never sent to insurance, and out-of-network emergency charges covered by the No Surprises Act. AI does not decide whether your bill is wrong. Code does, and every finding comes with its evidence and math.
The results screen shows the numbers that matter: The bill says $1,240. You likely owe $250. Potential difference: $990. A side-by-side view lines up the bill and the EOB, connects matching lines, and marks every mismatch. Show Evidence highlights the exact lines behind each finding. Why? gives a plain-English explanation, and Ask GiveMeMyMoneyBack answers questions about your documents. Don't trust the answer? Break it. Edit any charge, date, code or payment on the bill and re-run the check. The findings update live.
Finding a $990 discrepancy doesn't help if you don't know what to do next. GiveMeMyMoneyBack: writes a dispute letter from the verified findings, gives you a phone script, and lets you practice the billing call with an AI billing representative, then shows a checklist of what you covered (each issue, your account number, an itemized bill, pausing collections, next steps), tracks the dispute through Draft → Sent → Follow-up → Resolved, and drafts a follow-up letter with an escalation path if the provider doesn't respond in 30 days. Potential savings and confirmed savings stay separate. Only a resolved dispute counts toward Total Saved. Accessibility through voice and language. Reading tables of insurance terms is hard for anyone, and harder for older patients and people with low vision. With ElevenLabs, you can listen to your findings, explanations, answers and summary. Choose a Clear, Calm or Direct voice, and control speed, pause, replay and stop. You can also hear explanations in Spanish. Gemini translates the verified explanation, and a validation layer checks that every dollar amount, date, code, ID and name is unchanged before ElevenLabs speaks it. If anything changes, the translation is thrown out and the verified English version is used.
How we built it
I separated understanding from deciding. Gemini: multimodal extraction from bills and EOBs, grounded question answering, plain-language explanations and Spanish translation. Rules engine: my own deterministic comparison logic does the financial reconciliation and produces evidence-backed findings. ElevenLabs: turns verified findings and answers into natural speech, with multiple voices and Spanish. Supabase: stores each user's structured analyses, disputes, statuses and confirmed savings, with row-level security. Uploaded documents themselves are not stored. Vercel: hosts the app over HTTPS at givememymoneyback.ink. Limits: this is a hackathon prototype and isn't HIPAA-compliant, so please use the sample bills. It checks a bill against the insurer's statement; it doesn't judge whether the medical coding itself was correct, and it isn't legal or financial advice.
I didn't want Gemini to look at two documents and answer "Does this bill look wrong?" I used Gemini where generative AI is strongest and kept the financial decisions verifiable. These are clean generated documents; phone photos of real paperwork are the next test. The patient still reviews the numbers before analysis. Grounded explanations. Gemini powers Why? and AskGiveMeMyMoneyBack, but it isn't allowed to quietly change the financial story. Every response is checked against the verified analysis, and if unsupported financial information appears, the app falls back to deterministic wording. Code decides what's wrong. AI helps the patient understand why.
Accessibility should mean more than larger text. ElevenLabs runs throughout the results so patients can hear complicated billing information instead of reading every table: three voices (Clear · Calm · Direct), two languages (English · Spanish), and full playback controls. For Spanish, Gemini translates the verified explanation, and my validation layer checks it before ElevenLabs receives it. That lets me use AI translation and high-quality voice while protecting the facts that matter.
Challenges we ran into
Building AI I could verify. The hard part wasn't getting an LLM to produce an answer; it was deciding when not to trust it. In medical billing, a confident hallucination is worse than an obvious failure. My answer was a hybrid design: Gemini reads and communicates; deterministic code calculates and verifies. That also gave me something many AI demos lack: evidence you can inspect, edit and re-run. Reconciling documents that don't look alike. Bills and EOBs describe the same visit differently: different layouts, and sometimes one line on the bill is split into several on the EOB. I had to normalize both enough to compare them while keeping the original line-level evidence. Making multilingual AI safe. A translation that changes $342 to $324 has changed the patient's financial information. I built validation between Gemini and ElevenLabs so a translation is rejected if any protected fact changes.
Accomplishments that we're proud of
It's an end-to-end workflow, not an AI chat box: Upload → Review → Check → Inspect evidence → Ask → Listen → Dispute → Practice the call → Track → Resolve I also measured it instead of relying on one polished example. The rules engine has two independent test sets: Generated cases: caught 19 / 19 planted errors, 0 false alarms, owed amount correct on 18 / 18. Hand-written edge cases (units split across lines, denied lines, carried-over balances, same code on different dates): [8 / 8] correct. That lets me verify the billing logic separately from the AI.
What we learned
The biggest lesson was that the hard part of building with AI isn't getting an answer; it's knowing when to trust it. Early on, I realized that asking Gemini "is this bill wrong?" would produce confident answers I couldn't verify, so I split the job: code decides, AI reads and explains. I also learned that a perfect score can be misleading. My first test set was generated from the same rules the engine was built on, so of course it passed, and writing edge cases by hand (units split across lines, denied claims, balances carried over from old bills) taught me far more about how real documents break assumptions. On the design side, I learned that accessibility has to be planned from the start: plain language, voice, Spanish, and a step where users can review and correct what the AI extracted all shaped the core product rather than being added at the end. Finally, I learned to pick a problem with real evidence behind it. I spent the first hours of the hackathon comparing ideas, and grounding the project in published data made every design decision easier to justify.
What's next for GiveMeMyMoneyBack
Test on real phone photos and more provider and insurer formats. Handle more complex cases: multiple providers or EOBs for one visit. Add more languages beyond Spanish. Make contacting providers and following up even easier. Nobody should pay a medical bill just because understanding it was harder than paying it.
Log in or sign up for Devpost to join the conversation.