Inspiration
Small service businesses lose jobs twice: first when they can't answer a lead fast, then when the deposit never gets paid. Colby runs First Answer, a lead-response service for cleaners, detailers and contractors, and saw the same snags every week: no-shows, "can I move it?", surprise extras, split bills, chargebacks with no paper trail. Meanwhile AI assistants learned to buy products, but a local cleaner still can't be booked by one. We built the bridge.
What it does
When a customer's assistant goes looking for a cleaner, the businesses it can actually book get the job. First Answer Deposits makes any local service business bookable three ways, with PayPal holding the money:
- A customer texts or calls the business. The AI quotes from the real price list, offers real open times, books, and sends one PayPal link for the deposit (PayPal, Venmo, Pay Later or card, no account needed). The payment page has the AI on it, answering "is this refundable?" and "can I pay over time?" right next to the PayPal buttons.
- A customer's own AI assistant (Claude, ChatGPT or any MCP client) can do the same through the business's MCP endpoint. It checks availability, quotes and holds the time, then hands the human one PayPal approval. No agent ever pays on its own.
- Everything after follows rules the customer agreed to, in the same thread: moving the time (the deposit moves with it), extra work (needs a YES), the final bill with a tip, refunds with reference numbers, splitting the bill, late cancels and no-shows, a waitlist, and a "time to book again" text later.
- The owner runs it by texting an AI office manager: "who owes me?", "done at Sarah's", "refund Mike", "how did we do this week?". When a job is paid in full, the net goes to the owner's PayPal through Payouts.
- Any business sets up by texting a few answers, including a logo and a color. Every page its customers see carries the business's own brand (white label) with a small "Powered by First Answer" line. Leads come in from any app (a lead app, GoHighLevel, Zapier, a web form), a calendar subscribe link goes out, busy times come in from the owner's calendar, and signed updates go out to their CRM.
Try it in two minutes (live demo, PayPal sandbox)
Live demo: https://first-answer-deposits.onrender.com (free tier: the first request can take about a minute to wake the server). No real money moves.
- Open
/agent, tap the first chip ("Book a deep clean for my 3-bedroom this Friday morning, keep it under $300. I'm Sarah."). Watch the protocol trace on the right: the assistant calls the business over MCP, gets a quote, checks real availability and books. It cannot pay. Tap Approve the deposit in PayPal and pay with any PayPal sandbox personal account or a test card from PayPal's card-testing page. - Open
/text, text "Can we do Saturday instead?" The time moves and the deposit moves with it. Try "Split it with my roommate" or "Is this refundable?" on the payment page. - Open
/owner, text "done at Sarah's". She gets the final bill with a tip option. Text "who owes me?", "refund Sarah", "how did we do this week?". - Open
/setupand set up your own business by texting. Give it a logo link and a color: every customer page carries your brand.
How we built it
Node 22 + Express, a single booking-and-money engine (bookings.js) that every path goes through so the calendar and the money can never disagree.
PayPal: Orders v2 with the JavaScript SDK buttons (PayPal, Venmo, Pay Later with messaging, debit/credit card), Payments v2 refunds (full and partial), Payouts to the owner, Invoicing v2 (create, send, remind, cancel), and webhooks with signature verification (CHECKOUT.ORDER.APPROVED, PAYMENT.CAPTURE.COMPLETED, PAYMENT.CAPTURE.DENIED, CUSTOMER.DISPUTE.CREATED). Deposits, balances and tips are separate orders with custom_id = booking:payment so webhooks map back. Every booking keeps the terms shown, PayPal IDs, approvals and the whole conversation in one printable, dispute-ready record.
AI: any model through the Vercel AI SDK (Claude, Meta Llama, Groq or Gemini) with tool calling over the booking engine, so the model can never invent a price or a time. A scripted bot runs the same flows with no key, so judges can try everything without credentials.
Agentic commerce: an MCP server per business (Streamable HTTP, official SDK) with tools to get the price sheet, check availability, quote, book, check status, reschedule and cancel; discovery files at /.well-known/ucp, /.well-known/agent-card.json and /llms.txt; a human-approval step where book_appointment holds the time and returns a PayPal approval link that only a person can complete. The payment page also registers WebMCP tools (navigator.modelContext) so browser assistants can read the bill and ask the business questions.
Tests: node:test end-to-end tests in demo mode, Playwright checks at laptop and phone widths. Hosted on Render.
Challenges we ran into
Keeping it simple. Every payment snag wanted its own screen; we made each one a rule inside the engine and one sentence in a text. Making agent booking safe: agents can hold a time but never pay, holds expire on their own, and a budget the human gave is enforced before booking. Running everything in demo mode so judges can try the full flow without keys.
Accomplishments that we're proud of
A business can be booked by text, by voice and by another AI, with PayPal holding the money, in one afternoon of setup by text. The owner never opens a form.
What we learned
PayPal's sandbox covers more than checkout: refunds with references, payouts, invoicing and webhooks made the whole money lifecycle real. The hard part of agentic commerce isn't the protocol; it's keeping the human in charge of the money at exactly the right moment.
What's next for First Answer Deposits
Real SMS and phone numbers (Twilio), PayPal partner onboarding so each business connects its own PayPal account, UCP services capability when it ships, more presets (lawn care, salons, photographers), and First Answer's own lead app as a built-in source. First Answer's existing lead-response clients are the first pilots.
Built With
- claude
- express.js
- gemini
- groq
- html5
- javascript
- model-context-protocol
- node.js
- paypal
- paypal-javascript-sdk
- paypal-orders-v2
- paypal-payouts
- paypal-webhooks
- playwright
- render
- venmo
- vercel-ai-sdk
- webmcp

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