side study · Latvian public-procurement archive · 2026-08

Pre-registered backtest that killed its own product idea

I ingested 13 years of Latvian public-procurement awards (432,015 awards), ran a temporally strict backtest against kill criteria written in advance, and stopped the product when the idea failed them.

problemconstraintswhat I builtoutcomestackredacted screenshot

Problem

A 12-phase build spec proposed selling "companies likely to enter your category" leads. Before building anything, the question was whether a company's award history in adjacent CPV categories predicts entry into a new category any better than the CPV subscriptions suppliers already get for free.

Constraints

What I built

fig 1. The harness. The data layer and backtest harness are kept for reuse.

Outcome

dateresult
2026-08-27Full archive ingested: 5,281 files (1.5 GB), 432,015 awards, 28,136 winning companies, 2013-01-01 to 2026-08-26, 0 parse errors, 0 cross-channel duplicates
2026-08-27The hypothesis (Hit@20 0.053) lost to the simpler parent_division baseline (0.080)
2026-08-27The one bucket where it won (cross-division, 0.034) replicated at 0.020 on an independent n=600 sample
2026-08-27Verdict: stop. The ten planned validation calls were dropped
metricvalue
liftpaired bootstrap +0.019, CI [0.006, 0.034]: significant and commercially worthless
floorcommercial floor Hit@20 >= 0.20 against 0.034 measured
leak28 of 93 rows in one XML fixture predated their archive by up to 9 days; found and fixed
windowswept to 2015-2026 so that 27/45 divisions had >=100 events, before any result was read

Stack

PythonSQLiteeForms JSON / XML parsingbootstrap statistics

Redacted screenshot

fig 2. The verdict card. Values are the published results; no company appears.
evidence: brain/projects/data-broker.md · brain/skills/quantitative-analysis.md · brain/notes/falsification-comes-last.md