2026
Vera: RAG & Multi‑Agent Assistant
A finance assistant that answers only from company documents, cites every answer, and refuses rather than guesses.
View the code on GitHub
Some context
In finance, a wrong number that sounds confident is worse than no answer. Vera is a prototype assistant for a made-up company, with made-up documents, built around that idea. It answers budget and variance questions from closed, published documents, always with its source. Ask for a forecast or a competitor's margin and it refuses. Ask about a month that hasn't closed and it escalates.
How it works
- Every question goes to the intake agent first, which decides if it's in scope.
- Out-of-scope questions are refused or escalated right there, before the document store is ever searched.
- The analyst agent retrieves documents with vector search in ChromaDB, plus a keyword rerank.
- The drafter agent writes the answer using only the retrieved text.
- The reviewer agent checks for missing citations and forward-looking claims, and can send a flawed draft back for one retry.
Decisions I made
The structure enforces the rule
"Never guess" isn't only a line in a prompt. On the refused paths the search never runs, so there's nothing to guess from.
Tested like software
A set of 16 questions with known answers screens every run for invented numbers, missing citations, forward-looking claims and wrong departments. It runs in GitHub Actions on every push, and all 16 pass.
A false alarm worth fixing
The reviewer's first version flagged normal finance language, like "capital project requests", as a prediction. I rewrote its checks to look for what a leaked forecast actually sounds like.
Where it stands
The pipeline and evals work. Right now the agents are rule-based Python and answers are composed directly from retrieved text, with no live model call. The model routing is designed but not connected yet: a fast tier for intake and retrieval, and a stronger one for drafting and review.
Python · RAG · ChromaDB · GitHub Actions