A two-agent booking system for small businesses: an AI Receptionist (a Retell AI phone agent) answers calls in natural language, and an AI Scheduler (n8n + Cal.com) turns the conversation into a confirmed appointment — calendar event, confirmation email, and a record in the database, no human in the loop.
Architecture
The production path is deliberately boring: Retell handles the voice conversation, a webhook fires into n8n, n8n books through Cal.com, Resend sends the confirmation, and Supabase stores the record. Every webhook payload has a JSON Schema contract, and a single business.yaml file is the source of truth for services, hours, and business rules — point it at a different business and the whole system reconfigures.
A parallel experiment runs Claude Managed Agents for post-call enrichment — analyzing transcripts, extracting structured data, and flagging follow-ups — without blocking the production booking flow.
What I Learned
Designing for a non-technical operator changes everything. Config over code, contract docs for every integration point, runbooks for deploy and rollback, and deterministic test scenarios — the system is built so that the person running it never has to read the source.
Lately
Mostly the work that never makes a demo: webhook authentication and PII masking in production, a Cloudflare WAF rule pinning the ingest endpoint to Retell’s IPs, and the discovery that an expired Cal.com API key had been quietly failing bookings for a while. It’s rotated now, and on the list of things that get checked.