Inspiration

This year's theme was "Fly Me to the Moon" — a song about wanting something more, being willing to fight for a better life, not just accept the one you're handed. We kept coming back to that idea: most people aren't stuck because they lack assets. They own a house, some stocks, a 401(k), maybe a rental property sitting vacant. They have real options for a better future — they just can't see them clearly enough to act.

Most people don't have a $500k+ portfolio, so they can't justify hiring a financial advisor — but they're not exactly broke either. Every asset they own is easy to understand on its own. Nobody has a tool that puts it all in one place and lets them ask "what happens if..." — what if I sell this house? What if I retire five years early? What if we have another kid? Reaching for something better shouldn't require guesswork or a $500k net worth. We wanted to build something that turns scattered financial facts into an actual decision-making tool for families, not just another budgeting app — something that helps people actually fight for their "better place," instead of just tracking the one they're already in.

What it does

Orbit Moon Finance Simulator helps families see their whole financial picture and stress-test real decisions before they make them.

  • Asset Overview: Users log real estate, stocks, cash, and retirement accounts — either their own or a shared family portfolio — and get a clear net worth, cash flow, and allocation view.
  • Family Units: Accounts can link into a household. Shared assets (like a jointly owned home) are only counted once toward the family total, based on each person's confirmed ownership share, so couples don't double-count what they already share.
  • Conversational goal-setting: Instead of a rigid multi-step form, an LLM-driven chat asks 1–2 follow-up questions at a time to fill in goals (retirement, buying a home, saving for kids) and any extra costs the base numbers missed — while letting users skip anything they don't know yet.
  • 10-year household simulation (in progress): Combines income, expenses, debt, and family cash flow into a single forward-looking projection.
  • Decision Assistant & What-If comparisons (in progress): The end goal is to let users flag a real decision — rent vs. sell a property, retire early, take a sabbatical — and see a side-by-side comparison of how each choice plays out over the next decade.

How we built it

  • Frontend: React + TypeScript + Vite, with a consistent visual language across pages (soft, rounded, illustrated) so the app feels approachable rather than like a spreadsheet.
  • Backend: Python + FastAPI, handling auth, asset/goal storage, and (eventually) the simulation engine itself.
  • Storage: Everything lives in a local SQLite database (storage/app.db) — no cloud dependency, no third-party account linking (like Plaid) for the MVP. Account data is scoped per user; family views are derived from each member's confirmed, shared data rather than one person overwriting another's numbers.
  • Auth: Username/password accounts with scrypt-hashed passwords and HttpOnly cookie sessions.
  • LLM integration: A deliberately narrow "harness" — the model only gets a read tool (latest user/family data) and a write tool (propose structured updates). The backend validates, versions, and confirms every write; the model never touches the database directly, and anything inferred (rather than explicitly stated) requires user confirmation before it's saved.

Challenges we ran into

  • Shared ownership without double-counting. Two family members can each own a share of the same house — we had to make sure the family total only counts that house once, and that unconfirmed or unknown ownership splits are shown as gaps instead of silently treated as zero.
  • Letting an LLM write to a real database safely. We wanted the conversational goal-setting to feel natural, but we didn't want the model inventing numbers or corrupting someone else's financial data. Splitting the model's access into just read and write, with the backend owning all validation, let us get the conversational UX without giving up control over data integrity.
  • Scoping down without losing the point of the product. The full vision includes tax calculations, market data feeds, and multi-decade simulations — we had to consciously cut those for the hackathon and prove the core loop (see your numbers → set a goal → eventually compare a real decision) instead.

Accomplishments that we're proud of

  • A real multi-user account system with family linking that correctly handles shared assets and partial ownership, not just a single-user demo.
  • A conversational goal-setting flow that feels like talking to someone, not filling out a form — while still being safe, auditable, and undoable.
  • A clear architectural boundary between "what the LLM can infer" and "what's treated as verified fact," which we think matters a lot for anything touching someone's real finances.

What we learned

  • Family finance data is genuinely harder to model than it looks — shared vs. individual ownership, dependents without their own accounts, and "who confirmed this number" all need explicit handling or the whole system becomes untrustworthy.
  • Giving an LLM a narrow, well-defined set of tools (rather than open-ended access) made the conversational features both easier to build and much easier to trust.
  • It's better to fully build and harden one honest slice of the product (accounts → assets → goals) than to half-build all four modules.

What's next for Orbit Moon Finance Simulator

  • Finish the 10-year household simulation engine and connect it to the goals and assets already being collected.
  • Build the Decision Assistant and What-If side-by-side comparisons — the core interaction the whole product is designed around.
  • Add sample portfolios (single professional, newlyweds, family with kids) so new users can explore the tool in one click before entering their own data.
  • Longer term: Cashflow Radar (12-month shortfall warnings) and a Financial Check-up score to give people a reason to come back beyond the initial setup.

Built With

Share this project:

Updates

Submission history