← All sessionsHomeSearch
C7 EST | 14 Day AI Sprint·Day 6 | Create Voice Agents using Prompting That Talk Like Humans and Tech 101·4:07:00

Day 6: Voice Agents That Talk Like Humans — the 5-Step Pipeline, Retell Settings That Matter, the 5-Section Prompt, cal.com Booking, and Call Logging

Matthew Khan Day mentor - AI journalist and founder of Futureflow AI (Glasgow), an agency whose core business is voice agents; claims agents for 15+ companies and $500K+ in client revenue · Bharadwaj Host for the EST weekend sessions - Outskill program manager; housekeeping and breakout logistics

The short version

  1. A voice agent is 'a smart assistant that can understand human speech' - custom Siri that answers or makes calls. Business case: $100B/yr lost to missed calls (UK+US), leads contacted within 5 minutes convert 21x, 24/7/365 with no sick days.
  2. Mechanics: speech -> transcriber -> LLM (pre-prompted) -> text -> TTS -> speech, about 1-1.5 seconds per turn. Latency IS that gap; the demo agent ran 970-1300 ms. 'Your voice agent is only as good as your prompt' - and 'the longer your prompt the more expensive your voice agent is.'
  3. Prompt = CONTEXT (why it exists, who it talks to) + IDENTITY (how it sounds). The production template has five sections - Role, Context, Personality, Task, Conversation Flow - plus Knowledge Base, Function Usage Guidelines, Important Notes (a testing log), and a repeated current-date/time variable. Markdown headers and bold so the LLM can see structure.
  4. Settings that matter in Retell: AI speaks first; pause-before-speaking 0.4-0.6 s; interruption sensitivity 0.75-0.8; backchanneling OFF; speech normalization ON; denoise ON; optimize transcription for accuracy; end call on 1.5 min silence; max duration ~8 min; fallback voice set. Knowledge bases as separate documents to keep prompt tokens (cost) down.
  5. Booking: two separate functions (check, then book) so the agent never promises a slot it has not verified; make it confirm ONE specific day before checking - a date range returns too much data and the agent goes silent. Say a filler line before the function call to mask latency.
  6. After the call: Retell fires call_ended AND call_analyzed - filter for the second. Post-call properties (Text / Selector / Boolean / Number) extract structured fields; write each description 'as if it is a prompt in and of itself' with examples - the mistake 'even YouTube tutorials' make.

The concepts

01

The 5-step voice loop and why latency is the product

Every sentence the caller says round-trips through three models before the agent answers. If that trip takes two seconds, the caller hangs up.

Per turn: (1) the user speaks; (2) a transcriber converts speech to text; (3) the text goes to an LLM pre-prompted with a role; (4) the LLM returns text; (5) a text-to-speech model voices it. 'It does that full 5 step process in roundabout 1 second' - up to ~1.5. Latency is defined as the time between the user finishing and the agent replying; Retell shows it per agent, decomposed into ElevenLabs, GPT, and transcription shares (970-1300 ms on the demo).

Cost follows the same decomposition: ~11.5 cents/min = 0.7 cents TTS + 4.5 cents LLM (GPT-4.1) + platform; above ~3,500 prompt tokens the LLM share climbs (he has seen ~+5 cents). Hence: knowledge bases as separate documents, not pasted into the prompt. Three agent types: inbound, outbound, and 'interactive learning assistant' (his term for agents embedded in software or a device).

Why it matters

Every setting Matt recommends - pause, interruption sensitivity, filler phrases before function calls - exists to hide or shorten this loop.

One voice-agent turn in ~1-1.5 s (Day 6) - and the Retell setting tuned at each step 1 caller speaks denoise ON 2 transcriber accuracy mode 3 LLM + prompt GPT-4.1, <3.5k tokens 4 text reply normalization ON 5 text-to-speech ElevenLabs + fallback LATENCY = caller stops -> agent speaks (demo 970-1300 ms) Hide the loop pause before speaking 0.4-0.6 s interruption sensitivity 0.75-0.8 filler line before a function call Pay for the loop ~11.5 c/min = 0.7 TTS + 4.5 LLM + platform LLM share rises past ~3,500 prompt tokens knowledge in separate docs, not the prompt "Your voice agent is only as good as your prompt" - and as cheap as your prompt is short
One conversational turn as taught on Day 6: five steps in ~1-1.5 s, and the Retell settings Matt tunes at each stage.
Go deeper

In one line: Voice turn = STT -> LLM -> TTS in ~1-1.5 s; latency = user-stop to agent-speak; per-minute cost = TTS + LLM + platform, rising with prompt tokens.

Five steps per turn; ~1 to 1.5 seconds total (l3186035 0:20-0:21)

Latency = gap between user speech and agent reply; demo 970-1300 ms (l3186035 0:21, 0:58)

Cost example: 11.5 cents/min = 0.7 TTS + 4.5 LLM + platform; rises past ~3,500 tokens (l3186035 0:57-0:59)

'The longer your voice agent prompt the more expensive your voice agent is' (l3186035 0:42)

Agent types: inbound, outbound, embedded 'interactive learning assistant' (l3186035 0:22)

▶ Watch this taught:

02

Why voice agents: the three stats and the receptionist use case

Twenty-one times. That is how much more likely a lead is to convert if you call back in five minutes instead of thirty.

Three archetypes: customer service (inbound), outbound sales (call the web-form lead), inbound receptionist (today's build: BrightSmile Dental, after-hours). The numbers: UK and US businesses 'collectively lose out on 100000000000 dollars' a year to missed calls; leads contacted within 5 minutes are '21 times more likely to convert' than within 30; Gartner is cited for 90% adoption by 2027. The pitch is cost: '24/7, 365', no wages, bonuses, sick days or holidays for the lower-level calls.

And the honesty rule: aim for human-like, not deceptive - the demo agent opens 'I'm an AI agent, but I promise I'm not gonna hack your phone' and still sounds smooth. An agent that only talks well is 'pretty useless' to a business; it needs connectors (bridges, APIs - 'it all means the same sort of thing') to a CRM, a database, a calendar.

Why it matters

This is the exact after-hours receptionist pitch for Paul's small-business and hypnotherapy clients (see the MEH marketing thread in OH XII).

Go deeper

In one line: Voice agents pay for themselves on missed calls and speed-to-lead; inbound receptionist is the entry use case; connectors make them useful, disclosure keeps them honest.

Three use cases: customer service, outbound sales, inbound receptionist (l3186035 0:14)

$100B/yr lost to missed calls (UK+US); 5-minute callbacks convert 21x vs 30 (l3186035 0:15-0:16)

Gartner: 90% adoption by 2027 (cited) (l3186035 0:17)

24/7/365 availability, no HR costs (l3186035 0:18)

Disclose AI, still sound human (l3186035 0:27, 2:22)

Connectors = bridges = APIs; without actions the agent is 'pretty useless' (l3186035 0:31-0:35)

▶ Watch this taught:

03

Retell settings that matter (and the ones to leave alone)

Most of the settings panel is noise. About a dozen switches decide whether the agent feels alien or alive.

Retell is pay-as-you-go (~$10 credit on signup). Single Prompt Agent is his recommendation even for production - '90-95%' of his agency's agents - because multi-prompt/deterministic flows get stuck when callers go off-script. Model: GPT-4.1, 'still like the industry standard' despite GPT-5, Claude Sonnet and Gemini Flash 3 being listed. Voice: import an ElevenLabs voice by copying its Voice ID into Add custom voice; set a Retell-native fallback voice in case ElevenLabs is down.

His switches: AI speaks first with a custom welcome ('speaking first grants control'); pause before speaking 0.4-0.6 s so the pickup does not feel instant; responsiveness below max so it does not interrupt mid-breath; interruption sensitivity 0.75-0.8 (~2-3 words to interrupt); backchanneling OFF (overdone 'mm, yeah' sounds more robotic); speech normalization ON (fixes 'dollar 15'); pronunciation tool never worked - spell names phonetically instead; denoising ON; transcription 'optimize for accuracy'; voicemail detection and IVR hang-up ON for outbound; end call on ~1.5 min silence; max duration ~8 min; ring ~30 s; ignore default dynamic variables; leave security defaults. Knowledge bases: upload Word/Markdown as per-agent vector stores rather than inflating the prompt. Batch calling: he avoids it (AI cold-calling rules in Europe/US) and triggers outbound from n8n/CRM. Numbers arrive via Twilio elastic SIP trunk -> termination URI + SIP credentials -> Retell.

Why it matters

A copyable checklist that is the difference between a demo and something a client will leave answering the phone.

Go deeper

In one line: Single-prompt agent, GPT-4.1, ElevenLabs voice + native fallback; AI-first welcome, 0.4-0.6 s pause, interruption 0.75-0.8, backchannel off, normalization on, denoise on, accuracy mode, 1.5-min silence cutoff, ~8-min cap; knowledge in separate docs.

Single Prompt Agent for 90-95% of production - multi-prompt flows break off-script (l3186035 0:54-0:55)

GPT-4.1 recommended over newer models for voice at recording (l3186035 1:00)

Import ElevenLabs voice by Voice ID; set a Retell-native fallback (l3186035 1:01-1:02, 1:22)

AI speaks first; pause 0.4-0.6 s; interruption sensitivity 0.75-0.8; backchanneling off (l3186035 1:05-1:15)

Speech normalization on; denoise on; transcription optimized for accuracy (l3186035 1:15-1:19)

End on 1.5 min silence; max ~8 min; ring ~30 s; voicemail detection on for outbound (l3186035 1:19-1:21)

Knowledge bases as separate uploaded docs to keep tokens down (l3186035 1:11)

Numbers via Twilio elastic SIP trunk; batch calling avoided for regulatory reasons (l3186035 0:48-0:51)

▶ Watch this taught:

04

The 5-section voice prompt: Role, Context, Personality, Task, Conversation Flow

The prompt is the instruction manual. Context says why the agent exists; identity says how it sounds. Everything else is architecture.

Bad: 'You are a bot that answers questions' - zero context, zero identity. Better: 'You're a friendly assistant that helps customers track orders and gives clear instructions.' Poor prompts produce robotic replies, agents that 'get lost' off-script, and no personalization. The template he uses 'for every single agent': ROLE (name + business + purpose: 'You are Sarah, a friendly receptionist at BrightSmile Dental...'), CONTEXT (who is calling and the scenario), PERSONALITY (warm, calm, professional - tuned to the domain: empathetic for dental, no jokes for a law firm), TASK (several concrete sub-goals, not one line), CONVERSATION FLOW (the largest section - 'conversational architects'): Greeting -> Identify issue (empathy for pain) -> Collect details (full name spelled and repeated back before proceeding; phone likewise; one question at a time) -> Get availability (ask for ONE specific day; bracket notation for if/else; filler line 'let me just check the schedule' before the function call; offer 2-3 options) -> Book (only when caller and calendar agree; confirm) -> End (thank, recap, confirmation, anything else, warm close).

Extras: Knowledge Base inline only when tiny (here: services, hours, address, 30-min slots); Function Usage Guidelines because 'the LLM does NOT automatically know when to invoke a function'; Important Notes as an iteration log of small fixes found in testing ('say 15 dollars, not dollars 15'); and the current date/time dynamic variable stated at the top AND repeated at the end so calendar functions resolve dates. Formatting: # headers and **bold** so the model parses structure the way a reader parses font sizes.

Why it matters

The template transfers to any voice platform, and the 'one specific day' rule alone prevents the most common live failure.

Go deeper

In one line: Context + identity; five sections (Role, Context, Personality, Task, Conversation Flow) + Knowledge Base + Function Usage Guidelines + Important Notes + repeated date/time variable; markdown structure.

Context = purpose and audience; identity = how it sounds (l3186035 0:24-0:25)

Five sections used on every production agent (l3186035 1:51)

Collect details: spell names/numbers back and confirm before moving on (l3186035 1:57-2:00)

Ask for one specific day; ranges overload the calendar function and the agent goes silent (l3186035 2:01-2:04)

Filler phrase before a function call masks latency (l3186035 2:03)

Function Usage Guidelines: the model won't infer when to call tools (l3186035 2:01-2:02, 2:11)

Important Notes = testing log; date/time variable repeated at the end (l3186035 2:11-2:13)

▶ Watch this taught:

Check yourself

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

The caller says 'Monday, Tuesday or Wednesday works.' What should the agent do before calling Check Availability?

Ask them to pick one day. A multi-day check returns too much data and the agent can go silent - the prompt must force a single date first.

05

cal.com: two functions, one API key you see once

how-to

Check, then book - never book on faith. Two functions is how the agent avoids promising a slot that does not exist.

cal.com is free. Connect Google Calendar so bookings are visible; create an Event Type (BrightSmile Appointment, 30 min, in-person address, availability 9-5 weekdays); copy the Event Type ID (7 digits in the URL); create an API key with no expiration and copy it immediately - 'this is the only time I'm gonna be able to see this API key.' In Retell, add Check Calendar Availability and Book Calendar Appointment functions, paste key + event ID into each, set the timezone (Europe/London), assign a phone number to the agent.

The live call to 'Emma': name spelled and confirmed, phone confirmed, three days offered -> agent asked for one, two windows presented, 12 pm confirmed directly, email mis-heard once and corrected on repeat-back, booking recapped - and the appointment appeared on the connected Google Calendar.

Do it in this order
Why it matters

The same two-function pattern (verify, then commit) generalizes to any agent action with side effects.

Go deeper

In one line: cal.com event type + API key -> Retell Check Availability + Book Appointment functions with timezone; the prompt forces a single date and a confirmation before booking.

cal.com is free; Event Type ID is in the URL; API key shown once (l3186035 2:14-2:18)

Two functions: check availability, then book - prevents double-booking (l3186035 2:01-2:04, 2:19)

Set timezone on both functions (l3186035 2:19-2:20)

Live call: single-day rule, repeat-back confirmations, email correction, booking verified (l3186035 2:22-2:27)

▶ Watch this taught:

06

Post-call properties and the n8n call log (filter for call_analyzed)

how-to

Retell does not send one end-of-call report. It sends two or three - and the first one is missing everything you want.

Post-call properties extract structured fields from each call: Text (reason for call), Selector (fixed choices - call outcome: no answer / callback / didn't book / booked), Boolean (did they book?), Number. The craft rule, repeated: 'write your descriptions as if they are a prompt in and of itself' - task framing, what to focus on, a fallback ('if no reason given, return not provided'), example input/output. 'A huge mistake that I see so many people making.' Selector outcomes double as deterministic CRM pipeline-stage routing.

Logging: paste your n8n webhook URL into Retell's webhook settings. Retell fires call_ended (thin) and call_analyzed (summary, transcript, custom analysis). Workflow: Webhook -> Filter (event equals 'call_analyzed') -> Google Sheets Append Row, document by ID (the string between /d/ and the next / in the sheet URL), map columns manually from the payload - properties live in the custom_analysis_data object near the bottom, call summary just above, recording_url by search, from_number for the caller (roles reverse on outbound), Unix timestamps converted with an n8n expression.

Do it in this order
Why it matters

This turns every call into a row - the analytics layer a client actually looks at.

Go deeper

In one line: Post-call properties = Text/Selector/Boolean/Number fields extracted by prompt-quality descriptions; log via Webhook -> Filter(call_analyzed) -> Sheets Append Row.

Four property types: Text, Selector, Boolean, Number (l3186035 1:28)

Descriptions must read like standalone prompts with fallbacks and examples (l3186035 1:29-1:31)

Selector outcomes can drive CRM stage routing (l3186035 1:27)

Two+ webhook events per call; filter for call_analyzed (l3186035 2:28-2:32)

Sheet ID from the URL between /d/ and /; properties in custom_analysis_data (l3186035 2:35-2:37)

from_number = caller on inbound; Unix time converted by expression (l3186035 2:36-2:41)

▶ Watch this taught:

07

Bonus: a discovery form plus meta-prompt that writes the agent for you

Ask the client eight groups of questions, paste the answers into Claude with the second half of the document, and out comes a production-shaped prompt.

Part one, the Discovery Form: business info (name, what it does, typical customer); agent basics (inbound/outbound, main goal, who it talks to); conversation questions (what to ask, what to collect, flow); personality (tone, required phrases, forbidden topics - a dental agent never gives medical advice or diagnoses); FAQ and objection handling; differentiation; next steps after qualification; the definition of a successful call. Part two, a Claude/ChatGPT meta-prompt that ingests the filled form and outputs a complete agent prompt in the Role / Context / Personality / Task / Conversation Flow / Knowledge Base / Function Usage / Important Notes structure. Fill -> export markdown or Word -> upload with a one-line instruction. 'I've never given this out to anyone.'

Why it matters

It is Day 1's meta-prompting idea applied to a domain - and a ready client-onboarding asset for an agency.

Go deeper

In one line: Discovery Form (8 question groups) + meta-prompt = generated voice-agent prompt in the standard structure; bundled in the Day 6 Drive folder.

Form groups: business, agent basics, conversation, personality/forbidden topics, FAQ, differentiation, next steps, success definition (l3186035 2:45-2:49)

Meta-prompt emits the full 5-section-plus-extras prompt (l3186035 2:49-2:51)

Workflow: fill -> export -> upload to Claude/ChatGPT with a short instruction (l3186035 2:50-2:51)

▶ Watch this taught:

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.

01The 5-step voice loop and why latency is the productVoice turn = STT -> LLM -> TTS in ~1-1.5 s;

Voice turn = STT -> LLM -> TTS in ~1-1.5 s; latency = user-stop to agent-speak; per-minute cost = TTS + LLM + platform, rising with prompt tokens.

Five steps per turn; ~1 to 1.5 seconds total (l3186035 0:20-0:21)

Latency = gap between user speech and agent reply; demo 970-1300 ms (l3186035 0:21, 0:58)

Cost example: 11.5 cents/min = 0.7 TTS + 4.5 LLM + platform; rises past ~3,500 tokens (l3186035 0:57-0:59)

'The longer your voice agent prompt the more expensive your voice agent is' (l3186035 0:42)

Agent types: inbound, outbound, embedded 'interactive learning assistant' (l3186035 0:22)

02Why voice agents: the three stats and the receptionist use caseVoice agents pay for themselves on missed calls and speed-to-lead;

Voice agents pay for themselves on missed calls and speed-to-lead; inbound receptionist is the entry use case; connectors make them useful, disclosure keeps them honest.

Three use cases: customer service, outbound sales, inbound receptionist (l3186035 0:14)

$100B/yr lost to missed calls (UK+US); 5-minute callbacks convert 21x vs 30 (l3186035 0:15-0:16)

Gartner: 90% adoption by 2027 (cited) (l3186035 0:17)

24/7/365 availability, no HR costs (l3186035 0:18)

Disclose AI, still sound human (l3186035 0:27, 2:22)

Connectors = bridges = APIs; without actions the agent is 'pretty useless' (l3186035 0:31-0:35)

03Retell settings that matter (and the ones to leave alone)Single-prompt agent, GPT-4.1, ElevenLabs voice + native fallback;

Single-prompt agent, GPT-4.1, ElevenLabs voice + native fallback; AI-first welcome, 0.4-0.6 s pause, interruption 0.75-0.8, backchannel off, normalization on, denoise on, accuracy mode, 1.5-min silence cutoff, ~8-min cap; knowledge in separate docs.

Single Prompt Agent for 90-95% of production - multi-prompt flows break off-script (l3186035 0:54-0:55)

GPT-4.1 recommended over newer models for voice at recording (l3186035 1:00)

Import ElevenLabs voice by Voice ID; set a Retell-native fallback (l3186035 1:01-1:02, 1:22)

AI speaks first; pause 0.4-0.6 s; interruption sensitivity 0.75-0.8; backchanneling off (l3186035 1:05-1:15)

Speech normalization on; denoise on; transcription optimized for accuracy (l3186035 1:15-1:19)

End on 1.5 min silence; max ~8 min; ring ~30 s; voicemail detection on for outbound (l3186035 1:19-1:21)

Knowledge bases as separate uploaded docs to keep tokens down (l3186035 1:11)

Numbers via Twilio elastic SIP trunk; batch calling avoided for regulatory reasons (l3186035 0:48-0:51)

04The 5-section voice prompt: Role, Context, Personality, Task, Conversation FlowContext + identity;

Context + identity; five sections (Role, Context, Personality, Task, Conversation Flow) + Knowledge Base + Function Usage Guidelines + Important Notes + repeated date/time variable; markdown structure.

Context = purpose and audience; identity = how it sounds (l3186035 0:24-0:25)

Five sections used on every production agent (l3186035 1:51)

Collect details: spell names/numbers back and confirm before moving on (l3186035 1:57-2:00)

Ask for one specific day; ranges overload the calendar function and the agent goes silent (l3186035 2:01-2:04)

Filler phrase before a function call masks latency (l3186035 2:03)

Function Usage Guidelines: the model won't infer when to call tools (l3186035 2:01-2:02, 2:11)

Important Notes = testing log; date/time variable repeated at the end (l3186035 2:11-2:13)

05cal.com: two functions, one API key you see oncecal.com event type + API key -> Retell Check Availability + Book Appointment functions with timezone;

cal.com event type + API key -> Retell Check Availability + Book Appointment functions with timezone; the prompt forces a single date and a confirmation before booking.

cal.com is free; Event Type ID is in the URL; API key shown once (l3186035 2:14-2:18)

Two functions: check availability, then book - prevents double-booking (l3186035 2:01-2:04, 2:19)

Set timezone on both functions (l3186035 2:19-2:20)

Live call: single-day rule, repeat-back confirmations, email correction, booking verified (l3186035 2:22-2:27)

06Post-call properties and the n8n call log (filter for call_analyzed)Post-call properties = Text/Selector/Boolean/Number fields extracted by prompt-quality descriptions;

Post-call properties = Text/Selector/Boolean/Number fields extracted by prompt-quality descriptions; log via Webhook -> Filter(call_analyzed) -> Sheets Append Row.

Four property types: Text, Selector, Boolean, Number (l3186035 1:28)

Descriptions must read like standalone prompts with fallbacks and examples (l3186035 1:29-1:31)

Selector outcomes can drive CRM stage routing (l3186035 1:27)

Two+ webhook events per call; filter for call_analyzed (l3186035 2:28-2:32)

Sheet ID from the URL between /d/ and /; properties in custom_analysis_data (l3186035 2:35-2:37)

from_number = caller on inbound; Unix time converted by expression (l3186035 2:36-2:41)

07Bonus: a discovery form plus meta-prompt that writes the agent for youDiscovery Form (8 question groups) + meta-prompt = generated voice-agent prompt in the standard structure;

Discovery Form (8 question groups) + meta-prompt = generated voice-agent prompt in the standard structure; bundled in the Day 6 Drive folder.

Form groups: business, agent basics, conversation, personality/forbidden topics, FAQ, differentiation, next steps, success definition (l3186035 2:45-2:49)

Meta-prompt emits the full 5-section-plus-extras prompt (l3186035 2:49-2:51)

Workflow: fill -> export -> upload to Claude/ChatGPT with a short instruction (l3186035 2:50-2:51)

Tools referenced

ToolCoverageMomentContext
Retell AIdemonstratedFull platform walkthrough, agent build, live call
ElevenLabsdemonstratedVoice import by Voice ID; TTS cost share
cal.comdemonstratedEvent type + API key -> Retell functions
Google CalendardemonstratedConnected to cal.com; booking verified
n8ndemonstratedWebhook -> Filter -> Sheets call log
Google SheetsdemonstratedPer-call row destination
TwilioexplainedNumbers + elastic SIP trunk
OpenAI APIexplainedGPT-4.1 as the voice LLM
ClaudeexplainedRuns the discovery-form meta-prompt
VapimentionedNamed only as a slip/contrast to Retell

Action items

    Resources mentioned

    Resources
    • docDay 6 resource folder (Google Drive)
    • docDeferred to YouTube

    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 AI / RetailRetell AI
    NAN / any end / N E Nn8n
    11 Labs / Living LabsElevenLabs
    Bryte DentalBrightSmile Dental (fictitious demo practice)
    Matt Cohen / ConnMatt Cohn (demo caller name he spelled on the call)
    0.9, so an extra 5 centsLLM share rising to ~9 cents/min from 4.5

    True on recording day — verify before relying