Transaction Roulette — Project Story The Idea We've all been there. Someone in the group chat asks "who still owes me money?" and suddenly everyone goes quiet. Or you're out for dinner and the conversation dies because nobody wants to be the one who brings up splitting the bill. But here's the thing — your bank already knows everything. It knows who ordered Uber Eats at 2am three nights in a row. It knows who sent €500 to a crypto exchange at 3am. It knows who visited the same supermarket four times in one week and somehow still had nothing to eat. That data just sits there. Private. Boring. Completely wasted. We wanted to change that.

What We Built Transaction Roulette is a social betting game built inside a bunq group chat. Hit the roulette button, set a bet, and your friends join straight from the conversation. Then Claude AI gets to work — analyzing everyone's real transaction patterns and turning them into six funny, dry clues. Each round reveals a clue like: "Someone visited the same fast food restaurant eleven times this month. Their kitchen is purely decorative at this point." Everyone has 10 seconds to guess who it belongs to. Guess faster, earn more points. Guess wrong, lose money. After six rounds the winner takes the entire pot — transferred automatically via the bunq API. Real data. Real money. Real consequences.

How We Built It We built a FastAPI backend that pulls transaction data from the bunq Sandbox API and pre-aggregates it into behavioral patterns before sending it to Claude — visit frequency, late night purchases, repeated merchants, unusually large amounts. This gives Claude enough context to generate clues that feel genuinely observational rather than generic. Clue generation happens in the background from the moment the lobby loads, so there's no waiting when the game starts. While round 1 is playing, round 2's clue is already being generated. The frontend is a React mobile app with a group chat UI, a live lobby, a 10-second countdown timer per round, speed-based scoring, and a results screen where the winner is announced and the bunq payment is triggered automatically.

The Hard Parts Getting the clues right was harder than we expected. Early versions were corny, emoji-heavy, and felt obviously AI-generated. We rewrote the entire prompt pipeline to aggregate patterns across multiple transactions rather than describing individual purchases — and enforced strict tone rules. No emojis. No puns. Always dry. Always starting with "Who..." or "Someone...". The difference was night and day. Making the game feel live with simulated players was another challenge. We built background simulation so other players' guesses trickle in with realistic delays, and made sure the timer always runs to zero regardless of whether you've already answered — because the round doesn't end when one person guesses.

What We're Proud Of The moment someone reads a clue and immediately says "wait, is that me?" — that's the whole product right there. We built something that makes banking data feel human and funny, with real financial stakes baked natively into a banking app. It's not a fintech tool pretending to be fun. It's actually fun, and it happens to move real money.

What's Next

True multiplayer via WebSockets so friends on different phones play simultaneously More clue types: week-over-week spending trends, category breakdowns, streak detection Investment data integration for crypto-related clues Persistent leaderboards across multiple sessions

Built With

Share this project:

Updates