🥗 What is Bunq Bite Balance?
Your bank knows your revealed self better than you do. We make it visible — starting with what you eat.
Every Dutch adult shops for groceries multiple times a week. But a card transaction only ever tells you "Albert Heijn — €64.30." It cannot tell you whether that was salad or chips. We fix that.
Scan your grocery receipt. Our multimodal AI pipeline — built on Claude Vision — extracts every line item and classifies it against the Schijf van Vijf, the Dutch national dietary framework. You instantly see what share of your basket is weekkeuze (discretionary), and what that spend compounds to if redirected into a bunq investment instead.
At €25/month in avoidable food spend, at 5% real return over 10 years: €3,960 sitting on the table.
From there, users commit to a monthly savings challenge — locking a small stake and tracking progress receipt by receipt — then route their "found savings" into a bunq investment with one tap. The loop: awareness → commitment → investment → compounding.
💡 What Inspired Us
One teammate realised they had no idea how much of their grocery spend was going to things they didn't need — energy drinks, chips, frozen pizza. They wanted to invest more but felt like there was never anything left. When we mapped the actual numbers, the whole team recognised the same pattern. The problem wasn't laziness — it was invisible spending.
No banking product had ever connected item-level dietary data to personal financial goals inside the same interface. The gap was real, the data was there, and bunq — with its investment products, savings pots, and transaction webhooks — was the right platform to close it.
🏗️ How We Built It
We approached this as a product team, not just a hackathon team.
Phase 1 — Business case Before writing code, we built a full business case: target persona, problem-solution fit, competitive landscape, and business model. We scored two parallel ideas against the hackathon criteria and selected this one. All statistics were verified against primary Dutch sources (CBS, RIVM, Voedingscentrum).
Phase 2 — Engineering spec We translated the business case into a structured spec — features, API connections, tool safety tiers, and execution framework — before any code was written. Developers had a clear contract to build against. Full architecture documented in Technical Architecture — System Workflow.
Phase 3 — Build The core pipeline runs two sequential Claude API calls:
- Claude Vision → receipt image → structured line-item JSON
- Claude Text (classifier) → item list → Schijf van Vijf classification per item
The financial projection layer calculates compound returns and connects discretionary spend to the user's active bunq savings goal. The savings challenge uses bunq's savings pot endpoint to lock a commitment stake, tracked through transaction webhooks. The agent uses a human-in-the-loop gate — money never moves without a user confirmation tap.
UI built in Streamlit with Plotly charts — weekly trend lines, category breakdowns, investment sparklines, and a colour-coded challenge progress bar.
📚 What We Learned
Technical: bunq API integration works best as the starting point of your architecture, not something retrofitted after building the AI pipeline. Starting with the API contract made the second pass significantly smoother.
Product: Scope discipline is everything. We started broad and systematically narrowed to a single demonstrable loop. Every feature that didn't serve the 2-minute demo got cut or mocked deliberately. That constraint made the product stronger.
Team: We were all new to each other. Aligning early — using Notion for shared context, a structured kick-off to distribute work by skill, and daily syncs — cost time upfront but paid off in the second half.
⚙️ Challenges We Faced
Environment setup — Aligning API keys and Claude credits across the team cost more time than expected. We got there with organiser support and documented every setup step for the team.
Receipt parsing edge cases — Dutch grocery receipts use heavily abbreviated names (CC ZERO 1.5L, CHPSPPR 185G). Calibrating the classifier prompt for consistent three-tier Schijf output across a wide range of Dutch products required significant iteration.
Mock vs. build decisions — The bunq vault lock is deliberately mocked in the demo. We knew the API path (POST /user/{uid}/monetary-account-savings); we chose not to risk sandbox edge cases in 24 hours.
🔭 What's Next
- Kies Ik Gezond? API — replace the LLM classifier with Voedingscentrum's official 150k+ product database for production accuracy
- Retailer partnerships — loyalty rewards at scan time, funded by Albert Heijn / Jumbo gaining anonymised cross-store basket intelligence
- Health insurer integration — Dutch zorgverzekeraars offer premium discounts for verified healthy behaviour; 3 months of Schijf-compliant spending is a measurable, auditable signal
- EU localisation — swap the classifier prompt per country (Germany: DGE; France: PNNS). Same architecture, 10× market.
- Platform vision — groceries are the wedge. The roadmap covers every discretionary category: food delivery, subscriptions, impulse purchases — all mapped against your stated goals. bunq, with full transaction visibility, is uniquely positioned to build the first personal coherence model in European banking.
Built With
- cryptography-(rsa-signing)
- for-voice-input)-testing:-pytest
- httpx
- javascript-backend:-fastapi
- languages:-python-3.12
- lucide-icons-database:-sqlite-apis-/-cloud-services:-anthropic-claude-api-(sonnet-4.6)-?-vision
- off-by-default)-web-speech-api-(browser-native
- payments
- pip
- pydantic
- pytest-asyncio-packaging:-npm
- react-router
- requests-open-food-facts-api-(optional
- sqlmodel
- tailwind-css
- tanstack-query
- tool-use-agent-loop-bunq-sandbox-api-?-auth-handshake
- typescript
- uvicorn-frontend:-react-18
- vite
- voice-intake
Log in or sign up for Devpost to join the conversation.