Yet denials, corrections, and chasing money are where a practice's evenings go. This briefing shows how far SignalEHR's billing engine has matured, how it is verified, and what that maturity removes from a therapist's week.
A clinician is trained to treat. The revenue cycle asks them to be a coder, a compliance officer, and a collections agent, in the gaps between sessions.
Industry surveys consistently put first-pass claim denials near one in ten. Every one of those is unpaid work: find the reason code, decode it, fix the claim, resubmit, wait, and repeat, while the money for a session already delivered sits with the payer.
The deeper cost is the uncertainty. Was the client's coverage even active that day? Did the claim go out clean? Did the remittance ever arrive? In most small practices these questions have no system. They have a person, and that person is the therapist.
SignalEHR's answer is not a prettier claims screen. It is a billing engine built so that every claim ends somewhere on purpose, every denial becomes one guided decision, and every dollar is accounted for in a ledger that must balance.
Every claim, American or Canadian, walks the same rail. Each hop is a guarded state transition: work that must complete before the next step is reachable.
Scroll sideways if needed. The two GUARD hops are where most therapist pain used to live: bad claims now stop before submission, and bad remittances stop before they corrupt the books.
The state machine's central rule: a claim entering denied must exit to exactly one of four places. There is no fifth option, and "forgotten" is not a state.
denied after 7 days with no open path escalates to the owner. And the amount behind "bill the client" is always derived:Amelia, SignalEHR's AI biller, does the repetitive work. What she may do alone is governed by a four-level autonomy framework with hard, unoverridable ceilings.
Confidence is calibrated, not vibes. Amelia's decisions carry a confidence score with a stated basis. Platform defaults: at or above 0.98 an action is eligible to run under its policy level; between 0.95 and 0.98 it goes to office review; below 0.95 a human decides. A missing confidence counts as zero.
And she learns from your denials. Each real denial feeds a learning loop that turns payer behavior into candidate rules. But a learned rule cannot touch a claim until it survives the gauntlet below.
No promotion without measured lift. The marketing sentence "your denial rate falls over time" is backed by this pipeline, not by hope.
The billing program is staged like the spec that governs it. A stage is "complete" only when its exit criterion runs as a CI-gated test on every commit. A criterion that isn't executed is a claim, not a criterion.
The loop that keeps a practice solvent: eligibility → claim → submission → remittance → denial → derived patient balance → invoice → payment → ledger → reporting. The exit scenario (insurance refused, client pays, books balance) passes on a real database in both US and Canadian flavors.
The engine stops trusting good intentions: state-machine guards go live, billing behavior becomes data-driven rules, failures become records that alert, and events flow through a transactional outbox that cannot lie about what happened.
What distinguishes a billing engine from a mature revenue-cycle product: contracts and fee schedules, enrollment, estimates, collections, statements, plus the Canada-specific blocks. Most have shipped since; insurance discovery and several Canadian programs are deferred by choice, not stalled.
The learning half is wired end to end and gate-proven; the measurement half reports six KPI families. The shadow-lift readout, knowledge-graph, and forecasting layers remain open.
Stage bars count the spec's blocks for that stage (shipped = 1, partial = ½), not engineering effort.
| Date (2026) | Opened | Closed | Still open |
|---|---|---|---|
| Jul 31 | 17 | 0 | 17 |
| Aug 1 | 27 | 11 | 16 |
| Aug 3 | 27 | 16 | 11 |
| Aug 4 | 27 | 19 | 8 |
| Aug 6 | 27 | 19 | 8 |
The core is deliberately country-blind: roughly 90% shared engine, 10% country adapter behind one conformance-tested interface. The US and Canada already run on it; the United Kingdom and Australia hook up through the same socket when their markets are opened.
The submission-channel spectrum: every country — current or future — maps onto these four. One claim state machine serves all of them.
Maturity claims are cheap. These are the mechanisms that make this one expensive to fake.
Six KPI families, live on the analytics page — each defined the honest way, because a flattering metric is worse than none.
A maturity briefing that hides its open items isn't one. These are open by design, tracked in the same register, and each will close the same way — with a merged test.