lab
ReportSmith
A monthly finance pack narrated by a model that cannot invent a number, applied to management reporting
What it does
The pack is defined once as a versioned YAML template and assembled from live data each period. Tables and KPIs are computed in code with no model involved, so the same data and template produce identical output. Narratives are drafted from that section's bound figures only, and every number the model writes is cross-checked against those figures before it survives.
A missing or failed binding becomes an explicit gap rather than a silent omission, and the pack cannot be issued while a gap is open: it is either resolved or waived with a reason that is recorded. Review is section by section with word-level tracked edits, then a sign-off, then an immutable archive with a content hash and a live integrity check.
It composes the other projects rather than rebuilding them. The synthetic world and the statement engine are vendored from LedgerLab with a drift-checked manifest, and the categorised-spend adapter is built against SpendSort's real export schema with fixtures generated by running it. Nothing imports across a sibling path at runtime.
Stack
- Python
- FastAPI
- LangGraph
- React
- Vite
- SQLite
All data in this project is synthetic.
Aneeq Khatri