Why this build
Every family accumulates lab reports as PDFs in a portal — and nobody can answer “is my cholesterol trending better since 2024?” without opening six files and squinting. Amber is my answer, and also a deliberate exercise in a harder product problem than a dashboard: an AI pipeline you can trust with health data, where extraction errors are unacceptable and privacy is architectural, not a policy page.
The product
Drop a lab PDF into a folder (one folder per family member), tell the agent to process it, and Amber extracts every blood marker, verifies the extraction, validates it against a schema with plausibility bounds, writes a plain-English recommendation, and rebuilds a single offline HTML dashboard — person tabs, an in-range ring, a report timeline, trend charts against each marker’s reference range, and the full recommendation history.
🎭 Click through the live demo (fictional data) · 💻 Source on GitHub
The design bet: scripts where determinism matters, LLMs where judgement does
The five-stage pipeline splits cleanly. Deterministic Python does the parsing, validation, and HTML generation — the things that must behave identically every run. An LLM is used at exactly two points: verifying the extraction against the raw PDF text (every stored value carries its source line; the printed value is never trusted blindly), and writing the recommendation, which reads the previous one first so guidance has memory — “ferritin was low last time and wasn’t retested” is the kind of continuity a stateless summarizer can’t produce.
Real-world PDFs earned their scars: two-letter HI/LO flags, >=-style range notation,
narrative guideline lines that look like results (a plausibility guard stops a sentence
mentioning “2013 CDA Guidelines” from becoming an HbA1c of 2013), month-first dates
where the PDF content must win over the filename, and a filename parser where the folder
— not the file name — decides identity.
Privacy as architecture
The dashboard is one self-contained HTML file with zero external requests — no CDN,
no fonts, no analytics — because health data shouldn’t touch a network to be viewed. The
open-source release gitignores data/ by default, ships only fictional people
(generated by the same synthetic-PDF tooling the 43-test regression suite uses), and the
live demo is built entirely from that fictional data. The real install runs privately on
my machine; nothing about my family exists in the public repo or its git history.
What I’d tell another PM
The interesting work wasn’t the charts — it was deciding where the model belongs. Extraction verification and memory-threaded recommendations are genuinely better with a frontier LLM; everything else got cheaper, faster, and more testable as plain code. That boundary — and a test suite that pins it down with golden fixtures — is what makes an AI product dependable instead of demo-ware.