Home › Use Cases › Reconcile a title's published state against the grants in force
Use caseUC0280
🧪 Use-case kit · runnable

Reconcile a title's published state against the grants in force

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 distributor holds thousands of licences and publishes to dozens of platforms in dozens of territories, and the two systems that record those facts are not the same system. The grant register says what may be shown, where, and until when; the platform's delivery report says what is actually on the shelf. They drift, in both directions, and both directions cost money. A title live in a territory no grant reaches is unlicensed exposure — the licensor's auditor will price it in days. A title licensed, paid for and not showing is a minimum guarantee going out against an empty shelf. Reading a grant register and a delivery report side by side, row by row, and deciding whether a note in the margin is an authorised correction or somebody's opinion.

Audience

A rights operations analyst working a weekly avails sweep, and the content supply chain lead who reads what they produce. The row this pack becomes is what a licensor's auditor is shown when they ask how long a title was live without a licence. Every number on these pages came from one real run of this code, not from a vendor page.

The inputThe actual exposure pack

The corpus is 64 exposure pack, 0.10 MB (txt 64). It is generated because it has to be. A real avails pack is a joined extract of a distributor's rights system and a platform's delivery report, and both are commercially confidential on both sides of a contract. Generating it also buys the thing a borrowed corpus could not: the key is DERIVED from the structures each pack was built from, so no verdict and no day count is typed, and a second program re-derives all 384 cells from the printed page.

The corpus

  • The 64 exposure packgenerated from a fixed seed, so no real record, person or institution appears in it.
  • Where each came fromdata/SOURCES.md — every title, licensor, platform, territory, clause reference, ledger row, removal-order line and note is invented. Nothing is fetched, scraped or derived from anything real.

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

One exposure pack, as the model receives itAEP-0001.txt · 1 of 64
AVAILS VS ENTITLEMENT EXPOSURE PACK                                  AEP-0001
Prepared 2026-08-31 under AER-2026 | reconciled as at 2026-08-31

PACK FACTS
  Title                        Two Rivers Running
  Title type                   Limited series
  Licensor                     Ashgrove Distribution
  Platform in scope            Fenmarket TV
  Territory in scope           FR
  Reconciled as at             2026-08-31
  Pack reference               AEP-0001

GRANT REGISTER
  title                      clause       ver  effective   window from window to   status                 fee       platforms                          territories
  Two Rivers Running         ASG-4905/G     1  2025-02-01  2025-02-01  2027-12-31  IN FORCE               PAID      Fenmarket TV, Meridian Play        FR, IE, NL
  Northaven                  BRK-4838/H     1  2025-01-01  2025-01-01  2028-12-31  IN FORCE               PAID      Fenmarket TV, Northreach TV        ES, FR
  The Ferrier's Daughter     PWS-4930/D     1  2025-01-01  2025-01-01  2028-12-31  IN FORCE               PAID      Fenmarket TV, Northreach TV        ES, FR

PUBLICATION LEDGER
  platform                   territory   state   since
  Fenmarket TV               ES          LIVE    2025-08-17
  Fenmarket TV               FR          LIVE    2026-02-13
  Northreach TV              FR          DARK    2025-05-06

REMOVAL-ORDER LOG
  none on file for this title on this platform in this territory

NOTES
  The rights administration team has seen this pack's register rows and had no comment to add.

The outcomeWhat a good result looks like

One pack in, six graded answers out: the verdict, both day counts, the grant clause and version that is missing or does the covering, and the state of the removal-order log. The arm supplies the reading; pure code applies AER-2026 and derives the verdict and the counts.

And when it cannot

And what it does when it cannot. The paid call missed 3 of the 64 packs and every one is the same failure: a dated correction from content supply chain that carries no CORRECTION header. One of the three is an unlicensed exposure left unflagged and answered CLEAR; the other two are titles being paid for and not shown, answered COVERED with no days-dark count. The arm said why in its own words on one of them — 'the CSC re-statement note is not a formal AE-0 CORRECTION line' — a header requirement the rulebook in its own prompt does not state.

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 grant register and delivery report are clean column exports, and you want the reconciliation — the free rules floor alone — evals/baseline.py, mode rules
    61 of 64 verdicts, 378 of 384 graded cells, $0.00 — pack for pack identical to the paid call, 0 discordant pairs, exact binomial p = 1.0000. AE-1 is a deterministic join and a regular expression does it.
  • You want unlicensed exposure found and cited, and nothing else — either arm — they find the same 25 of 26 and cite the grant correctly on all of them
    the citation is a lookup: the title's own row is first on the register on 64 packs of 64 and the version cited is the highest printed for it. The free modal floor scores the citation metric 100 pct without reading a word.
  • You want a defensible number of days to put in front of a licensor's auditor — either arm, with the reading reviewed by a person first
    no day count in this run was ever numerically wrong. Every count that is absent is absent because the verdict was wrong, and every wrong verdict is an AE-0 reading failure — so the arithmetic is trustworthy exactly as far as the reading is.
  • You want to know whether a model is worth buying for this job at all — run both floors first — they are free and they take seconds
    that is the whole result of this kit. The first build of this corpus was solved 64 of 64 by the regex floor; the corpus was rebuilt to stop being a keyword match, and the paid arm STILL only ties it.

And where nothing here is good enough:

  • Your delivery reports carry free-text corrections from a content supply chain team — neither arm as it stands — this is the band where a model should earn its place and on this corpus it did not
    on the 14 packs whose notes assert a publication state, both the paid arm and the regex floor score 11 of 14, and both miss the same three: the corrections that state authority in prose rather than behind a CORRECTION header. The arm's own reason on one of them was that it required the header.

At a glanceHow the whole thing runs

95%pack all correct
39,318 msp50, end to end
$24.27per 1,000 exposure pack · Gemini 3 Flash

Run once, for real, on 2026-09-02. 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 packs and data/gold.jsonl with your own key (one row per pack id, carrying the six graded fields and the five reading fields). ⚠︎ WHAT STOPS BEING TRUE THE MOMENT YOU DO. Corpus lens →
When is this the wrong choice?Avoid: Paying for a join. It is most of the work in this job and, on this corpus, none of the value. That is the case against the best-fitting scenario (“Your grant register and delivery report are clean column exports, and you want the reconciliation”). 5 scenarios scored in all, each with its own. Eval lens →
Where does it stop working?A scanned or photographed delivery report. Every arm here rests on fixed-column text. 8 recorded failure modes, each from a run rather than a guess. Corpus lens →
What was never verified?Any second run. Run-to-run variance is unknown; every figure here is one pass over one corpus. 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?7 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-09-02 — r001-avail-exposure. 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 on 127.0.0.1:9280 and scores every graded cell offline: the corpus rebuild proves byte-identical under two PYTHONHASHSEEDs, evals/check_labels.py re-derives all 384 cells and reports 0 disagreements, and both free floors score end to end for $0.00.

A living map of modern AI — kept current every morning