Inspiration

In every group there's one person who books the bus, buys the tickets and fronts the money, then spends weeks chasing friends on WhatsApp. Bote is Spanish for the shared kitty. We wanted that kitty to manage itself.

What it does

You describe the plan in plain language: "We're 6 going to the derby: tickets 45 € each, the bus is 300 € for Autocares Triana, and Juan already paid 60 € for snacks." Bote, an AI agent:

  • Understands who's in, what each thing costs, who it's for and who already paid, and keeps an exact ledger.
  • Collects with PayPal: every member gets a PayPal invoice and a personal one-tap PayPal checkout link. It tracks who has paid and sends friendly reminders.
  • Pays the vendor from the pot with PayPal Payouts.
  • Settles up when plans change: it refunds dropouts on their original PayPal payment and reimburses people who fronted costs.

Every money action shows up as an approval card with exact amounts. The AI proposes; the organizer approves.

How we built it

  • AI agent with 11 tools: ledger tools (members, expenses) and PayPal tools (request payments, check payments, remind, pay vendor, settle up). It runs on Google Gemini with a model fallback chain, and also supports Anthropic Claude.
  • PayPal Developer Platform (sandbox): OAuth 2.0, Orders v2 + the JavaScript SDK buttons for pay links, Invoicing v2 (create, send, status, remind, cancel), Payments v2 capture refunds, and Payouts v1 for vendors and reimbursements.
  • A deterministic ledger in integer cents: the model decides what the plan is, and the code computes how much. Each share is \( \lfloor total / n \rfloor \) cents, and the remainder is spread one cent at a time, so the shares always add up exactly.
  • Event-driven agent: payments and approvals are fed back to it as events, so it reacts in the chat ("Pedro just paid, 2 to go").
  • Node.js with no framework, server-sent events for the live pot, a mobile-first pay page, an end-to-end test, and deployment on Render.

Challenges we ran into

  • Keeping an LLM honest with money: we moved all arithmetic into code and made every money movement approval-gated.
  • Choosing the right PayPal primitive for each step: Orders for one-tap pay-ins, Invoicing for formal requests and reminders, capture refunds for dropouts, and Payouts for vendors.
  • Plans that change mid-way, such as a dropout after paying, without breaking the balances.

Accomplishments that we're proud of

The full money loop (collect → pay the vendor → refund the rest) runs end to end on the PayPal sandbox from a single sentence, with a human approving every step.

What we learned

The best agent UX in payments is "AI drafts, human approves". Splitting language understanding (AI) from money maths (code) makes the system both smart and trustworthy.

What's next

  • WhatsApp and Telegram integration so Bote lives inside the group chat
  • Recurring club dues with PayPal Subscriptions
  • Multi-currency trips
  • PayPal webhooks instead of polling

Built With

Share this project:

Updates

Submission history