Building ARNO: How We Replaced a Human Receptionist with AI — And Proved It Works
Results at a Glance
- every business call now answered 24/7, in our business name, with appointments landing directly in Google Calendar.Replaced a human receptionist on Ciatel Corp's own inbound line
- callers hear ARNO speak almost immediately after they finish talking, eliminating the awkward AI-pause that breaks the illusion of a natural conversation.Sub-second perceived response time thanks to sentence-level TTS chunking
- real-time Google Calendar free/busy checks make conflicts architecturally impossible.Zero double-bookings since deployment
- the same single deployment can handle unlimited clients, each fully isolated by business_id with row-level security in Supabase. No per-client servers, no per-client codebases.Multi-tenant from day one
- by choosing call forwarding over number porting, we turned onboarding into a configuration task instead of a telecom project.Setup time reduced from weeks to 3–5 business days
- roughly 96% cheaper than the £1,800–£2,200/month cost of a UK human receptionist, while covering hours no human ever could.Cost-to-serve low enough to price plans from £77/month
The Challenge
Every appointment-based business in the UK has the same quiet problem: the phone rings when nobody can answer it. Industry data puts the missed-call rate at 30–40% for salons, clinics, and small practices — and 70% of those callers never leave a voicemail. They just book somewhere else.
The obvious fix is a human receptionist. The problem is the maths. A full-time UK receptionist costs £1,800–£2,200 a month once you factor in salary, NI, holiday pay, and pension contributions — and they still can't cover evenings, weekends, sick days, or bank holidays. For a single-chair salon or a two-physio clinic, that cost is impossible to justify against the revenue it protects.
We believed AI could close that gap. But "we believe" isn't a product. Before we asked any business owner to trust us with their inbound calls, we needed to prove three things to ourselves:
- An AI receptionist could hold a real, natural phone conversation — not a phone-tree, not a chatbot, an actual back-and-forth with interruptions, follow-up questions, and changes of mind.
- It could reliably book appointments into a real calendar — checking real availability, avoiding double-bookings, and confirming the slot before hanging up.
- It could do all of this on a UK phone number, with a British voice, at a price point a small business could actually afford.
So we built ARNO for ourselves first. Ciatel Corp's own inbound line became the test bench. If it couldn't handle our calls, it wasn't going anywhere near a client's.
Our Solution
We architected ARNO as a multi-tenant voice agent on a deliberately small, deliberately battle-tested stack. Every component was chosen because we'd already ruled out the alternatives.
Telephony: Twilio ConversationRelay. We evaluated Telnyx AI Builder and Vapi before committing. Telnyx AI Builder was rejected because we lost control of the system prompt — and the system prompt is where the personality, the booking logic, and the guardrails live. Vapi was ruled out because it doesn't support UK phone numbers, and a UK voice agent for UK businesses is a non-negotiable. Twilio ConversationRelay gave us the prompt control, the UK numbers with voice and SMS, and the production reliability we needed.
Reasoning: Claude Sonnet for conversation, Claude Haiku for memory. The main conversational responses run on Claude Sonnet — the model is good enough at following nuanced booking instructions that we don't need to scaffold it with rigid state machines. In parallel, a fire-and-forget Haiku call updates a structured in-call scratchpad after every turn (caller name, intent, service requested, preferred date/time, current step, decisions log). That scratchpad is what lets ARNO remember mid-call what it just agreed to and pick up cleanly after it performs an action like checking the calendar.
Voice: ElevenLabs, British female ("Lily"). Standard cloud TTS sounds American, robotic, or both. For a UK salon owner, that's the difference between a caller staying on the line and hanging up. We integrated ElevenLabs and added sentence-level chunking so the audio starts streaming on the first complete sentence — meaning the caller hears ARNO speak almost immediately rather than waiting for a full paragraph to render.
Calendar: Google Calendar via service account. Bookings write directly to a real Google Calendar the moment the call ends. Free/busy is checked in real time before ARNO confirms a slot, so double-bookings are architecturally impossible. The business owner sees the appointment appear on their phone the same way any normal calendar event would.
Database: Supabase, multi-tenant by design. One codebase, one server, all clients. Each inbound call is matched to a business_id via the Twilio number it came in on, and every piece of data — appointments, call logs, business configuration, transfer numbers — is scoped per business with row-level security. We rejected the per-client-server model early: it doesn't scale, it's a maintenance nightmare, and it makes GDPR compliance harder, not easier.
Hosting: Node.js / Fastify on Render.com (Frankfurt). EU region, low latency to UK callers, predictable pricing.
Onboarding: call forwarding, not number porting. Businesses keep their existing phone number and forward calls to a Twilio number we assign them. No porting paperwork, no risk to their number, and they can switch ARNO off in sixty seconds if they ever want to. This was a deliberate product decision, not a technical shortcut — it turns onboarding from a two-week project into a three-to-five-day setup.
The full call flow: a caller dials the business → Twilio routes the call → ARNO greets them in the business's name → speech is transcribed in real time → Claude reasons about intent and responds → ElevenLabs speaks the response → free/busy is checked against Google Calendar → the slot is confirmed → the appointment is written to the calendar → the caller receives an SMS confirmation → the business owner receives an SMS alert. End-to-end, entirely automatic, on a single inbound call.