Home › Use Cases › Track a signed group block's pickup and name every night the contract misses
Use caseUC0419
🧪 Use-case kit · runnable

Track a signed group block's pickup and name every night the contract misses

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 signed group contract reserves rooms by night and by room type at a contracted rate. The reservation system reports what has actually been picked up. Between them sits the block file: an addendum register, a clause band per room type, and a note against each night recording what was released, what cutoff was agreed and what a review found. Today a coordinator joins those three by eye, one contract at a time, and the nights that go wrong are the ones where the system's own columns say one thing and the file says another. The nightly join between a pickup extract and a signed block schedule. It produces one verdict per block-night, the term of the contract it rests on, the exposure to the cent and one row copied verbatim as evidence — before the cutoff is worked, when the answer can still change something.

Audience

The group-sales coordinator who works the cutoff queue, and the director who has to decide whether an automated pass is worth buying. This kit's own answer is a qualified no on the arithmetic and a clear yes on the clause reading, and both are on the page. Every number on these pages came from one real run of this code, not from a vendor page.

The inputThe actual pickup packets

The corpus is 60 pickup packets, 0.16 MB (txt 60). A generated corpus is the only kind whose answer key can be DERIVED rather than typed, and derivation is what makes every figure on this page re-checkable at $0.00. It also lets the family mix be PLANNED — 13 families with stated sizes — so the kit can say what it measures instead of discovering it. The price is stated in full in data/SOURCES.md: five of the defect families are settled by the columns by construction, and the separating population is 25 of 270 nights.

The corpus

  • The 60 pickup packetsgenerated from a fixed seed, so no real record, person or institution appears in it.
  • Where each came fromSee data/SOURCES.md. It states what the generator costs the measurement as measurements rather than as caveats — including that a note-reading floor written with the answer key open solves this corpus completely, and that the paid call loses to it.

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

One pickup packet, as the model receives itBP-0001.txt · 1 of 60
GROUP BLOCK PICKUP PACKET - CONTRACTED BLOCK AGAINST RESERVATION-SYSTEM PICKUP

PACKET HEADER
  Packet             BP-0001
  Contract           GC-51000
  Report as-of       2026-02-10
  Property           Marrowdale Harbour Hotel, Pitlowrie
  Group file         Pentland Ridge Alumni gathering
  Prepared by        M. Hallberg, group sales

BLOCK PICKUP PROCEDURE
  Procedure               BLK-2026
  Contract revision       BLK-2026 contract revision 2
  Contract signed         2025-12-12
  Commitment basis        per block-night, contracted rooms less the attrition allowance
  Allowance rounding      whole rooms, rounded down
  Review floor rounding   whole rooms, rounded up

SIGNED ADDENDUM REGISTER
   Ref      Signed        Band     Amends       Description
   AD-01    2026-01-31    CB-01    rooms        Contracted room counts restated for the band named

CONTRACT BLOCK SCHEDULE
   Band     Room type Description              First night   Last night    Attrition   Cutoff        Review
   CB-01    RT-KNG    King, standard           2026-03-02    2026-03-03    10 pct      2026-02-05    2026-01-16
   CB-02    RT-TWN    Twin, standard           2026-03-02    2026-03-03    15 pct      2026-02-05    2026-02-05

BLOCK NIGHT PICKUP
   #  Night       Room type Band   Contracted  Picked  Rate       Block value   Status    Clause note
   1  2026-03-02  RT-KNG    CB-01  10          10      $120.00    $1,200.00     Held      Pickup reconciled against the reservation system at the nightly extract
   2  2026-03-02  RT-TWN    CB-02  17          16      $191.00    $3,247.00     Held      Courtesy holds on adjacent nights sit outside this band and are not counted here

Abridged — the file continues.

The outcomeWhat a good result looks like

Every block-night carries a verdict, a term, an exposure and a quoted row, and the report carries ON-TRACK or FLAG with the nights named. Nothing is released, billed, waived or extended.

And when it cannot

Where the reading is wrong the whole chain is wrong and nothing downstream can tell: the station recomputes faultlessly from a reading that was false, and the report reads ON-PACE on a night the group no longer holds. That is why reading_required is marked in the key and published on every run.

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 pickup extract and your block schedule are already columns, and the clause notes are empty or boilerplate — free code
    the pairing, the window, the printed cutoff and the attrition arithmetic are a lookup, two date comparisons, one multiplication and one integer division. The column floor gets 245 of 270 for $0.00 and the paid call cannot be separated from it (p = 1.000000).
  • Your block files carry real clause traffic — releases the system has not caught up with, cutoffs moved by agreement, signed addenda — the call, with the station over the top
    on the 25 nights whose answer lives only in a note the call scores 22 against the column floor's 0 and the de-memorised note floor's 6, ahead on 16 and behind on 0 (p = 0.000031).
  • You need the exposure figure to be right to the cent for a queue somebody actions — the station, always
    the call's own exposure is right on 100 of 270 nights; recomputed from its readings it is right on 249, and money overstated falls from $250,462.00 to $66,909.00.
  • You want a number you can put in front of a director this week — the paired test, not the percentages
    two accuracies side by side invite a subtraction, and a subtraction of paired rates is not a result. Every comparison on this page is McNemar exact on the discordant nights, and two of the six come back NOT SIGNIFICANT.

At a glanceHow the whole thing runs

90%verdict pct
3,002 msp50, end to end
$0.00per 1,000 pickup packets · google/gemini-3-flash

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?Render your own packets into data/corpus/ in the layout src/rules.py's ROW_RE and panel headings expect — the header with a Report as-of date, a SIGNED ADDENDUM REGISTER, a CONTRACT BLOCK SCHEDULE keyed on (band, room type), and a BLOCK NIGHT PICKUP panel whose rows carry a Status word and a clause note — put the structural copy in data/sources.json and the labels in data/gold.jsonl, and every arm, the station, the scorer and the board run unchanged. What does NOT transfer is every accuracy figure on this page. Corpus lens →
When is this the wrong choice?Avoid: Paying for a call that adds nothing to arithmetic free code already does perfectly. That is the case against the best-fitting scenario (“Your pickup extract and your block schedule are already columns, and the clause notes are empty or boilerplate”). 4 scenarios scored in all, each with its own. Eval lens →
Where does it stop working?A block schedule that runs to hundreds of band rows, or a contract with a hundred block-nights. The whole packet goes into one call and there is no retrieval step to add without changing what the measurement means. 5 recorded failure modes, each from a run rather than a guess. Corpus lens →
What was never verified?Whether a determined paraphrase gets past src/refusal.py. It is a phrase list, printed in full in that file, and it was written against the corpus and against data/policy.md before the first call. 6 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?6 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-12 — r001-block-pickup. 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 — A clean checkout with no key configured renders the whole board, replays the committed scored run from results/ at $0.00, computes three of the four free floors live in the page, and disables the one control that would spend. The corpus rebuilds byte-identically from the seed under two PYTHONHASHSEEDs, and evals/check_labels.py re-derives the key with its own parser and reports 0 problems. Nothing in that sequence needs a network.

A living map of modern AI — kept current every morning