Inspiration

"You have 5 apps to track stock tickers, but 0 apps to track your actual life."

The modern investor is fragmented. A typical 25-year-old has a Robinhood account for stocks, a Coinbase wallet for crypto, a Vanguard 401k, and maybe a rental property or just a high-yield savings account.

When Josh (VisualFaktory) described the problem of "Net Worth Dysmorphia," it hit home. We constantly check prices, yet we have no idea what our total net worth actually is because we ignore the "boring" stuffโ€”like mortgage amortization, bond maturity, or cash drag.

I built Vizzy to solve this. I wanted a "God View" of my finances that didn't look like a Bloomberg Terminal. I wanted a companion that was smart enough to handle complex amortization logic, but fun enough to roast me for buying too much Dogecoin.

What it does

Vizzy is the First "Personality-First" Portfolio Tracker. It combines a rigorous multi-asset vault with a Generative AI financial sidekick.

  1. The Magic Sync (Plaid): We integrated Plaid to solve the manual entry nightmare. Users can connect Robinhood, Coinbase, and Schwab in seconds. One tap, and your entire listed portfolio is live.
  2. The "Unlisted" Engine: Most apps fail here. We built a custom engine to track Real Estate and Fixed Income. You input your mortgage details, and Vizzy calculates your daily equity build-up automatically (handling principal vs interest).
  3. The "Roast" (Risk Analysis): We don't show boring beta charts. We use Gemini 1.5 Pro to analyze your sector exposure and roast you. "You're 85% exposed to Tech. If Elon tweets the wrong thing, you're broke."
  4. The Hybrid Economy: A flexible monetization model where users can buy "Day Passes" for deep-dive analysis or subscribe for the full monthly "Net Worth" experience.

How we built it

We built Vizzy as a Privacy-First, Local-First application using Expo SDK 54 and React Native.

The Tech Stack:

  • Bank Sync: Plaid API (Link SDK + Webhooks).
  • Market Data: Financial Modeling Prep (FMP) for real-time crypto/stock pricing.
  • AI: Google Gemini 1.5 Pro (Persona & Analysis) + OpenAI Whisper (Voice Input).
  • Backend: Supabase (PostgreSQL) + Edge Functions.

The Logic:

  • Amortization Engine: Instead of asking users to update their home equity manually, we wrote a client-side algorithm that runs every time the app opens. It takes the loan principal, interest rate, and start date to calculate exactly how much equity was gained overnight.
  • The "Roast" Pipeline: We aggregate the user's portfolio into a lightweight JSON summary (e.g., "Tech: 80%, Cash: 5%") and feed it to Gemini with a strict "Snarky Financial Advisor" persona to generate the daily briefing.

Challenges we ran into

  1. The "Net Worth" Currency Problem: Aggregating a portfolio with Bitcoin (USD), a Rental Property (EUR), and a generic Bond (GBP) required a real-time Forex Normalization Layer. We had to build a caching system that normalizes all assets to the user's base currency every time the app opens, without spamming the pricing API.
  2. Plaid Token Rotation: Handling the expiration of bank connections is painful. We built a robust "Re-Link" flow that detects when a bank connection is stale and seamlessly prompts the user to re-authenticate only when necessary.
  3. AI Latency: Generating a "Daily Briefing" with 5 cards took too long (8+ seconds). We optimized this by pre-generating the briefing via a scheduled Edge Function at 6:00 AM local time, so it's instant when the user wakes up.

Accomplishments that we're proud of

  • The "Unlisted" Engine: Successfully building a client-side engine that accurately tracks mortgage amortization implies users see their net worth go up every single day (as they pay down principal), which is a huge retention hook.
  • Personality-Market Fit: Tuning Gemini to be "Snarky but Smart" was difficult. We found the sweet spot where the AI feels like a financially literate friend, not a calculator.
  • The "Day Pass" Model: Implementing a consumable-based access model via RevenueCat that automatically expires after 24 hours. Itโ€™s a frictionless way for users to try Pro features without a subscription.

What we learned

  • Data is Emotional: Users don't just want to see numbers; they want to know how they are doing. Adding the "Roast" feature increased session time by 300% because users wanted to see what the AI would say about their new trades.
  • Impulse Buys Work: Young investors are hesitant to subscribe for $35/year, but they will happily drop $0.99 for a "Portfolio Audit" when they feel anxious about the market.

What's next for Vizzy

  1. Tax-Loss Harvesting: We want to build an alert system: "Sell this loser stock now to save $300 in taxes."
  2. Voice Mode: Integrating Inworld AI to allow full voice conversations with Vizzy while driving.
  3. Peer Benchmarking: "See how your Net Worth compares to other 25-year-olds in your city" (using anonymized aggregate data).

Built With

Share this project:

Updates