Why We Built It

We kept running into the same problem: portfolio data is always messy. Broker exports, random notes, screenshots... and turning that into something we can actually think about (allocations, prices, risk, "what should we do next?") takes way too long.

On top of that, we're genuinely fascinated by Gen-AI - especially the moment when it stops being a "chat toy" and starts acting like a real assistant that can turn chaos into structure. This project was our way of exploring that: can we combine a clean workflow with Gen-AI so the output feels useful, reliable, and readable?

We actually started by prototyping the first version in AI Studio - just to move fast and prove the workflow. Once it felt real, we switched over to Antigravity for the actual development work and iteration.

What It Does

You upload your holdings (CSV/Excel or a screenshot), quickly confirm they look right, fetch current prices, answer a few risk questions, and it generates a structured memo you can read, translate, and export.

How We Built It (Simple Version)

Nothing fancy:

  • A step-by-step web app so you always know what's happening.
  • A small backend so the "AI + secrets" stay server-side.
  • Guardrails so the AI returns structured output instead of rambling.

Gemini Models I Used (By Task)

  • Parsing raw portfolio text: gemini-3-flash-preview
  • Parsing screenshots/images: gemini-3-flash-preview (vision-style extraction)
  • Generating behavioral questions: gemini-3-flash-preview
  • Full investment memo generation (higher quality, streamed): gemini-3-pro-preview
  • Translation: gemini-flash-lite-latest

Challenges (The Real Ones)

  • Inputs are chaotic: even two "CSV" files don't look the same, so parsing and normalization took more work than expected.
  • AI needs boundaries: without strict formats, it can get creative in the wrong ways - so we learned to be very clear about schemas and output rules.
  • Speed vs quality tradeoffs: streaming the memo made the app feel way better, but it added complexity.
  • Privacy vs convenience: saving analysis history is nice, but portfolio data is sensitive - so we had to think carefully about local storage and user control.
  • Tooling surprises: tests and dependencies can fail for reasons unrelated to your code, and you still have to deal with it.

Biggest Takeaways

  • Choosing models is a cost/benefit balancing act.
  • Good UX is basically "trust-building."
  • AI is powerful, but only reliable when you box it in.
  • Security isn't just a checkbox - it changes product decisions (what runs in the browser, what gets stored, what's allowed).

Built With

Share this project:

Updates