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