Tearline
Every figure cites its page
A company name or number goes in, and a tear sheet, capital structure, Excel model and references come out, with every figure tied to the document and page it came from.
Problem
Lenders and analysts working on UK private companies start from scanned accounts, and build each sheet by hand. The aim is that analysts stop assembling sheets by hand and lenders start from verified numbers instead of a scanned PDF.
Approach
Hold a cited record of UK private companies' accounts and turn it into finished work. The data comes from public registers under the Open Government Licence, and premium vendor data is never held or resold. Where a figure cannot be supported, the engine abstains rather than guesses, and an abstention counts as a feature.
Architecture
A name or company number goes in. The engine extracts the figures, enriches them from live sources, checks itself, and then builds the one-page tear sheet, the capital structure block, a supporting model and hyperlinked references. Scanned accounts are read twice, tied by arithmetic, and abstained on where the reads do not hold. Every figure sits on a ladder of reported, synthesised, labelled proxy or abstain. Each one carries an evidence card that pins it to the document, page and passage it came from. On filings with a text layer, the model may only quote figures that a plain substring search finds in the source.
What I built
I designed the engine and its verification rules and directed the build with Claude Code. The model output is a real Excel workbook with every figure tied back to its source. The written parts of each sheet pass a prose check written in plain code, with no model in the path, that blocks rather than warns. Hosting is set to the London region for UK data residency.
Results
As of 27 Sep 2026, 17 of the 18 work packages on the launch critical path were merged, with only the deploy left. The launch goal includes that nothing claims what the engine cannot back. Page-level citation on scanned accounts is new and has not yet been checked by a person.
What didn't work
Early sales copy said more than the engine could prove. So every claim now goes through a register that marks it true, roadmap or forbidden, with the proof or the reason beside it. One line promised an absolute accuracy guarantee and was cut, because nothing on disk supports it. The checkable half stays: any figure, one click back to its source.
What I'd do next
Anchor every figure on a scan to the exact words on the page, through a word-level OCR layer, rather than a page number and the text the model reported. Then publish an error rate on scanned filings from figures a person has checked.
Stack
- TypeScript
- Next.js
- React 19
- Postgres
- exceljs
- Playwright
- Vercel (London region)