Home › Use Cases › Cash-equivalent and check reconciliation
Use caseUC0187
🧪 Use-case kit · runnable

Cash-equivalent and check reconciliation

A small, forkable project that does one job end to end. Run once for real, and every figure on these pages captured from that run.

The business caseThe problem this solves

A casino cage takes cash equivalents all day -- personal checks, cashier's checks, money orders, traveller's checks, incoming wires, foreign drafts, marker redemptions, transfers to a satellite bank -- and the bank file for that gaming day comes back the next morning. Totalling one against the other is a subtraction and a spreadsheet does it perfectly. The subtraction is not the job. A break on the cage's side is a correction to the cage's own record; a break on the bank's side is a claim on the bank. Different remedy, different person, different escalation -- and the arithmetic is identical either way. Worse, a third of what looks unmatched is not a break at all: on this corpus 231 of 419 instruments look unbanked on an amount match and are not, and the spreadsheet convicts 86.39 pct of them. a day-close tie-out that matches each instrument against a bank line at the same amount and calls everything left over a break -- which on this corpus means putting 33.09 pct of the genuine breaks on the wrong desk, convicting 86.39 pct of the instruments that were never due at the bank, and landing 85.23 pct noise on the exception report. The strongest free floor here is far better than that and is shipped in the kit; the figures above are the floor most estates actually run.

Audience

a cage supervisor signing a gaming day's reconciliation before the day is closed, and an internal audit function deciding whether the tie-out the property already runs is finding anything worth a night's chasing. Every number on these pages came from one real run of this code, not from a vendor page.

The inputThe actual cage reconciliation pack -- one cage bank's gaming day, carrying the control policy, the instrument log, the deposit batches, the bank activity, the documents on file, the shift correspondence and one withheld treasury block

The corpus is 30 cage reconciliation pack -- one cage bank's gaming day, carrying the control policy, the instrument log, the deposit batches, the bank activity, the documents on file, the shift correspondence and one withheld treasury block, 0.39 MB (txt 30). A cage reconciliation is the one document that has to name a patron, the money they moved and the credit the house gave them, all on the same line. It is personal data, player data, internal-control evidence and credit information simultaneously. No property publishes one; a property that did would be handing an auditor and a plaintiff the same file. So the kit generates its own, says so on the page, in the UI banner, in every run record and beside every published figure, and keeps the generator in the repository so the corpus can be regenerated, inspected and disagreed with.

The corpus

  • The 30 cage reconciliation pack -- one cage bank's gaming day, carrying the control policy, the instrument log, the deposit batches, the bank activity, the documents on file, the shift correspondence and one withheld treasury blockgenerated from a fixed seed, so no real record, person or institution appears in it.
  • Where each came fromwritten for this kit rather than collected — the corpus is generated in the kit's own repository, so there is no third-party data in it.

Swap this folder for your own material and the kit is pointed at your cage reconciliation pack -- one cage bank's gaming day, carrying the control policy, the instrument log, the deposit batches, the bank activity, the documents on file, the shift correspondence and one withheld treasury block. That is the whole change — there is no database to migrate.

One cage reconciliation pack -- one cage bank's gaming day, carrying the control policy, the instrument log, the deposit batches, the bank activity, the documents on file, the shift correspondence and one withheld treasury block, as the model receives itCRP-0001.txt · 1 of 30
Cage Reconciliation
----------------------------------------------------------------
  Property                    Silver Mesa Resort and Casino
  Cage bank                   Main Cage Bank 2
  Gaming day                  2026-07-10
  Bank posting day            2026-07-11
  Prepared by                 Cage supervisor, day-close
  Instruments logged          14
  De-minimis break            50.00

Instrument Control Policy
----------------------------------------------------------------
  Control rules
  CG-1.1  Every cash equivalent accepted at the cage is logged at the amount printed on the face of the instrument, on the gaming day it is accepted.
  CG-1.2  One instrument, one log line. An instrument carried across a shift change is handed over on the bank transfer sheet and is not logged again by the receiving teller.
  CG-2.1  An instrument's class decides its route. A class the instrument class table prints as not bankable is applied inside the property and is never presented to the bank; it is not a reconciling item against bank activity.
  CG-2.2  An instrument held under a signed deferred-deposit agreement, or remitted for collection rather than deposit, is not due at the bank on the gaming day it was accepted. Absence of a bank line for it is not a break.
  CG-3.1  An instrument booked to a deposit batch is reconciled when that batch posts to the cage bank at the total printed on the batch ticket.
  CG-4.1  Correspondent, collection and conversion charges are borne by the remitter. An incoming instrument is reconciled at its gross; a bank line that posted net of a charge has not paid the cage less, it has passed a charge on.

Abridged — the file continues.

The outcomeWhat a good result looks like

a disposition per instrument with the side named, the cause named, the policy rule cited, the evidence attached and the money to the cent -- and a SEPARATE call on whether it goes on tonight's exception report under CG-6.1. Measured: 83.09 pct of the genuine breaks put on the right desk, and 0 false break(s) across the 258 instruments that were not breaks (0.00 pct).

And when it cannot

an EVIDENCE_INCOMPLETE reading -- the bank advice that would settle the item has not arrived, or an adjustment carries a truncated reference that fits nothing on the log -- is carried to the next gaming day rather than adjusted against a bank line nobody can identify. CG-5.1 is explicit that such an item is neither written off nor reported. Measured: 96.00 pct of the 25 such instruments recognised as unsettleable.

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 bank file keys cleanly on the instrument reference and your log is a clean table — the free floor (evals/baseline.py, class-rule)
    It scores 100.00 pct on the instruments the tables settle, cites the rule, attaches the evidence, and costs $0.00. Nothing on this page argues for spending on that half of the job.
  • Your breaks are settled by shift notes, bank advices and credit-office correspondence — the paid arm
    The free floor scores 0.00 pct on that slice and cannot do better without becoming a parser of THIS generator's sentences, which would be worth nothing against a real cage's prose.

And where nothing here is good enough:

  • You want a number you can put in front of internal audit — neither, yet
    Every figure on this page is measured on a SYNTHETIC corpus with a known answer key. It is evidence about a method, not about your cage.

At a glanceHow the whole thing runs

94%recon accuracy pct
282,735 msp50, end to end
$102.06per 1,000 cage reconciliation packs · Google Gemini 3 Flash

Run once, for real, on 2026-08-27. 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?Drop your own packs into data/corpus/ in the layout data/SOURCES.md describes and everything except the answer key works immediately: the parser, the tie-out, all three free floors, CG-6.1's reporting rule and the UI. ⚠︎ WHAT DOES NOT TRANSFER. Corpus lens →
When is this the wrong choice?Avoid: It scores 0.00 pct on anything a sentence settles, and it cannot tell you WHICH packs hide one -- so a clean-looking day is exactly the day it is wrong about. It also convicts 7.36 pct of the instruments that were never due at the bank. That is the case against the best-fitting scenario (“Your bank file keys cleanly on the instrument reference and your log is a clean table”). 3 scenarios scored in all, each with its own. Eval lens →
Where does it stop working?An instrument whose class is not on the pack's class table. The tie-out returns None for bankable rather than assuming, and no route is inferred. 5 recorded failure modes, each from a run rather than a guess. Corpus lens →
What was never verified?A second paid tier. One tier was run; a second is a spend decision this kit did not make. 7 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 4 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-08-27 — r001-cage-instrument. 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.

Talk to us →

Checked before this shipped — git clone, then python3 -m src.app -- no install, no key, no network. The corpus, the answer key and every committed run record ship in the repo, and all three free floors are pure Python. python3 -m evals.check_labels proves the key in under a second and python3 -m evals.run --run-id <id> --floor class-rule reproduces the free floor's whole scorecard for $0.00.

A living map of modern AI — kept current every morning