Demo Account Credentials Email: alex@verafunddemo.com Password: demo123

This drops you into a fully seeded dashboard with 90 days of transaction history, multiple bank accounts, active subscriptions.

What inspired you: We watched people lose hundreds of dollars a year to forgotten subscriptions, silent price hikes, and hostile cancellation flows and realized every existing tool (Mint, Rocket Money) only tells you after the money is gone. No product gave users pre-authorization control over their payment rails, AI advice grounded in their real financial data, and a unified dashboard all in one interface. We set out to build the first Personal Finance OS that closes all three gaps.

What we learned: We learned how to architect a real-time financial context pipeline every AI response in VeraFund is injected with the user's actual checking balance, discretionary budget, upcoming bills, and savings goals before Gemini generates a single token. We learned that multimodal AI (Gemini 1.5 Flash Vision) can extract product names and prices from photos in under 3 seconds and feed that into a financial decision engine. We also learned the power of MongoDB's flexible document model for financial data storing deeply nested structures like transaction histories, subscription price histories, and AI conversation threads without fighting a rigid schema.

How we built it: The frontend is a Next.js 15 + React 19 app with Tailwind CSS v4, Recharts for financial visualizations, and Motion for scroll-triggered animations. The backend is a FastAPI (Python) async API server with MongoDB (Motor driver) as the primary datastore. Every AI interaction text chat, purchase analysis, receipt scanning, voice calls flows through a financial context builder that queries 6+ MongoDB collections in parallel to construct a real-time financial snapshot, which is then injected into Gemini 1.5 Flash prompts. Virtual cards are managed through Stripe Issuing's sandbox API with a mock fallback for development. Voice interactions with Vera use ElevenLabs Conversational AI for natural-sounding, context-aware phone calls. The entire system is deployed on Vercel (frontend) and Railway (backend).

Challenges we faced: The hardest engineering challenge was building the financial context injection pipeline — ensuring every Gemini call receives a coherent, up-to-date financial snapshot assembled from transactions, accounts, subscriptions, goals, and conversation history without introducing latency. We also battled Gemini's tendency to return markdown-wrapped JSON instead of raw JSON from vision calls, which required robust extraction and retry logic. CORS configuration between Vercel and Railway in production with dynamic preview URLs was another fight. And wiring up the full card lifecycle (create → pause → update limit → destroy) through Stripe's Issuing API while maintaining local MongoDB state consistency across async operations required careful orchestration.

Built With

Share this project:

Updates