Home › Use Cases › Age open advances against cutbacks and flag offset or demand candidates
Use caseUC0273
🧪 Use-case kit · runnable

Age open advances against cutbacks and flag offset or demand candidates

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 joint-interest partner advances money to an operator on cash calls. The operator returns some of it as cutbacks, spends some of it on joint costs, and bills the rest. Nobody on the statement strikes a total: the partner is left with four panels of rows and a question they answer by hand, statement by statement — what is still out there, how old is the oldest piece of it, and may we put this balance on a recovery schedule at all. Re-adding an operator's cash-call and cutback panels by hand and deciding, statement by statement, whether a cutback with no call reference leaves a balance anybody may pursue.

Audience

A joint-interest accountant working an operator's settlement statement, and the asset accountant who reads the recovery schedule that comes out of it. The decision is not 'is this operator wrong' — it is 'is this balance one we may pursue, and how old is it'. Every number on these pages came from one real run of this code, not from a vendor page.

The inputThe actual joint-interest operator settlement statements

The corpus is 64 joint-interest operator settlement statements, 0.14 MB (txt 64). It is generated because it has to be. A real joint-interest settlement statement is an operator's own ledger extract carrying agreement references, AFE numbers, working interests and money owed between named counterparties — there is no public corpus of them and no way to publish one. Generating it also buys the thing a scraped set could not: a PLANNED case distribution, with the untied-cutback trap present in three deliberately different forms so the corpus can say which of them a free column test catches and which it does not.

The corpus

  • The 64 joint-interest operator settlement statementsgenerated from a fixed seed, so no real record, person or institution appears in it.
  • Where each came fromNowhere — every one of the 64 statements, the operator register and the whole answer key are generated in-process from seed 20260902, and --check rebuilds all 67 files byte-identically under two different PYTHONHASHSEEDs. data/SOURCES.md carries the full account, including what the generator costs the measurement.

Swap this folder for your own material and the kit is pointed at your joint-interest operator settlement statements. That is the whole change — there is no database to migrate.

One joint-interest operator settlement statement, as the model receives itCCR-0001.txt · 1 of 64
JOINT-INTEREST CASH CALL AND CUTBACK RECONCILIATION                      CCR-0001
Prepared 2026-09-01 under JCS-2026 | settlement period 2026-04-01 to 2026-06-30

STATEMENT FACTS
  Operator                       Merrowfield Petroleum
  Basin                          Appalachian
  AFE in scope                   AFE-21455
  Settlement period              2026-04-01 to 2026-06-30
  Statement reference            CCR-0001

AGREEMENT TERMS
  Agreement reference            JOA-4207
  Effective                      2024-06-01 to 2027-12-31
  Working interest               18.7500 pct
  Settlement term                45 days from the cash call funding date
  Netting against future calls   PERMITTED - a balance may be offset against the next call
  AFEs on this agreement         AFE-21033, AFE-21455, AFE-21603

CASH CALLS ADVANCED
  call         issued      funded      afe          interest          advanced   status
  CC-104543    2026-06-05  2026-06-10  AFE-21455    18.7500 pct   $   29,820.00  FUNDED
  CC-104584    2026-06-09  2026-06-14  AFE-21455    18.7500 pct   $   12,935.00  FUNDED
  CC-104563    2026-06-13  2026-06-21  AFE-21455    18.7500 pct   $   44,952.00  FUNDED
  CC-104566    2026-06-16  2026-06-20  AFE-21455    18.7500 pct   $   43,155.00  FUNDED

CUTBACKS APPLIED
  cutback   applied     call ref     afe                amount   description
  CB-31805  2026-06-25  CC-104543    AFE-21455    $    1,422.00  unspent balance returned against cash call CC-104543
  CB-31829  2026-07-11  CC-104584    AFE-21455    $      991.00  revised estimate, cutback applied to cash call CC-104584

JOINT COSTS SETTLED AGAINST THE ADVANCE
  charge     month    afe                amount   description
  JC-088368  2026-04  AFE-21455    $    8,276.00  field supervision, joint account

Abridged — the file continues.

The outcomeWhat a good result looks like

One statement in, six graded answers out: the net open advance to the cent, the exception class that stops a row counting, the oldest open call, the settlement position, the action, and the row copied verbatim that establishes the exception — with NO row where the exception is none, because quoting one there is also a wrong answer.

And when it cannot

And what it does when it cannot. On the scored run the paid call raised ONE recovery candidate the key says must not be raised — CCR-0013, a cycle true-up booked against a single call for convenience, which every column test reads as tied. It is a candidate pointed at a trading partner who does not owe it. src/recheck.py did NOT catch it and could not: that agreement's settlement register is current, and the register deliberately carries nothing about any row on the statement. The free rules floor gets the same family wrong 3 times out of 3.

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 statements never carry a cycle true-up booked against one call, a standing bulletin, or an operator letter contradicting the ledger — the free rules floor, and do not buy a call at all
    On 56 of these 64 statements the floor is exactly as good as the paid call — every figure, every ageing, every structured family. The entire 10.9-point margin is the eight statements where prose contradicts a column.
  • Your cutback descriptions routinely carry cycle true-ups booked against a single call for ledger convenience — the paid call, and read its own failure rate on that family first
    The floor gets that family 0 of 3. The paid call gets 2 of 3 — better, and not solved.
  • You need the money right and nothing else — either arm
    64 of 64 exact to the cent on both, worst error 0 cents. This is a tie and the free arm wins it on price.

And where nothing here is good enough:

  • Somebody downstream acts on a FLAG without a second reader — neither, until that changes
    Both arms raise recovery candidates against untied balances — 1 of 9 on the paid call, 3 of 9 on the floor. The kit flags; it does not decide, and it is not built to be the last reader.

At a glanceHow the whole thing runs

63%statement all correct
60,925 msp50, end to end
$30.13per 1,000 operator statements · 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 statements, data/operators.json with your own settlement register rows (one per statement), and data/policy.json + data/policy.md with your own rulebook and its published order. ⚠︎ WHAT STOPS BEING TRUE THE MOMENT YOU DO. Corpus lens →
When is this the wrong choice?Avoid: Paying per statement for arithmetic that a column test does perfectly. That is the case against the best-fitting scenario (“Your statements never carry a cycle true-up booked against one call, a standing bulletin, or an operator letter contradicting the ledger”). 4 scenarios scored in all, each with its own. Eval lens →
Where does it stop working?A statement that prints its own net total. Every statement here withholds it, which is the whole reason the arithmetic is a task; a set that prints the answer measures nothing. 9 recorded failure modes, each from a run rather than a guess. Corpus lens →
What was never verified?Whether the margin reproduces. One paid run, one model, one day. 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?6 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-cashcall-cutback. 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:9273 and scores the free half entirely offline: tools/build_corpus.py --check rebuilt all 67 files byte-identically under two PYTHONHASHSEEDs, evals/check_labels.py re-derived all 64 rows at 0 problems, and both floors scored to the digit — the rules floor at 56 of 64 statements all-correct and 64 of 64 figures exact. Replaying the paid run from its committed cache reproduced every figure in this spec and cost $0.00. What a cold clone could NOT do is buy a call: that needs a key, and the repository is private.

A living map of modern AI — kept current every morning