BunqBuddy Inspiration A lot of people struggle with saving. You set the goal, promise yourself this month is different, and then Friday comes and the goal sits there untouched. Banking apps watch us miss our targets month after month. They give us the goal, the progress bar, the notification, but none of them do the one thing that actually works: hold us accountable like a friend would. That's where bunq Buddy started: a Buddy who actually cares whether you hit your goals, reminds you when you're spending too much, celebrates when you win, and is chill with you, never preachy, just honest. A friend who happens to live in your bank account.

What it does bunq Buddy is a multimodal AI companion that lives inside the bunq app. Not a chatbot, but a character with memory, mood, voice, and the power to take real action on real bunq accounts. Buddy hears your goals through voice, remembers what you promised last week, acts by moving real money between real bunq accounts, and feels proud when you win, annoyed when you slip, sad when you forget him. He has four emotional states: happy when you hit a milestone (confetti, dancing), proud when you hold a streak (chest forward, gold badge), annoyed after an impulse purchase he warned you about (arms crossed, side-eye), and neglected when you haven't opened the app in days (desaturated, tilted ear, a quiet "ik dacht dat je me vergeten was"). Every core action is a real bunq API call: each savings goal is a real sub-account via monetary-account-savings, each transfer is a real payment, each top-up is a real RequestInquiry. When Buddy says "Done, €200 moved to your Bali fund," it actually moved.

Why this is also a win for bunq Buddy creates real awareness around spending and saving in a way charts and notifications never will, and shows that bunq genuinely cares about its customers, a statement that builds loyalty and pulls in new users who switch banks for the feeling of being on their side. The Buddy Store opens a clean three-way win: customers earn Buddy Points by hitting goals and redeem them for real discount codes from real partners, partners get high-intent customers, and bunq earns commission on every conversion, a reward that feels like a gift, not a sales pitch. And one Buddy beats ten channels: instead of fragmented notifications, emails, push messages, and support chats, customers get one place, one face, one conversation. They can talk instead of tap, ask questions, give instructions, or just check in. Lower threshold for less digital users, faster flow for power users, and the kind of product people show their friends, free marketing no competitor can copy without bunq's nerve.

How we built it Frontend is Next.js 15 + TypeScript + Tailwind, with the whole UI inside an iPhone-style mockup so the demo feels like a real banking app. The character is hand-built in SVG with mood states driven by props, animated via CSS keyframes for small life signals (breathing, blinking, waving) and Framer Motion for bigger transitions. The brain is Claude Sonnet 4.5 with tool use. Every Buddy is unique because the system prompt is generated at onboarding from the user's answers, and Claude calls tools like transfer_to_goal and topup that trigger real bunq API actions. ElevenLabs TTS gives Buddy his own voice with mouth animation in sync, and voice input uses the Web Speech API. We wrote a hand-rolled TypeScript client for the full bunq REST API: real RSA-signed requests, real session handling, no third-party SDK, served through Next.js API routes. State lives in Zustand with localStorage persistence: no database, no auth, no backend complexity. Deployed on Vercel as one push, one URL.

Challenges bunq's three-step RSA handshake (installation, device-server, session-server) is non-trivial to implement from scratch, so we wrote a thin client with real RSA signing and session caching. Voice latency felt sluggish with sequential calls, so we stream Claude's response token-by-token while audio loads in the background, and perceived latency dropped significantly. Keeping Buddy visually consistent across mood states meant building one SVG component with mood-driven props instead of four separate characters that drift apart. We respected bunq's rate limits (GET 3/3s, POST 5/3s, session-server 1/30s) by caching session tokens and debouncing transaction polls, and we cached ElevenLabs audio responses so repeated lines don't need a fresh API call mid-demo on hackathon Wi-Fi.

Accomplishments We built a character that actually feels alive: four emotional states that change posture, color saturation, animation rhythm, and the way Buddy speaks. The neglected state genuinely makes you feel something. We integrated with the real bunq API end to end, with nothing about Buddy's core money actions mocked. We hit true multimodal: voice for intent, text for confirmation, API calls for execution, each modality earning its place. And we shipped a clean, polished demo with no database, no auth layer, no managed backend, as four people in 24 hours, without descoping a single core feature.

What we learned Emotional retention beats feature-count: people don't open an app because it has more features, they open it because something pulls them back, and banks have spent a decade adding features and almost no time on the pull. Multimodal isn't a gimmick when each modality earns its place. A character with personality is a different product than a chatbot: same underlying AI, totally different feeling, because people don't bond with a chat window, they bond with someone who remembers them. And bunq's API is genuinely well-designed: once past authentication, every concept we needed mapped cleanly to a Buddy feature.

What's next A Buddy-to-buddy social layer where your friend's Buddy meets yours, comparing goals and settling small bets via real RequestInquiry. Family Buddies, a parent Buddy and a kid Buddy sharing a household goal with a face on it. Buddy with their own wallet: give him €5 a month and let him invest, donate, or surprise you, a character with skin in the game. AI-generated custom Buddies where you describe the Buddy you want and Claude draws it. Sponsor partnerships in the store turning Buddy Points into real money in your pocket. Vision: point your phone at something you're about to buy and Buddy reacts in the moment. And production-grade safety and ops: guardrails, rate-limit hardening, observability for every action, ready for real users at real scale. Every bank gives you goals. bunq gives you someone who cares if you hit them.

Built With

  • ai
  • anthropic-api
  • aws-bedrock
  • banking
  • bunq-api
  • claude-sonnet-4.5
  • css
  • css-keyframes
  • elevenlabs
  • fintech
  • framer-motion
  • html
  • javascript
  • localstorage
  • multimodal
  • nextjs
  • node.js
  • react
  • rest-api
  • rsa-encryption
  • serverless
  • svg
  • tailwindcss
  • tts
  • typescript
  • vercel
  • voice-ai
  • voice-recognition
  • web-speech-api
  • zustand
Share this project:

Updates