Inspiration

Long-term investors often manage portfolios across broker statements, spreadsheets, and disconnected price alerts. Seeing a balance is easy; understanding what actually deserves attention is harder.

We built Folio to answer that question clearly. It brings together transaction history, price alerts, holdings, and allocation drift so investors can see whether a specific price target, a portfolio imbalance, or incomplete market data needs attention.

What it does

Folio is a private portfolio monitoring workspace. It does not connect to a broker or place trades.

Users can sign in with Google, record executed buys and sells, review transaction history, track holdings and returns, create price alerts, and configure allocation targets.

The Portfolio Signals experience combines two distinct types of monitoring:

  • Price alerts for individual symbols.
  • Allocation monitoring for portfolio-level target ranges and rebalancing drift.

When allocation monitoring requires attention, Folio can generate a rebalancing notification email. The backend calculates deterministic whole-share candidate plans, and GPT-5.6 selects and explains one of those existing candidates. The model cannot create prices, quantities, symbols, or trades.

How we built it

The frontend is built with Vue 3, Vite, Highcharts, and an accessible Apple-inspired design system. Firebase Authentication manages Google sign-in, and the client attaches Firebase ID Tokens to API requests.

The backend uses FastAPI and MongoDB. Every portfolio, alert, transaction, and allocation policy is isolated to the authenticated Firebase user.

For deployment and background work, Folio uses AWS Lambda, API Gateway, EventBridge Scheduler, SQS dead-letter queues, AWS Secrets Manager, Resend, GitHub Actions, and Netlify. Yahoo Finance provides market quotes.

For AI-assisted rebalancing emails, Folio uses the OpenAI Responses API with GPT-5.6. We use strict structured output and send only a minimized packet of backend-calculated candidate plans. Responses are requested with storage disabled, and if AI enrichment fails, Folio still sends the deterministic notification.

We used Codex with GPT-5.6 throughout development to shape API contracts, implement frontend and backend workflows, improve accessibility, debug authentication and deployment issues, and refine tests.

Challenges we ran into

Financial software must communicate uncertainty honestly. Missing quotes cannot be treated as zero, transaction requests must be idempotent, and invalid sells must be prevented.

We also needed to combine price alerts and allocation monitoring without merging their financial meaning. A price alert is about one symbol crossing a target; rebalancing is about the relationship between the whole portfolio and a target allocation.

The AI feature created another challenge: we wanted useful explanations without allowing a model to become an opaque financial decision-maker. We solved this by calculating all financial facts and candidate plans deterministically, then constraining GPT-5.6 to select and explain only those existing plans.

Accomplishments that we're proud of

  • Built a complete authenticated portfolio workflow from transaction recording to holdings, signals, and history.
  • Added user-scoped Firebase authentication and MongoDB data isolation.
  • Created auditable transaction editing and voiding rather than destructive deletion.
  • Built explainable allocation analysis that clearly handles incomplete prices and unconfigured holdings.
  • Designed a Portfolio Signals interface that unifies attention-worthy information without confusing price alerts and allocation drift.
  • Added reliable asynchronous notification handling with an outbox pattern, idempotency keys, retry behavior, and dead-letter queues.
  • Integrated GPT-5.6 safely through structured output and deterministic guardrails.
  • Created an accessible, responsive interface with keyboard support, live status updates, visible focus states, and reduced-motion support.

What we learned

We learned that a useful financial dashboard is not just a charting problem. It requires trustworthy state handling, clear explanations of uncertainty, and a careful separation between monitoring, recommendation, and execution.

We also learned how to connect a modern Vue frontend, Firebase authentication, FastAPI, MongoDB, serverless workers, email delivery, and GPT-5.6 into one secure workflow.

Most importantly, we learned that AI is most useful in financial products when it explains constrained, verifiable information rather than inventing financial facts or making autonomous decisions.

What's next for Folio, AI Portfolio Signals

Next, we plan to:

  • Add an in-app view of AI-assisted rebalancing explanations, alongside email delivery.
  • Support more asset classes, broker imports, and additional market-data providers.
  • Add historical portfolio performance and tax-aware reporting.
  • Let users compare multiple allocation scenarios before acting.
  • Add notification preferences for different signal types and delivery channels.
  • Improve onboarding with guided portfolio setup and clearer first-time education.
  • Expand the AI layer with user-controlled explanation depth while preserving deterministic calculations and privacy boundaries.

Built With

Share this project:

Updates