Finance AI Copilot
A private, local-LLM FP&A assistant built on one rule: AI should reason over numbers it does not invent.
The Problem: Language models write fluent commentary about numbers they have no reliable way to compute. In finance, one invented figure in a variance explanation or an executive brief is enough to make the whole document untrustworthy. Asking a model to read a spreadsheet and "write the analysis" makes every number only as good as the model's arithmetic.
The Approach: Finance AI Copilot splits the work. Deterministic Python engines compute every figure. The model interprets the results and writes the narrative, but it never types a number: it writes evidence placeholders such as {{evidence_id}}, and Python validates each one against the computed results before rendering the real value.
Five Modules
- Trial Balance & Variance: variance analysis from trial balance data, with the drivers explained in plain language.
- Supply Chain KPI Analyzer: operational KPIs computed from supply chain data.
- Competitor Intelligence: benchmarking against peers.
- Scenario Planning: what-if scenarios and their financial impact.
- Executive Decision Brief: pulls the modules together into a decision-ready brief, exportable as a PDF.
How It's Verified
- 910 automated tests at 93% coverage (pytest, with ruff for linting).
- A 50,643-case challenge set for the evidence validator, with zero misjudgments.
- A live gate: three consecutive uncached runs of all five modules with zero validator defects.
- An audit-driven rebuild: an independent full-application audit showed that the old approach, checking the model's numbers after the fact, could both accept wrong figures and reject correct ones. I deleted that verifier and rebuilt the reporting layer around evidence placeholders.
- A human in the loop: model-written narrative still goes through review before anything is relied on.
Runs Locally
The model runs on my own hardware through LM Studio (Qwen3.6-35B-A3B, a mixture-of-experts model with a 262K-token context window), so no cloud AI provider sees the data. It's served from my self-hosted AI server.