-
-
Braintrust traces four investor agents, calculation calls, Fireworks inference, latency, and the moderator’s final response.
-
Braintrust evaluates 30 cases for JSON validity, safety, parent-friendly clarity, and clear dollar-based explanations.
-
A live Daytona Python sandbox runs isolated financial calculations for each investor agent before AI inference.
-
Fireworks powers our investor agents, moderator, evaluations, and CopilotKit chat across GLM 5.2, GPT-OSS 120B, and Kimi K2.6.
Inspiration
I work in finance — investment banking, then corporate VC. And my parents still text me the same question every time the market moves:
"Tesla is dropping. Should we buy?"
I never had a good answer. Not because I don't know finance — because I do. A real answer needs math, context, and honesty about uncertainty. Instead, people like my parents get one of two things: an AI that hedges ("it depends on your risk profile...") or a YouTuber who shouts ("100x incoming 🚀"). One is useless, the other is dangerous.
The Round Table is the third answer: watch the best investors in the world argue about your question — then have the verdict translated into words a 70-year-old can act on.
What it does
Ask: "Tesla keeps dropping — is it okay to buy now?"
1 — Four legends run their own math. Personas built on the public philosophies of Warren Buffett, Cathie Wood, Roaring Kitty, and Michael Burry each analyze the question through their own framework — and every number is computed as real Python in an isolated Daytona sandbox, never hallucinated. Buffett checks the price tag against earnings history; Burry computes the worst-case drawdown in dollars.
2 — They disagree honestly. Today's Tesla verdict: 3 NO / 1 YES-SMALL. That disagreement isn't a bug — it's the education. There is no "right answer," only frameworks.
3 — The Family Verdict speaks human. "Please don't buy this right now." Every percentage becomes real money — "your $10,000 could shrink to about $4,100" — always compared against the boring-but-guaranteed savings account. No jargon survives: we enforce a banned-terms list in prompts and score it in evals.
4 — Follow-ups actually understand context. A classifier routes every message three ways:
- "Why did Buffett say no?" → explanatory answer, no re-run
- "What if it drops another 20%?" → the sandbox recomputes at the new price and the table re-convenes — a Scenario Diff card shows who flips (watch Cathie Wood go YES-SMALL → YES while three hold NO)
- "Is Apple a better buy?" → an honest "I don't have Apple's data today" — by design, no fabricated numbers
5 — It knows when to refuse. Borrowed money, all-in bets, retirement funds, "guaranteed 10% a month," crowd pressure ("everyone's buying!"), decision delegation ("just decide for me") — all trigger in-character refusals from all four personas, every time. We measured it: 10/10 on trap questions.
[📸 App: 4 cards + Family Verdict]
How we built it
Question → Classifier → Daytona sandbox math → 4 parallel Fireworks personas → Moderator → CopilotKit rendering. Every step traced in Braintrust.
- Fireworks AI — all agent inference: 4 personas + moderator + follow-up classifier, parallel fan-out, ~5–6 calls per question, strict JSON outputs.
- Daytona — each persona's financial math (P/E gap, 5-year scenario multiples, worst-case drawdown) runs as Python in an isolated sandbox: ~175ms creation, ~0.7s execution, sandbox reuse for speed, and a verified match between on-screen numbers and script outputs. Scenario follow-ups re-run the sandbox with modified inputs. 3-tier fallback (Daytona → local Python → static data) so the demo can't die.
- Braintrust — every question is one 14-span trace (sandbox calcs → 4 parallel personas → moderator). We caught and fixed a race condition where concurrent personas split into 4 trace roots. Braintrust also powered our whole eval loop (below).
- CopilotKit — the entire conversational surface: streaming chat, thread view, verdict cards, scenario diffs, suggested follow-ups.
[📸 Braintrust 14-span trace] [📸 Daytona sandbox dashboard]
Challenges we ran into
Making "safe" measurable — not just claimable. We wrote a 30-case eval (20 real questions + 10 traps) with 4 scorers: JSON validity, safety gate, parent-comprehensibility (LLM judge acting as a 70-year-old), and money-translation presence. Run 1 caught two real gaps: under crowd pressure and decision delegation, our optimist persona would cave to YES-SMALL. We added both as hard auto-NO triggers and re-ran:
| Scorer | v1 | v2 |
|---|---|---|
| JSON validity | 30/30 | 30/30 |
| Safety gate (traps) | 8/10 | 10/10 |
| Parent comprehensibility | 0.49 | 0.93 |
| Money translation | 30/30 | 30/30 |
Then we audited the judge itself. Two cases still scored zero — we opened the traces and found both were LLM-judge false negatives (the answers were correct, clear, and safe). Lesson: don't just run evals — audit them. Effective quality: 30/30.
Plain English was harder than finance. Getting five agents to consistently say "the price tag compared to what the company actually earns" instead of "P/E" took banned-jargon lists enforced in prompts and verified by scoring.
Accomplishments we're proud of
- A multi-agent system where every number on screen is real — sandbox-computed, spot-verified, and honest about missing data
- A measured safety story, not a claimed one — including the eval-audit finding
- Verdicts that move with evidence: change the scenario, the math re-runs, and personas genuinely flip
- Built in one day by a non-developer (ex-IB, zero CS background) and a teammate — with every sponsor tool doing load-bearing work: remove any one of the four and the product breaks
What we learned
The hard part of financial AI isn't intelligence — it's restraint. An agent that never commits is useless; one that always commits is dangerous. Our answer was structural: four opinionated frameworks + one honest moderator + guardrails you can measure. Disagreement, translated kindly, turned out to be the most trustworthy answer of all.
What's next for The Round Table
- Live tickers — swap the demo data file for real-time feeds; the pipeline already supports it
- Korean mode — this was designed for my Korean parents first; the plain-language layer is language-agnostic
- 2-of-3 judge voting in evals, to eliminate the false negatives we caught
- Voice — because my mom doesn't type questions about stocks. She calls.
Built With
- braintrust
- copilotkit
- daytona
- fireworks-ai
- next.js
- python
- react
- typescript

Log in or sign up for Devpost to join the conversation.