---
name: medical_bill_audit
description: "Audit a medical bill for errors before paying it: match every itemized line to the explanation of benefits, run a checker script that flags duplicates and amounts above the EOB, work a 12 pattern error list covering upcoding, unbundling, balance billing, and services not received, check No Surprises Act and financial assistance protections, and send a dispute that names lines and amounts. Ships a matching worksheet, worked dispute letters for the provider, the plan, and a debt collector, plus a runnable audit script with example files. Triggers on requests like this hospital bill looks wrong, check my medical bill, what is an EOB, I got a surprise bill, a medical bill went to collections, or how do I dispute a charge from my doctor or hospital."
metadata: { "includeInPrompt": true }
---

# Medical Bill Audit

## Purpose
A medical bill is three documents pretending to be one: what the provider says happened, what the plan says it paid for, and what you are being asked to cover. Errors live in the gaps between them. This skill works those gaps in a fixed order. Get the itemized bill, match it line by line to the explanation of benefits (EOB), run the pattern checks, decide which protections apply, then dispute in writing with line numbers and amounts. The output is an audit sheet with every finding tied to evidence, plus the letters that get each finding fixed by the party who owns it.

This is a United States workflow. State law adds protections in many states, so check the state insurance department and the state attorney general consumer pages for the state where the care happened. Nothing here is legal or medical advice. For a large bill, a pattern that repeats across bills, or any lawsuit or garnishment notice, refer the person to a patient advocate, a legal aid office, or a consumer attorney.

## Workflow

1. **Freeze the bill before paying anything.** Tell the provider billing office, in writing or on a logged call, that you are reviewing the bill and ask for a hold on the disputed amount so the account is not sent to collections during the review. Paying an undisputed part is fine and often wise. Paying a disputed line weakens nothing legally, but it turns a correction into a refund fight, which is slower.

2. **Collect the paper set.** You need: the itemized bill (not the summary statement), the EOB or Medicare Summary Notice for every claim tied to the visit, your visit and discharge records from the patient portal, any Good Faith Estimate you were given, receipts for anything paid at the visit, and every later statement or collection letter. The CFPB tells patients to start the same way: confirm the bill is yours, ask for an itemized list of charges, and check whether insurance was applied right. If the provider will not send an itemized bill, say so in the first dispute letter, because the audit cannot be closed without one.

3. **Build the matching worksheet.** Work through `references/matching-worksheet.md`. One row per bill line, matched to its EOB line on date, provider, and code. The EOB is not a bill: it is the plan record of the claim, showing billed amount, allowed amount, plan paid, and patient responsibility. For an in-network claim, the EOB patient responsibility is the ceiling the bill should be asking for on that line.

4. **Run the checker, then do the human checks.** Put the bill and EOB into CSV files in the format shown in `assets/example-bill.csv` and `assets/example-eob.csv`, then run `python3 scripts/bill_audit.py bill.csv --eob eob.csv`. It flags exact duplicates, patient amounts above the matched EOB line, bill lines with no EOB line, EOB lines with no bill line, clusters of three or more lab codes for one provider on one date, and a total mismatch. Then work the full 12 pattern list in the worksheet by hand: services not received, wrong units or dates, upcoding, unbundling, diagnosis and procedure mismatch, wrong network label, balance billing after plan payment, amounts already paid, and identity or policy number errors. The script catches arithmetic and matching. The pattern list catches meaning.

5. **Read the worked example before judging a real bill.** The shipped example is a built case, not a real patient file. One provider billed 20 percent of gross charges as the patient share on every line, duplicated a blood count, and billed two metabolic panels plus a component test on one date. The script reports the duplicate, the lab cluster, six patient amounts above the EOB, two lines with no EOB match, and a $273 gap between the $517.00 asked and the $244.00 of EOB patient responsibility. That shape, many small overages in one direction, is what a systematic processing error looks like, and it is why the dispute goes to the processing, not line by line haggling.

6. **Sort every finding to its owner.** Provider errors (duplicates, wrong codes, services not received, amounts above the EOB) go to the provider billing office. Claim errors (denials, wrong network processing, a claim the plan never received) go to the plan, by internal appeal if the claim was decided. Collector errors go to the collector in writing. A finding sent to the wrong owner gets bounced, and the bounce eats your deadlines, so the worksheet records one owner per finding.

7. **Check the No Surprises Act before negotiating.** Since January 1, 2022, federal law generally limits what you owe to in-network cost sharing for emergency care, for non-emergency care from out-of-network providers at an in-network facility, and for air ambulance services from out-of-network providers, per the CFPB summary of the Act. Cost sharing under these protections counts toward your in-network deductible and out-of-pocket maximum. Ancillary providers at an in-network facility, such as anesthesia, radiology, pathology, laboratory, and assistant surgeon services, cannot balance bill you and cannot ask you to waive the protection, per the Department of Labor guidance. For other non-emergency out-of-network care at an in-network facility, a provider can only bill above in-network cost sharing if you got proper notice and gave written consent, and you are never required to give that consent. If a bill breaks these rules, the fix is reprocessing under the Act, not a discount negotiation. The federal No Surprises Help Desk is 1-800-985-3059.

8. **Check the Good Faith Estimate if the person was uninsured or self-pay.** A provider must give a written estimate on request or when care is scheduled: within 1 business day when care is scheduled at least 3 business days ahead, within 3 business days when scheduled at least 10 business days ahead or when the estimate is requested before scheduling, per the CMS model notice. If the final bill from a provider is at least $400 more than that provider estimate, the person can start the federal patient-provider dispute process within 120 calendar days of the bill date. The filing fee stated in the CMS notice is $25. Keep the estimate: without it there is nothing to compare.

9. **Check financial assistance before any payment plan.** Nonprofit hospitals must run a financial assistance policy (FAP) under IRS section 501(r). Under section 501(r)(6), a hospital may not start extraordinary collection actions, such as selling the debt, reporting it to credit bureaus, or suing, until at least 120 days after the first post-discharge bill, and it must take applications during a 240 day application period from that bill, give written notice at least 30 days before any such action, and include a plain language summary of the policy. A person found eligible is charged no more than amounts generally billed to insured patients for emergency and medically necessary care, and is owed back amounts already paid above what they owe. Ask for the FAP application on every hospital bill the person cannot pay, and apply inside the 240 day window even when a payment was already made.

10. **Use price transparency as a cross-check on hospital charges.** Hospitals must publish a machine-readable file of all standard charges under 45 CFR 180.50 and a consumer-friendly list of shoppable services under 45 CFR 180.60, per CMS. If a billed gross charge is above the hospital own published gross charge or discounted cash price for the same code, that gap is a factual point for the dispute letter. Gross charges are not what insured patients usually owe, so use this check for self-pay bills and as supporting evidence, not as the main argument on an insured claim.

11. **Write the dispute, do not just call.** Use the letters in `references/dispute-letters.md`: provider correction, plan internal appeal, and collector validation. Every dispute states the account, the date of service, each disputed line with its code and both amounts, the document that proves the point, the exact correction requested, a hold request, and a written reply request with a date. Send it by a trackable method or through the portal and keep the proof of sending. Log every call with name, reference number, and what was promised, and convert any promise that matters into writing the same day.

12. **Track the clocks and escalate in order.** Record the deadlines from the worksheet on day one. The ones that expire: the plan internal appeal deadline printed on the denial, external review (federal standard is a written request within 4 months after the final denial notice, per HealthCare.gov, and the plan must accept the external reviewer decision), the 120 day Good Faith Estimate dispute window, the collector 30 day written validation window under the Fair Debt Collection Practices Act (a timely written dispute forces the collector to pause collection until it mails verification), and the 240 day hospital assistance window. Escalation order: provider or plan in writing, then the state insurance department for plan problems, the No Surprises Help Desk for balance billing, the CFPB complaint portal for collector and credit reporting problems, then a patient advocate or attorney for what is left.

13. **Close the audit only on a corrected document.** A finding is closed when a corrected statement, a reprocessed EOB, an assistance approval, or a written zero balance arrives, not when someone on the phone says it is fixed. Recheck the corrected statement against the worksheet, because corrections introduce new errors often enough to be worth the ten minutes. Confirm any collection account is recalled or updated with the corrected balance, and check credit reports later if the account was ever reported.

## Output Contract
- Audit worksheet: one row per bill line with bill amount, EOB allowed, plan paid, EOB patient responsibility, amount asked, difference, pattern found, evidence, owner, and deadline, following `references/matching-worksheet.md`.
- Checker output: the `scripts/bill_audit.py` report for the case, with each flag either confirmed as a finding with evidence or dismissed with the reason.
- Findings list: each error stated in one sentence with the dollar amount at stake and the total amount in dispute, summed once, with no finding counted twice.
- Protection check: a short yes or no on No Surprises Act coverage, Good Faith Estimate dispute eligibility, and hospital financial assistance, each with the fact that decides it and the deadline that applies.
- Dispute letters: filled letters from `references/dispute-letters.md` for each owner, with account details, lines, amounts, enclosures listed, and the send method and date recorded.
- Deadline and call log: every appeal, dispute, validation, and assistance date in one place, plus the call record for every conversation.
- Closing check: the corrected statement or reprocessed EOB compared against the worksheet, the final amount owed in writing, and the status of any collection account.

## Operating Rules
- Never tell a person a charge is fraud. Upcoding and unbundling can be errors or deliberate, and the audit cannot tell which. State the mismatch and the correction requested, and let the provider coding review answer in writing.
- Never invent a deadline, a protection, or a code definition. Every clock in the output comes from a document in the case or from the federal and state sources named in the workflow. If the state rule is unknown, say so and give the state insurance department as the next check.
- Never advise ignoring a bill or a collection notice. Silence converts a fixable error into collections, lawsuits, and credit damage. Every bill gets a written response or a logged call inside its first deadline.
- Keep protected health information out of shared and public tools. Work from the documents the person provides, store the audit with the case files, and put only the minimum needed detail into any letter or complaint.
- Do not negotiate price before the error audit is done. A discount offer on a wrong bill locks in part of the error and usually closes the correction path. Errors first, assistance second, negotiation last, and only on a bill that is correct but unaffordable.
- Amount the person owes is a conclusion, not a starting point. State it only after the matching, the protections, and any assistance decision, and show the arithmetic that produced it.
- When the plan and the provider blame each other, get both positions in writing and send each side the other side document. Three-way calls help, but the written record is what an external reviewer, a regulator, or a judge can act on.
