Hapax · Case study · Finance & controlling

The board pack that answers back.

Three independent agent runs went through the ledger behind a monthly board pack. Four planted stories were found or correctly stood down by 3 of 3 runs, with no false positives and no wrong figures across thirty findings. The two sharpest pieces of evidence in the data were claimed by no run.

iThe problem

The company is invented. Paju Consumer Products Oy is a Nordic personal-care and home-care manufacturer with three business units, four product lines, about €155M of net revenue and 480 people, generated in full by a seeded Python model.

A competent finance team’s board pack is usually correct and rarely carries the cause. The reason behind a 12% rise in material cost sits three drill-downs below the line item, in a table nobody has time to open before the meeting, so the obvious explanation goes into the commentary instead and the real cause keeps costing money for another two quarters.

iiWhat happened

Two layers run over the same tables. A deterministic pandas layer computes the variances and flags every threshold breach, 327 correct flags over two years, with no attribution attached, because a threshold breach is a fact about a number rather than an explanation of one.

The second layer is three agent runs. Each one was blinded to the others and to the answer key, worked from the same pinned briefing, the nine public tables and the deterministic pack, and logged every file it opened. Four stories had been planted in the driver model before any agent saw the data. All three traced the Nordics margin move to a promotional discount that jumped from 6.0% to 18.8% of gross in a single month, against flat unit material costs. Each named the same Central Europe customer behind a receivable that rose from about €2.06M to €4.49M while a sale-and-leaseback held reported EBITDA on plan. Baltics revenue growth of 27% came back from every run as bought with escalating discounts, and January’s 28.7% month-on-month fall was stood down by all three as seasonality identical to the prior year and to budget. Across the thirty findings there were no false positives at watch severity or above, and no cited figure wrong on adjudication.

Two pieces of designed evidence went unclaimed. Three of the ten named Baltic accounts carry discount rates above 18% by the end of the period, and the volume response per euro of discount falls by roughly 38% from the first half of the year to the second, the evidence that the growth is running out of road. Every run found the discounting; one checked customer revenue concentration, found it broad, and stopped a column short of discount concentration. One headline compressed “December EBITDA down 39.5% year-on-year” into “down about 40%”, which reads as a full-year claim where the full-year fall was 8.1%.

iiiExplore it

The explorer below holds a month of the pack as the board receives it, what the deterministic layer flagged, what the three runs made of each flag, and the marking against the key.

ivWhat is real here

The ledger is synthetic. We wrote the seeded generator behind all nine tables and the answer key that goes with them, and the figures above come from marking the three runs against it. How that marking works is set out on the data and privacy page.

The method transfers to a real close. Run the deterministic arithmetic first. Then make independent blinded passes, each committing to a verdict with evidence on every flag. Then check what comes back. The key itself does not transfer, because a real ledger has none. Three-for-three agreement here still left the best evidence in two of the four stories unclaimed.

vReproduce it

The pipeline is five steps: the seeded generator, a validator that fails the run on any of twelve coherence-rule breaches, the deterministic variance pack, the three briefed agent runs, and an evaluation script that marks all three against the key. The scorecard this page draws its figures from was written by hand from that worksheet, disagreement by disagreement, and what went wrong stayed in it.

The code, the dataset and the long-form writeup are in the public repository, together with the three agent runs as they were written.

viWrite to us

If your board pack is accurate and still leaves the cause to guesswork, tell us which variances keep coming back and what sits under them.

enquiries@hapax.fi