Home › Use Cases › Check one government contract file against the ten required documentation elements
Use caseUC0288
🧪 Use-case kit · runnable

Check one government contract file against the ten required documentation elements

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 contracting office assembles a file for one buying action, and somebody has to say whether the papers a purchasing-system review will ask for are in it. The failure that matters is not the obvious gap -- an element missing from the index is missing to any reader. It is the tab that LOOKS satisfied: the index names the element, the tab is occupied, and what is behind it is a cover sheet saying the paper is to follow, a cross-reference to another file, an unsigned routing slip, or an ordinary office paper that is simply not that document. The file reports itself complete and is not. Reading a contract file tab by tab against a checklist by eye, one file at a time, and deciding from the index whether the paper behind a tab is the paper the index claims.

Audience

A procurement compliance reviewer working a file queue before a purchasing-system review, and the buyer who has to remediate whatever the review would have found. Every number on these pages came from one real run of this code, not from a vendor page.

The inputThe actual government procurement contract files

The corpus is 66 government procurement contract files, 0.11 MB (txt 66). It is generated because there is nothing to fetch: a real procurement file is not public, and the parts that make this problem hard — which tab holds which paper, and what the paper actually is — are exactly the parts a redacted file would lose. So the corpus carries the STRUCTURE of the problem and none of the substance: three office layouts because a compliance desk does not choose how a file was assembled; papers TITLED in two of them and DESCRIBED in the third, because a buyer files the paper they have rather than the paper a checklist names; six requirement sets sized 6 to 9 because what an action requires depends on what the action was; and fourteen families that each break the audit in a different way, including six where the tab is occupied by the wrong paper and six where the right paper sits at a tab the index never names.

The corpus

  • The 66 government procurement contract filesgenerated from a fixed seed, so no real record, person or institution appears in it.
  • Where each came fromNowhere — all 66 files, the action register, the answer key and the whole checklist are generated in-process from seed 20260903 by tools/build_corpus.py, and re-running it rebuilds every one of them byte for byte under two different PYTHONHASHSEEDs. Nothing is fetched, scraped or licensed from anywhere, so there is no source URL to map and no third-party dedication to verify.

Swap this folder for your own material and the kit is pointed at your government procurement contract files. That is the whole change — there is no database to migrate.

One government procurement contract file, as the model receives itPFA-0001.txt · 1 of 66
CONTRACT FILE -- PFA-0001
Contracting office     Cedar Point Contracting Office
Requirement            overhaul of depot lifting fixtures for the calibration services activity
File assembled         2026-08-14

FILE COVER
  Action type          Competitive
  Value band           Over the simplified-acquisition threshold

CONTRACT FILE INDEX
  TAB  ELEMENT                        DOCUMENT
  1    Requirement document           Purchase request PR-6171
  2    Market research record         Market research record MR-6169
  3    Independent cost estimate      Independent cost estimate ICE-6043
  4    Solicitation as issued         Solicitation SOL-1748
  5    Abstract of offers             Abstract of offers AO-3405
  6    Price analysis                 Price analysis PA-2360
  7    Award document                 Award document AWD-3430
  8    Funding certification          Funding certification FC-1935
  9    Debrief record                 Debrief record DBR-7395

DOCUMENTS IN THE FILE
  Tab 1  Purchase request PR-6171, dated 2026-03-31, filed by the calibration services activity.
  Tab 2  Market research record MR-6169, dated 2026-04-04, filed by the calibration services activity.
  Tab 3  Independent cost estimate ICE-6043, dated 2026-04-09, filed by the calibration services activity.
  Tab 4  Solicitation SOL-1748, dated 2026-04-12, filed by the calibration services activity.
  Tab 5  Abstract of offers AO-3405, dated 2026-04-17, filed by the calibration services activity.
  Tab 6  Price analysis PA-2360, dated 2026-04-23, filed by the calibration services activity.
  Tab 7  Award document AWD-3430, dated 2026-04-29, filed by the calibration services activity.
  Tab 8  Funding certification FC-1935, dated 2026-05-02, filed by the calibration services activity.

Abridged — the file continues.

The outcomeWhat a good result looks like

One file in, seventeen graded fields out: the two things the file says about itself, the presence of each of the ten checklist elements, three determinations PFC-2026 derives from those readings, one the engine computes against the action register, and ONE LINE copied verbatim out of the file for every element found named-but-not-there. On 66 files the fast tier got all seventeen right on 63 of them as answered (95.5 pct) and on 66 of 66 (100 pct) after PFC-2026 was re-applied in pure code. It read all 660 presence cells correctly and quoted and located all 25 lines it owed.

And when it cannot

And what it does when it cannot. 3 of 66 files came back wrong as answered and all three are the same failure: profile_differs, one per office layout. The file's own cover states an action type or a value band that is not the one the office recorded in its action register. The reply read BOTH cover fields correctly -- 66 of 66 on each -- and then applied the requirement table to what the FILE said, so it reported an element missing that this action does not require and answered MISSING-GAP where the key says COMPLETE. src/recheck.py repairs all three, because PF-1 reads the register and never the file: 6 field overrides across 3 files, and the rechecked column is 66 of 66.

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 files are all in one office format and their papers announce themselves by title — the free index-to-papers floor
    It gets 58 of 66 files completely right for $0.00 and reads every marked placeholder in all three layouts. Joining an index to a run of tabs is not a judgement, and paying for it is paying for the easy half.
  • You want to catch the tab that is occupied and not satisfied — the paid call, and read false_complete on its own
    0 of 66 files with a gap called COMPLETE, against the free floor's 6 and the null floor's 28, and 0 of 20 under an adversarial sentence written to produce exactly that.
  • You want every field right, including the counts and the quoted line — the paid call PLUS the re-derivation station, and never the call alone
    66 of 66 rechecked against 63 as answered. Paired McNemar exact against the free floor on all seventeen: as answered 8 to 3, p = 0.227 — not a result. Rechecked, 8 to 0, p = 0.0078. The station is free and it is what makes the margin real.
  • You want a missing document written, dated, approved or the file signed off — a different kit — this one structurally cannot produce any of them
    The answer contract declares seventeen graded fields and not one could express a drafted document, a date to apply, an approval, a ratification or a judgement about whether the procurement was proper. 34 forbidden names are counted as a breach rather than stripped, and 0 breaches were recorded on 66 files and 20 attacked ones — including both files whose notes ask for exactly that.

At a glanceHow the whole thing runs

95%file all correct
19,681 msp50, end to end
$11.74per 1,000 government procurement contract files · Gemini 3 Flash

Run once, for real, on 2026-09-03. 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 files, data/actions.json with your own action register and data/gold.jsonl with your own key, keeping the element keys in data/rulebook.json. ⚠︎ WHAT STOPS BEING TRUE THE MOMENT YOU DO. Corpus lens →
When is this the wrong choice?Avoid: Assuming it sees a tab that is OCCUPIED BY THE WRONG PAPER. It signs off six files with a required element missing, and every one of them looks complete on its own index. That is the case against the best-fitting scenario (“Your files are all in one office format and their papers announce themselves by title”). 4 scenarios scored in all, each with its own. Eval lens →
Where does it stop working?A FOURTH OFFICE LAYOUT. The free floor's index and paper expressions are written for the three shapes here; the paid arm is layout-agnostic on this corpus and read all 660 presence cells correctly in all three, but nothing here measures a shape it has not seen. 6 recorded failure modes, each from a run rather than a guess. Corpus lens →
What was never verified?A SECOND MODEL. Only one tier was fired against this corpus, and nothing here says it is the right one. 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?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-03 — r002-procfile-audit. 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 runs check_labels (2,087 checks), rebuilds the corpus byte-identically, scores both floors, runs the whole pipe under --stub, serves the board and shoots all four screenshots — with no network at any point. The only thing a key adds is a live call.

A living map of modern AI — kept current every morning