Home › Use Cases › Settle the show and say what the artist is owed
Use caseUC0165
🧪 Use-case kit · runnable

Settle the show and say what the artist is owed

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

The show is over, the box office has closed, and someone has to turn a box office report and a performance contract into a single number: WHAT THE ARTIST IS OWED. A settlement nets the adjusted gross receipts against the expenses the CONTRACT allows and then applies the deal terms -- a guarantee against a percentage of net after break even, whichever is greater. The hard part is not the netting. The contract decides which expenses are allowable and capped, the box office report lists everything the venue spent, and THE TWO DO NOT USE THE SAME VOCABULARY: the venue books 'IATSE house call, four hour minimum' and the contract says 'Stagehands and local labour'. The category code is the bridge where there is one, and on two of this corpus's cases there is no bridge at all. THE NAMED TRAP IS THE AGGREGATE CAP -- a cap that governs a CATEGORY rather than a line reads as perfectly fine line by line: each advertising line is under the nine thousand the contract allows, the category is right, the invoice is on file and the arithmetic is exact. The only thing wrong is that the cap was never a per-line cap. And three traps run the other way, because a wrong settlement is a DISPUTED PAYMENT TO A NAMED ARTIST: a cap a side letter raised for this engagement only, an excluded cost the artist's own tour manager agreed on the night is a show cost for this date, and a category with no schedule row that the parties placed under an allowable clause. All three look reducible to the tables and all three are payable in full. A settlement clerk reading an expense sheet line by line against the contract: joining each booked charge to a category in the allowable expense schedule when the two are written in different vocabularies, checking each against the cap that category carries, checking whether the cap is per event or on the category as a whole, checking that no line re-books a fee already deducted above the adjusted gross line, checking that the documentation the schedule requires is on file -- and then reading the correspondence to find which of those apparent reductions somebody has already agreed away, before adding the allowable total to the guarantee, taking the overage off the adjusted gross, applying the split and taking the greater of the two.

Audience

Promoter-side settlement staff, venue finance and tour accountants who assemble an event settlement from a box office report and a performance contract before sitting down with an artist's tour manager -- and the people who build tooling for them. Every number on these pages came from one real run of this code, not from a vendor page.

The inputThe actual event settlements

The corpus is 45 event settlements, 0.36 MB (txt 45). A real settlement pack carries a named artist's guarantee, a named promoter's split and that promoter's margin on the night. All three are commercially confidential, which is why there is no public corpus of (box office report, contract, agreed settlement) triples -- and why publishing a scrubbed real one would be worse than publishing none, because the scrubbing is exactly where the interesting defect hides. More to the point, the thing being measured has to be PLANTED to be measured: to count whether a settlement pays an amount it can defend you have to know which expense lines were genuinely allowable, and a real archive does not come labelled.

The corpus

  • The 45 event settlementsgenerated 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 event settlements. That is the whole change — there is no database to migrate.

One event settlement, as the model receives itES-0001.txt · 1 of 45
Event Settlement
----------------------------------------------------------------
  Settlement          ES-0001
  Venue               The Halloway Pavilion, Ashgrove
  Promoter            Eastbrook Entertainment
  Artist              Marla Ferrow
  Engagement          ENG-2140
  Contract            PC-5301
  Performance date    2026-05-28
  Settlement basis    guarantee against a percentage of net receipts after break even

Box Office Report
----------------------------------------------------------------

  Scaling

  Tier                Price     Sold    Comps          Gross
  Orchestra          108.50      333        5      36,130.50
  Mezzanine           48.00     1021       33      49,008.00
  Balcony             32.50      284       43       9,230.00

  Paid tickets                                             1638
  Gross ticket receipts                               94,368.50
  Less  State admissions tax at 8.00 per cent          7,549.48
  Less  Facility fee, 2.50 per paid ticket             4,095.00
  Less  Ticketing system charge, per paid ticket       2,943.75
  Adjusted gross receipts                             79,780.27   CL-5.2

Contract Settlement Terms
----------------------------------------------------------------

  Deal terms

  Guarantee                                     23,525.00   CL-4.1
  Percentage of net after break even            80.00 pct   CL-4.2
  Break even                               the guarantee plus the allowable event expenses   CL-4.3
  Artist payment                           the greater of the guarantee and the percentage payment   CL-4.4

  Allowable expense schedule

  code      category                                    status              cap  cap basis     documentation      clause

Abridged — the file continues.

The outcomeWhat a good result looks like

A drafted settlement: one entry per expense line, in the report's order, each carrying a disposition, the amount that is actually allowable, and on a reduction the ground, the clause the contract itself prints for it and the backup record behind it -- or an explicit INSUFFICIENT_EVIDENCE naming what is missing. Then the settlement closed with the contract's own arithmetic: allowable expenses, break even, net receipts, the percentage payment, which branch of the deal wins, and what the artist is owed. Beside every line, what the strongest free code would have written.

And when it cannot

⚠︎ EVERY ONE OF THE SEVEN MISSES IS THE SAME READING, AND IT IS THE READING THAT PAYS A STRANGER. The fast tier scored 97.41 pct of 270 lines; all seven misses are M_CODE_NOT_IN_SCHEDULE lines -- a category with no row in the schedule and nothing in the correspondence about it -- where it said DISALLOWED and the key says the pack does not settle it. It said so plainly every time: 'EX-ZK4 is not listed in the allowable expense schedule, so the sponsor activation build-out is not an allowable settlement expense.' ⚠︎ THE ANSWER KEY IS ARGUABLE AND THE MODEL MAY BE RIGHT: CL-7.1 is headed 'Expenses allowable in the settlement of this engagement', and a closed-list reading makes absence mean not allowable. The key takes the open reading, partly because this corpus itself proves an unscheduled category CAN be allowable when the correspondence says so -- and the model took all 12 of those. So 97.41 pct is a FLOOR and nothing higher is claimed. The corpus was NOT regenerated and the run was NOT re-fired. ⚠︎ BUT THE CONSEQUENCE IS REAL HOWEVER YOU READ THE CLAUSE. Those seven lines sit in six settlements, and closing them instead of holding them meant the model PUBLISHED A PAYMENT ON ALL SIX -- up to $76,693.19 to a named artist -- where the key says no figure is computable at all. That is not a wrong disposition on a line; it is a settlement closed on a line nobody can settle, and it is the one output here that cannot be withdrawn.

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 settlements are tables. Every fact that decides a line is already a FIELD -- a category code that joins to a schedule row, a cap in a column, a status flag, a deduction already printed above the line. — the free floor
    settlement-gate takes 100 pct of the structured half for $0.00, cites every clause correctly and attaches every record, and finishes 45 settlements in under a second. Sweep its tolerance on your own corpus first.
  • Your caps are sometimes on a category rather than a line, and which is which is not always in the table. — the paid arm
    the free floor takes 16 of 16 where the table says 'in aggregate' and 0 of 18 where only a sentence says so. That split is the whole trap.
  • Side letters, day-of-show agreements and settlement-meeting notes routinely override the schedule for one engagement. — the paid arm
    42 of 42 reverse traps. Free code reduces every one of them, which is 42 letters to a tour manager holding the document that refutes them.
  • You need a number you can hand over, not a list of exceptions. — the paid arm, with a hold rule you enforce yourself
    33 of 33 payments to the cent and 33 of 33 deal branches -- but it closed six settlements it should have held. Enforce HOLD in code from the line dispositions rather than trusting the arm's own settlement block; src/checks.settlement already does exactly that.
  • Your expense sheet is accepted as submitted today. — either, urgently
    as-reported scores 58.52 pct and underpays on all 16 settlements it gets wrong. Not one of them overpays.

At a glanceHow the whole thing runs

97%settlement accuracy pct
75,388 msp50, end to end
$34.92per 1,000 event settlements · Google Gemini 3 Flash

Run once, for real, on 2026-08-26. 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?tools/build_corpus.py writes data/corpus/*.txt and data/gold.jsonl. src/select.py withholds a NAMED SECTION and is not a redaction system. Corpus lens →
When is this the wrong choice?Avoid: Reading the free floor's 100 pct on the structured half as a difficulty measurement. src/checks.py is what DEFINES 'structured' on this corpus, so that row is a bar, not a result -- and the same floor reduces all 42 lines the pack has already answered. That is the case against the best-fitting scenario (“Your settlements are tables. Every fact that decides a line is already a FIELD -- a category code that joins to a schedule row, a cap in a column, a status flag, a deduction already printed above the line.”). 5 scenarios scored in all, each with its own. Eval lens →
Where does it stop working?A settlement layout that is not this one. src/pack.py is a set of regular expressions written for these headings, these fixed-width tables and these key/value blocks; against a real venue's settlement sheet it parses nothing. 6 recorded failure modes, each from a run rather than a guess. Corpus lens →
What was never verified?The correspondence-blind ablation. s001 was never run -- src/prompt.py carries the blind variant and RAISES rather than silently no-opping, but it was a spend decision that was not taken. 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?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-26 — r001-settlement-split. 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 — Clone, python3 -m src.app, open the port. No key, no install, no index build: the corpus, the answer key, all three free floors, the tolerance sweep and every recorded run are committed, and the UI replays the scored run with nothing configured.

A living map of modern AI — kept current every morning