AI Financial Planner - An Advisor That Looks At Your Accounts
Ground Claude 3.7 on Plaid sandbox data. Let it tool-call into a Monte Carlo simulator. Keep the math boring and correct.
Role: Full Stack + AI Engineer. Team: Individual. Status: In Progress. Year: 2026.
Overview
Problem. Every "AI financial assistant" today is either a budgeting app with a chatbot tacked on (the bot does not see the accounts) or a ChatGPT wrapper (the model has no grounding). Neither is useful.
Approach. Ground Claude on the user's actual data via Plaid sandbox and a document store. Let Claude tool-call into a Monte Carlo simulator when the user asks forward-looking questions. Keep the simulator boring and correct (10k trials in NumPy, p10/p50/p90 outputs).
Outcome. Working advisor with 3 seeded personas (young saver, mid-career, pre-retiree). Answers questions about retirement probability, job-loss recovery, and debt-payoff timing with references to the user's real transactions. Uses tool-calling to run simulations without the model having to approximate math.
Lessons. The grounding is the entire value. Claude without account context is worse than a FICO calculator. Claude with account context is the assistant I wanted. The Monte Carlo simulator is a one-file module; the interesting work was the tool schema that lets Claude decide when to call it.
Architecture
- Frontend: Next.js 14 App Router + TypeScript + Tailwind
- Backend: Python 3.11 FastAPI + NumPy Monte Carlo
- Data: Supabase + pgvector, Plaid sandbox integration
- AI: Claude 3.7 Sonnet via Anthropic API with tool-calling
Disclaimer: portfolio project. Plaid sandbox only. Not a registered investment advisor.
Live → GitHub → Landing page →
Key features
- Plaid sandbox account linking (no real financial data ever touches the app)
- Monte Carlo retirement simulator, 10k NumPy trials, p10/p50/p90 outputs
- Claude 3.7 grounded advisor chat with account context and tool-calling
- 3 seeded personas for demo: young saver, mid-career, pre-retiree
- Transaction classification into spending categories
- pgvector document store for grounding context
- Tool-calling schema that lets Claude decide when to run simulations
Technical details
- Frontend: Next.js 14 App Router, TypeScript, TailwindCSS
- Backend: Python 3.11 FastAPI, NumPy for Monte Carlo trials
- Database: Supabase + pgvector for grounded document store
- Integrations: Plaid sandbox SDK
- AI: Claude 3.7 Sonnet via Anthropic API with structured tool calls
- Deploy: Vercel (frontend) + Cloud Run (backend)
Challenges
- Designing a tool schema Claude actually picks up reliably
- Keeping Monte Carlo under 2 seconds per run for chat latency
- Grounding prompts that do not leak raw account data into the LLM
- Handling Plaid sandbox credential quirks without blocking demos
Tags: Next.js, FastAPI, Claude 3.7, Plaid, Monte Carlo, pgvector