☆ Inspiration:
Our project was sparked by the Pearl Hacks 2026 theme, "Brewing with Pearl Hacks." We loved the comfy, adorable aesthetic of the theme and wanted to translate that visual charm into a tool that solves a real-world problem. As college students, we know firsthand how intimidating money management can be. We decided to create an app that makes managing personal finances feel less like a chore and more like a fun simulation.
☆ What it does:
My Bankery is an AI-powered financial literacy game that teaches real personal finance concepts through immersive narrative gameplay. Players step into the role of a financial advisor for Eclair, an adorably overwhelmed panda bakery owner, and manage her actual bank accounts in real time. Rather than simulating money with fake numbers, Bankery is backed by the Capital One Nessie API, meaning every deposit, loan repayment, fund transfer, and purchase is a live banking transaction hitting real account infrastructure. Each week, players navigate recurring expenses like rent, wages, and utilities while making strategic decisions about debt management, savings growth, and inventory investment. Three narrative crisis events challenge players with authentic financial dilemmas. an unexpected repair bill, a sudden windfall, and a regulatory fine, each mapped to real financial concepts like credit risk, high-yield savings, and opportunity cost. A live investments screen displays real-time stock prices for SPY, AAPL, MSFT, NVDA, and AMZN via live market data. When the week ends, Eclair's AI advisor, powered by Google Gemini, analyzes the player's actual balance sheet and delivers brutally honest, in-character feedback on every financial move made, making complex concepts feel personal and immediate.
☆ How we built it:
My Bankery was built using Swift and SwiftUI on the frontend with a Python backend, following a clean MVVM architecture for modular, state-driven UI across the entire app.
Backend: Written in Python using FastAPI, exposing a full REST API for game lifecycle, player actions, AI reflection, and live market data. An in-memory balance cache layer solves Nessie's transaction staleness problem, ensuring balance reads are always authoritative after every write. Deployed locally with a Cloudflare Tunnel, generating a public HTTPS endpoint that bypasses network restrictions.
Capital One Nessie Integration: Every financial action in the game, deposits, withdrawals, transfers, purchases, bills, and loans, is a real Nessie API call. Players create a live customer with four real accounts (Checking, Savings, Investment) and the full transaction ledger is queryable at any point.
Google Gemini AI: After each week, Eclair's "Ask Eclair" feature sends the player's live action log and balance sheet to Gemini 2.5 Flash with thinking disabled for low latency, returning a 2-3 sentence in-character financial critique. The system prompt enforces Eclair's personality and baking metaphor vocabulary regardless of what the player did.
Live Market Data: The investments screen pulls real-time prices and daily percent change for five major tickers using yfinance fast_info, giving players exposure to actual market conditions within the game context.
SwiftUI Frontend: Built with @Observable and @Environment for reactive state sharing across screens. Features a custom typewriter dialogue engine, animated scroll indicator, a full transaction ledger view, loan management, fund transfer, and an investment screen with live ticker cards, all rendered on a hand-drawn bakery scene.
ElevenLabs: To bring our mascot Eclair to life, we used ElevenLabs' text-to-speech AI to craft a custom voice, where we sped and pitched up the audio recording to give off an "Animalese" effect voice style, giving our financial advice an adorable, Nintendo-inspired personality.
☆ Challenges we ran into:
Initially, we attempted to integrate the backend using FastAPI, but we eventually transitioned to a Cloudflare-based solution that better suited our architecture. We also explored the Capital One Nessie API; however, we found it didn't quite align with our project’s specific requirements. This led us to develop several custom workarounds to ensure the final product matched our original vision
☆ Accomplishments that we're proud of:
We are proud of the fact that we made a fully functional app! The experience from start to end was a collaborative effort where, despite different experiences and technical skills, we were all able to help on the project one way or another.
☆ What we learned:
We learned about the importance of being flexible and navigating around roadblocks. Sometimes, some aspects of the code or design don't go the way they should, so we had to find other ways to implement ideas to ensure our original vision stayed intact. We additionally learned about how important code structuring and organization is in the beginning of the project to make sure that in case things start getting harder later in the day, we have organized code to refer back to.
ʕ •̀ ω •́ ʔʕ •̀ ω •́ ʔʕ •̀ ω •́ ʔ
Built With
- cloudflare
- fastapi
- python
- swift
Log in or sign up for Devpost to join the conversation.