Charge Capture: PM Reports vs AI Agent vs Biller Audit
The revenue leak that never bounces back
Denials at least announce themselves. A claim goes out, a payer says no, and the remit lands in someone’s queue. An encounter that never became a claim does none of that. The appointment shows as completed, the note may or may not be signed, and nothing downstream complains. It just ages out.
That’s why charge capture — making sure every rendered service turns into a billable, submitted claim — is a different problem from denial triage and scrubber rules. Denial work is about claims that exist. Charge capture is about proving a negative: which visits should have produced a claim and didn’t.
The clock matters. Per CMS, Medicare fee-for-service claims generally must be filed within one calendar year of the date of service, and commercial payer contracts set their own, often shorter, timely filing windows. Confirm the current rules in the CMS Medicare Claims Processing Manual and in your own payer contracts — an unbilled encounter discovered after the window is simply gone.
Charge capture is a reconciliation problem before it’s an AI problem. If you can’t produce a complete list of visits and a complete list of claims, no agent can match them.
Option one: the report your PM system already has
Almost every practice management system ships some version of an “unbilled encounters,” “missing slips,” or “appointments without charges” report. Run it before you buy anything.
What it does well: it is included, it uses authoritative internal data, and for practices with tidy scheduling hygiene it catches the obvious cases. What it does badly: it reports, it doesn’t reason. Every line looks equally urgent. Cancelled-but-not-marked-cancelled appointments, no-charge post-op visits, and genuinely missing claims sit in one undifferentiated list, so the report gets run, skimmed, and abandoned. The failure mode isn’t the report — it’s that nobody triages it.
Option two: rules and RPA
If your data is clean and your exceptions are predictable, a deterministic script beats an AI anything. A nightly job that joins appointments to claims, filters out known no-charge visit types, and emails the remainder is boring, auditable, and cheap to run forever.
Rules break when the exception list stops being finite — when “is this legitimately unbilled?” depends on reading a note, a provider’s habit, or a payer-specific convention. We’ve written about that boundary in more depth in the comparison of AI agents, RPA, and plain rules. The honest heuristic: if you can write the rule down completely, write the rule.
Option three: an AI agent with governed access
An AI agent here is not a chatbot. It’s a model given tools — read access to your schedule, your claims/charge data, and (optionally) documentation status — plus a packaged skill that defines exactly how your practice reconciles the two. MCP (the Model Context Protocol, an open standard for giving an assistant governed access to systems) is the plumbing that exposes those tools without pasting PHI into a chat window; the mechanics are covered in our Claude + EHR via MCP build guide.
Before scoping any of this, check feasibility: many PM and EHR systems expose no read API at all, or gate one behind a paid integration tier or partner program. Confirm in writing that you can actually get schedule and claims data out before you budget for an agent.
-
Pull both sides
The agent calls a read-only tool for completed appointments in a date range and a second tool for claims and charge entries in the same range. -
Match and classify
It matches on patient ID, provider, and date of service, then classifies the unmatched: likely-missing charge, expected no-charge (global period, nurse-only visit), scheduling artifact, or unsigned documentation blocking billing. -
Explain each one
For every flagged item it writes a one-line reason and cites the fields it used. No reason, no flag — this is the rule that keeps the output reviewable. -
Prioritize by deadline
Items closest to a payer’s filing limit sort to the top, with days remaining shown. -
Hand to a human
A biller or office manager works the list. The agent drafts internal follow-ups (“Dr. R — 3 unsigned notes from 9/12 blocking claims”) but does not submit claims or select codes.
Where it breaks: bad source data (agents cannot fix a schedule nobody closes out) and ambiguity about whether a service was actually rendered. There’s also a failure mode specific to language models — matching that isn’t deterministic, so a real gap can quietly fall off the list with no error anywhere. Guard against it by running the agent and a plain deterministic join over the same month and diffing the two outputs; until the agent’s list is a superset of the join’s, treat it as a second opinion, not the primary worklist. And keep the coding line bright: the agent flags the gap, a coder selects the code.
HIPAA guardrails that aren’t optional
Any vendor or model provider touching PHI is a business associate and needs a signed BAA — see HHS Office for Civil Rights guidance on business associates and on the minimum necessary standard. Practical implications for this build: expose only the fields reconciliation needs (identifiers, dates, provider, status, charge amounts) rather than whole chart records; log every tool call; keep write access off in version one. If you’re unsure whether a given data flow is permissible, confirm with your privacy officer or HIPAA counsel before turning it on.
Modeling the money without making numbers up
Use your own inputs. The only leakage formula worth trusting is: annual leakage ≈ (completed visits per year) × (your measured miss rate from the one-afternoon diagnostic) × (your average allowed amount). Then subtract what you’d actually recover — some flagged visits will turn out to be legitimately no-charge. Against that, put staff time: (hours spent reconciling per month × loaded hourly rate × 12) plus build or subscription cost. Recovered hours only count if they get reallocated to work that collects money — appeals, patient balances, eligibility checks — so be honest about where they go. If the recovered-revenue side doesn’t clear the cost side using your numbers, run the PM report and stop there. That’s a real outcome, not a failure.
Where this sits in a broader practice AI plan
When people ask how to use AI in a medical practice, the useful answer is to sort tools into three buckets. Clinical reference and triage tools — products like OpenEvidence, Glass Health, or consumer symptom-assessment apps such as Ada Health — support clinical thinking and sit with clinicians, not the front office. Patient-facing voice and outreach agents, the category Hippocratic AI and others compete in, handle conversations. Administrative agents, like the one described here, work over your own operational data. Charge capture lives firmly in the third bucket, which is generally the lowest-risk place to start.
As for whether there’s a “medical version of ChatGPT”: currently, general assistants like ChatGPT and Claude are large language models — the same underlying technology, tuned differently — while clinical answer engines layer curated medical literature on top. Neither is a substitute for the other, and we compare the practical tradeoffs in medical AI vs ChatGPT vs a custom agent.
What happens to the biller
The roles that shrink are the ones that are pure list-walking. The roles that survive and get more valuable are judgment roles: deciding whether a service was truly rendered, negotiating with a payer, reading a contract, fixing the upstream scheduling habit that created the gap in the first place. A good charge capture agent doesn’t replace a biller — it hands them a shorter list with reasons attached, which is exactly the part of the job software has historically done badly.
Not sure where to start?
Get a free automation audit: we map your scheduling, intake, insurance, billing, and patient communication and show you what's worth automating — before you spend a dollar.
Get a free automation audit