Inspiration

Most people don't struggle with money because they're bad at math.

They struggle because they've never actually made a financial decision under pressure. Every course, every app, every explainer video teaches you about money the same way — you sit, you absorb, you nod along. And then real life arrives. Your first paycheck. A market crash. A medical bill you didn't see coming. And you freeze. Because knowing what compound interest is and knowing what to do when your savings account is sitting there and the market just dropped 18% are completely different things.

The numbers behind this are staggering. 3.5 billion adults worldwide are financially illiterate. Gen Z averages a 38% score on standardized financial competency tests — the lowest of any generation ever recorded. 69% of Americans report that financial uncertainty has made them depressed or anxious. Financial literacy in the US has not meaningfully improved in 8 consecutive years. Only 30% of Americans could cover a $1,000 emergency from their savings today. And only 32 out of 50 states even require financial education in schools.

This isn't a knowledge gap. It's a practice gap. You can read about swimming forever. You still can't swim until you get in the water.

The problem is that there's no safe water to practice in. Financial mistakes in real life are expensive, irreversible, and often don't reveal themselves until years later. By the time most people understand the system, they've already paid the tuition — in bad debt, missed compound growth, panic decisions during downturns, and raises that disappeared into lifestyle inflation instead of wealth.

I wanted to build the safe water. A place where the stakes feel real, the decisions are hard, the consequences actually teach you something — and none of it costs you anything in the real world. That's what PRAXIS is.


What it does

PRAXIS is an AI-native financial simulator. Not a quiz. Not a budgeting tracker. Not a textbook with interactive elements bolted on. A full simulation — one that puts you inside your own financial future and makes you live it.

The Financial Twin

Everything starts with onboarding. You input your real numbers: income, monthly expenses, savings, debt load. Then you answer a psychological assessment — not a generic personality quiz, but a set of scenario-based questions designed to surface how you actually behave with money. Do you avoid checking your account when you know it's low? Do you feel physical anxiety during market drops? Do you spend more when you're stressed?

From this, PRAXIS builds your Financial Twin — a high-fidelity digital avatar that carries your real financial state, your risk tolerance, your behavioral biases, your investment instincts, and your financial archetype. There are five archetypes: Guardian, Builder, Explorer, Strategist, and Visionary. Each one comes with a distinct behavioral prediction, a psychological profile, and a set of known blind spots that the AI Council watches for specifically when advising you.

Your Twin isn't a generic stand-in. It's modeled on who you actually are — which means the advice you get, the biases flagged, and the consequences you face are all personalized to your specific financial reality.

The Scenarios

Once your Twin is built, you enter the scenario engine. PRAXIS currently features four fully realized financial scenarios, each spanning multiple years with branching decision nodes:

  • 🎓 The Summer Hustle — Ages 16 to 19. First job, first real money, first real traps. Car payments, prom costs, the pressure to spend, and the first glimpse of what a student loan actually means.
  • 💼 The First Paycheck — Your first real job. You have $500 left over after expenses. Do you start your 401k? Build an emergency fund? Throw it at student debt? The decision seems small. The 10-year projection says otherwise.
  • 📉 The Market Crash — Your portfolio is down 30% overnight. Everyone around you is panicking. Do you sell to stop the bleeding? Buy more while it's cheap? Hold and wait? This is where behavioral finance becomes visceral.
  • 💰 The Windfall — $10,000 drops in your lap unexpectedly. Start a business? Pay off high-interest debt? Invest everything? Split it? Each path has a completely different 10-year trajectory.

Every scenario node includes a narrative context paragraph that sets the scene, 2 to 4 decision options with full descriptions, hidden outcome data that reveals after you choose, a short-term result, a long-term projection, lessons surfaced post-decision, and score impact mapped to specific mastery categories.

The 3-Agent AI Council

This is the centerpiece of PRAXIS. At every major decision point, you don't just pick an answer. You watch three specialized AI agents convene, analyze your specific situation through their own distinct lenses, and then argue with each other about what you should do.

The three agents are:

  • 🛡️ The Conservator — The safety-first voice. Emergency funds. Liquidity ratios. Downside protection. The Conservator doesn't care about your 20-year wealth projection if you can't survive the next 6 months. Every recommendation is filtered through the question: "What happens if everything goes wrong?"

  • 📈 The Grower — The future-wealth voice. Compound interest. Opportunity cost. Tax-advantaged accounts. The Grower believes that time is the most powerful variable in personal finance and that every month you're not invested is money you're leaving on the table permanently. The Grower will not let you forget this.

  • 🧠 The Behaviorist — The psychological voice. Loss aversion. Anchoring bias. Lifestyle inflation. Status quo paralysis. The Behaviorist knows that the reason most people make bad financial decisions isn't bad math — it's bad psychology. And crucially, the Behaviorist has read your Twin. They know your specific biases, your archetype's known failure modes, and they watch for those specifically in every recommendation they make.

The Council runs a 3-phase deliberation protocol:

Phase I — Independent Opinions. All three agents analyze the scenario simultaneously without seeing each other's output. Each forms a position based purely on their own worldview and your Twin's data. You see the conflict immediately — they don't agree, and they're not supposed to.

Phase II — Cross-Examination. The agents read each other's positions and directly challenge the logic. The Grower tells the Conservator they're letting fear masquerade as caution and points to specific numbers that prove it. The Conservator fires back that average returns hide catastrophic tail years. The Behaviorist cuts through both of them and points out that neither is accounting for the psychological stress load this decision will put on you — and that stress leads to worse downstream decisions. It gets heated. That's the point.

Phase III — Synthesis. After the debate, a final verdict is rendered. What the agents agreed on. What they still fundamentally disagree on. The final balanced recommendation. And a list of cognitive bias warnings tailored specifically to your Money Personality — not generic "watch out for loss aversion" warnings, but specific flags based on your archetype and your onboarding responses.

The 3D Financial Galaxy

Your portfolio doesn't live in a spreadsheet. It lives in space.

The Galaxy is a physics-driven Three.js solar system where every visual element maps 1:1 to a real financial variable in your Twin's live state. Each asset class is a planet — stocks, bonds, crypto, cash, real estate. Orbit speed maps to real-world volatility: stable bonds move in slow, predictable arcs while crypto spins in erratic, fast orbits. Your debt sits at the center of the system as a chaotic, unstable geometric mass — a Debt Octahedron — that physically warps the orbital paths of your growth planets, pulling them inward, slowing their trajectories, visualizing the gravitational drag of interest and leverage in real time.

Pay off debt and watch the gravity of the entire system shift. It's not decoration. It's a data visualization you can feel.

A 140-node mouse-reactive particle field forms the background constellation, responding to cursor movement with proximity glow and fluid repulsion physics.

Everything Else

  • Live Market Ticker — Real-time SPY, GLD, BTC, ETH, Fed Funds Rate, and CPI pulled from Alpha Vantage, CoinGecko, and FRED. A 10-minute localStorage cache neutralizes free-tier rate limits entirely. The ticker has never gone dark. A green LIVE dot confirms data freshness in real time.

  • Mastery Radar — A live hexagonal radar chart tracking six financial skill domains: Budgeting, Investing, Debt Management, Behavioral Awareness, Tax Optimization, and Risk Management. Every decision you make carries hidden tags like panic-sell, compound-interest, and lifestyle-inflation. Those tags update your radar automatically. You can't game it. It just watches what you actually do and reflects it back to you.

  • 10-Year Wealth Projection — Every choice nudges your Twin's net worth 5% toward the long-term trajectory of that decision. These projections are anchored to live macroeconomic indicators so the math reflects the actual world you're making decisions in. Small choices compound over the simulation the same way they compound in real life. The butterfly effect, made visible.

  • Quantum Lexicon — A living financial dictionary built into the sim. Over 20 terms defined in plain language, in context, the moment you need them. Compound Interest, Index Fund, Dollar-Cost Averaging, 401(k), Roth IRA, Debt-to-Income Ratio, Tax-Loss Harvesting, and more. Opens as a glassmorphic modal with scroll-lock so you never lose your place in the simulation. This is what makes PRAXIS work for a complete beginner without ever talking down to someone who already knows their stuff.

  • Diegetic UI — The interface itself is part of the experience. A live 3-state system badge in the navbar updates every 8 seconds showing QUANTUM_COUNCIL_ONLINE, API_CONNECTED · NO_AI, or HEURISTIC_MOCK_ACTIVE depending on backend status. Synthesized audio tones fire on every hover and click — built from scratch using the Web Audio API with zero external libraries. If the backend needs to cold-start, an amber banner appears automatically and dismisses the moment the connection is established.


How I built it

Architecture Overview

PRAXIS is a full-stack application with a React frontend deployed on Vercel and a Python FastAPI backend deployed on Render. The two communicate via a single primary endpoint — /api/deliberate — which triggers the multi-agent deliberation pipeline on demand.

Frontend

The frontend is built on React 19 with TypeScript and Vite. Every component is fully typed — there are no any types in the codebase. The entire application state lives in a single Zustand store with localStorage persistence via the persist middleware, meaning your Financial Twin survives browser refreshes and session breaks without any backend dependency.

The 3D Galaxy lives in src/components/galaxy/ and is built with Three.js via @react-three/fiber, @react-three/drei, and @react-three/postprocessing. The orbital physics, gravitational warp from the debt mass, and particle field repulsion are all computed per-frame using custom Three.js animation loops. Framer Motion handles all 2D transitions and micro-animations. Recharts renders the wealth projection curves and the Mastery Radar. The audio system is a custom Web Audio API implementation — oscillator nodes, gain envelopes, and frequency mapping — with zero external dependencies.

The live market data pipeline lives in src/hooks/useMarketData.ts. It fetches from Alpha Vantage, CoinGecko, and FRED in a staggered sequence to avoid simultaneous rate-limit hits, stores results in localStorage with a 10-minute TTL, and serves cached data on any subsequent call within that window. The frontend never makes more API calls than it needs to.

Backend

The backend is a FastAPI application running on Python 3.10+ with Uvicorn in development and Gunicorn in production. The multi-agent deliberation system is orchestrated in api/orchestrator.py.

When a deliberation request arrives, the orchestrator fires three parallel async calls to the Groq Cloud API — one for each agent persona — each with a distinct system prompt that encodes that agent's worldview, rhetorical style, and analytical priorities. The responses feed into a cross-examination phase where each agent receives the other two opinions and generates a targeted rebuttal. Finally, a synthesis call produces the final verdict.

Every single output — AgentOpinion, AgentRebuttal, DeliberationSynthesis — is validated against a strict Pydantic v2 schema before it's returned to the frontend. If the LLM produces output that doesn't match the schema, the call fails cleanly and the fallback activates. There is no path where malformed AI output reaches the UI.

The fallback system is a deterministic Heuristic Mock Council — a set of pre-engineered responses that simulate the three-agent debate using rule-based logic rather than live LLM calls. It activates automatically if the backend is unreachable, the Groq API key is invalid, or any deliberation call times out.

Deployment

Frontend is auto-deployed from GitHub to Vercel on every push to main. Backend is deployed as a Python web service on Render with a render.yaml config. Environment variables — GROQ_API_KEY, FRED_API_KEY, ALPHA_VANTAGE_KEY — are injected at runtime. The frontend uses a config.ts that switches API URLs automatically between localhost and production based on the environment.


Challenges I ran into

Engineering genuine disagreement out of LLMs

The hardest single problem in this project was making the Council feel like a debate rather than three versions of the same answer. Large language models are trained to be helpful, agreeable, and to converge toward consensus. That is the exact opposite of what PRAXIS needs. I needed agents that would genuinely hold their positions, find real logical flaws in opposing arguments, and push back with specific evidence rather than polite hedging.

This required deep prompt architecture for each agent. The Conservator's system prompt isn't just "be risk-averse" — it's a full psychological persona with specific rhetorical patterns, known arguments against growth-focused thinking, and explicit instructions to challenge optimistic projections with tail-risk scenarios. The Grower is built to attack paralysis and fear-based reasoning with compound math. The Behaviorist is built to cut through both with psychological realism.

Pydantic v2 was essential here. Without strict schema enforcement, the agents would drift — producing free-form text that sounded like a debate but couldn't be reliably parsed into the structured tabs the UI needed. The schemas forced the agents to fill specific fields with specific types of content, which paradoxically made the debate feel more natural because each agent had a designated lane to operate in.

Making the Galaxy financially accurate and visually beautiful simultaneously

The Galaxy concept sounds clean: map financial data to physics. In practice, the metaphors broke constantly. Volatility as orbit speed works conceptually but produces visually ugly results if applied naively — assets with similar volatility end up in nearly identical orbits and the whole system looks flat. Debt as gravitational mass makes intuitive sense but Three.js doesn't have built-in gravitational warp — that required custom shader work and per-frame position manipulation.

Every visual property went through multiple iterations to find the version that was both financially accurate as a metaphor and visually distinctive enough to actually read on screen. The final system — where debt warps orbits inward, volatility determines orbital eccentricity rather than just speed, and asset size maps to allocation percentage — took significantly more iteration than expected.

Building a system that never breaks

PRAXIS depends on three external APIs, a cloud-hosted LLM backend, and complex real-time state management simultaneously. In a hackathon context, any of these can fail at any moment — rate limits hit, Render cold-starts, Groq API hiccups, network conditions vary. A demo that crashes when a judge opens it is a demo that loses.

Building the resilience layer meant thinking through every possible failure mode and designing a graceful response for each one. The mock council fallback. The 10-minute market data cache. The cold-start banner that appears after 4 seconds and auto-dismisses. The 3-state system badge that tells you exactly what's working and what isn't. The error boundaries at every async boundary in the React tree. None of these are visible features — they're invisible infrastructure that exists entirely to make sure the visible features always work.

State architecture at scale

The Zustand store ended up being significantly more complex than anticipated. The Financial Twin is a living entity — its net worth, mastery scores, projection curves, and portfolio allocation all update dynamically based on decisions made across multiple scenarios. Making sure these updates were consistent, persisted correctly to localStorage, and fed the right data to the Galaxy renderer, the radar chart, the projection graph, and the Council's deliberation context simultaneously required careful architecture and a lot of debugging.


Accomplishments that I'm proud of

The deliberation system works. Three AI agents with genuinely distinct worldviews argue with each other in real time, stay in character across wildly different financial scenarios, produce structured output the frontend can reliably parse, and generate cognitive bias warnings that are actually specific to the user's financial personality rather than generic disclaimers. That pipeline — from user decision to three parallel LLM calls to cross-examination to synthesis to structured UI in under 10 seconds — works consistently.

The Galaxy is both accurate and beautiful. Every single visual element maps to a real financial variable. It's not a pretty animation that happens to be themed around finance — it's a genuine data visualization where the physics encode real meaning. Orbit speed is volatility. Planet size is allocation. Gravitational warp is debt load. A user who spends five minutes watching their galaxy intuitively understands their portfolio's risk profile without reading a single number.

The app has never crashed. Not once during development, testing, or demo. The resilience layer works. A judge can open this on any connection at any time of day and it will load, it will show real or cached market data, it will run a live or mock council, and it will never throw an unhandled error.

The beginner-to-expert range works. A 16-year-old who has never heard of a 401(k) can open PRAXIS, complete onboarding, enter The Summer Hustle scenario, consult the Council, and walk away understanding compound interest, opportunity cost, and behavioral bias — all defined in context by the Quantum Lexicon, never having to leave the sim to look anything up. Someone who already tracks their net worth in a spreadsheet can open the same app and find the Council's depth, the live macro data integration, and the behavioral analysis genuinely useful. That range is hard to achieve and I'm proud it works.

The whole thing was built solo. Every line of frontend code, every line of backend code, every prompt, every schema, every CSS variable, every Three.js shader — one person, one month. I'm proud of that.


What I learned

I came in knowing how to write React components. I left understanding what it means to design a system.

Before this project, I thought about code in terms of features: build the component, hook up the state, ship it. PRAXIS forced me to think in terms of systems — where AI inference, real-time data fetching, 3D physics rendering, complex state management, and UX psychology all have to hold together simultaneously under real user behavior, with no single point of failure allowed.

I learned what prompt engineering actually means at a production level. It's not writing clever instructions — it's designing behavioral constraints that shape how a model operates across a wide distribution of inputs. Getting the three agents to stay in character, argue coherently, and produce structurally consistent output across hundreds of different scenario combinations required thinking about prompts the way you think about interfaces: as contracts, not suggestions.

I learned that financial literacy is a UX problem as much as an education problem. The information exists. The courses exist. The YouTube videos exist. People still don't learn. The reason isn't access — it's engagement and embodiment. If the interface doesn't make a person feel the weight of a financial decision, the information doesn't stick. Every design decision in PRAXIS — the audio tones, the galaxy warp, the agent rebuttals, the projection shift — was made in service of making decisions feel consequential. That's a design philosophy I'll carry into everything I build.

I learned that resilience is a feature, not an afterthought. The hours I spent building the mock council, the cache layer, the cold-start banner, and the error boundaries paid off the first time a demo ran flawlessly on a flaky connection. Systems that degrade gracefully are more impressive than systems that work perfectly under ideal conditions, because real conditions are never ideal.


What's next for PRAXIS

The foundation is solid. The vision is bigger than what's here today.

Smarter Projections. The 10-year wealth projection engine is next in line for a major upgrade. Right now it uses live macro data as context — Fed Funds Rate, CPI, market indices — to anchor projections in the real world. The next version will model these variables dynamically, showing how a Fed rate cut changes your projection in real time, how an inflation spike erodes your purchasing power curve, how a market cycle affects the compound trajectory of different asset allocations. Not just a number that moves — a forecast that breathes with the real economy.

More Scenarios. The current four scenarios cover the most common early-career financial crossroads. The roadmap includes: buying a first home, navigating a layoff, managing equity compensation, choosing between renting and owning, planning for a child, and handling inheritance. Each one has a distinct behavioral profile and a unique set of Council dynamics.

Multiplayer Mode. Some of the worst financial decisions people make happen because of social pressure — a friend who won't stop talking about crypto, a partner with a different risk tolerance, a family member who needs help. A multiplayer layer where two users navigate the same scenario with different Twins, see each other's Council recommendations, and have to make a joint decision would add a social dimension to financial education that no existing tool has tackled.

Expanded Archetypes and Deeper Behavioral Modeling. The current five archetypes are a starting point. A more granular psychological model — one that tracks behavioral drift over time, flags when your decisions are inconsistent with your stated archetype, and surfaces personalized growth challenges — would make the Mastery Radar significantly more powerful as a long-term learning tool.

The infrastructure to support all of this is already in place. Everything else is iteration.


On the Demo Video

The demo is 28 minutes. I know.

I tried to cut it. The honest answer is that I couldn't — not without turning it into a highlight reel that shows what PRAXIS does without showing how it feels. The onboarding flow creating a real Financial Twin. The Council genuinely debating in real time. The Galaxy physically shifting as financial decisions land. The 10-year projection moving because of a single choice. That sequence takes time to show properly, and cutting it means a judge sees the features without experiencing the thing the features are trying to create.

So I left it long. But if you have 28 minutes, I think it's worth it.

Built With

  • alpha-vantage-api
  • coingecko-api
  • fastapi
  • framer-motion
  • fred-api
  • groq
  • llama-3.3
  • lucide
  • pydantic
  • python
  • react
  • react-three-fiber
  • recharts
  • render
  • three.js
  • typescript
  • vercel
  • vite
  • web-audio-api
  • zustand
Share this project:

Updates