IMPORTANT: The YouTube demo link might be copyrighted, please view the attached Google Drive link for the full non-copyrighted version of the video. https://drive.google.com/file/d/1_6f50k4SrvvZhDvx576xluX9zwJh7_ji/view?usp=sharing
Inspiration
Instagram didn't make photos more convenient. It made them matter more. Venmo didn't make payments faster. It made them visible. Spotify Wrapped didn't give you new music. It gave you a mirror. Every product that has ever made people genuinely care about something they previously ignored did it the same way: it added a social layer to a solitary act. $nap applies that same logic to everyday banking. The problem is not that people don't have access to their financial data. They do. It sits in their banking app, updated in real time, perfectly accurate. The problem is that it doesn't engage back. It doesn't reflect. It doesn't have a voice. €9.40 at McDonald's is not a story, it's just a number, and we want the narrative.
Bunq already proved that banking doesn't have to feel cold. $nap takes the next step: making it feel alive. The moment your card taps, a five-minute window opens. Photograph the moment. Let AI give it a voice. Share it with your circle before the window closes. Miss it, and it's gone, just like the moment itself. That urgency is intentional. It is the whole design. Because people don't engage with their finances because their finances don't engage back. $nap fixes that.
What We Built
$nap is a real-time, AI-powered social layer built on the bunq Open Banking API. A Python FastAPI backend listens for payment webhooks and opens a five-minute snap window on each trigger. When a photo is submitted, it reverse-geocodes the location and sends the image to Claude for caption generation. A React frontend renders as a mobile interface: a live social feed, a Leaflet map of every snap worldwide, a countdown camera, and a streaming Weekly Wrap, broken into narrative overview, standout moments, and transaction breakdown. Claude is not a feature bolted onto the side. It is the product's voice — generating dry, witty captions that sound like a friend, not a receipt, and returning the Weekly Wrap as strict structured JSON, validated server-side before it ever reaches the client.
Technical Depth
The five-minute window looks simple. It is not. Keeping the countdown consistent between server state and client display, handling clock skew, timezone edge cases, and correct expiry at the boundary required more careful engineering than the concept suggests. Supabase Realtime absorbed the core of this complexity, providing synchronised client state without a bespoke WebSocket layer. The edge cases still had to be handled explicitly. Claude's output required active management under varied prompt conditions. A slightly malformed Weekly Wrap prompt would cause the model to wrap JSON in markdown fences, prepend conversational commentary, or abandon structure for prose entirely. A server-side fallback parser and output sanitisation layer were implemented as a hard boundary. The lesson generalises: AI output must always be validated at the system boundary, regardless of how reliable nominal performance appears to be. The social feed had a cold-start problem. Two transactions in a feed looks like a broken product, not a new one. A realistic mock data layer was built. Amsterdam transactions, Unsplash photography, deterministically generated friend interactions: so the demo always communicates what the product becomes, not just what it currently is.
What We Learned
Building $nap reframed how we think about product design at the intersection of AI and financial services. The technically interesting problem in fintech is rarely money movement itself, it is the human context that surrounds it, and how much of that context existing systems simply discard. On the engineering side, we developed a working understanding of Bunq's webhook architecture and the latency characteristics of real-time payment notification pipelines. We explored the boundary between descriptive and generative uses of multimodal AI specifically, how prompt design can shift Claude's output from factual image description toward contextually intelligent, tonally consistent creative text.
On the product side, the "Guess the Price" leaderboard demonstrated how fine the line is between a mechanic that feels like a game and one that feels like a chore. Three design iterations were required before the feedback loop felt genuinely rewarding. The difference was not the mechanic itself, it was the reward cadence and the quality of the AI-generated response at the moment of reveal. Getting that moment right made everything around it work. The broader lesson: social mechanics in financial products are not a novelty layer. When they are tuned correctly, they change the user's relationship with their own spending in ways that no dashboard or chart has managed to achieve.
Impact & Real-World Applicability
Financial disengagement is not a data problem. People have more access to their spending information than ever before. It is an engagement problem and engagement is not solved by adding more information. It is solved by making the experience feel connected to real life rather than abstracted from it. $nap creates a natural feedback loop that no spending tracker has managed to replicate. Users become more aware of what they spend because their friends are watching. They become more reflective because the Weekly Wrap tells them a story about their week, not a summary of their categories. They open the app not because they have to check a balance, but because something might have happened since they last looked. That is a fundamentally different relationship with a bank and it is one that Bunq, more than any other financial institution, is positioned to offer. $nap does not compete with what Bunq has built. It extends it. Every transaction becomes a moment of human connection rather than a line in a list. The judges evaluating this project have each, in their own work, wrestled with the same underlying question: how do you make people genuinely care about their financial lives? $nap is one answer. Not the only one, but a real one, built in 24 hours, running live, with actual Bunq data flowing through it.
What's Next
The social layer deepens first. Real-time push notifications will alert users the moment a contact snaps creating the ambient awareness that keeps a social product alive between sessions. Group spending challenges will introduce weekly competitive mechanics: who snapped the most honest purchase, the most extravagant one, the most inexplicable one. The leaderboard stops being about price guessing and starts being about personality. The Weekly Wrap becomes a shareable card a designed, exportable artefact that works as social content beyond the app, extending $nap's reach into the platforms where people already share their lives. And the Bunq production API replaces the sandbox. That is the only thing standing between $nap as a prototype and $nap as something people actually use on the way out of a restaurant, phone already in hand, window already open, five minutes already counting down.
Built With
- anthropic-claude-api
- bunq-api
- claude-vision
- fastapi
- framer-motion
- javascript
- node.js
- postgresql
- python
- react
- react-leaflet
- supabase
- supabase-realtime
- supabase-storage
- tailwind-css
- uvicorn
- vite

Log in or sign up for Devpost to join the conversation.