← All sessionsHomeSearch
AI Catalyst C3·Basecamp·3:16:53

Basecamp 6: Voice Agents

Matthew Cohen Trainer — founder of Futureflow.ai (AI automation agency, UK; chatbots, back-end automation, consulting; specialty AI voice agents, 50+ built over ~2 years); shares free resources on LinkedIn/YouTube · Abhishek Program manager (last-Basecamp framing, cohort-confusion resolution, resource distribution via LMS/circle app)

Session map

WHY & WHATPROMPT CRAFTBUILD & WIREThe 5-step pipelinespeech → LLM → speechThe business casemissed calls = lost moneyContext + identitythe prompt IS the agent5-section promptrole · context · personality · task · s…Accuracy tacticsspell it, confirm it, one questionBuilder settingslatency, LLM, tuned sweet spotsVoicesElevenLabs IDs, multilingualcal.com functionscheck availability · bookPost-call datadescriptions are promptsThe live test calland its teachable failuresn8n call loggingwebhook → filter → Sheet
Why & whatPrompt craftBuild & wire
click a node — its card pops up (drag it anywhere, × to close)
Concept

The map reads left to right — why & what flow into prompt craft, then into build & wire. Click any node to open that idea here; every timestamp jumps into the recording.

The short version

  1. A voice agent is a 5-step loop — user speaks → speech-to-text → pre-prompted LLM → text response → text-to-speech — built here on Retell AI, with prompting as the single most important lever: context + identity, 'your voice agent is only as good as your prompt'.
  2. Full Retell platform tour separating what matters (call history filters, post-call data properties, knowledge bases, phone numbers via Twilio SIP trunks, agent-level webhooks) from what beginners can ignore (webhooks settings, reliability/limits, batch calling, pronunciation, boosted keywords).
  3. The 5-core-section prompt architecture — role, context, personality, task (split into small goals so the agent isn't pushy), conversation stages ('become conversational architects') — plus function-usage guidelines, important notes, and the {{current_time_<IANA tz>}} dynamic variable.
  4. Practical tuning wisdom: latency sweet spot ~900–1500ms (too fast breaks turn-taking), GPT-4.1 beats GPT-5.1 for voice in practice but Gemini 3 Flash is his default (half the price, faster), ElevenLabs voice IDs imported into Retell, spell-out-and-confirm tactics for names and digit-by-digit phone numbers.
  5. End-to-end build demoed live: BrightSmile Dental inbound receptionist with cal.com check-availability/book-appointment functions, a live test call (including a self-corrected international-phone-format failure), and n8n piping the call_analyzed end-of-call report into a Google Sheet CRM.

The concepts

01

What a voice agent is (5-step pipeline)

0:17:11

A voice agent is a chatbot wearing a telephone: every 'conversation' is text underneath, with speech converted on the way in and out.

The whole technology is a 5-step loop repeated every turn: the caller speaks; speech-to-text transcribes it; the text goes to an LLM that has been pre-prompted with who it is and what it does; the LLM answers in text; text-to-speech says it aloud. Nothing in the middle knows sound exists — which is why everything you learned about prompting LLMs transfers directly, and why transcription accuracy becomes a first-class concern (garbage transcription in, garbage everything out).

Three species share this anatomy: inbound agents (the receptionist and customer-service case this session builds), outbound agents (sales calls — a separate promised session), and interactive assistants living inside apps, Siri-style. The loop's total round-trip time is the latency you'll later tune — the seam where the illusion of conversation holds or breaks.

Worked example · from the session

Emma, the BrightSmile Dental receptionist built this session: a caller's 'my wisdom tooth is killing me' becomes text, hits a prompted LLM that knows it's a dental receptionist, and comes back as a sympathetic scheduling question in a British voice.

Why it matters

Once you see the loop, voice stops being exotic: it's prompt engineering plus two conversion steps plus latency management. Every later concept — prompting, settings, functions — slots into one of the five steps.

People get this wrong

A voice agent is a special voice-native AI.

It's a text LLM between two converters — speech-to-text in, text-to-speech out. The intelligence never hears anything, which is why prompting is still the whole game.

Caller speaks a human voice Speech → text transcription Pre-prompted LLM the prompt IS the agent + functions · knowledge base Text → speech ElevenLabs voice Caller hears a natural reply the loop repeats every turn — total round trip is the latency you tune (~900-1500ms) Inbound receptionist · support Outbound sales · follow-ups In-app assistant Siri-style, lives in software Five steps per turn, three kinds of agent — this session builds the inbound receptionist.
Five steps per turn, three kinds of agent — this session builds the inbound receptionist
Go deeper

In one line: A smart assistant that understands human speech, processes requests with AI, and responds naturally: user speaks → speech-to-text → text fed to a pre-prompted LLM → LLM outputs text → text-to-speech. Three types: inbound (receptionist/customer service), outbound (sales), and interactive assistants living inside apps (Siri-style).

▶ Watch this taught: 0:17:11

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

Name the five steps of the loop.

Caller speaks → speech-to-text → pre-prompted LLM processes → LLM outputs text → text-to-speech answers.

What are the three types of voice agent?

Inbound (receptionist/support), outbound (sales), and interactive in-app assistants (Siri-style).

02

Why voice agents (the missed-call economics)

0:23:15

The pitch isn't that AI answers phones — it's that every missed call is marketing money you already spent, walking to the next Google result.

The economics stack three facts. Scale: UK and US businesses collectively lose on the order of $100B a year to missed calls. Speed: a lead contacted within 5 minutes is 21x more likely to convert than one contacted at 30 minutes — while the average UK business takes four hours to respond. Availability: a voice agent answers at 2 a.m., on holidays, during lunch rushes — 'the perfect employee', with no breaks and no sick days.

The subtle point is that a missed call isn't a neutral non-event: the caller found you through marketing you paid for, and their next act is dialing your competitor one Google result down. The trainer models good epistemics too — he cites Gartner's '90% adoption by 2027' while doubting the number himself: directionally right, precision dubious.

Worked example · from the session

The four-hours-vs-five-minutes gap: by the time the average business calls back, the 21x conversion window closed 3.5 hours ago — that delta is the product voice agents sell.

Why it matters

You'll pitch (or evaluate) voice agents on this arithmetic, not on the technology. Missed-call volume × lead value is a number any business owner can compute — and it's usually embarrassing.

People get this wrong

Voice agents are about replacing receptionists to cut salaries.

The primary case is capturing revenue that currently evaporates — after-hours calls, overflow, slow callbacks. It's a revenue product before it's a cost cut.

For your projects

TechOnCall is itself the case study: after-hours client calls that miss you are exactly this leak. An inbound agent that logs the issue and promises a five-minute callback is buildable with this session's exact stack.

Go deeper

In one line: UK+US businesses collectively lose ~$100B/year to missed calls; leads contacted within 5 minutes are 21x more likely to convert than at 30 minutes, while the average UK business takes 4 hours; agents work 24/7 with no breaks — 'the perfect employee'.

Gartner's '90% adoption by 2027' cited with the trainer's own skepticism — directionally right, number doubtful (0:19:12)

Missed calls = wasted marketing spend and leads lost straight to the next Google result (0:33:24)

▶ Watch this taught: 0:23:15

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

What's the 5-minute statistic, and why does it sell agents?

Leads contacted within 5 minutes convert 21x better than at 30 minutes; the average UK business takes 4 hours. An agent answers in zero.

Why is a missed call worse than no call?

The caller cost you marketing spend to generate, and their next move is a competitor. It's paid demand actively leaking.

03

Prompting = context + identity

0:27:20

'If you take nothing else away: your voice agent is only as good as your prompt' — and a good prompt is two ingredients, context and identity.

The prompt is how the agent is created — there is no other place its character comes from. The two ingredients are identity (who it is, how it speaks) and context (what situation it operates in, what it's for). The session's contrast pair makes the point cheaply: 'you are a bot that answers questions' produces a robot; 'you are a friendly assistant that helps customers track orders and give clear solutions' — barely a dozen more words — produces something callers can deal with. Small wording investments multiply.

The second half of the concept is how agents act: through APIs, connectors and bridges — 'the backdoor key to using a software or platform without physically being inside of it.' Identity and context make the agent someone; API connections to CRMs, calendars and databases make it useful. The rest of the session builds out both halves.

Worked example · from the session

The bad-vs-better prompt pair shown side by side — the same underlying model turning from 'a bot that answers questions' into a capable order-tracking assistant on a sentence's worth of context and identity.

Why it matters

This is the session's thesis statement, stated before any platform is opened: tools and settings are secondary; the prompt is the agent. Everything from BC1's prompting foundations applies directly here.

People get this wrong

The platform's settings and features determine agent quality.

Settings tune the edges; the prompt is the agent. A mediocre prompt on perfect settings still produces a bad agent — 'only as good as your prompt'.

If you take nothing away from this session, just take away that prompting is the most important part... your voice agent is only as good as your prompt.0:27:20
APIs are essentially the backdoor key to using a software or platform without physically being inside of the platform.0:31:22
Go deeper

In one line: The prompt is how the agent is created: who it is, what it does, how it speaks. Bad: 'you are a bot that answers questions'. Better: 'you are a friendly assistant that helps customers track orders and give clear solutions' — a handful of extra words multiplying the context/identity signal.

Agents act via APIs/connectors/bridges — 'the backdoor key to using a software or platform without physically being inside of it' — linking the agent to CRMs, databases, and apps (0:31:22)

▶ Watch this taught: 0:27:20

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

What are the two ingredients of a voice agent prompt?

Identity (who it is, how it speaks) and context (the situation it operates in, who's calling and why).

How do voice agents actually DO things, beyond talking?

Through APIs/connectors — 'the backdoor key' into CRMs, calendars and databases — invoked as functions during the call.

04

Retell AI platform map: what matters, what doesn't

0:37:26

A platform tour from someone with 50+ builds is really a map of what to ignore — half of Retell's menu is marked 'skip this' by experience.

The economics first: free signup, $10 of credits, usage-based pricing — the demo agent runs about 11.5¢/minute. Then the triage. Matters for beginners: call history (filterable by agent, number, and post-call property values like call_outcome = appointment_booked, with each call's recording, cost, sentiment, latency and transcript), post-call data properties, knowledge bases, phone numbers, and agent-level webhooks. Skippable: workspace webhook settings, reliability/limits, pronunciation, boosted keywords — and batch calling, which died on arrival when Western countries banned AI cold-calling right after launch.

Phone numbers get the practical treatment: buy through Twilio (any country, cheaper than Retell's resold US/CA numbers), set up a SIP trunk, register it in Retell with the international-format number, termination URI and credentials — after which connecting number to agent is a two-click dropdown. Two experience verdicts round it out: Retell's text agents are 'not that good' (build text agents elsewhere), and the new alerting/AI-quality-assurance features arrived after his agency had already built its own with Claude Code analyzing call transcripts.

Worked example · from the session

The call-history screen as the working surface: filter to call_outcome = appointment_booked and every booked call sits there with recording, transcript, sentiment, latency and cost — the agency's daily QA view.

Why it matters

Feature triage is the fastest-transferable expertise: knowing which six panels matter saves the weeks of menu-wandering that stall most platform learners.

People get this wrong

Master every setting before building your first agent.

Half the menu is irrelevant to you. Prompt + a handful of panels (history, properties, KB, numbers) cover the first fifty builds — the tour's real lesson.

Go deeper

In one line: Free signup, $10 credits, usage-based pricing (~11.5¢/min for the demo agent). Beginner-relevant: API keys (outbound only), call history, post-call properties, knowledge bases, phone numbers, webhook settings. Skippable: workspace webhooks, reliability/limits, pronunciation, boosted keywords, batch calling.

Alerting + AI quality assurance are new features; his agency pre-dated them by using Claude Code to analyze call transcripts into performance reports (0:41:31)

Call history filters by agent, number, and post-call property outputs (e.g. call_outcome = appointment_booked); each call shows recording, cost, sentiment, latency, transcript (0:45:34)

Batch calling died on arrival — Western countries banned AI cold-calling right after launch (0:51:37)

Phone numbers: buy via Twilio (any country, cheaper than Retell's resold US/CA numbers), set up a SIP trunk, register in Retell with international-format number + termination URI + credentials; connecting a number to an agent is a two-click dropdown (0:51:37)

Retell text agents judged 'not that good' — build text agents elsewhere (0:45:34)

▶ Watch this taught: 0:37:26

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

Which platform areas matter to a beginner, per 50+ builds of experience?

Call history and its filters, post-call properties, knowledge bases, phone numbers, and agent-level webhooks. (API keys only once you go outbound.)

Why buy numbers via Twilio rather than Retell?

Any country's numbers, cheaper than Retell's resold US/CA stock — connected via a SIP trunk and then attached to an agent in two clicks.

What happened to batch calling?

Dead on arrival — Western countries banned AI cold-calling right after the feature launched.

05

Knowledge bases vs prompt bloat

0:55:41

A long prompt makes your agent worse three ways at once — more expensive, slower, and dumber — so bulk information lives in a knowledge base the agent searches instead.

The temptation is to stuff everything into the prompt: all ten service descriptions, every policy, every price. The cost is triple. Expensive: pricing is flat (~4.5¢) under 3,500 prompt tokens and climbs steeply beyond. Slower: every turn re-processes the whole prompt, inflating latency. Dumber: instruction-following degrades as prompts bloat. The fix is architectural — big chunks of information go into an uploaded knowledge base, and the agent searches it on demand, mid-call, only when a caller's question requires it.

Retell's KB is a vectorized RAG system under the hood — BC5's retrieval concept in production — and it handles many pages comfortably (though it can't traverse folders or filesystems). Upload as markdown for best AI readability, and note the reuse economics: one knowledge base can serve every agent of the same business.

Worked example · from the session

BrightSmile's ten service descriptions: in the prompt they'd cost tokens on every single turn of every call; in the KB they cost a search only when someone asks about veneers.

Why it matters

This is the voice-agent version of a universal LLM law: context you carry always costs on every turn; context you retrieve costs only when used. Getting the split right is most of the difference between an 11¢/min agent and a 25¢/min one.

People get this wrong

The more the agent knows up front, the better it performs.

The more it CARRIES up front, the worse it performs. Knowledge it can retrieve beats knowledge it must haul through every turn.

For your projects

Same law your KB obeys: session pages carry the teaching, the coming SQLite/FTS5 layer is the retrieval. Retell's markdown preference also revalidates the whole markdown-first pipeline design.

Go deeper

In one line: Big chunks of information (e.g. 10 service descriptions) belong in an uploaded knowledge base, not the prompt: long prompts make agents more expensive, slower, and dumber. The agent searches the KB on demand; upload as markdown for best AI readability; one KB can serve multiple agents of the same business.

Retell KB is a vectorized RAG system — handles many pages fine; no filesystem/folder traversal though (2:55:29)

Token pricing: flat ~4.5¢ under 3,500 prompt tokens, then increasingly expensive (1:07:52)

▶ Watch this taught: 0:55:41

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

What are the three penalties of a bloated prompt?

More expensive (past the ~3,500-token flat band), slower (every turn reprocesses it), and dumber (instruction-following degrades).

What belongs in the prompt vs the knowledge base?

Prompt: identity, behavior, stages, small critical facts. KB: bulk reference — service lists, policies, long descriptions — searched on demand.

What is Retell's KB technically?

A vectorized RAG system — it embeds your uploads and retrieves relevant chunks mid-call. Markdown uploads read best.

06

Agent builder: the settings that matter

0:59:45

The builder is a wall of dials, and the value of this hour is that someone has already found every sweet spot — including the counterintuitive one: faster isn't better.

Structure first: single-prompt agents cover 99% of his builds; the conversational-flow (multi-path) builder earns its complexity only for methodical support trees. The welcome message is a control surface, not a nicety — AI-speaks-first with custom text sets the conversational frame. Then the tuned numbers: pause-before-speaking 0.4-0.6s; latency targeted at ~900-1500ms — the counterintuitive lesson being that TOO FAST breaks turn-taking, with the agent interrupting callers who are just actively listening ('yeah… uh-huh'); interruption sensitivity 0.75-0.85; a reminder message at 15 seconds of silence (twice), end-call around 90 seconds; and a sane max call duration — learned the hard way when a caller deliberately ran his agent's clock for a billed four hours.

Transcription always optimizes accuracy over speed (accuracy failures cascade through the whole loop), background call-center sounds add realism, and the edge-case switches — voicemail detection, iOS/Android call-screening response, IVR auto-hangup, keypad off — each close a real-world failure mode. On the LLM: Retell's menu suggests GPT-5.1/4.1, but tested practice says GPT-4.1 beats GPT-5.1 for voice, and his production default is Gemini 3 Flash — about half GPT-4.1's cost and faster; the price and latency visibly dropped on selection.

Worked example · from the session

The 4-hour troll call as the tuition story behind 'set max duration' — and Gemini 3 Flash's selection visibly halving the projected per-minute cost on screen.

Why it matters

These sweet spots are compressed field experience — each number is a failure mode someone already hit. Copying them turns your first build into roughly his fiftieth.

People get this wrong

Newer, bigger models make better voice agents.

Voice rewards fast, cheap and steady over maximal intelligence — the tested finding was 4.1 over 5.1, and a Flash-class model as the production default.

Latency: ~900-1500 ms too slow frustrates — too FAST breaks turn-taking: the agent interrupts active listeners ("yeah, uh-huh") Interruption sensitivity: 0.75-0.85 pause before speaking 0.4-0.6s transcription: always accuracy over speed Call guards reminder at 15s silence (x2) · end call ~90s silence max duration SET — he was once billed a 4-hour troll call Realism & edge cases background call-center sounds · voicemail detection iOS/Android call-screening reply · IVR hangup · keypad off LLM: tested practice beats the menu GPT-4.1 > GPT-5.1 for voice · default: Gemini 3 Flash (half the cost, faster) Every dial has a sweet spot — and each number here came from 50+ production builds.
Every dial has a sweet spot — each number here came from 50+ production builds
Go deeper

In one line: Single-prompt agents (99% of his builds; conversational-flow only for methodical multi-path support calls), LLM choice, voice selection, welcome message (AI speaks first + custom text for conversational control), pause-before-speaking 0.4–0.6s, and speech/call settings each with tuned sweet spots.

Latency: aim ~900–1500ms — too high frustrates, too low breaks turn-taking and the agent interrupts active listeners ('yeah, uh-huh') (1:03:47)

Interruption sensitivity 0.75–0.85; reminder message at 15s x2; end call on silence ~90s; max call duration set sanely — he once got billed 4 hours by a caller deliberately running out the clock (1:22:07–1:32:16)

Transcription: always optimize accuracy over speed; background sounds (call center) add realism (1:26:10)

Voicemail detection (hang up, or prompt-varied messages), iOS/Android call-screening response (new), IVR auto-hangup, keypad input off (1:28:12)

LLM choice: Retell suggests GPT-5.1/4.1, but tested practice says GPT-4.1 beats GPT-5.1 for voice; Claude okay but pricey; his default is Gemini 3 Flash — ~half the cost of GPT-4.1 and faster (1:07:52)

▶ Watch this taught: 0:59:45

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

Why is minimizing latency wrong?

Below ~900ms the agent starts answering active-listening noises ('yeah', 'uh-huh') as if they were turns — it interrupts. The sweet spot is ~900-1500ms.

Single-prompt or conversational-flow agent — what's the split?

Single-prompt for 99% of builds; conversational-flow only for methodical multi-path support calls.

What's the tested LLM verdict for voice?

GPT-4.1 beats GPT-5.1 in practice; Claude works but costs; the default is Gemini 3 Flash — half the cost of 4.1 and faster. (Point-in-time — re-test.)

07

Voices: ElevenLabs import and multilingual agents

how-to1:09:54

The voice is a commodity you import: ElevenLabs has the library, Retell takes the ID, and one checkbox makes the agent bilingual mid-sentence.

Retell's built-in voices are fine; ElevenLabs' library is better and vastly bigger, and the bridge is trivial — copy a voice ID, add it in Retell as a custom provider voice, with billing unified so there's no second subscription. Voice choice is branding: accent, age, warmth all signal who the business is before a word of content lands.

Multilingual support is nearly free but has one dependency: the voice itself must support the languages (the library tags each voice — look for the '+16'-style marker). Multi-select languages on the agent and it switches mid-conversation as the caller does. Voice cloning exists too — about 20 minutes of audio into ElevenLabs — with the ethical line drawn plainly: agents disclose they're AI in the welcome message; tricking callers is a GDPR and trust failure.

Worked example · from the session

The demo build: English/British/male filtered in the ElevenLabs library, one voice ID copied into Retell, and Emma had her Scottish-adjacent professional voice — total cost of the operation, one paste.

Do it in this order

GotchasA voice that doesn't support a language will not magically speak it — check the tag first. And on cloning (~20 minutes of audio): never trick callers into thinking they're human. GDPR and basic trust — his agents disclose being AI in the welcome message.

Why it matters

Voice is the caller's entire first impression, and this is the cheapest quality upgrade in the stack — plus the multilingual checkbox is a genuine capability many human front desks can't match.

Go deeper

In one line: Browse the ElevenLabs voice library (best/biggest selection), copy a voice ID, add as custom provider voice in Retell (billing unified, no double charge). Multilingual: the chosen voice must support the languages (check the '+16' tag); multi-select languages and the agent auto-switches mid-conversation at no extra cost.

Voice cloning: ~20 minutes of audio into ElevenLabs; but never trick callers into thinking they're human — GDPR/trust; his agents disclose being AI in the welcome message (3:07:40)

▶ Watch this taught: 1:09:54

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

How does an ElevenLabs voice get into Retell?

Copy its voice ID from the library, add as a custom provider voice in Retell — billing unified, no double charge.

What must you verify before making an agent multilingual?

That the chosen VOICE supports those languages (the library's language tag) — the LLM can switch; the voice must be able to follow.

Where's the ethical line with cloned/natural voices?

Disclosure: the agent says it's AI in the welcome message. Never trick callers into believing they're talking to a human.

08

The 5-core-section prompt architecture

1:52:26

Every production agent prompt has the same skeleton: role, context, personality, task, stages — and the last one is where you 'become conversational architects'.

The five core sections, each with its craft. Role: who the agent is — Emma, receptionist at BrightSmile Dental. Context: who calls and why — patients booking, asking, sometimes in pain. Personality: traits WITH their reasons ('warm and reassuring, because callers often have dental anxiety') — the reason teaches the model when to apply the trait. Task: the objectives, deliberately split into ~5 small goals, because an agent given one big goal gets pushy about it. Conversation stages: the stage-by-stage script of how calls should flow — greeting, need discovery, data capture, booking, close — the section that makes you a conversational architect rather than a prompt writer.

Formatting is functional: markdown ## headers delimit sections, ** marks importance — structure the model actually parses. Around the core sit the supports: an inline mini knowledge base for facts too small to justify a KB upload; function-usage guidelines reinforcing when and how to call each function; important notes holding post-testing fixes (one question at a time, short responses, repeat details back, prioritize pain cases); and the load-bearing dynamic variable {{current_time_<IANA timezone>}} — without it, a caller's 'tomorrow' is unresolvable when the agent calls the calendar. Ask ChatGPT for your IANA timezone string.

Worked example · from the session

Emma's full production prompt, walked section by section — including the personality traits justified by dental anxiety, the task split into five gentle goals, and the current_time variable that makes 'can I come in tomorrow' bookable.

Why it matters

This architecture is the session's most reusable artifact: it turns 'write a good prompt' from art into checklist, and each section maps to a failure mode you'd otherwise discover by fielding bad calls.

People get this wrong

Personality is fluff — traits like 'friendly' are decoration.

Traits WITH REASONS are behavioral instructions: 'warm, because callers have dental anxiety' tells the model when and how to deploy warmth. Reasonless traits are indeed fluff.

THE 5 CORE SECTIONS ## Role who the agent is — Emma, receptionist at BrightSmile Dental ## Context who calls, and why — patients booking, asking, in pain ## Personality traits WITH reasons — warm, because callers have dental anxiety ## Task — split into ~5 small goals so the agent isn't pushy about one objective ## Conversation stages stage-by-stage script — "become conversational architects" SUPPORT SECTIONS Inline mini knowledge base small facts that don't justify a KB upload Function-usage guidelines reinforce when and how to call each function Important notes post-testing fixes: one question at a time, short replies {{current_time_<IANA tz>}} without it, "tomorrow" means nothing to the LLM Markdown ## headers delimit sections; ** marks importance. The prompt is the agent.
Five core sections plus supports — markdown headers delimit, the prompt is the agent
This is the part where we start to become what I like to call conversational architects.2:00:37
For your projects

The 5-section skeleton is a system-prompt pattern beyond voice — your extraction protocol's structure (mission, per-session protocol, conventions, budget) is the same idea: sections that each prevent a known failure.

Go deeper

In one line: Every agent prompt gets: role (who it is), context (who's calling and why), personality (traits plus the reasons for them — dental anxiety), task (split into ~5 small goals so the agent doesn't get pushy about one objective), and conversation stages — explicit stage-by-stage instructions making you a 'conversational architect'. Markdown ## headers delimit sections; ** marks importance.

Support sections: inline mini knowledge base (small enough to skip a KB upload), function-usage guidelines (reinforce when/how to call functions), important notes (post-testing adjustments: one question at a time, short responses, repeat details, prioritize pain cases) (2:14:54)

Dynamic variable {{current_time_<IANA timezone>}} — without it the LLM can't resolve 'tomorrow' for function calls; ask ChatGPT for your IANA timezone (2:16:57)

▶ Watch this taught: 1:52:26

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

Name the five core sections.

Role, context, personality (traits + reasons), task (split into ~5 small goals), conversation stages.

Why split the task into small goals?

An agent optimizing one big goal becomes pushy — it drags every exchange toward booking. Five small goals produce natural progress instead.

Why does {{current_time_<IANA tz>}} matter?

Without it the LLM has no idea what 'today' or 'tomorrow' is, so date-dependent function calls (availability, booking) can't resolve relative dates.

09

Conversation-stage tactics for transcription accuracy

2:02:40

Transcription will mishear names and mangle numbers — so you engineer the conversation itself to catch the errors before they reach the calendar.

Speech-to-text is the loop's weakest link, and these tactics are conversational error-correction. Names: ask the caller to spell it, repeat it back, and don't proceed until confirmed. Phone numbers: read them back digit by digit — never 'one twenty-six', which transcribes ambiguously. One question at a time, because two questions in one turn produce half-answers. And before any calendar check, force a single specific day — a whole week's availability payload is so large it confuses the agent into silence.

Two refinements complete the craft. Announce function calls naturally ('let me just check the schedule for that day') — it covers the retrieval latency AND is what a human receptionist would say anyway. And keep conditional instructions general — 'if multiple days, ask for one; if unsure, suggest the earliest' — because ten hyper-specific conditions bloat the prompt and confuse the model more than they help.

Worked example · from the session

The live test call ran the full playbook: caller's name spelled and confirmed, phone number read back digit by digit, one day forced before the availability check — and the booking landed.

Why it matters

This is the difference between agents that demo well and agents that survive real phone lines. Every tactic converts a known transcription failure into a conversational habit that callers experience as thoroughness.

People get this wrong

More precise conditions in the prompt = more reliable agent.

Past a handful, hyper-specific conditions bloat and confuse. Keep conditionals general and put reliability into conversational tactics — spell, confirm, one question, one day.

For your projects

Structurally identical to your asrCorrections discipline: assume the transcription layer garbles, and build verification into the workflow instead of trusting the first hearing.

Go deeper

In one line: Engineer the conversation to raise the odds of correct data capture: ask callers to spell their name, repeat it back and don't proceed until confirmed; read phone numbers back digit by digit (never 'one twenty-six'); one question at a time; force a single specific day before calendar checks — large availability payloads confuse the agent into silence.

Announce function calls naturally ('let me just check the schedule for that day') to cover retrieval latency — also what a human would do (2:08:47)

Conditional formatting kept general (if multiple days → ask for one; if unsure → suggest earliest) — 10 hyper-specific conditions bloat and confuse (2:06:45)

▶ Watch this taught: 2:02:40

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

How do you capture a phone number reliably?

Read it back digit by digit — never grouped ('one twenty-six') — and confirm before proceeding.

Why force one specific day before a calendar check?

A multi-day availability payload is huge; it overwhelms the agent into confusion or silence. One day keeps the function response digestible.

Why announce function calls out loud?

It covers the retrieval latency naturally — and it's exactly what a human would say ('let me just check the schedule').

10

cal.com scheduling functions

how-to2:18:58

Two built-in functions turn the talker into a booker — the work is entirely in the five minutes of cal.com plumbing, not the AI.

Retell ships cal.com functions natively: check-availability and book-appointment. Wiring them is pure configuration: a free cal.com account connected to Google Calendar; an API key (shown once — save it); an event type defining duration, location, availability windows and minimum notice; the event type ID lifted from the URL; then both values plus your timezone pasted into each function in Retell. From that moment the agent can consult a real calendar mid-call and write real bookings into it.

The subtle decision is the confirmation field: choosing phone vs email determines which caller details cal.com requires before accepting the booking. The demo chose phone — because the conversation stages already collect name and number — an example of the prompt design and the function config having to agree.

Worked example · from the session

The live booking that landed in Google Calendar during the test call — wisdom-tooth Emma checked one day's availability, offered slots, and booked, with the appointment appearing on screen.

Do it in this order

GotchasThe one-time-visible API key is the classic trap — if you didn't save it, you're making a new one. And the confirmation-field choice silently dictates which caller details are REQUIRED for a booking to succeed; mismatch it with what your prompt collects and bookings fail.

Why it matters

Functions are where the agent stops being a chatbot with a voice and starts doing work. This exact pattern — API key + resource ID + timezone into a platform function — is the shape of every integration you'll wire.

People get this wrong

Booking integration is developer work.

It's configuration: copy an API key and an ID into a built-in function. The only 'engineering' is making the prompt collect the same details the booking requires.

This idea elsewherebuilds ontool calling
Go deeper

In one line: Retell's built-in cal.com functions power check-availability and book-appointment: free cal.com account, connect Google Calendar, create an API key (visible exactly once — save it), create an event type (duration, location, availability, minimum notice), grab the event type ID from the URL, add both to each function with your timezone.

Confirmation field choice (phone vs email) dictates which caller details are required — phone chosen since the agent collects name + number (2:27:06)

▶ Watch this taught: 2:18:58

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

What are the five cal.com ingredients each Retell function needs?

A cal.com account with calendar connected, the one-time API key, an event type, that event type's ID (from the URL), and your timezone.

Why did the demo pick 'phone' as the confirmation field?

The confirmation field dictates the required caller details — the agent collects name + number, so phone matches what the conversation captures.

11

Post-call data extraction — descriptions are prompts

2:29:07

Every property description is secretly a prompt aimed at a blank ChatGPT holding only your transcript — write it like one and every call becomes structured data.

Post-call properties turn conversations into database rows. Four types — text, selector, boolean, number — extract fields like full_name, reason for calling, service requested, appointment_booked, call_outcome from every completed call. The mechanism behind them is the mental model that makes you good at this: imagine a blank ChatGPT canvas that receives ONLY the call transcript plus your description. Whatever the description doesn't specify, the extractor won't reliably do.

So each description gets written as a full prompt: the task, the constraints, the fallback ('return not provided' when the caller never said it), and worked examples of correct extractions. One lazy sentence ('the caller's name') yields inconsistent garbage; a real prompt yields data clean enough that the call-history filters and the n8n CRM pipeline downstream can rely on it.

Worked example · from the session

The shared descriptions doc from the resource pack — each of BrightSmile's five properties written as a mini prompt with constraints, fallback and examples, reusable as templates for any agent.

Why it matters

This is where voice agents produce compounding value: not the conversation but the structured record of every conversation. And it's BC1's prompting discipline applied to a form field most people fill with one careless line.

People get this wrong

A property description is a label — one line will do.

It's a prompt executed against every transcript. Lazy descriptions produce inconsistent extractions; task + constraints + fallback + examples produce data you can filter and pipe.

For your projects

Descriptions-are-prompts is your schema discipline in miniature — the same reason the extraction protocol specifies fields with examples (the exemplar YAML) instead of naming them and hoping.

Go deeper

In one line: Four property types (text, selector, boolean, number) extract structured data from every call (full name, reason, service, appointment_booked, call_outcome). Write each description as a full prompt with task, constraints, fallback ('return not provided'), and worked examples — the 'blank ChatGPT canvas with only the transcript' mental model — never one lazy sentence.

▶ Watch this taught: 2:29:07

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

What are the four property types?

Text, selector (pick from options), boolean, number.

What's the mental model for writing a description?

A blank ChatGPT canvas holding only the transcript and your description — so the description must be a full prompt: task, constraints, fallback, examples.

Why does every property need a fallback?

Callers often don't provide a field; without 'return not provided', the extractor guesses — and guessed data poisons the CRM downstream.

12

Live test call (and its teachable failures)

2:35:10

The test call is where every concept earns its keep — including two failures worth more than the successes.

Emma took a wisdom-tooth call end to end: empathy on the pain mention (the personality section firing), name spelled and confirmed, phone number read back digit by digit, one day forced for the availability check, slots offered, booking made. The choreography of the whole session, audible in ninety seconds.

The failures taught hardest. The first booking attempt failed because the collected number wasn't in international format — and the agent self-corrected, asking for the country code, exactly the resilience the function-usage guidelines exist to produce. Better still, a learner caught a congruence bug the trainer had missed: the prompt said 'you are Sarah' while the welcome message said 'my name is Emma' — the two configuration surfaces must agree. And the testing meta-lesson: test in-platform via audio or chat before wiring a phone number — the chat test exists 'so you don't look like a psychopath talking to your laptop in a café, having the same conversation over and over again.'

Worked example · from the session

The international-format failure and recovery, live: booking rejected, agent asks 'could I get the country code?', re-books, calendar shows the appointment.

Why it matters

Watching a real test — failures included — calibrates what 'working' means: not zero errors, but graceful recovery plus a fix list. That's also the professional testing posture: platform first, phone later.

People get this wrong

A failed test call means the build is broken.

Failures in testing are the deliverable — each one (format, congruence) became a specific fix. A test with zero failures usually means you didn't push it.

The chat test is quite useful... if you're working inside of a café and you don't want to look like a psychopath talking to your laptop, having the same conversation over and over again.1:38:24
Go deeper

In one line: Emma the BrightSmile receptionist handled a wisdom-tooth call: empathy on pain, spelled-name confirmation, digit-by-digit number check, single-day availability, booking. First booking attempt failed — the number wasn't in international format — and the agent self-corrected by asking for the country code.

Learner caught a real bug: prompt said 'you are Sarah' while the welcome message said 'my name is Emma' — fix for congruence (2:39:16)

Test in-platform via audio or chat before wiring a number — 'so you don't look like a psychopath talking to your laptop in a café' (1:38:24)

▶ Watch this taught: 2:35:10

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

Why did the first booking attempt fail, and what did the agent do?

The phone number wasn't in international format; the agent self-corrected by asking for the country code and completed the booking.

What congruence bug did a learner catch?

Prompt said 'you are Sarah'; welcome message said 'Emma' — the prompt and the welcome message are separate surfaces that must agree.

How should you test before connecting a phone number?

In-platform, via audio or chat — the chat test lets you iterate the same conversation repeatedly (without monologuing at your laptop in public).

13

n8n end-of-call report pipeline

how-to2:39:16

One webhook, one filter, one append-row — and every call your agent ever takes files itself into a spreadsheet CRM.

Retell fires three webhook events per call: call_started, call_ended, and call_analyzed — the last one carrying the full analyzed payload: summary, post-call properties, caller number, recording URL. The pipeline is n8n at its most archetypal: webhook trigger receives all three events, a filter node passes only call_analyzed (exact string match — character for character), and a Google Sheets append-row node maps payload fields to columns, one row per call. The date column needs one expression — UNIX timestamp to readable UK format — which Claude wrote on request.

The Q&A revealed the advanced inversion worth remembering: Retell's INBOUND webhook fires before the agent answers, which means you can look the caller up in your CRM by number and inject their history into the prompt — the agent greets a known customer knowing who they are and what happened last time. Same webhook machinery, opposite direction.

Worked example · from the session

The live test call's row appearing in the sheet seconds after hangup: summary, extracted properties, caller number, recording link, readable date — the CRM building itself.

Do it in this order

GotchasThe filter string is the classic failure: 'call_analyzed' must match exactly, character for character, or every event (or none) passes. And build the sheet before the automation — mapping into existing columns is drag-and-drop; inventing columns mid-build is chaos.

Why it matters

This is the session's two worlds joined: the voice platform and the automation platform, glued by a webhook. Once calls are rows, everything downstream — dashboards, follow-ups, alerts — is ordinary n8n work you already know.

People get this wrong

Call data lives in Retell — you check the dashboard when you need it.

Dashboards are for debugging; businesses run on their own records. The webhook pipeline makes every call a row you own, filter, and automate against.

Retell webhook fires 3 events per call: call_started · call_ended call_analyzed Filter node keep only call_analyzed string must match character-for-character Google Sheets: append row summary · post-call properties · from-number recording URL · readable date (Claude wrote the UNIX→UK-date expression) Advanced inversion: the inbound webhook fires BEFORE the agent answers look the caller up in your CRM by number and inject their history into the prompt Every call becomes a CRM row — and the CRM can flow back into the call.
Every call becomes a CRM row — and the CRM can flow back into the call
For your projects

Webhook → filter → append-row is the exact template for a TechOnCall call log — and the inbound CRM-injection pattern is what would make an after-hours agent greet your named clients knowing their site history.

Go deeper

In one line: Retell posts three webhook events per call (call_started, call_ended, call_analyzed); filter for exactly 'call_analyzed' (string must match character-for-character), then a Google Sheets append-row node maps summary, post-call properties, from-number, recording URL, and a Claude-generated n8n expression converting the UNIX timestamp to readable UK date format.

Set up the Google Sheet (columns mirroring post-call properties) before building the automation; append-row keeps one row per call (2:45:20)

Advanced pattern from Q&A: Retell's inbound webhook fires before answering — look up the caller in your CRM by number and inject history into the prompt so the agent knows who's calling (2:59:32)

▶ Watch this taught: 2:39:16

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

Why does the filter node exist, and what's the trap?

Retell sends three events per call; only call_analyzed carries the analyzed payload. The trap: the filter string must match character-for-character.

What's the advanced use of the inbound webhook?

It fires BEFORE the agent answers — look up the caller by number in your CRM and inject their history into the prompt, so the agent knows who's calling.

14

Ecosystem Q&A: VAPI, GoHighLevel, deployment, pricing

3:03:34

The Q&A is the agency's pricing sheet and vendor scorecard read aloud: which platforms, whose Twilio account, how humans get looped in, and what the big builds look like.

Platform landscape: VAPI is Retell's nearest peer, aimed at developers — Retell recommended for starters. GoHighLevel's native voice agents are 'rubbish' — no speech, call, transcription or post-call tuning — though exporting call notes INTO GoHighLevel works fine (his agency's CRM; tutorial on his YouTube). Deployment discipline for client work: the client's own Twilio account, with you buying the number and SIP trunk on their behalf — they own their telephony; you configure it.

Human handoff has two shapes: a live-transfer function that forwards the call to a phone number, or a human_callback post-call property that triggers an n8n notification for a follow-up. External RAG beyond Retell's KB is possible — custom function → n8n → vector store — at a latency cost. And pricing scales with use-case and systems complexity: the flagship reference build was an agent for a £25M/yr UK e-commerce company, wired into product, order and ticketing databases.

Worked example · from the session

The £25M e-commerce agent as the ceiling case: the same 5-step loop as Emma, but the functions reach into three business databases — complexity, not concept, is what scales the invoice.

Why it matters

These are the commercial coordinates: which platform to stand on, how to deploy without owning client infrastructure, and proof that the skill scales from a dental demo to enterprise systems.

People get this wrong

All-in-one platforms (like GoHighLevel) mean their voice agents are good enough.

Bundled voice agents lack the tuning that makes agents production-grade (speech, call, transcription, post-call settings). Build on a dedicated platform; export the notes to the CRM.

For your projects

The client-owns-Twilio pattern is your MSP instinct formalized — clients own accounts, you hold admin. If voice agents ever enter the TechOnCall service list, that deployment model is drop-in.

  • The human_callback property + n8n notification is a general 'escalate to Paul' pattern — reusable in any agent you deploy, voice or not.
Go deeper

In one line: VAPI ≈ Retell but developer-oriented — recommend Retell for starters. GoHighLevel's native voice agents are 'rubbish' (no speech/call/transcription/post-call tuning), though call notes export to GHL fine. Client deployment: client's own Twilio account, you buy the number and SIP trunk on their behalf. Pricing scales with use-case and systems complexity — flagship build: a £25M/yr UK e-commerce agent wired to product, order, and ticketing databases.

Human handoff: live-transfer function to a phone number, or a human_callback post-call property triggering an n8n notification (2:57:30)

External RAG possible via custom function → n8n → vector store, at a latency cost (3:03:34)

▶ Watch this taught: 3:03:34

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

VAPI vs Retell — the verdict?

Roughly equivalent capability; VAPI is developer-oriented, so Retell is the starter recommendation.

How does client telephony deployment work?

The client's own Twilio account — you buy the number and set up the SIP trunk on their behalf. They own the infrastructure; you configure it.

Two ways to hand a call to a human?

Live-transfer function to a phone number mid-call, or a human_callback post-call property firing an n8n notification for follow-up.

Every concept, three clicks deep

The same concepts as a quick reference: the closed row is the glance, open is the study card, and every timestamp jumps into the recording.

01What a voice agent is (5-step pipeline)A smart assistant that understands human speech, processes requests with AI, and responds naturally: user s…0:17:11

A smart assistant that understands human speech, processes requests with AI, and responds naturally: user speaks → speech-to-text → text fed to a pre-prompted LLM → LLM outputs text → text-to-speech. Three types: inbound (receptionist/customer service), outbound (sales), and interactive assistants living inside apps (Siri-style).

02Why voice agents (the missed-call economics)UK+US businesses collectively lose ~$100B/year to missed calls;0:23:15

UK+US businesses collectively lose ~$100B/year to missed calls; leads contacted within 5 minutes are 21x more likely to convert than at 30 minutes, while the average UK business takes 4 hours; agents work 24/7 with no breaks — 'the perfect employee'.

Gartner's '90% adoption by 2027' cited with the trainer's own skepticism — directionally right, number doubtful (0:19:12)

Missed calls = wasted marketing spend and leads lost straight to the next Google result (0:33:24)

03Prompting = context + identityThe prompt is how the agent is created: who it is, what it does, how it speaks.0:27:20

The prompt is how the agent is created: who it is, what it does, how it speaks. Bad: 'you are a bot that answers questions'. Better: 'you are a friendly assistant that helps customers track orders and give clear solutions' — a handful of extra words multiplying the context/identity signal.

Agents act via APIs/connectors/bridges — 'the backdoor key to using a software or platform without physically being inside of it' — linking the agent to CRMs, databases, and apps (0:31:22)

04Retell AI platform map: what matters, what doesn'tFree signup, $10 credits, usage-based pricing (~11.5¢/min for the demo agent).0:37:26

Free signup, $10 credits, usage-based pricing (~11.5¢/min for the demo agent). Beginner-relevant: API keys (outbound only), call history, post-call properties, knowledge bases, phone numbers, webhook settings. Skippable: workspace webhooks, reliability/limits, pronunciation, boosted keywords, batch calling.

Alerting + AI quality assurance are new features; his agency pre-dated them by using Claude Code to analyze call transcripts into performance reports (0:41:31)

Call history filters by agent, number, and post-call property outputs (e.g. call_outcome = appointment_booked); each call shows recording, cost, sentiment, latency, transcript (0:45:34)

Batch calling died on arrival — Western countries banned AI cold-calling right after launch (0:51:37)

Phone numbers: buy via Twilio (any country, cheaper than Retell's resold US/CA numbers), set up a SIP trunk, register in Retell with international-format number + termination URI + credentials; connecting a number to an agent is a two-click dropdown (0:51:37)

Retell text agents judged 'not that good' — build text agents elsewhere (0:45:34)

05Knowledge bases vs prompt bloatBig chunks of information (e.g.0:55:41

Big chunks of information (e.g. 10 service descriptions) belong in an uploaded knowledge base, not the prompt: long prompts make agents more expensive, slower, and dumber. The agent searches the KB on demand; upload as markdown for best AI readability; one KB can serve multiple agents of the same business.

Retell KB is a vectorized RAG system — handles many pages fine; no filesystem/folder traversal though (2:55:29)

Token pricing: flat ~4.5¢ under 3,500 prompt tokens, then increasingly expensive (1:07:52)

06Agent builder: the settings that matterSingle-prompt agents (99% of his builds;0:59:45

Single-prompt agents (99% of his builds; conversational-flow only for methodical multi-path support calls), LLM choice, voice selection, welcome message (AI speaks first + custom text for conversational control), pause-before-speaking 0.4–0.6s, and speech/call settings each with tuned sweet spots.

Latency: aim ~900–1500ms — too high frustrates, too low breaks turn-taking and the agent interrupts active listeners ('yeah, uh-huh') (1:03:47)

Interruption sensitivity 0.75–0.85; reminder message at 15s x2; end call on silence ~90s; max call duration set sanely — he once got billed 4 hours by a caller deliberately running out the clock (1:22:07–1:32:16)

Transcription: always optimize accuracy over speed; background sounds (call center) add realism (1:26:10)

Voicemail detection (hang up, or prompt-varied messages), iOS/Android call-screening response (new), IVR auto-hangup, keypad input off (1:28:12)

LLM choice: Retell suggests GPT-5.1/4.1, but tested practice says GPT-4.1 beats GPT-5.1 for voice; Claude okay but pricey; his default is Gemini 3 Flash — ~half the cost of GPT-4.1 and faster (1:07:52)

07Voices: ElevenLabs import and multilingual agentsBrowse the ElevenLabs voice library (best/biggest selection), copy a voice ID, add as custom provider voice…1:09:54

Browse the ElevenLabs voice library (best/biggest selection), copy a voice ID, add as custom provider voice in Retell (billing unified, no double charge). Multilingual: the chosen voice must support the languages (check the '+16' tag); multi-select languages and the agent auto-switches mid-conversation at no extra cost.

Voice cloning: ~20 minutes of audio into ElevenLabs; but never trick callers into thinking they're human — GDPR/trust; his agents disclose being AI in the welcome message (3:07:40)

08The 5-core-section prompt architectureEvery agent prompt gets: role (who it is), context (who's calling and why), personality (traits plus the re…1:52:26

Every agent prompt gets: role (who it is), context (who's calling and why), personality (traits plus the reasons for them — dental anxiety), task (split into ~5 small goals so the agent doesn't get pushy about one objective), and conversation stages — explicit stage-by-stage instructions making you a 'conversational architect'. Markdown ## headers delimit sections; ** marks importance.

Support sections: inline mini knowledge base (small enough to skip a KB upload), function-usage guidelines (reinforce when/how to call functions), important notes (post-testing adjustments: one question at a time, short responses, repeat details, prioritize pain cases) (2:14:54)

Dynamic variable {{current_time_<IANA timezone>}} — without it the LLM can't resolve 'tomorrow' for function calls; ask ChatGPT for your IANA timezone (2:16:57)

09Conversation-stage tactics for transcription accuracyEngineer the conversation to raise the odds of correct data capture: ask callers to spell their name, repea…2:02:40

Engineer the conversation to raise the odds of correct data capture: ask callers to spell their name, repeat it back and don't proceed until confirmed; read phone numbers back digit by digit (never 'one twenty-six'); one question at a time; force a single specific day before calendar checks — large availability payloads confuse the agent into silence.

Announce function calls naturally ('let me just check the schedule for that day') to cover retrieval latency — also what a human would do (2:08:47)

Conditional formatting kept general (if multiple days → ask for one; if unsure → suggest earliest) — 10 hyper-specific conditions bloat and confuse (2:06:45)

10cal.com scheduling functionsRetell's built-in cal.com functions power check-availability and book-appointment: free cal.com account, co…2:18:58

Retell's built-in cal.com functions power check-availability and book-appointment: free cal.com account, connect Google Calendar, create an API key (visible exactly once — save it), create an event type (duration, location, availability, minimum notice), grab the event type ID from the URL, add both to each function with your timezone.

Confirmation field choice (phone vs email) dictates which caller details are required — phone chosen since the agent collects name + number (2:27:06)

11Post-call data extraction — descriptions are promptsFour property types (text, selector, boolean, number) extract structured data from every call (full name, r…2:29:07

Four property types (text, selector, boolean, number) extract structured data from every call (full name, reason, service, appointment_booked, call_outcome). Write each description as a full prompt with task, constraints, fallback ('return not provided'), and worked examples — the 'blank ChatGPT canvas with only the transcript' mental model — never one lazy sentence.

12Live test call (and its teachable failures)Emma the BrightSmile receptionist handled a wisdom-tooth call: empathy on pain, spelled-name confirmation,…2:35:10

Emma the BrightSmile receptionist handled a wisdom-tooth call: empathy on pain, spelled-name confirmation, digit-by-digit number check, single-day availability, booking. First booking attempt failed — the number wasn't in international format — and the agent self-corrected by asking for the country code.

Learner caught a real bug: prompt said 'you are Sarah' while the welcome message said 'my name is Emma' — fix for congruence (2:39:16)

Test in-platform via audio or chat before wiring a number — 'so you don't look like a psychopath talking to your laptop in a café' (1:38:24)

13n8n end-of-call report pipelineRetell posts three webhook events per call (call_started, call_ended, call_analyzed);2:39:16

Retell posts three webhook events per call (call_started, call_ended, call_analyzed); filter for exactly 'call_analyzed' (string must match character-for-character), then a Google Sheets append-row node maps summary, post-call properties, from-number, recording URL, and a Claude-generated n8n expression converting the UNIX timestamp to readable UK date format.

Set up the Google Sheet (columns mirroring post-call properties) before building the automation; append-row keeps one row per call (2:45:20)

Advanced pattern from Q&A: Retell's inbound webhook fires before answering — look up the caller in your CRM by number and inject history into the prompt so the agent knows who's calling (2:59:32)

14Ecosystem Q&A: VAPI, GoHighLevel, deployment, pricingVAPI ≈ Retell but developer-oriented — recommend Retell for starters.3:03:34

VAPI ≈ Retell but developer-oriented — recommend Retell for starters. GoHighLevel's native voice agents are 'rubbish' (no speech/call/transcription/post-call tuning), though call notes export to GHL fine. Client deployment: client's own Twilio account, you buy the number and SIP trunk on their behalf. Pricing scales with use-case and systems complexity — flagship build: a £25M/yr UK e-commerce agent wired to product, order, and ticketing databases.

Human handoff: live-transfer function to a phone number, or a human_callback post-call property triggering an n8n notification (2:57:30)

External RAG possible via custom function → n8n → vector store, at a latency cost (3:03:34)

Tools referenced

ToolCoverageMomentContext
Retell AIdemonstrated0:37:26The build platform end-to-end: settings tour, agent builder, prompt window, functions, post-call properties, webhooks, call history, live audio testing; heard as 'retail' throughout
ElevenLabsdemonstrated1:09:54Voice library filtering (English/British/male), voice ID copy into Retell custom provider, multilingual voice tags, voice cloning (~20 min audio) per his LinkedIn video
cal.comdemonstrated2:18:58Calendar connect, one-time-visible API key, event types, availability/limits, phone-vs-email confirmation, event type ID from URL
n8ndemonstrated2:39:16Webhook → filter (call_analyzed) → Google Sheets append-row; drag-and-drop column mapping; expression for UNIX→readable date; outbound calls via Retell API key teased for the future session
Google Sheetsdemonstrated2:45:20Stand-in CRM; columns mirror post-call properties; document by ID/URL
Google Calendardemonstrated2:21:00Connected through cal.com; live booking landed in it during the test call
Gemini 3 Flashdemonstrated1:09:54His default voice LLM — ~half GPT-4.1's cost, faster, visibly dropped cost and latency on selection
Claude / ChatGPTdemonstrated2:51:27n8n expression generation, IANA timezone lookup, post-call description drafting, and the discovery-form → first-draft-prompt meta workflow
Twilioexplained0:51:37Preferred telephony provider: buy any country's numbers, SIP trunk setup, cheaper than Retell's resold numbers; clients host their own accounts
GPT-4.1 / GPT-5.1explained1:07:52Retell's suggested models; counterintuitive tested finding: 4.1 beats 5.1 for voice work
Claude Codementioned0:43:33His agency's homegrown call-transcript analysis pipeline, pre-dating Retell's AI quality assurance feature
VAPImentioned0:37:26Comparable platform, more developer-aimed; trainer prefers Retell's UI and settings
GoHighLevelmentioned2:57:30His agency's CRM; native voice agents dismissed for lack of tuning controls; call-notes export covered on his YouTube
Sirimentioned0:17:11Example of an interactive in-app voice assistant

Session materials

Archived locally on V: — click to open. Companion pages link to the LMS.

Action items

Resources mentioned

Resources
  • docResource pack (Google Drive via LMS/circle app): inbound agent prompt, post-call property descriptions doc, Google Sheet template, n8n automation JSON 3:09:42
  • docDiscovery form + meta-prompt document — two halves (7-section client discovery form; ready-made prompt): fill the form, download as markdown, feed to Claude/ChatGPT for a first-draft voice agent prompt 3:11:43
  • docTrainer's LinkedIn/YouTube (voice cloning video, GoHighLevel export tutorial, free resources) 2:57:30
  • docYouTube search pointers: 'connect a Twilio phone number to Retell AI', 'connect Google Sheets to n8n' 0:53:38

Extraction notes

This page was built from an auto-generated transcript, which garbles product and people's names. Those were corrected silently in everything above and logged here for transparency. The warnings flag claims that were true on the recording day but change fast.

Transcript corrections applied

The transcript saysThe trainer actually means
retail / Retail AI (throughout)Retell AI
Matthew Cohan / Cohn / KohnMatthew Cohen
Oateskill / Outschool / OutscaleOutskill
GBT 5.1 / GBT 4.1GPT-5.1 / GPT-4.1
ChatGibiti / Chat2BT / Chativity / Chatubit / chat to Viti / Chatchebeet / Chatubidy / ChativitiChatGPT
any end / n e n / NAN / NEN / n 8 n / n it n / anything (tool context)n8n
calve dot com / cal dot comcal.com
11 LabsElevenLabs
Bryte / Bright Smile / BrightSmileBrightSmile Dental (fictional demo business)
1 23 High Street, Edmonddemo address (garbled, likely 'Edinburgh')
why does the still man go to the dentist... bad caseagent's joke garbled in transcription
pool (in 'why does my pool disappear')poll (Zoom poll)
Was released an open source competing solution to retaillearner question about an unnamed open-source Retell competitor (unresolved)
circle appcommunity platform for resource distribution (as stated)
I'm from Uganda (welcome message)throwaway placeholder text typed during the demo, not part of the real agent

True on recording day — verify before relying