Try it: https://tip-the-room.pages.dev (no sign-up, PayPal sandbox play money)

Inspiration

Small shows die on risk: someone fronts the room fee and nobody knows if 15 or 50 people will come. Side Door, which had been behind about 3,300 shows connecting touring artists with DIY venues since 2017, closed at the end of 2025 (Exclaim!, Nov 4, 2025). In a 2024 survey of 1,700 artists, 72% said they were making no profit from their tours (Pirate). "Only happens if enough people commit" already works for film screenings: on Gathr, an event that misses its threshold by the deadline is cancelled at no cost to the host (Gathr). We wanted that for gigs, with an agent that settles the money itself.

What it does

Fans hold a spot with a PayPal hold, not a charge. The artist signs the money rules once: the fan target, the deadline and the payout split. An agent watches the show: it proposes fixes when pledging is behind (the artist approves), charges every hold the moment the target is reached, and at the deadline pays the room, the opener and the artist in one PayPal payout batch. If the target is missed, it cancels every hold and nobody pays. Every step shows in an agent log that names the signed rule that allowed it, and in a settlement ledger with real PayPal sandbox ids.

How we built it

  • PayPal (sandbox): JS SDK v6 + Orders v2 (intent: AUTHORIZE), Payments v2 authorizations (capture, void, get), refunds, Payouts v1 and Webhooks with signature verification, through a small idempotent REST client.
  • Cloudflare Workers AI (Llama 3.3 70B fp8-fast, JSON mode) turns the artist's sentence into a draft, explains pace and proposes options, and writes settlement notes. Code computes every number and checks every amount in a draft against the sentence; a built-in template takes over when a check fails or the daily AI budget runs out. A plain-code guard checks every money action against the signed, hashed mandate.
  • Cloudflare Workers and SQLite Durable Objects (one per show, alarms for the deadline and pace checks), Cloudflare Pages, AG Grid Community for the ledger, three.js and GSAP for the marquee.
  • We evaluated the PayPal Agent Toolkit; its OAuth step doesn't run on Workers, so the agent's tools wrap our REST client with the same guard.

Challenges we ran into

Hold timing shaped the whole design. PayPal holds are valid for 29 days, but PayPal only guarantees the funds for the first 3, and we charge when a show tips, which can be after day 3. A late capture can fail; we record it as a failed charge and do not rely on reauthorizing. The 21-day campaign cap is our own choice, to stay well inside the 29 days. Every money call also had to survive lost answers and retries without double-charging or double-paying, so each one is idempotent and reconciled with PayPal before any retry.

Accomplishments that we're proud of

The model proposes, the mandate decides: the AI can explain and suggest, but it can never move money outside the rules the artist signed, and the show still settles when the AI budget runs out.

What we learned

Simulated fans can be real sandbox holds (server-side card authorizations), so the demo never fakes a PayPal id.

What's next

Onboard real artists through PayPal's multiparty platform so money goes straight to each payee, and add opener and venue profiles.

Known limits

Sandbox only, play money. Reauthorizing a hold is unverified: real fans' holds are not renewed (a show is charged when it tips, within a 21-day cap). The PayPal Agent Toolkit was a NO-GO on Workers, so we use REST. Each visitor can open 25 demo copies a day.

Built With

  • ag-grid
  • cloudflare-durable-objects
  • cloudflare-pages
  • cloudflare-workers
  • cloudflare-workers-ai
  • gsap
  • llama-3.3
  • paypal
  • paypal-js-sdk
  • paypal-orders-api
  • paypal-payments-api
  • paypal-payouts
  • paypal-webhooks
  • playwright
  • sqlite
  • three.js
  • typescript
  • vite
  • vitest
Share this project:

Updates

Submission history