-
-
Your bill: say if you're self-pay or insured, add your Good Faith Estimate, and upload an itemized bill or try a sample.
-
What we found: 3 likely errors totaling $3,858.00. The Good Faith Estimate overage is shown separately, never added.
-
On a phone, 390px wide: the same sentence and numbers, no sideways scrolling.
-
Letters drafted from the findings. You review and send them yourself. Each ends: "This is not legal advice."
The CFPB estimates $88 billion in medical bills on Americans' credit reports, in a billing system it describes as one "where mistakes are common." Checking a bill takes coding knowledge most patients don't have, so most people just pay. We wanted a tool that gives a patient the same second look a billing expert would.
What it does
ClaimGuard reads a photo or PDF of an itemized hospital bill (plus the insurer's EOB, if the patient has one), checks every line against public CMS data, and explains what it finds in plain language:
- Likely errors: duplicate charges, drug units that don't match the dose written on the bill, units above CMS's absolute daily limits, totals $400+ over a Good Faith Estimate, and bills higher than the EOB says the patient owes.
- Worth asking about: units above limits where CMS allows clinical judgment, reviewed by Nemotron 3 Ultra.
- For context: drug charges compared with Medicare's payment limit.
It then drafts the letters to send: a corrected-bill request, a Good Faith Estimate dispute summary, and an EOB rebilling request. It also finds the hospital's billing office and financial assistance policy with Tavily.
How we built it
Four NVIDIA Nemotron models on Nebius Token Factory, each with one job:
| Step | Model |
|---|---|
| Read bill and EOB (photo or PDF) | Nemotron 3.5 Super VL |
| Clean codes, read doses, scope guard | Nemotron 3 Nano |
| Judge only the ambiguous findings | Nemotron 3 Ultra |
| Explain findings, draft letters | Nemotron 3 Super |
The core rule: models read and write; rules decide. Every check and every dollar figure is deterministic Python against cited CMS public data (HCPCS Level II, Medicare Part B drug payment limits, NCCI MUE limits). Every model call is logged with model, latency and tokens, and shown in a "How this was checked" panel. Stack: FastAPI, SQLite, React + Vite + Tailwind, deployed with Docker.
Evaluation: On our seeded sample bills, ClaimGuard caught 12 of 12 errors with 0 false alarms. Routing each step to the right model cost 2.1× less than using Nemotron 3 Ultra for everything.
Challenges we ran into
- Licensing. CPT codes are AMA-copyrighted. Midway through, we rebuilt ClaimGuard to use no AMA CPT content at all, relying only on CMS public-use files for HCPCS Level II codes. It tells users plainly which lines it can't check.
- Drug billing units. Drugs are billed per fixed dose (e.g. "per 1 mg"), so we built a check comparing the dose written on the bill with the units charged, and careful money rules so one line is never counted twice.
- Messy real-world documents: phone photos, unfamiliar EOB layouts, and bills that don't look like our samples. We made every failure a clear message instead of a dead end.
What we learned
- Being precise about what isn't an error matters as much as finding errors: charging above Medicare is usually legal, so it's shown as context, never as a mistake.
- Routing work across model sizes made the system cheaper and easier to trust, because the hard reasoning model only sees the few cases that need it.
What's next
CPT support through an AMA license, code-pair unbundling checks, procedure-level price benchmarks, and help with denied-claim appeals.
ClaimGuard explains and drafts. It isn't legal or medical advice.
Log in or sign up for Devpost to join the conversation.