Boardroom

"Your sub-accounts have opinions. Let them speak."

Boardroom turns your bunq sub-accounts into a living board of directors. Five AI personalities — each with a distinct financial philosophy — debate how to split your salary, vote on a plan, and schedule your week's spending. You're the CEO: you hear the arguments, pick a plan, and approve payments. The agents do the rest.

Built for the bunq × Multi-Agent Hackathon.


The Idea

Most budgeting apps ask you to make more decisions. Boardroom flips this.

Insight A — People are better at refereeing a debate than arguing with themselves. Externalizing "future you" as five distinct agents (the saver, the accountant, the hedonist, the dreamer, the auditor) makes financial trade-offs concrete and even entertaining. You're not fighting your own impulses — you're listening to a boardroom argument and casting a deciding vote.

Insight B — Opt-out is cognitively lighter than opt-in. The weekly calendar arrives pre-approved. Every spending slot is already filled with the agent's best pick. You swipe away what you don't want. The rest happens automatically.


Meet the Board

Name Sub-account Philosophy
🪙 Vera the Saver Savings Build the emergency fund first. Always.
📊 Victor the Accountant Bills Fixed costs on time. Zero late fees. Ever.
🌙 Luna the Hedonist Fun Make room for joy. Life is too short.
✈️ Milo the Dreamer Travel Invest in experiences. Book early, save more.
📋 Theo the Auditor Tax/Buffer Flag unusual spend. Keep a 15 % buffer.

Each Ugent (User + Agent) has its own Claude system prompt, personality mandate, and autonomy cap. Small recurring payments (e.g. a yoga class) can be approved automatically; large allocations require the CEO's sign-off.


How It Works

Step 1 — Onboarding

A voice-based conversation reads your last 90 days of transactions, identifies spending patterns, and asks about your goals. Five sub-accounts are created in bunq Sandbox and each Ugent is initialized with a tailored mandate.

Step 2 — Monthly Board Meeting

When your salary arrives, the board convenes:

  1. Propose — each Ugent independently pitches a budget allocation
  2. Debate — two rounds of cross-examination (Luna and Vera rarely agree)
  3. Vote — agents cast weighted votes across three plans: 🛡 Conservative / ⚖️ Balanced / 🚀 Brave
  4. Approve — you pick a plan, the Executor calls bunq's payment API, and the money moves

Step 3 — Weekly Calendar

Every Sunday the board generates a full week of spending slots — one best-pick merchant per category, pre-approved. You scroll through, deselect anything you don't want, and let the rest execute on schedule. Tap any event to see three agent-recommended alternatives with their reasoning.


Multi-Agent Architecture

                     User (CEO)
                         │
                   Chair / Orchestrator
                         │
       ┌────────┬────────┼────────┬────────┐
       ▼        ▼        ▼        ▼        ▼
     Vera    Victor    Luna     Milo     Theo
   (Savings)(Bills)  (Fun)  (Travel)  (Tax)
       └────────┴────────┴────────┴────────┘
                         │
                     Executor
                (enforces autonomy caps)
                         │
                 bunq Sandbox API
Agent Role LLM calls
Chair Orchestrates meetings, writes minutes, generates 3 plans, hosts voice onboarding Multiple
Ugents × 5 Independent personas — propose, debate, vote, generate calendar events Per agent
Historian Reads bunq transactions, categorises spend, builds user profile Once (onboarding)
Executor Translates board decisions into bunq API calls, enforces caps None (no LLM)

Tech Stack

Frontend

  • Next.js 14 (App Router) + React 18
  • TypeScript + Tailwind CSS
  • Mobile-first layout (iPhone 14 Pro width, complete with notch and home indicator)

Backend

  • FastAPI (Python, async)
  • Anthropic Claude API — each Ugent runs a separate system prompt
  • bunq Sandbox API — real sub-account creation and transfers

Key integrations

  • POST /monetary-account-bank × 5 — creates sub-accounts on onboarding
  • POST /payment — monthly inter-account allocation and merchant payments
  • Webhook handler — detects salary deposits to trigger board meetings

Getting Started

Prerequisites: Node 18+, Python 3.11+, a bunq Sandbox API key, an Anthropic API key.

# Backend
cd backend
pip install -r requirements.txt
cp .env.example .env          # add ANTHROPIC_API_KEY and BUNQ_API_KEY
uvicorn main:app --reload     # http://localhost:8000

# Frontend (separate terminal)
cd frontend
npm install
npm run dev                   # http://localhost:3000

The frontend runs fully on mock data out of the box — no API keys required for the demo flow.


Demo Flow (3 min)

Time What happens
0:00–0:15 Home screen — meet the five board members
0:15–0:35 Voice onboarding replay — "they read 90 days of transactions, then interviewed me"
0:35–1:30 Salary arrives → board convenes → debate plays out with five distinct voices
1:30–1:50 Three plans displayed → user picks Balanced → one tap → bunq sub-account balances change live
1:50–2:30 Open weekly calendar — Luna booked Friday dinner, Milo scheduled Wednesday yoga
2:30–2:45 Swipe away two events; tap yoga to see cheaper alternatives with agent quotes
2:45–3:00 Simulate Wednesday 19:00 → push notification → approve → real bunq payment confirmed

Project Structure

boardroom/
├── frontend/          # Next.js mobile UI
│   ├── app/           # App Router pages
│   ├── components/    # HomeView, MeetingView, CalendarView, VoiceOrb, …
│   └── lib/           # Mock data, categories, type definitions
└── backend/           # FastAPI service
    ├── main.py        # Routes and in-memory state
    ├── models.py      # Pydantic schemas (Ugent, BoardMeeting, CalendarEvent, …)
    ├── bunq_client.py # bunq Sandbox wrapper with mock fallback
    ├── merchants.py   # Pre-seeded Amsterdam merchants
    └── agents/        # ugents.py, chair.py, executor.py, historian.py

What's Real vs. Demo

Feature Status
bunq sub-account creation Real API call (Sandbox)
Monthly inter-account transfers Real API call (Sandbox)
Merchant payment (yoga demo) Real API call (Sandbox)
Agent debate & proposals Claude API (falls back to hardcoded demo)
Voice onboarding Simulated (orb UI, mock transcript)
Calendar & alternatives Mock data, Amsterdam merchants

bunq × Multi-Agent Hackathon · April 2026

Built With

Share this project:

Updates