Proofline — Reports That Read Like Documents and Parse Like Data
Why the fix for a report nobody can read and a report nobody can parse is to write one of them and project it twice.
The problem
A report has two readers. The person needs a document they can scan and act on; the agent needs structured data it can parse without guessing. Existing tooling forces the choice — JSON and Markdown are machine-readable and ugly, styled HTML and PDF are readable and opaque — so the workaround is maintaining a human document and a machine copy side by side, which agree on the day they are written and quietly drift apart after that.
The solution
Normalize the content once, then render the human view from it and embed that same normalized object as a JSON block in the page. A single 670-line Python renderer using only the standard library produces one self-contained HTML file in three visual modes — index, signal and essay — chosen from the shape of the findings or pinned explicitly, with severity carried by a text label before any colour and no score emitted unless the report ships the rubric it came from.
Outcomes
- One 670-line renderer on the Python standard library alone — no npm, no build step, no network request, and no external asset in the output.
- Three visual modes (`index`, `signal`, `essay`) selected from the findings' shape, or pinned with `--variant` when the subject demands one.
- The embedded `#report-data` JSON block and the visible findings are checked against each other at build time, so drift is a failed build rather than a silent divergence.
+2 more in the write-up
Inside the write-up
- A report has two readers
- So build one thing and project it twice
- Three modes, chosen by shape
- Severity is a word before it is a colour
- Zero dependencies is a constraint, not a boast
- What it deliberately does not do
- Where it lives