Home › Use Cases › Hold and kill inventory reconciliation
Use caseUC0195
🧪 Use-case kit · runnable

Hold and kill inventory 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

Before an on-sale, an event's manifest is cut into blocks that are not for sale: a production kill for a camera platform, an artist hold, a promoter hold, a sponsor allotment, broadcast seats, house seats, accessible and companion pairs. Each stands under a document that authorises a seat count and a rule that says when it comes back. After the event somebody has to say which of them did what they were allowed to do. A ticketing system prints the seats still standing in each block at doors, perfectly, and that column is not the answer: 70 of the 224 blocks in this corpus are SUPPOSED to be standing, and the most expensive finding here -- a block released in full and on time that held more seats than any document authorised for the whole on-sale window -- does not appear on it at all. Every pack in this corpus is internally consistent, so no subtraction of two printed numbers finds anything. a morning-after hold review that reads the movement sheet and queries every block with seats still standing in it -- which on this corpus means calling 61.4 pct of the 114 blocks that are supposed to be standing a finding, naming a ground on none of the 100 findings, citing nothing, and putting 67.41 pct of the blocks the key would not raise on the desk.

Audience

the venue's box office manager, before the settlement meeting with the promoter Every number on these pages came from one real run of this code, not from a vendor page.

The inputThe actual hold-and-kill audit packs (one live event each)

The corpus is 40 hold-and-kill audit packs (one live event each), 0.31 MB (txt 40). The property under test is whether an arm can hold TWO facts about the same block at once -- what it DID (a printed movement row) and what it was ALLOWED to do (an authority document, a release rule, and sometimes a sentence that changed one of them). That survives the corpus being invented. What does NOT survive is any claim about real-world frequency: the defect mix is chosen, so no rate here estimates how often a real venue leaves a hold on.

The corpus

  • The 40 hold-and-kill audit packs (one live event each)generated 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 hold-and-kill audit packs (one live event each). That is the whole change — there is no database to migrate.

One hold-and-kill audit packs (one live event each), as the model receives itHKA-0001.txt · 1 of 40
Hold And Kill Audit
--------------------
  SYNTHETIC RECORD -- invented for an open kit. No real venue, event, tour,
  manifest, hold, kill or person appears in it.
  Pack                      HKA-0001
  Event                     EV-2026-0101
  Event type                Family show
  Venue                     Kestrel Park Stadium (VN-KPS)
  Manifest seats            30,765
  On sale                   2026-03-30
  Doors                     2026-05-09 19:30
  Audited as of             2026-05-10 11:30
  Average net per seat      61.78

Hold And Release Terms
----------------------
  Hold policy
    HP-1.1   A hold occupies manifest inventory and is not offered for general
             sale while it stands.
    HP-1.2   Seats inside a standing hold are sold only on a written release. A
             sale inside a standing hold is an inventory exception.
    HP-2.1   Every block stands under exactly one authority document, named on
             the block row and filed with this pack.
    HP-2.2   A block may not exceed the seat count its authority document
             authorises. Where a later document on file supersedes that count for
             the block, the later count is the operative one.
    HP-2.3   An authority struck, reduced or superseded ceases to support the
             block from the date it is struck, however the block row still reads.
    HP-3.1   A block under a release rule carrying a DEADLINE is released to
             general sale on or before that deadline.
    HP-3.2   A block under a release rule carrying a CONDITION is released once
             the condition is met. A condition that was not met leaves the block
             standing, correctly, through the event.
    HP-4.1   A kill removes seats from saleable inventory for the event.

Abridged — the file continues.

The outcomeWhat a good result looks like

A query list: every block with a disposition, the ground it turns on, the clause the venue's own hold policy prints for that ground, the documents that support it, the seats at risk, and a separate call on whether it is worth raising at all.

And when it cannot

A list of every block with seats still in it -- accessible seats, house seats and a live kill included -- sent to a promoter who answers three of them with the note that was already in the file.

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 hold report is a clean table and every authority document is filed beside it — the free floor (evals/baseline.py, inventory-gate)
    It takes 100 pct of the grounds the printed tables prove, cites the clause, attaches the document and applies HP-6.1's first limb -- for $0.00 and under a second.
  • Half your hold structure lives in advances, emails and a kill somebody struck by phone — the paid arm
    It is the only thing here that reaches the correspondence channel at all -- every free floor scores 0.0 pct on those 26 grounds by construction, and the arm takes 96.15 pct.
  • You need a query list somebody will actually read next month — whichever arm has the lower noise rate on YOUR corpus -- here that is the paid arm at 2.22 pct
    A catch rate with no noise rate beside it is not a measurement. The weakest floor scores 82.02 pct catching query-list blocks and puts 67.41 pct of the blocks the key would not raise on the desk.

At a glanceHow the whole thing runs

95%across runs
147,589 msp50, end to end
$61.08per 1,000 hold-and-kill audit 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?Replace the regular expressions in src/inventory.py with ones that match your own export and keep the returned dict shape -- everything downstream reads that dict and nothing else reads the text. The kit ships no ingestion for PDFs, spreadsheets or a ticketing API, and adding one is outside a kit. Corpus lens →
When is this the wrong choice?Avoid: Paying for the part a spreadsheet already does. That is the case against the best-fitting scenario (“Your hold report is a clean table and every authority document is filed beside it”). 3 scenarios scored in all, each with its own. Eval lens →
Where does it stop working?A REAL HOLD REPORT. src/inventory.py is regular expressions written for this corpus's layout -- underlined headings, two-space indented tables, IB- / MV- / AD- / HP- / RR- / HC- identifiers. 5 recorded failure modes, each from a run rather than a guess. Corpus lens →
What was never verified?The corpus is synthetic and its defect mix is chosen, so no rate on this page estimates how often a real venue leaves a hold on, sells into a kill, or holds more seats than any document authorised. Everything published here is a statement about these 224 blocks, and data/SOURCES.md says so at length. 8 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?4 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-08-27 — r001-hold-release. 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 evals.run --run-id b002 --floor inventory-gate reproduces the strongest free floor's 84.82 pct with no key, no network and no install. The corpus, the answer key and every committed result file are in the repo.

A living map of modern AI — kept current every morning