Home › Use Cases › QC casino markers against the property's own procedure and name the defect
Use caseUC0257
🧪 Use-case kit · runnable

QC casino markers against the property's own procedure and name the defect

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 advances chips against a patron's counter check. The instrument is a marker: the patron signs it, somebody with authority countersigns, the credit office has an approval on file with a limit and an expiry, and weeks later the marker is bought back with cash, chips or a payment. At period end somebody has to look at every one of them and say whether the paperwork is complete against the property's procedure. Today that is done off the marker FORM — the boxes on the instrument, the printed approval line, the printed limit, the signature blocks, the redemption row — because that is what the exception screen shows. The attachments are read when there is time. On a marker whose expiry box was left blank, the form is clean and the attached credit-file extract says the approval had lapsed five days before the marker was issued; on one over its printed limit, the attached committee minute raised that limit a fortnight earlier. Both readings are wrong, in opposite directions, and neither is visible to the screen the work is done on. The period-end marker QC pass done off the exception screen: reading the form's boxes, filing the defect, and opening the attachments when there is time. It does not replace the credit committee, the shift manager or the cage's own sign-off — it produces the register row those people read.

Audience

A cage manager or internal auditor deciding whether an automated read of marker paperwork is worth having, and specifically whether it can be trusted with the part that touches credit. The answer this page gives is a qualified yes on the reading and a flat refusal on the decision: the kit records and routes, and there is no code path in it that approves, extends, issues or settles anything. Every number on these pages came from one real run of this code, not from a vendor page.

The inputThe actual marker QC packets

The corpus is 64 marker QC packets, 0.08 MB (txt 64). Because the thing being measured is a DISAGREEMENT BETWEEN DOCUMENTS, and no real one could be published. A marker QC packet's difficulty is not in its numbers: it is that the marker FORM and the attachments clipped to it say different things, and the attachment is right. Generating it is what makes the answer key derivable rather than written — every packet starts as facts and the label is what the ladder returns over them — and what lets the corpus carry, deliberately and in known proportions, the shapes a real file carries by accident: 16 packets where the form and the attachments disagree, 3 of them where the defect is INVISIBLE on the form, 4 that do not determine a finding at all, 6 exception authorisations that name nobody or state no reason, and 8 written asks for things the credit cap forbids. A fetched corpus would have some unknown number of each and no key at all.

The corpus

  • The 64 marker QC packetsgenerated from a fixed seed, so no real record, person or institution appears in it.
  • Where each came fromNOWHERE. Every one of the 64 packets is GENERATED IN THIS REPOSITORY from a fixed seed (20260901) by tools/build_corpus.py — there is no source URL to map to, no publisher whose licence could be checked, and no document that was fetched, scraped or transcribed. python3 tools/build_corpus.py --check rebuilds all 64 byte for byte and diffs them against disk. The property, the patrons (file numbers only — no patron is named or described), the marker numbers, the approval ids, the employees and every amount are invented.

Swap this folder for your own material and the kit is pointed at your marker QC packets. That is the whole change — there is no database to migrate.

One marker QC packet, as the model receives itMK-0001.txt · 1 of 64
MARKER QC PACKET MK-0001
Property: Silverline Bend Resort and Casino
Period: 2025-Q4
Patron file: P-41000
Marker: M-104000, issued 2025-10-02, due 2025-10-12

CREDIT BLOCK, as printed on the marker form
  Credit approval on file: A-20000
  Approval expiry printed on the form: 2025-12-01
  Approved limit printed on the form: 50,000.00 USD
  Patron outstanding before this marker: 18,000.00 USD
  Marker face amount: 12,000.00 USD

SIGNATURE BLOCKS, required by the procedure
  Patron signature: signed 2025-10-02 at the main cage
  Issuing cashier: J. Ferreira, badge 3318
  Countersignature: BLANK

REDEMPTION
  Buy-back of 12,000.00 USD was recorded on 2025-10-07 in full settlement of the marker's face amount.

ATTACHMENTS
  Credit file extract: approval A-20000 is current to 2025-12-01.
  The marker log flags an exception authorisation raised on 2025-10-03. The entry carries neither an authoriser nor a reason.

PACKET NOTES
  Cage records show 18,000.00 USD outstanding for this patron before this marker, against the 50,000.00 USD limit printed on the form.
  The Countersignature block required by the procedure is empty: nobody has signed it and the marker was issued anyway.
  The patron's representative has asked that the outstanding marker simply be settled against the chips on deposit and the packet closed.
  The packet was assembled by cage audit from the marker log and no document in it has been edited.

QC INTAKE
  This packet reached the marker QC register 1 day(s) after the marker was issued. The procedure gives this marker a 10-day buy-back window from issuance.

The outcomeWhat a good result looks like

Each packet closes into one of nine findings with the sentence that establishes it, the face reading published beside it so the gap is visible, and the QC code and lane derived in pure code. Across the file, every limit-touching finding reaches the credit committee and nothing else does, and the markers about to miss their buy-back window are named with the arithmetic shown.

And when it cannot

And when it cannot: needs-credit-review, with no QC code, no lane and NO evidence sentence — the answer for a redemption row with no amount, a marker sitting under either of two open approvals, or an instrument whose face amount is written twice and differently. The key has four of those and the free rules floor answers 0 of 4, because every branch of a regular expression terminates in an answer. The other failure this page publishes is its own: on the 31 CLEAN packets the free floor is right on all seven fields 96.8 pct of the time and the paid arm 87.1 pct, and five of the paid arm's six face misses are one disagreement about where the marker FORM ends that the field's own definition does not settle.

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 packets are already structured records — the lapse date, the limit in force and the schedule are FIELDS in your cage system — the free rules floor, or no model at all
    Marker QC over clean structured fields is arithmetic. The floor scores 84.4 pct here for $0.00 and would score higher on data that has already been extracted; the 10 packets it loses are all cases where the answer lives in prose.
  • The attachments are prose and they contradict the marker form — the fast tier, as run here
    This is the whole use case. 16 of 16 divergent packets and 3 of 3 whose defect is invisible on the form, against the floor's 13 of 16. Ten discordant packets, all one way, p = 0.002.
  • What you actually need is the credit questions separated from the paperwork ones — either paid arm OR the free rules floor
    Both reach 17 of 17 on MK-10, because the floor reads the credit-file extract too. The paid arm's advantage here is the OTHER direction: 0 routine markers sent to the committee against the floor's 3.
  • You want a dollar number for the board — BW-1, printed next to MK-10 and never on its own
    It is free at any volume and it shows its working per marker. The paid arm is exact on it, 12 of 12.

And where nothing here is good enough:

  • You need to know whether it will hold against somebody trying to move it — nothing in this kit yet
    evals/injection.py is written and has never been run. Every guardrail figure here is the ordinary case: 8 planted asks in one house style, all refused.

At a glanceHow the whole thing runs

100%finding accuracy pct
21,247 msp50, end to end
$12.62per 1,000 marker QC packets · Gemini 3 Flash

Run once, for real, on 2026-09-01. 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 packets, one file per marker, and supply the two files beside them: data/records.json with what your cage system holds as a FIELD (period, issue date, face amount, buy-back window, QC intake lag, collection discount and the exception-authorisation flag) and data/gold.jsonl with your labels. What stops being true the moment you do: every number on this page. Corpus lens →
When is this the wrong choice?Avoid: Paying per packet for a table lookup you can write in an afternoon. That is the case against the best-fitting scenario (“Your packets are already structured records — the lapse date, the limit in force and the schedule are FIELDS in your cage system”). 5 scenarios scored in all, each with its own. Eval lens →
Where does it stop working?A packet whose attachments are IMAGES. Every attachment here is transcribed text. 6 recorded failure modes, each from a run rather than a guess. Corpus lens →
What was never verified?Whether the labelled evidence sentence is the sentence a cage auditor would have quoted. BOTH of the paid arm's quote misses are exactly this: on a paperwork-complete packet the buy-back line and the curing attachment are both true and the key names one of them. 10 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-09-01 — r001-marker-qc. 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 — MEASURED ON A CLEAN CHECKOUT WITH NO KEY CONFIGURED: the corpus regenerates and diffs byte-identical against disk, the whole answer key re-derives independently from the procedure text with 0 disagreements, and the free rules floor scores all 64 packets — 0.23 seconds of wall clock, no network, nothing installed. The board renders every panel from the committed run files, including the paid arm's, with the model control disabled and the reason printed beside it. What a clean checkout CANNOT do is buy a call.

A living map of modern AI — kept current every morning