The Anchor & Hound · Carlisle

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.

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.

Try ElevenLabs →

Built with Claude Code. Want the full walkthrough? Watch the video or come build with us at Build with Luke.