Match medical bills against your EOBs

ConsumerWeb1 monthNext.jsClaude APISupabaseStripe

The idea

Most people pay medical bills the way they pay parking fines: wince and pay. Yet a large share of bills contain errors — duplicate lines, charges the insurer already settled, balance billing the patient does not owe — and the document that proves it, the EOB, arrives separately and goes unread because comparing the two is miserable manual work. Professional bill advocates charge 25-35% of recovered savings, which tells you both that the errors are real and that self-serve tooling is missing.

The wedge is doing the reconciliation itself, not offering education or advocacy referrals. Two uploads, an extracted side-by-side table, and specific flags: this line exceeds what your insurer says you owe, this line appears twice, this line is not on the EOB at all. Then the follow-through most people never manage: a dispute letter citing the exact lines and figures, ready to send.

Who pays

Chronic-illness households, who receive bills monthly and for whom GBP 10 a month pays for itself with one caught error a year — a single flagged duplicate can be worth hundreds. The free first reconciliation converts at the moment of a scary bill. Distribution: condition-specific communities and forums where billing horror stories are a genre, personal-finance Reddit and newsletters, and SEO on “how to read an EOB” and “medical bill dispute letter”, both high-volume queries currently answered with generic advice instead of a tool.

MVP scope

  • Two-document upload with PDF and phone-photo support
  • Claude-powered line-item extraction with visible source snippets and editable cells
  • Matching table with per-row status flags and plain-English explanations
  • Generated, editable dispute letter citing flagged lines
  • Saved cases, loud data-deletion controls, free-first-bill Stripe pricing
  • Skip for v1: insurer portal integrations, claim submission, negotiation services, hospital price transparency data, and any automation of sending
// Build prompt — paste into Cursor / Claude Code / Lovable / Bolt
Build BillCheck, a web app that reconciles a medical bill against the matching explanation of benefits and flags what the patient does not actually owe. Stack: Next.js (App Router), Claude API for document extraction, Supabase (Postgres + auth + storage), Stripe.

Core flow: user uploads two PDFs (or phone photos): the provider bill and the insurer's EOB for the same encounter. Claude extracts structured line items from each — dates of service, CPT/procedure codes where present, descriptions, billed amount, allowed amount, insurance paid, and patient responsibility — into a side-by-side matching table. Matching runs on code first, then date plus fuzzy description. Each row gets a status: matched and consistent, provider charging more than the EOB's patient-responsibility figure (possible balance billing), on the bill but absent from the EOB, duplicate line, or EOB says USD 0 patient responsibility.

Flagged rows feed a generated dispute letter: professional tone, citing the specific lines and EOB figures, addressed to the provider's billing department. User edits before downloading.

Pages: upload flow, reconciliation table with per-row status chips and plain-English explanations, dispute letter editor, saved cases list, and billing.

Implementation details: show the source snippet (cropped image region) next to each extracted row so users can verify numbers at a glance, and make every cell editable. Delete uploaded documents on request and say so loudly; trust is the product.

Pricing: first reconciliation free, then GBP 6 per bill or GBP 10/month unlimited via Stripe, pitched at chronic-illness households.

// More Consumer ideas