Inspiration

The average Canadian owes $1.85 for every dollar they earn, the highest household debt to income ratio in the G7, and yet every banking app shows you a list of transactions with no context and no understanding of why. We kept asking what it would look like if someone could actually see their financial life as a system. That question became Finco.

What it does

Finco maps your entire financial life as a living interactive node graph where every income source, debt, savings account, and expense is a node and every money flow is a visible edge between them. Three AI agents watch your ecosystem around the clock. The Sentinel monitors your financial health and fires plain language alerts when something needs attention. The Simulator lets you run what-if scenarios and watch the ripple effects spread across your entire graph in real time. The Planner takes your goals and reverse-engineers the exact monthly changes needed to get you there. Users can also upload a bank CSV and have their entire ecosystem populated automatically in under 10 seconds.

How we built it

We built Finco in 36 hours on Next.js, React, and TypeScript with Three.js and React Flow powering the force-directed graph, D3 driving the physics simulation, Framer Motion handling animations, and Recharts powering the dashboard. Zustand manages all graph state as a single source of truth, Supabase handles persistence, and Auth0 handles authentication. The three AI agents are powered by the Gemini API, each with a distinct system prompt and a distinct role. The Sentinel uses a deterministic JavaScript rules engine to detect problems first and only calls the AI to write the plain language explanation.

Challenges we ran into

The hardest technical challenge was state synchronization. With a live graph, three AI agents, a real time dashboard, and a simulation engine all reading and writing financial data simultaneously we hit React's maximum update depth error repeatedly. The fix was architectural. A single Zustand store as the source of truth with useShallow selectors and stable primitive keys in every useEffect dependency array. The second challenge was making the AI agents trustworthy rather than just impressive. Early versions of the Sentinel hallucinated alerts for problems that did not exist. Separating the deterministic rules engine from the generative layer eliminated that entirely.

Accomplishments that we're proud of

We are proud of the Simulator. Watching a graph ripple in real time as you drag a salary slider down, seeing nodes turn red, the dashboard update live, and the Sentinel fire an alert all simultaneously is the moment the product clicks for people. We are also proud of the architectural decision to keep deterministic logic completely separate from the AI layer. It made the agents feel reliable in a way that most AI products do not.

What we learned

We learned that the hardest part of building a financial product is not the technology, it is trust. Every agent response, every alert, every number had to be grounded in the user's actual data or it was worthless. We also learned a lot about graph theory in practice. Force-directed simulations, topological sort for ripple propagation, and collision detection at scale are things that look simple on paper and get very interesting at 3am.

What's next for Finco

Live bank account integration so the ecosystem updates automatically without CSV uploads. A mobile app so users can check their financial health on the go. And expanding the Planner agent into a full goal-based roadmap that shows your current trajectory versus your goal trajectory as two separate paths on a visual timeline, with the exact node changes needed to close the gap.

Built With

Share this project:

Updates