Thales CFO
Inspiration
Everyone on our team has felt the same pinch: we want to take care of our finances (retirement, savings, debt, goals) but life gets in the way. We don’t have the time to sit down every week and monitor every account, categorize every expense, or run the numbers the way we know we should. Our personal finances deserve more attention than we can give them, and that gap is stressful and guilt-inducing.
We built Thales CFO so that your finances get the care they deserve without requiring you to become a full-time analyst. A CFO in your pocket that works in the app you already use: Telegram.
What it does
Thales is a personal CFO over Telegram. You connect your accounts once (via Plaid and SnapTrade), share your financial goals (retirement, house, debt payoff, etc.), and then ask questions in plain English. Thales also sends you weekly and monthly updates with summaries of how you are doing with your finances, and tells you whether or not you are on track to meet your goals.
Instead of one generic answer, Thales runs four specialist agents in parallel: quantitative (numbers, ratios, trends), qualitative (behavior, trade-offs, “why”), risk (downsides, what could go wrong), and opportunity (growth, tax levers, next steps). A judge agent picks the response that best fits your question, so you get one clear, concise answer that’s grounded in your real data and goals. At the end of every interaction, a master agent analyzes everything from what the user said, what responses were given by each agent, and what output the judge generated, and tweaks whichever agents seems to be performing the worst. This is where the self-improvement comes in, as the master agent will always look to change the underlying agents so that they can give better outputs.
How we built it
- Front door: Telegram bot (Node,
node-telegram-bot-api) for commands, linking accounts, and conversational Q&A. - Data: Plaid and SnapTrade for account linking and transaction/balance data; we build a financial summary (income, expenses, balances) and pass it into every agent.
- Goals: Goals are extracted from the user’s messages (or we ask for them once) and stored per chat; they’re included in the context for every analysis.
- Multi-agent brain: Google Gemini powers four analyst agents and one judge. Agent instructions live in Supabase (
agent_promptstable), so the master agent can change how each agent thinks without redeploying. - Observability: Braintrust for logging and evaluating the multi-agent pipeline.
Challenges we ran into
A big technical challenge was designing a self-improving system: an overseer that watches every user interaction and can dynamically update the agents inside the system.
We didn’t want a static set of prompts that never change. We wanted a single source of truth (Supabase) for all agent instructions and judge logic, so that an “overseer” agent or a feedback loop could review conversations, see which answers were chosen and how users behaved, and then update the prompts for the quantitative, qualitative, risk, and opportunity agents. Making that safe (no bad prompt edits), observable (so we know what changed), and actually useful (improving relevance and clarity) required careful separation: agents only read from the prompt store, while the update path is explicit and controllable. We got the architecture in place (prompts in Supabase, loaded at runtime) and the judge selecting the best response.
Accomplishments that we're proud of
- Shipped a multi-agent CFO that gives you four expert perspectives (quantitative, qualitative, risk, opportunity) and one synthesized answer.
- Goals-first design so Thales always knows what you’re optimizing for before giving advice.
- Integration with Plaid and SnapTrade so that answers are grounded in your actual accounts and transactions.
- Editable, dynamic prompts*in Supabase so that the master agent can tune and improve each agent without code deploys.
- Judge layer so the bot doesn’t drown you in four replies; you get the one that best matches your question.
What we learned
- Storing prompts in a database and loading them at request time makes the system much easier to iterate on; the same pattern is a good foundation for an overseer that updates those prompts.
- Users don’t want to manage another app Telegram was the right choice for “CFO in your pocket.”
- Asking for goals up front and weaving them into every answer makes the advice feel personal and actionable.
- Running multiple agents in parallel and then judging keeps quality high without slowing the product down.
What's next for Thales CFO
- Richer financial context: More summary dimensions (e.g. spending by category, trends over time) and optional document uploads (e.g. tax docs) for deeper analysis.
- Proactive nudges:* Use goals and transaction patterns to suggest “you might want to…” messages when relevant, not only when the user asks.
- Stronger safety and guardrails: Clear boundaries on what Thales will and won’t do, and optional human-in-the-loop for sensitive or high-stakes suggestions.
Built With
- braintrust
- gemini
- javascript
- lightdash
- plaid
- snaptrade
- supabase
- telegram
- typescript
Log in or sign up for Devpost to join the conversation.