The business caseThe problem this solves
A claim is paid, and then the facts it was paid on change. A fee schedule is repriced, an edit set is revised, a coordination-of-benefits record turns up, a payment is found to be another payer's money, a cheque is returned and reissued. Each change arrives as its own row with its own corrected payable, and the recovery desk is left holding four records of what this claim should have paid — the claim as paid, the changes raised against it, the basis register those changes point at, and the remittance history — plus a desk note that says one change replaced another, or a payer bulletin that withdrew the schedule a change applied. The worklist printed on the file already has an answer, and on 32 of these 64 claims it is wrong. Opening one paid claim, reading every basis change against the line it names, checking each corrected basis against the register and against any payer bulletin, reading each later remittance to decide whose money it is, reading each desk note to see whether it replaces, reverses, reissues or changes nothing, and working out what this payer was overpaid line by line.
Audience
The payment integrity and recovery desks at a payer, working a period's corrected-claim exceptions — and the analyst who has to decide, by name and on their own authority, which basis applies where two changes in force disagree. It is also for whoever is deciding whether the reading is worth a model call at all: on these 64 claims free column code gets 40 right. Every number on these pages came from one real run of this code, not from a vendor page.
The inputThe actual paid claim files
The corpus is 64 paid claim files, 0.16 MB (txt 64). It is generated because it has to be. A real paid claim is protected health information wherever it exists: member identifiers, service dates, provider identities and amounts that tie back to a person. None of it can be published, and one of this kit's refusals is that an overpayment is never an allegation about a coder, a biller or a member — a corpus that carried names would be the first place either leaked. Generating it also lets the key be DERIVED from the structure the files are rendered from, and lets the corpus attack itself: data/SOURCES.md measures, before any call was bought, that free column code gets 40 of the 64 and that a note vocabulary makes it worse.
The corpus
- The 64 paid claim filesgenerated from a fixed seed, so no real record, person or institution appears in it.
- Where each came fromdata/SOURCES.md states where every byte came from AND what the generator costs the measurement. Every payer, plan, billing entity, claim, service code, fee schedule, change and remittance is an invented code, and THERE ARE NO PEOPLE IN THIS CORPUS AT ALL — a member is a bare reference token with no name, date of birth, address or diagnosis, and a note is from a desk or is a payer bulletin. OPR-2026 is an invented in-house procedure, not a regulation or a payer contract, and no reporting or refund deadline is applied anywhere.
Swap this folder for your own material and the kit is pointed at your paid claim files. That is the whole change — there is no database to migrate.
==============================================================================
PAID CLAIM OVERPAYMENT RECONCILIATION -- ONE CLAIM, ONE REVIEW DATE
==============================================================================
FILE OVP-0001
PAYER PL-31 commercial plan
LINE OF BUSINESS COMMERCIAL
BILLING ENTITY GRP-2200 outpatient group
CLAIM CLM-610100
MEMBER REF MBR-5520100
DATE OF SERVICE 2026-01-05
PAID DATE 2026-01-21
REVIEW DATE 2026-06-01
TOLERANCE 1.00
CURRENCY USD
-- THE CLAIM AS PAID ---------------------------------------------------------
LINE SERVICE DESCRIPTION UNITS ALLOWED/UNIT PAID BASIS
1 SVC-7302 ultrasound, limited 2 187.60 375.20 FS31-26A
2 SVC-5120 therapy session, 15 min 3 47.25 141.75 FS31-26A
CLAIM PAID TOTAL 516.95
-- PAYMENT BASIS CHANGES RAISED AFTER PAYMENT --------------------------------
CHANGE ISSUED LINE KIND CHANGE BASIS EFFECTIVE CORRECTED STATUS
BCH-4101 2026-02-19 1 RATE allowed 187.60 to 172.60 per unit FS31-26B 2026-01-01 345.20 POSTED
BCH-4102 2026-04-25 1 RATE allowed 187.60 to 159.46 per unit FS31-26C 2026-01-01 318.92 POSTED
-- BASIS REGISTER ------------------------------------------------------------
REGISTER EXTRACTED 2026-06-04
VINTAGE KIND PUBLISHED STATUS REPLACED BY ON
FS31-26A RATE 2025-12-01 SUPERSEDED FS31-26B 2026-02-15
FS31-26B RATE 2026-02-15 CURRENT -- --
FS31-26C RATE 2026-04-20 CURRENT -- --
Abridged — the file continues.
The outcomeWhat a good result looks like
One paid-claim file in, one row out: the changes in force, the duplicates and the credits owed elsewhere by remittance id, any corrected basis that was itself replaced, a line table naming the change that caused each line, the payer overpayment to the cent and one of six OPR-2026 verdicts. 52 of 64 claims come back right on all six graded fields, against 40 for the best free arm and 11 for the worklist copied through the same station.
And when it cannot
On the scored run 64 of 64 replies parsed, nothing stopped at the ceiling and no call failed. The 12 claims it got wrong are named in the kit README with what it answered: 6 called a basis stale that was replaced only AFTER the review date, 2 read a payer bulletin's "supersedes in full" as taking the change itself out, 2 left the stale list empty on a replaced basis so the station confirmed an overpayment against it — the guardrail's own named harm — and 2 dropped a real duplicate beside a note saying it was not a reissue. A reply that cannot be parsed is scored wrong, never re-fired.
Where it fitsWhat did work
Every line below is a measured result from this kit's own runs, with the figure that supports it. The headline above is not softened by any of them.
- Your change feed marks a replaced or reversed change as a STATUS, and your remittance history prints each payment's true source — the free columns floor, and do not buy a call at all
40 of 64 claims for $0.00. Voided, prospective and after-review changes, register-stale bases, duplicates and credits owed elsewhere are all decidable from columns and dates, and the floor gets every one of the 40 column-decided claims. - Replacements, reversals, reissues and mis-postings arrive as free text — a desk note, an appeal decision, a payer bulletin — the paid call
This is the whole product. On the 24 claims a sentence decides the paid arm is 20 and the columns floor 0. - You need replaced bases caught reliably, because confirming an overpayment on a replaced basis is the harm you are guarding against — the free columns floor, and read the paid arm beside it
The columns floor gets the stale-bases set right on 59 claims and the paid arm on 54. The paid arm confirmed an overpayment on a replaced basis twice (OVP-0030, OVP-0031) and called a basis stale six times on a replacement dated after the review. The floor has its own blind spot — it cannot read a withdrawal bulletin, and it confirms on a replaced basis 5 times. - You want the payment integrity worklist audited — either paid or free — both beat it comprehensively
The worklist disagrees with OPR-2026 on 32 of 64 claims. It is published as an arm precisely so the comparison is against what is running today rather than against nothing.
And where nothing here is good enough:
- Your corrections compose — a new rate, a units edit and a coordination finding on one line — neither, yet
OPR-2026 refuses to compose them and answers BASIS-UNSETTLED. Every percentage here is against a unit where one change in force names one line.
At a glanceHow the whole thing runs
Run once, for real, on 2026-09-12. Every figure on these pages was captured from that run — nothing is written from intent.
14 steps, grouped by the question that sends you to them rather than by build order. Each tile carries the one figure that step is about, and opens the page behind it.
Should you use this?What you bring, where it stops, and when not to use it
Before you commit an afternoon to this, these are the answers that decide it. Each one is rendered from the record it lives in — and links the page that holds it in full.
| What do I have to bring? | Replace data/corpus/*.txt with your own paid-claim files in the same shape and data/claims.json with your own register, then run python3 -m evals.run --run-id b000-<yours>-columns --floor columns — it needs no key and costs nothing. ⚠︎ WHAT STOPS BEING TRUE THE MOMENT YOU DO. Corpus lens → |
| When is this the wrong choice? | Avoid: Paying per claim for a reading you already have in a column. That is the case against the best-fitting scenario (“Your change feed marks a replaced or reversed change as a STATUS, and your remittance history prints each payment's true source”). 5 scenarios scored in all, each with its own. Eval lens → |
| Where does it stop working? | A register or bulletin feed that does not carry the DATE a vintage was replaced. R-5 turns on replaced on-or-before the review date; a STATUS column alone cannot separate a replacement before review from one after, and that is exactly where the paid call already fails 6 times. 6 recorded failure modes, each from a run rather than a guess. Corpus lens → |
| What was never verified? | NO SECOND SCORED RUN. One was fired, so the run-to-run spread on this corpus is unknown and no confidence interval is claimed anywhere on this page. 9 items this kit says it could not check. Eval lens → |
| Can I run this on a model I control? | Yes — any OpenAI-compatible endpoint, including one on your own hardware. The shipped adapter takes its host from BASE_URL and its model from MODEL, so nothing in src/ changes. The published figures come from 1 model on the fast tier, one provider, one key. Prompt lens → |
| And if it fits — what do I stand up? | 5 artifacts with a stated home and a stated egress, and 3 decisions each with what you provision past its ceiling — plus what was not measured. That is the next page, not this one. step 14 — Run it in your environment → |
Not asked of this kit — 2 questions: clone (a fresh clone of this kit runs with nothing fetched); judge (nothing here is graded by a model).
Last verified 2026-09-12 — r001-claim-overpayment. Every figure on these pages was captured from that run.
Run itHow this reaches your data
Every result on this page was produced by pure code over checked-in files, with no API key — which is why you can read the numbers before anyone spends anything.
Run this on your own data
- The pipeline, its eval harness and the runs behind every numberdeployed inside your environment, on your own model endpoints, against your own documents.
- The corpus above is the shape, not the limitit is a folder swap, and there is no database to migrate.
Checked before this shipped — A clean checkout with no key configured renders the whole board, runs all four free floors on the chosen claim and replays every committed run. pip install -r requirements.txt installs nothing — the kit is standard library only. The only thing a key buys is the ASK THE MODEL button and a new scored run.









