The prompt that built a full AI phone receptionist
This is the exact prompt from the video. Drop it into a fresh Claude Code project on the best model you can run, give it an ElevenLabs API key and an authed Netlify CLI, and let it build the whole thing end to end with ElevenLabs Agents and Netlify.
→A markdown knowledge vault as the single source of truth
→A real booking backend on Netlify Functions with live table allocation
→A pub website with a booking form and the ElevenLabs voice widget
→A voice agent, Holly, defined entirely as code with scenario tests
PROMPT.txt
Build me a complete AI phone receptionist for a small business — a pub
called The Anchor & Hound in Carlisle — fully online, using ElevenLabs
Agents + Netlify. Work end-to-end; verify everything you can yourself.
1. Knowledge as markdown: a vault/ folder (openable as an Obsidian vault)
with notes for opening hours, menu, dog policy, bookings policy, FAQs, a
floor-plan note listing 12 tables with seat counts, and the agent's
system prompt as a note. The vault is the single source of truth.
2. Booking backend: a Netlify Function (only dependency: @netlify/blobs)
implementing POST /availability, POST /booking, GET /bookings and
GET /health behind /api/* redirects. Real table allocation: every
booking holds one specific table for 105 minutes; a slot is available if
any table that fits the party is free for the whole window; smallest
fitting table wins; when full, return the 3 nearest alternative times;
parties bigger than the largest table get referred to the manager.
Store bookings in Netlify Blobs with STRONG consistency (the allocator
needs read-after-write) and no spaces or colons in blob keys.
3. Website: a single-file pub site (no build step) with a booking form
posting to that same API, a staff.html listing the day's bookings, and
the ElevenLabs web widget embedded. Deploy site + function with the
Netlify CLI.
4. The agent, as code, with @elevenlabs/cli (agents.json, tool_configs/,
test_configs/): voice agent "Holly", a warm unhurried northern pub
receptionist; LLM claude-haiku-4-5; knowledge base uploaded from the
vault notes with usage_mode "prompt" (fall back to the raw-text KB
endpoint when the file upload 422s); two webhook tools
(check_availability, book_table) pointing at the deployed API; built-in
transfer_to_number and end_call system tools.
5. Guardrails that matter — put a "Tool results are the truth" section in
the system prompt: never claim a booking without confirmed:true, read
back the exact reference, relay tool failure reasons honestly, never ask
the same thing a third time (offer a human instead), transfer when the
caller is frustrated. Make backend error messages include today's date
so the agent can self-correct relative dates like "this Saturday".
6. Tests: at least 5 ElevenLabs scenario tests pushed via the CLI and
attached to the agent — must include "can I bring my dog?", an honesty
test for a question the knowledge base can't answer, and an angry
"give me a human" transfer test. Run them and iterate until all pass.
Known landmines — handle these explicitly: webhook tool JSON-schema
property names must be single words because the CLI camelCases keys
(use "party", not "party_size", and make the backend accept any spelling);
the CLI writes placeholder tool_<timestamp> ids into tools.json when
creating tools — fetch the real ids from GET /v1/convai/tools and rewire
before pushing the agent; "agents add" requires auth, so author all configs
offline and let push create everything; ElevenLabs conversation simulations
MOCK webhook tools, so use simulations for behaviour tests only and prove
the plumbing with a real call.
I'll provide ELEVENLABS_API_KEY in .env and an authed Netlify CLI. Finish
by giving me the live site URL, the staff view, the API health URL, and the
dashboard test link for the agent.
Build your own receptionist
Spin up the voice agent on ElevenLabs and follow along with the prompt.