Inspiration
True to Josh's brief, the modern investor’s portfolio has evolved, but their tools haven't. Today, a typical US investor holds assets across a fragmented landscape: stocks in Robinhood, crypto in Coinbase, a 401(k) in Fidelity, a rental property managed via email, and angel investments trapped in PDFs.
We realized that while there are great apps for trading, there is no single "operating system" for wealth. Existing trackers are either too manual (spreadsheets) or too rigid (only tracking listed tickers). We wanted to build something "Unbounded"—a platform that treats a vintage Porsche or a Series A startup investment with the same fidelity as a share of Apple, giving users a true, unified view of their net worth.
What it does
PortLens is the first AI-Native, Unbounded Portfolio Tracker. It centralizes every asset class into a single, intelligent dashboard.
- Hybrid Tracking: Seamlessly combines real-time data for listed assets (Stocks, ETFs, Crypto) with robust manual tracking for unlisted assets (Real Estate, Private Equity, Art).
- Voice-to-Portfolio: Powered by Gemini 3.0, users can simply speak natural commands like "I bought a duplex in Austin for $450k and put $10k into a tech ETF." The app parses the intent, categorizes the asset, and updates the portfolio instantly.
- Active Analyst: It doesn't just store data; it monitors it. The system periodically scans global news to detect risks specific to your holdings (e.g., regulatory changes affecting your specific sector).
- Smart Reminders: A context-aware notification engine ensures you never miss "maintenance" events for unlisted assets, such as property tax deadlines, lease renewals, or warrant expirations.
| Category | Feature Name | Description | Key Tech / Implementation |
|---|---|---|---|
| Core Tracking | Real-Time Price Sync | Live price updates for Stocks, ETFs, and Crypto. The system fetches the latest market data automatically. | Yahoo Finance API + Background Workers. |
| Core Tracking | Unbounded Asset Support | Tracks unlisted assets (Real Estate, Art, Startups) alongside listed ones in a single unified view. | Hybrid Model: Manual/AI entry for unlisted assets + Polymorphic Database Schema. |
| AI & Automation | Voice-to-Portfolio | Users can speak complex transactions (e.g., "Bought a duplex in Austin for $450k"). The AI extracts value, type, and location instantly. | Gemini 3.0 Flash (Multimodal) + Audio Blob processing. |
| AI & Automation | Active Analyst | The system "wakes up" periodically to scan global news and market data, linking external events to specific user assets. | Background Workers (Python AsyncIO) + News API. |
| AI & Automation | Instant Risk Insights | Immediate calculation of portfolio diversification and concentration risks upon adding any asset. | Algorithmic Analysis (Python/Pandas). |
| Reminders | Smart Contextual Alerts | Timezone-aware reminders for asset maintenance (e.g., Lease Renewals, Tax Deadlines). Supports natural language scheduling. | "Store UTC, Display Local" Architecture + Capacitor Local Notifications. |
| User Exp. | Lazy Auth (Device-First) | Frictionless onboarding allowing users to test core features (create assets, get insights) without signing up. | Persistent Device ID generation + Anonymous MongoDB User mapping. |
| Monetization | Global Freemium Model | Tiered access (Free vs. Pro) with localized pricing (PPP) to make Pro affordable in emerging markets like Nigeria & India. | RevenueCat (Offerings & Entitlements) + Dynamic Paywalls. |
| Backend | Polymorphic Editing | A single dynamic system to edit fundamentally different assets (e.g., fixing a Stock Ticker vs. updating Land Zoning). | MongoDB Flexible Schema + Pydantic Discriminators. |
| Backend | Pause/Play Portfolios | Users can "Pause" specific portfolios to stop alerts and news scanning without deleting data, saving API costs. | Conditional Scheduler Loops (Skips inactive portfolios). |
| Platform | Cross-Platform Parity | Fully functional Progressive Web App (PWA) and Native Android App from a single codebase. | Next.js 14 + Capacitor 6 (Android Container). |
How we built it
We adopted a Mobile-First, Cloud-Native architecture to ensure speed and scalability.
- Lazy Authentication: A device first authentication approach is employed to enable frictionless testing for hackathon
- AI Engine: We utilized Google Gemini 3.0 for its superior multimodal capabilities. It handles everything from parsing complex voice queries to generating risk summaries and structuring unstructured asset data.
- Frontend: Built with Next.js 14 (App Router) for a responsive web experience, wrapped in Capacitor 6 to deliver a native Android application from a single codebase.
- Backend: A high-performance FastAPI (Python) server manages the business logic, utilizing asynchronous tasks for background news scanning.
- Database: MongoDB was chosen for its flexible schema, allowing us to store "unbounded" asset types without rigid table structures.
- DevOps: We implemented a CI/CD pipeline using GitHub Actions to automate testing and deployment.
Challenges we ran into
- The "Timezone Drift": Building a global reminder system was deceptively difficult. We faced issues where reminders set in one timezone would trigger based on UTC server time, leading to alerts arriving hours early or late. We solved this by implementing a robust "Store UTC, Display Local" architecture and passing precise timezone context to the AI engine.
- Unbounded Data Modeling: Designing a database schema that effectively stores both a highly structured stock (with Ticker, PE Ratio, Dividend Yield) and a highly unstructured asset (like a piece of art with provenance and insurance dates) required creative use of MongoDB's polymorphic document structure.
- AI Hallucinations: Early on, the AI would sometimes invent ticker symbols for unlisted assets. We refined this using strict system prompting and "Grounding" techniques to force the model to categorize assets correctly (e.g., differentiating between "Gold" the commodity and "GOLD" the ticker).
Accomplishments that we're proud of
- True Multimodal Entry: Achieving a seamless "Voice-to-Dashboard" flow where a user can speak a complex financial transaction and see it visualized in seconds.
- Cross-Platform Parity: Successfully shipping a fully functional Web App and Native Android App from a single codebase without compromising performance.
- The "Active" Architecture: Moving beyond a passive database to an active system that wakes up, scans the web, and pushes insights to the user without manual intervention.
What we learned
- LLM is as Good as the context it has Gemini 3.0 is incredibly powerful, but it needs precise context. Passing the user's local time string and location data significantly improved the accuracy of relative date calculations (e.g., "Remind me in 2 hours").
- The "Unlisted" Gap: We learned that for many high-net-worth individuals, the majority of their wealth is actually in unlisted assets, a segment completely ignored by most fintech APIs.
- Latency Matters: Optimizing the handoff between the Next.js frontend and the Python backend was critical for making the AI feel "instant."
What's next for PortLens
- Transition to actual Auth: Implement robust auth to support real users
- More Insight Type: Implement many more insight types to be generated during periodic heartbeat check
- Automated Valuation Models (AVM): We plan to integrate APIs (like Zillow or Kelly Blue Book) to automatically update the estimated value of Real Estate and Vehicles, removing the need for manual price adjustments.
- Bank Integration: Integrating with Plaid to auto-sync cash balances and listed brokerage accounts, making the onboarding process even faster for US users.
- Tax Optimization Engine: Using Gemini 3.0 to analyze the portfolio for tax-loss harvesting opportunities across both crypto and equity holdings.
Log in or sign up for Devpost to join the conversation.