AI Voice Agents

AI Voice SDR Handbook

A comprehensive guide for designing, deploying, and optimizing AI Voice agents in marketing automation systems.


Preface: The Philosophy of AI Voice in Sales

The telephone is the most intimate marketing channel. Unlike email (asynchronous, skimmable) or ads (passive, interruptible), a phone call demands presence. The prospect must stop what they're doing and engage in real-time dialogue.

This intimacy is both the opportunity and the constraint.

AI Voice SDR is not about replacing human salespeople. It's about deploying the right intelligence at the right moment in the buyer journey-at speeds and scales humans cannot match, for interactions where human judgment is not the bottleneck.

The core insight: Speed and availability beat persuasion for most qualification conversations.

A form fill at 2:47 PM from a prospect actively researching solutions has a 10-minute half-life. Every minute that passes, intent decays. A human SDR checking their queue at 3:30 PM is already 43 minutes late. The AI that calls in 90 seconds captures the prospect at peak intent.

This is not a document about AI replacing humans. It's about AI creating opportunities that humans can close.


Part 1: Foundations

1.1 What AI Voice SDR Is (and Isn't)

What It Is

AI Voice SDR is a conversational agent deployed via telephone that:

  1. Qualifies prospects against defined criteria
  2. Collects information required to advance the sale
  3. Routes opportunities to appropriate next steps (agreement, human, nurture)
  4. Handles common objections and questions within defined bounds

It operates as an intelligent filter and accelerator-not a closer.

What It Isn't

It is not a closer. Complex negotiations, high-stakes objections, and relationship-dependent sales require human judgment. The AI's job is to ensure humans spend their time on qualified, ready opportunities-not on discovery calls that go nowhere.

It is not an IVR. Interactive Voice Response systems route calls through menu trees. AI Voice SDR engages in natural dialogue, understanding intent and responding dynamically.

It is not a chatbot on a phone line. Text-based conversational patterns fail in voice. Voice requires different pacing, turn-taking, and information density.

It is not a replacement for strategy. An AI can only execute a strategy-it cannot create one. Poor targeting, weak offers, or misaligned incentives will produce poor results regardless of how sophisticated the AI is.

The Capability Spectrum

Low Complexity                                              High Complexity
     │                                                              │
     ▼                                                              ▼
┌─────────┬──────────────┬───────────────┬──────────────┬──────────────┐
│ Confirm │   Qualify    │    Handle     │   Consult    │   Negotiate  │
│  Info   │   Fit/Need   │   Objections  │   Advise     │   Close      │
└─────────┴──────────────┴───────────────┴──────────────┴──────────────┘
     │                         │                              │
     └─────── AI ZONE ─────────┘                              │

                               └────────── HUMAN ZONE ────────┘

AI excels at the left side of the spectrum. Humans are required for the right. The boundary between "Handle Objections" and "Consult/Advise" is where most handoffs should occur.


1.2 Deployment Contexts

Every AI Voice deployment exists along two axes:

Axis 1: Direction (Inbound vs. Outbound)

Inbound: The prospect initiates contact. They have intent. Your job is to capture and qualify that intent efficiently.

  • Higher baseline conversion (they called you)
  • Unknown context (why are they calling?)
  • Expectation of immediate help
  • Risk: Misrouting, failure to identify intent

Outbound: You initiate contact. The prospect may or may not have context.

  • Lower baseline conversion (you're interrupting)
  • Known context (you chose when and why to call)
  • Expectation must be established
  • Risk: Annoyance, wrong timing, no answer

Axis 2: Temperature (Cold vs. Warm)

Cold: No prior interaction. They don't know you.

  • Must establish credibility immediately
  • Must earn the right to ask questions
  • High resistance, low trust
  • Requires strong relevance signal in opener

Warm: Prior interaction exists. They have context.

  • Can reference shared context
  • Permission to engage is partially granted
  • Lower resistance, baseline trust established
  • Relevance signal is the prior interaction itself

The 2x2 Matrix

                    INBOUND                    OUTBOUND
              ┌─────────────────────┬─────────────────────┐
              │                     │                     │
    COLD      │  Rare (misdials,    │  Classic cold       │
              │  general inquiries) │  calling            │
              │                     │                     │
              ├─────────────────────┼─────────────────────┤
              │                     │                     │
    WARM      │  Form fills,        │  Follow-up calls,   │
              │  ad responses,      │  re-engagement,     │
              │  email signature    │  positive reply     │
              │  callbacks          │  callbacks          │
              │                     │                     │
              └─────────────────────┴─────────────────────┘

Warm Inbound is the highest-leverage deployment. The prospect has raised their hand AND is calling you. Conversion rates of 40-60% to next step are achievable.

Warm Outbound is the second-highest leverage. You're calling someone who engaged but didn't complete. They need a nudge, not a pitch.

Cold Outbound is viable but requires careful design. You're interrupting someone who didn't ask to be called. The AI must earn attention in the first 10 seconds.

Cold Inbound is rare but must be handled. Someone calls your number with no context-wrong number, general inquiry, or transferred from elsewhere.


1.3 Success Metrics and Benchmarks

Primary Metrics

MetricDefinitionWhy It Matters
Connection RateCalls answered / Calls attemptedUpstream constraint-you can't convert if they don't answer
Qualification RateQualified leads / Connected callsCore agent effectiveness measure
Conversion RateNext-step completions / Qualified leadsAgreement sent, meeting booked, etc.
Completion RateCalls reaching intended end state / Connected callsDid the conversation complete or drop?
Average Handle TimeMean duration of completed callsEfficiency indicator (shorter is usually better)

Secondary Metrics

MetricDefinitionWhy It Matters
Drop-off by StageWhere in the conversation do calls end?Identifies friction points
Objection FrequencyWhich objections appear most often?Input for script optimization
Human Escalation RateCalls requiring human handoff / Total callsIndicates edge case volume
Data AccuracyFields correctly captured / Fields attemptedEspecially critical for email
Speed to ContactTime from trigger to connected callFor outbound, this is often the most important metric

Benchmark Ranges

These vary significantly by industry, lead source, and offer. Use as directional guidance, not absolute targets.

ContextConnection RateQualification RateConversion Rate
Warm Inbound (form fill)70-90%50-70%40-60%
Warm Outbound (positive reply)30-50%40-60%30-50%
Warm Outbound (engaged non-reply)20-35%30-50%20-40%
Cold Outbound10-25%20-40%15-30%

The Speed-to-Lead Imperative

For inbound form fills, speed is the dominant variable:

Response TimeRelative Contact RateRelative Qualification Rate
< 1 minute1.0x (baseline)1.0x (baseline)
1-5 minutes0.8x0.9x
5-30 minutes0.5x0.6x
30-60 minutes0.3x0.4x
> 1 hour0.1x0.2x

The implication is clear: AI's ability to call within seconds is often more valuable than any prompt optimization. A mediocre script at 30 seconds beats a perfect script at 30 minutes.


1.4 The Awareness Spectrum in Voice Context

Eugene Schwartz's awareness levels apply directly to AI Voice deployment. The prospect's awareness level determines:

  1. What context you can assume
  2. How much education is required
  3. What the call's objective should be

The Five Levels Applied to Voice

Level 1: Unaware The prospect doesn't know they have a problem.

AI Voice role: Limited. Cold calling unaware prospects with AI is low-yield. Better to use content/ads to create awareness first.

If you must: Lead with a question that surfaces latent pain. "Quick question-have you ever had [specific problem]?"

Level 2: Problem-Aware The prospect knows they have a problem but doesn't know solutions exist.

AI Voice role: Problem amplification + solution introduction. Connect their pain to your category.

Approach: Validate the problem, then introduce the solution category. "Yeah, that's actually why most [type] end up calling us. There's a way to fix that."

Level 3: Solution-Aware The prospect knows solutions exist but doesn't know your specific solution.

AI Voice role: Differentiation. Why you vs. alternatives?

Approach: Acknowledge alternatives exist, then position your mechanism/differentiator. "Most vendors do X-we do Y instead, which means [benefit]."

Level 4: Product-Aware The prospect knows your solution but hasn't decided to buy.

AI Voice role: Objection handling + friction removal. What's stopping them?

Approach: Surface objections, address them, make next step easy. "What questions do you have?" / "What would you need to see to move forward?"

Level 5: Most Aware The prospect is ready to buy; they just need a mechanism.

AI Voice role: Transaction facilitation. Make it easy to say yes.

Approach: Minimal selling, maximum ease. "I can send the agreement now and you can sign whenever you're ready. What's the best email?"

Matching Call Design to Awareness

Awareness LevelCall ObjectivePrimary Script FocusTypical Lead Source
UnawareCreate curiosityProblem questionsCold list
Problem-AwareConnect problem to solutionEducation + qualificationCold list, some referrals
Solution-AwareDifferentiateProof + mechanismComparison shoppers
Product-AwareOvercome objectionsObjection handlingEngaged but stalled
Most AwareFacilitate transactionCollect info, send agreementForm fills, positive replies

Critical insight: Most AI Voice deployments should target Level 4-5 prospects. These are warm leads where the AI's limitations (no deep consultative ability) don't matter, and its strengths (speed, consistency, availability) are maximized.

Deploying AI against Level 1-2 prospects is possible but requires exceptional scripting and should be considered advanced.


Part 2: Strategic Deployment

2.1 When to Use AI Voice vs. Other Channels

The channel selection framework considers four variables:

Variable 1: Lead Temperature

TemperatureBest ChannelWhy
Hot (form fill, requested call)AI Voice (immediate)Speed captures peak intent
Warm (engaged, didn't convert)AI Voice (follow-up)Phone breaks through inbox noise
Cool (opened emails, no action)Email + Phone escalationLower intent, test with low-cost channel first
Cold (no prior engagement)Email first, Phone if engagedDon't burn phone as first touch

Variable 2: Information Complexity

ComplexityBest ChannelWhy
Simple (binary qualification)AI VoiceFast, immediate, personal
Moderate (3-5 data points)AI Voice or FormDepends on lead temperature
Complex (consultative discovery)HumanAI can't navigate nuance
Transactional (send agreement)AI Voice → Email deliveryHybrid: qualify by phone, deliver by email

Variable 3: Urgency

UrgencyBest ChannelWhy
Immediate (hot intent)AI VoiceSub-minute response required
Same-dayAI Voice or EmailDepends on complexity
Low urgencyEmailLet them engage on their schedule

Variable 4: Cost per Contact

VolumeCost Consideration
< 100 leads/dayCost differential negligible, optimize for conversion
100-1000 leads/dayPhone for high-temp, email for low-temp
> 1000 leads/dayEmail + AI Voice for engaged subset

The Decision Matrix

function selectChannel(lead: Lead): Channel {
  // Hot leads always get phone
  if (lead.temperature === 'hot' && lead.source === 'form_fill') {
    return 'ai_voice_immediate';
  }
  
  // Warm leads with phone number get phone follow-up
  if (lead.temperature === 'warm' && lead.phone && lead.emailEngagement > 0) {
    return 'ai_voice_followup';
  }
  
  // Cool leads start with email
  if (lead.temperature === 'cool') {
    return 'email_sequence';
  }
  
  // Cold leads start with email, escalate to phone if engaged
  if (lead.temperature === 'cold') {
    return 'email_then_phone_if_engaged';
  }
  
  return 'email_sequence'; // Default
}

2.2 Funnel Placement: Where AI Voice Creates Leverage

High-Leverage Deployments

1. Instant Callback on Form Fills

Trigger: Form submission Timing: < 60 seconds Context: Full form data available Goal: Qualify + send agreement/book meeting

This is the highest-ROI deployment. Form fills represent peak intent. Speed dominates all other variables.

[Form Submit] → [Trigger] → [AI Call < 60s] → [Qualify] → [Send Agreement]

                                                └→ [Disqualify] → [Nurture]

2. Positive Email Reply Callback

Trigger: Positive reply detected (manual or AI classification) Timing: 3 to 5 minutes Context: Email conversation history, possibly phone from signature Goal: Capitalize on expressed interest

The prospect raised their hand. Calling immediately while they're thinking about you dramatically increases conversion.

[Positive Reply] → [Extract Phone] → [AI Call < 5m] → [Qualify] → [Send Agreement]

                         └→ [No Phone] → [Reply asking for phone or continue email]

3. Inbound to Marketing Number

Trigger: Inbound call to number in marketing materials Timing: Real-time (they're calling you) Context: They saw your marketing, unknown specifics Goal: Identify intent, qualify, route

Someone took the action of dialing. They have intent. The AI qualifies and routes.

[Inbound Call] → [AI Answers] → [Identify Intent] → [Qualify] → [Route/Close]

                                       └→ [Wrong Number / Service Issue] → [Handle/Escalate]

4. Follow-up on Engaged Non-Responders

Trigger: Opened 2+ emails, no reply Timing: After email sequence completes (Day 12+) Context: They engaged (opened) but didn't act Goal: Break through inbox fatigue, surface objections

Email opens without reply suggests interest with friction. Phone surfaces what email couldn't.

[Sequence Complete] → [Filter: 2+ Opens] → [Has Phone?] → [AI Follow-up Call]

                                                └→ [No Phone] → [Re-engage Email or Move to Nurture]

5. Re-engagement of Stale Opportunities

Trigger: Time-based (30/60/90 days since last contact) Timing: Scheduled Context: Prior qualification data, previous objection Goal: Check if circumstances changed

Previously qualified leads who didn't close often have timing objections. Periodic check-ins surface ready buyers.

[90 Days Since Close Lost] → [AI Re-engagement Call] → [Still Interested?] → [Requalify]

                                                              └→ [No] → [Extend Interval or Remove]

Lower-Leverage Deployments (Use Selectively)

Cold Calling (No Prior Touch)

Viable but lower conversion. The AI must earn attention with no prior context. Best reserved for:

  • Highly targeted lists with strong relevance signals
  • Industries where cold calling is normative (some local services)
  • When you have excess calling capacity

Post-Sale Onboarding

Operationally valuable, not lead generation. AI can confirm details, schedule appointments, answer common questions. Reduces human burden on repetitive onboarding tasks.

Post-No-Answer Voicemail + SMS

Extends reach of outbound attempts. When AI calls and no one answers:

  1. Leave 15-second voicemail
  2. Immediately send SMS

This combo often outperforms multiple call attempts.


2.3 Lead Source → Agent Behavior Mapping

Different lead sources provide different context. The agent's behavior must adapt to available information and implied intent.

The Context Principle

The more context you have, the more direct you can be. The less context you have, the more you must discover.

Lead Source Matrix

Lead SourceAvailable DataLead's ContextOpener StrategyQualification Depth
Paid Ad Form FillName, email, phone, company, form responsesHigh-they just filled out a form about your thingDirect confirmationLight-they pre-qualified via form
Organic Form FillName, email, phone, maybe companyMedium-they sought you outAcknowledge source, clarify intentMedium-verify fit
Cold Email Positive ReplyName, email, maybe phone from signatureMedium-they responded to your emailReference the emailMedium-they're interested but not qualified
Cold Email Non-Response Follow-upName, email, campaign dataLow-they didn't respondReference emails, offer new angleFull-assume nothing
Inbound to Marketing NumberCaller ID onlyVariable-they called for some reasonClarify why they're callingFull-start from scratch
Cold Call (No Prior)Whatever you scrapedNone-you're interruptingEarn attention immediatelyFull-you know nothing
Referral / Warm IntroReferrer name, basic contextMedium-someone vouched for youLead with referrerMedium-trust is higher
Re-engagement (Stale)Full history from CRMFull-you've talked beforeAcknowledge gap, check for changeLight-reconfirm previous qualification

Adapting the Opener

function generateOpener(lead: Lead): string {
  switch (lead.source) {
    case 'paid_ad_form':
      return `Hey, is this ${lead.firstName}? Great-calling about the form you just filled out for ${lead.formTopic}. Got a quick second?`;
    
    case 'organic_form':
      return `Hey ${lead.firstName}, this is [Agent] from [Company]. You reached out through our website-wanted to see how I can help.`;
    
    case 'cold_email_positive_reply':
      return `Hey, this is [Agent]-you just replied to my email about [topic]. Got a minute?`;
    
    case 'cold_email_followup':
      return `Hey ${lead.firstName}, this is [Agent] from [Company]. I sent you a few emails about [topic]-figured a quick call might be easier. Got 30 seconds?`;
    
    case 'inbound_marketing_number':
      return `Hey, this is [Agent]-you calling about [most likely reason based on number placement]?`;
    
    case 'cold_call':
      return `Hey, quick question-[highly relevant question that earns attention]?`;
    
    case 'referral':
      return `Hey ${lead.firstName}, this is [Agent] from [Company]. ${lead.referrerName} suggested I reach out-got a minute?`;
    
    case 'reengagement':
      return `Hey ${lead.firstName}, this is [Agent] from [Company]. We talked a few months back about [topic]. Wanted to check if anything's changed on your end.`;
    
    default:
      return `Hey, this is [Agent] from [Company]. How can I help you?`;
  }
}

2.4 Multi-Channel Sequence Design

AI Voice is most powerful as part of an orchestrated multi-channel sequence, not as a standalone touchpoint.

The Orchestration Principle

Use low-cost channels to create context, then deploy high-cost channels to capitalize on engagement.

Email is cheap. Phone is expensive (in attention, not just cost). Use email to:

  1. Create familiarity (they've seen your name)
  2. Test messaging (what resonates?)
  3. Signal intent (opens, clicks, replies)

Use phone to:

  1. Capitalize on signaled intent
  2. Break through when email fails
  3. Add urgency when timing matters

Sequence Architecture Patterns

Pattern 1: Email-Led with Phone Escalation

Day 1:  Email 1 (cold touch)
Day 4:  Email 2 (follow-up, new angle)
Day 9:  Email 3 (final value + graceful exit)
Day 12: [If opened 2+ emails] AI Voice Follow-up
Day 12: [If no engagement] Move to nurture

This pattern uses email to warm and test, then phone to convert the engaged subset.

Pattern 2: Instant Callback with Email Backup

Trigger:     Form submission
Immediate:   AI Voice Call (attempt 1)
+5 minutes:  [If no answer] SMS + Voicemail
+30 minutes: [If no answer] AI Voice Call (attempt 2)
+2 hours:    [If no answer] Email with booking link
+24 hours:   AI Voice Call (attempt 3)
+48 hours:   [If no contact] Enter email nurture sequence

This pattern prioritizes phone for hot leads but ensures email captures those who prefer asynchronous.

Pattern 3: Parallel Warm-up

Day 1: Email 1 + LinkedIn connection request + AI Voice Call (attempt 1)
Day 2: [If call connected] Continue on phone
Day 2: [If no answer] LinkedIn message
Day 4: Email 2 + AI Voice Call (attempt 2)
Day 7: Email 3 (reference all channels)

For high-value targets, parallel multi-channel creates omnipresence. "I've emailed, called, and messaged-clearly I want to talk to you."

Channel Transition Logic

interface SequenceState {
  emailsSent: number;
  emailsOpened: number;
  callsAttempted: number;
  callsConnected: number;
  smssSent: number;
  lastContactDate: Date;
  leadStatus: 'new' | 'engaged' | 'stale' | 'converted' | 'disqualified';
}

function determineNextAction(state: SequenceState, lead: Lead): Action {
  // Hot lead with no contact yet → keep calling
  if (lead.temperature === 'hot' && state.callsConnected === 0 && state.callsAttempted < 3) {
    return { action: 'call', delay: calculateCallDelay(state.callsAttempted) };
  }
  
  // Engaged in email but no call connection → try phone
  if (state.emailsOpened >= 2 && state.callsAttempted === 0 && lead.phone) {
    return { action: 'call', delay: 0 };
  }
  
  // Multiple call attempts, no answer → SMS + voicemail combo
  if (state.callsAttempted >= 2 && state.callsConnected === 0) {
    return { action: 'sms_voicemail', delay: 0 };
  }
  
  // Email sequence incomplete → continue email
  if (state.emailsSent < 3) {
    return { action: 'email', delay: getEmailInterval(state.emailsSent) };
  }
  
  // Sequence complete, no engagement → nurture
  if (state.emailsSent >= 3 && state.emailsOpened === 0 && state.callsConnected === 0) {
    return { action: 'move_to_nurture', delay: 0 };
  }
  
  // Default: wait and reassess
  return { action: 'wait', delay: 86400000 }; // 24 hours
}

The Voicemail + SMS Combo

When outbound calls go unanswered, the voicemail + SMS combo extends reach:

Voicemail (15 seconds max):

"Hey [Name], this is [Agent] from [Company]. Quick question about [topic]-
give me a call back at [number] or just text me. Thanks."

SMS (sent immediately after voicemail):

Hey-just left you a voicemail about [topic]. 
[One-line value prop]. 
Text me back if you want the details.

Why this works:

  • Voicemail = social proof (you called, you're real)
  • SMS = low-friction response mechanism
  • Combination = 2 touches in 30 seconds

2.5 Timing and Availability Strategy

When you call matters almost as much as what you say.

Time-of-Day Considerations

Time WindowConnection RateQualityBest For
8-9 AMMediumHigh (decision-makers available before meetings)B2B executives
9 AM - 12 PMHighHighGeneral business
12-2 PMLowMedium (lunch, distracted)Avoid if possible
2-5 PMHighMedium-HighGeneral business
5-7 PMMediumVariableLocal services, consumer
7-9 PMLow-MediumLow (personal time)Only if explicitly preferred

Day-of-Week Considerations

DayRelative PerformanceNotes
Monday0.8xCatching up from weekend, meetings
Tuesday1.1xBest day for B2B
Wednesday1.1xBest day for B2B
Thursday1.0xGood, starts tapering
Friday0.7xChecked out, weekend mode
Saturday0.3x (B2B) / 0.9x (Consumer)Avoid for business, okay for consumer
Sunday0.2x (B2B) / 0.8x (Consumer)Avoid for business

Industry-Specific Timing

Restaurants: Avoid 11 AM - 2 PM and 5 PM - 9 PM (service hours). Best: 2-4 PM, 9-10 AM.

Retail: Avoid weekends and evenings. Best: Tuesday-Thursday, 10 AM - 4 PM.

Professional Services: Standard business hours. Best: Tuesday-Thursday, 9 AM - 11 AM, 2 PM - 4 PM.

Local Services (Home): Homeowners available evenings/weekends. Best: 5-7 PM, Saturday morning.

Speed vs. Optimal Timing

For warm inbound leads, speed beats optimal timing. Call immediately regardless of time of day (within legal calling hours).

For cold outbound, optimal timing beats speed. Wait for the right window.

function shouldCallNow(lead: Lead, currentTime: Date): boolean {
  // Always call hot leads immediately (within legal hours)
  if (lead.temperature === 'hot') {
    return isWithinLegalCallingHours(currentTime, lead.timezone);
  }
  
  // Cold leads: wait for optimal window
  if (lead.temperature === 'cold') {
    return isOptimalCallingWindow(currentTime, lead.timezone, lead.industry);
  }
  
  // Warm leads: call during business hours
  return isWithinBusinessHours(currentTime, lead.timezone);
}

Part 3: Conversation Design

3.1 Core Principles of Voice Conversation

Voice is fundamentally different from text. Patterns that work in chatbots fail on the phone. Understanding why requires understanding the medium.

The Constraints of Voice

Linearity: Voice is strictly linear. The prospect cannot skim, skip ahead, or re-read. Every word must earn its place in sequence.

Ephemerality: Spoken words disappear immediately. Complex information isn't retained. The prospect cannot "scroll up" to remember what you said.

Cognitive Load: Listening requires active attention. Long monologues exhaust working memory. Questions stack up and overwhelm.

Social Pressure: Silence on a phone call is uncomfortable. There's pressure to respond, even without full comprehension.

Interruption: Unlike text, voice can be interrupted mid-thought. The agent must handle being cut off gracefully.

The Principles That Follow

Principle 1: Short Turns

Never speak more than 2 sentences (roughly 15-20 words) without inviting response.

Why: Working memory can hold ~7 items. Two sentences = ~2-3 ideas = safely within capacity. More than that and the beginning is forgotten by the end.

❌ Bad (Too Long):
"Great, so I'll send over the service agreement which includes all the 
details about pricing, pickup schedules, container options, and rebate 
structures, and once you've had a chance to review it you can sign 
digitally through the link, and if you have any questions you can call 
this number or reply to the email."

✓ Good (Chunked):
"Great-I'll send over the service agreement now."
[pause for acknowledgment]
"Once you've looked it over, you can sign right from the email."
[pause]
"Any questions, just call this number back."

Principle 2: One Question at a Time

Never ask multiple questions in a single turn. The prospect will answer one (usually the last) and forget the others.

❌ Bad (Stacked Questions):
"How many fryers are you running and how often do you change the oil?"

✓ Good (Sequential):
"How many fryers are you running?"
[wait for answer]
"And how often do you change the oil?"

Principle 3: Linear Flow

Design conversations to progress in a straight line. Branching should be minimal and always return to the main path.

The prospect should never wonder "where is this going?" The next step should feel inevitable.

Opening → Qualification → Offer → Collection → Close
   │           │           │          │         │
   └───────────┴───────────┴──────────┴─────────┘
              (Always moving forward)

Principle 4: Signal Before Request

Before asking for something, explain why you need it or what they'll get.

❌ Bad (Request Without Context):
"What's your email address?"

✓ Good (Signal Then Request):
"I'll send over the agreement now-what's the best email?"

The "I'll send over the agreement" signals why email is needed. The request follows naturally.

Principle 5: Acknowledge Before Advancing

When the prospect provides information, acknowledge it before moving on. This confirms receipt and maintains rapport.

❌ Bad (No Acknowledgment):
Prospect: "We've got four fryers."
Agent: "How often do you change the oil?"

✓ Good (Acknowledgment):
Prospect: "We've got four fryers."
Agent: "Got it-four fryers. And how often do you change the oil?"

Principle 6: Recover Gracefully

Conversations will go off-script. The agent must have patterns for redirecting without making the prospect feel dismissed.

Prospect: "Wait, before we continue-how much is this going to cost?"

Agent: "Good question. The exact pricing depends on your volume-I'll 
cover that in just a second. Let me just get one more detail first 
so I can give you an accurate number. How often do you change the oil?"

3.2 The Minimum Viable Phone Data Framework

Every piece of information you collect on the phone adds friction. Friction causes drop-off. The framework optimizes for minimum collection while ensuring you can execute the next step.

The Core Question

"What is the minimum information needed to deliver the next step?"

Everything else can be collected downstream (forms, follow-up, CRM enrichment).

The Three Categories

Category 1: Must Have (Collect on Phone)

Information required to:

  • Qualify/disqualify the lead
  • Deliver the next step (send agreement, book meeting)
  • Identify them in your system
interface MustHaveData {
  qualification: {
    // Information needed to determine if they're a fit
    // Example: service area, volume threshold, decision-maker status
  };
  delivery: {
    // Information needed to deliver next step
    // Example: email address (if sending agreement)
  };
  identification: {
    // Minimum info to find them later
    // Example: first name + company OR first name + phone
  };
}

Category 2: Nice to Have (Collect If Low Friction)

Information that helps but isn't essential:

  • Company/restaurant name (for CRM)
  • Title (for personalization)
  • Timeline (for prioritization)

Collect only if:

  • The conversation naturally goes there
  • They're engaged and not rushing
  • You can frame it as helpful to them

Category 3: Form Handles (Don't Collect on Phone)

Information that:

  • Is error-prone over voice (addresses, complex names)
  • Adds significant call length
  • The form will capture anyway
  • Can be enriched from other sources

Examples:

  • Full address (autofill helps them, error-prone for you)
  • Last name (form captures, you have first name)
  • Phone (you have caller ID on inbound, or you called them)
  • Full legal business name (form captures)

The Trade-Off Calculation

Phone Friction Cost = (questions asked) × (avg seconds per question) × (drop-off risk per question)
Form Friction Cost = (empty fields) × (completion difficulty) × (abandonment risk per field)

Research suggests:

  • Each phone question adds 10-20 seconds and ~5% drop-off risk
  • Each form field adds ~5-10% abandonment risk
  • Pre-filled form fields reduce abandonment by 25-50%

The implication: If you can pre-fill 3 fields but add 3 questions, you've roughly broken even on friction but moved it to a worse context (phone, where attention is scarcer).

The heuristic: When in doubt, let the form handle it.

Implementation by Lead Source

Lead SourceMust CollectNice to HaveLet Form Handle
Paid Ad Form FillConfirmation onlyClarificationsAlready have most data
Organic InboundQualification, emailCompany nameAddress, full name, title
Cold Email ReplyQualification, emailCompanyEverything else
Cold CallQualification, emailName, companyEverything else
Inbound to Marketing NumberName, qualification, emailCompanyAddress, title

3.3 Qualification Structure

Qualification serves two purposes:

  1. Filter: Remove leads that cannot or should not be served
  2. Prioritize: Identify which qualified leads deserve fastest follow-up

The Qualification Hierarchy

Hard Disqualifiers (Check First)

Non-negotiable criteria that immediately end the conversation. Check these early to avoid wasting time.

Examples:

  • Outside service area
  • Below minimum volume/spend threshold
  • Not a decision-maker (and can't route to one)
  • Wrong industry/type
interface HardDisqualifiers {
  serviceArea: {
    check: (location: string) => boolean;
    exitScript: "We don't service that area yet...";
  };
  minimumVolume: {
    check: (volume: number) => boolean;
    exitScript: "For that volume, our service doesn't quite work...";
  };
  // etc.
}

Soft Qualifiers (Check Second)

Criteria that affect fit or priority but don't disqualify:

  • Volume tier (affects pricing, urgency)
  • Timeline (immediate need vs. exploring)
  • Current vendor status (switching vs. new)
  • Number of locations (affects deal size)
interface SoftQualifiers {
  volumeTier: 'high' | 'medium' | 'low';
  timeline: 'immediate' | 'this_quarter' | 'exploring';
  hasCurrentVendor: boolean;
  locationCount: number;
}

The Qualification Funnel

┌─────────────────────────────────────────┐
│           ALL CONNECTED CALLS            │
└─────────────────────────────────────────┘


┌─────────────────────────────────────────┐
│    HARD DISQUALIFIER CHECK (Early)      │
│    - Service area?                       │
│    - Minimum threshold?                  │
└─────────────────────────────────────────┘

        ┌──────────┴──────────┐
        │                     │
   [DISQUALIFIED]        [PASSES]
        │                     │
        ▼                     ▼
   Exit gracefully    ┌─────────────────────────────────────────┐
                      │      SOFT QUALIFIER COLLECTION          │
                      │      - Volume/tier                      │
                      │      - Timeline                         │
                      │      - Current situation                │
                      └─────────────────────────────────────────┘


                      ┌─────────────────────────────────────────┐
                      │         NEXT STEP EXECUTION             │
                      │         - Send agreement                │
                      │         - Book meeting                  │
                      │         - Route to human                │
                      └─────────────────────────────────────────┘

Qualification Question Patterns

For Volume/Size:

  • Direct: "How many [units] are you running?"
  • Indirect: "Would you say you're a small, medium, or large operation?"
  • Benchmark: "Most of our clients do about [X]. Are you above or below that?"

For Timeline:

  • Direct: "When are you looking to make a change?"
  • Indirect: "Is this something you're looking to do now, or more long-term?"
  • Urgency test: "If everything looked good, could you move forward this week?"

For Decision-Maker Status:

  • Direct: "Are you the one who makes this decision?"
  • Softer: "Who else would need to be involved in this decision?"
  • Implication: "Are you the owner of [company]?" (assumes owner = decision-maker)

For Current Situation:

  • Direct: "Are you currently working with a [vendor type]?"
  • Problem-oriented: "What's been the biggest issue with your current [vendor/solution]?"
  • Satisfaction: "How happy are you with your current setup?"

Graceful Disqualification

Never make the prospect feel rejected. Even disqualified leads may:

  • Refer others
  • Return later when circumstances change
  • Leave reviews/word-of-mouth

Disqualification Script Pattern:

[Acknowledge their situation]
[Explain why fit isn't right-make it about logistics, not them]
[Offer alternative or future path]
[End warmly]

Example:
"Got it-for that volume, our truck routes don't quite pencil out 
economically. We need about [threshold] to make the logistics work. 
You might want to check [alternative]. But if things change on your 
end, definitely give me a call back. Appreciate your time."

3.4 Objection Handling Patterns

Objections are not rejection-they're requests for more information or friction signals. The goal is not to "overcome" but to resolve.

The Objection Categories

Category 1: Information Gaps They don't have enough information to decide.

Signal: "How does it work?" / "What's included?" / "What's the price?" Resolution: Provide information, then check if resolved.

Category 2: Trust Gaps They don't trust your claims.

Signal: "How do I know this works?" / "Sounds too good to be true" Resolution: Proof-logos, specifics, mechanism explanation.

Category 3: Priority Gaps It's not urgent enough to act now.

Signal: "I need to think about it" / "Not right now" / "Maybe later" Resolution: Respect the timing, make next step easy, leave door open.

Category 4: Authority Gaps They can't make the decision alone.

Signal: "I need to talk to [someone]" / "I'm not the one who decides" Resolution: Arm them to sell internally, or route to decision-maker.

Category 5: Comparison Gaps They want to evaluate alternatives.

Signal: "I want to compare options" / "I'm talking to other vendors" Resolution: Differentiate, or provide comparison framework.

The LAIR Pattern

For complex objections, use the LAIR pattern:

L - Listen: Let them fully articulate the objection without interrupting.

A - Acknowledge: Validate that their concern is reasonable.

I - Inquire: Ask a clarifying question to understand the root concern.

R - Resolve: Address the root concern directly.

Prospect: "I need to think about it."

Listen: [Let them finish]

Acknowledge: "Totally fair-it's not a small decision."

Inquire: "Is there something specific you're unsure about, or is it more about timing?"

[Based on their answer, resolve the actual concern]

Resolve (if timing): "No pressure at all. I'll send the agreement so you have it when you're ready."
Resolve (if uncertainty): "What would you need to see to feel good about moving forward?"

Common Objections with Resolutions

"How much does it cost?"

Don't: Give a specific number that may not apply.
Do: Give a range or framework, then redirect to deliverable.

"It depends on your volume-typically [range]. The exact pricing is in the 
agreement. Want me to send it over so you can see the specifics?"

"I need to think about it."

Don't: Push or create artificial urgency.
Do: Respect, make next step easy, leave door open.

"Totally understand. I'll send the agreement now so you have it when you're 
ready. No pressure-take a look and let me know if any questions come up."

"I already have a vendor."

Don't: Bash the competitor.
Do: Surface pain, offer comparison value.

"Totally makes sense-most [businesses] do. Out of curiosity, how happy 
are you with them? When something goes wrong, are you able to get help quickly?"

"Can you just send me information?"

Don't: Refuse or over-qualify before sending.
Do: Agree, but try to get one qualification point first.

"Yeah, absolutely. Quick question first-[single most important qualifier]? 
Just want to make sure I send you the right info."

"I'm not the decision-maker."

Don't: End the conversation.
Do: Arm them or route to decision-maker.

"No problem. Who handles this decision? I can either reach out to them 
directly, or I can send you something to pass along-whatever's easier."

3.5 Closing and Handoff

The close is where value either converts to action or dissipates. Design for clarity and friction removal.

The Close Components

1. Summarize the Outcome Briefly confirm what was established.

"Perfect-so you've got 4 fryers, changing oil twice a week, and you're 
in [city]. You'd definitely qualify for our service."

2. State the Next Step Be explicit about what happens next.

"What I'll do now is send over the service agreement so you can see 
everything in writing."

3. Collect What's Needed Only what's required for the next step.

"What's the best email to send that to?"

4. Set Expectations Tell them what will happen and when.

"You'll get it in the next few minutes. You can sign directly from 
the email whenever you're ready."

5. Provide Continuity Give them a path for questions or issues.

"Any questions, just call or text this number."

Full Close Example

Agent: "Perfect-based on what you told me, you'd definitely qualify for 
rebates. I'll send over the service agreement so you can see everything 
in writing."

Agent: "What's the best email to send that to?"

Prospect: "john@bigtonys.com"

Agent: "Got it-J-O-H-N at big tonys dot com?"

Prospect: "Yeah."

Agent: "Cool-I'll send it in the next couple minutes. You'll fill in 
the address and a few details, then you can sign right from the email. 
Any questions, just call or text this number back."

Prospect: "Sounds good."

Agent: "Appreciate it-talk soon."

Human Handoff

When the conversation exceeds AI capability or the prospect requests human contact:

1. Acknowledge the Need

"I hear you-let me get you to someone who can help with that."

2. Collect Handoff Information

"What's the best number to reach you, and when's a good time?"

3. Set Expectations

"Someone will call you back within [timeframe]."

4. Summarize for the Human The AI must log:

  • What was discussed
  • What the prospect needs
  • Any qualification data collected
  • Why the handoff is happening
interface HandoffRecord {
  prospectName: string;
  prospectPhone: string;
  preferredCallbackTime?: string;
  conversationSummary: string;
  prospectNeed: string;
  qualificationData: Partial<QualificationData>;
  handoffReason: 'requested_human' | 'complex_question' | 'service_issue' | 'edge_case';
}

Part 4: System Prompt Architecture

4.1 Anatomy of an Effective Prompt

A system prompt for voice AI is not a script-it's an operating manual. It must encode:

  1. Identity: Who the agent is
  2. Context: What situation the agent is in
  3. Objective: What the agent is trying to achieve
  4. Knowledge: What the agent knows
  5. Behavior: How the agent should act
  6. Constraints: What the agent must not do
  7. Adaptation: How the agent handles variations

The Prompt Skeleton

# SYSTEM PROMPT: [Agent Name] for [Company] ([Context/Scenario])

## 1. Persona and Core Goal
- Role/identity
- Context/scenario
- Primary objective
- Personality and tone

## 2. Available Data
- What information is available pre-call
- Variable placeholders and their sources

## 3. Conversational Rules
- Short turns
- One question at a time
- Linear flow
- Specific constraints

## 4. Conversation Flow
- Stage 1: [Opening]
- Stage 2: [Qualification]
- Stage 3: [Offer/Collection]
- Stage 4: [Close]
- [Each stage with scripts and response handling]

## 5. Protocols
- Objection handling
- Edge case handling
- Escalation triggers
- Error recovery

## 6. Company Knowledge
- Service/product details
- Pricing guidelines (what to say, what not to say)
- Differentiators
- Service area / constraints

## 7. Operational Constraints
- Legal requirements
- Disclosure rules
- Topics to avoid
- Boundaries

4.2 Persona and Tone Definition

The persona defines not just who the agent "is" but how they communicate.

Identity Components

## 1. Persona Definition

**Role:** [Name], [Title] at [Company]
**Context:** [What situation triggers this conversation]
**Objective:** [Primary goal of the conversation]
**Personality:** [2-3 adjectives describing demeanor]
**Tone:** [Where on the spectrum from formal to casual]

Tone Calibration

The tone spectrum:

Formal ─────────────────────────────────────────────────── Casual
   │                         │                              │
   │                         │                              │
"Good afternoon,         "Hi [Name],                    "Hey, quick
I'm calling from         this is [Agent]                question-"
[Company] regarding      from [Company]."
your recent inquiry."

Industry calibration:

  • B2B Enterprise: Formal to Neutral
  • B2B SMB: Neutral
  • Local Services: Neutral to Casual
  • Consumer: Neutral to Casual

Persona calibration:

  • Executive calling executive: More formal
  • SDR calling practitioner: Neutral
  • Account manager to existing customer: Casual

Voice Characteristics

Beyond words, voice AI has qualities that affect perception:

**Voice Characteristics:**
- Pace: [Normal / Slightly Faster / Slightly Slower]
- Energy: [Calm / Moderate / Enthusiastic]
- Pauses: [Minimal / Natural / Deliberate]

Match to context:

  • Urgent inbound (form fill): Moderate pace, natural energy
  • Cold call: Calm, confident, not rushed
  • Customer service: Warm, slightly slower, empathetic pauses

What Not to Sound Like

Equally important as what the agent is is what it isn't:

**Avoid:**
- Sounding like a telemarketer (high energy, scripted feel)
- Sounding like a robot (monotone, no acknowledgments)
- Sounding desperate (too many qualifiers, excessive politeness)
- Sounding scripted (identical phrasing every time)

4.3 Conversation States and Flow Logic

Conversations are state machines. Each state has entry conditions, behaviors, and exit conditions.

State Definition Pattern

interface ConversationState {
  name: string;
  goal: string;
  entryCondition: string;
  script: string;
  responseHandling: ResponseHandler[];
  exitConditions: ExitCondition[];
  fallback: string;
}

interface ResponseHandler {
  condition: string;  // What the prospect says/does
  action: string;     // What the agent does
  nextState?: string; // Where to go next
}

interface ExitCondition {
  condition: string;
  nextState: string;
}

Example State: Qualification

### STATE: Volume Qualification

**Goal:** Determine if prospect meets volume threshold

**Entry Condition:** Location confirmed in service area

**Script:** "How many fryers are you running?"

**Response Handling:**

| Response | Action | Next State |
|----------|--------|------------|
| [Number provided] | Store, acknowledge: "Got it-[X] fryers." | Frequency Question |
| "I don't know" | Use fallback question | Fallback: Direct Volume |
| [Off-topic response] | Redirect gently | (Stay in state) |
| [Clearly disqualifying] | Move to disqualification | Disqualification |

**Fallback:** 
"No worries-do you go through at least 50 gallons a month? Like a drum or more?"

**Exit Conditions:**
- Fryer count captured → Frequency Question
- Direct volume confirmed ≥ threshold → Collect Details
- Volume < threshold → Disqualification

State Machine Visualization

                    ┌─────────────┐
                    │   OPENING   │
                    └──────┬──────┘

              ┌────────────┼────────────┐
              │            │            │
              ▼            ▼            ▼
         [Confirmed]  [Unclear]   [Wrong Number]
              │            │            │
              │            │            ▼
              │            │       ┌─────────┐
              │            │       │   END   │
              │            │       └─────────┘
              │            │
              └──────┬─────┘


              ┌─────────────┐
              │  LOCATION   │
              │   CHECK     │
              └──────┬──────┘

         ┌───────────┼───────────┐
         │           │           │
         ▼           ▼           ▼
    [In Area]   [Out of Area]  [Unclear]
         │           │           │
         │           ▼           │
         │    ┌─────────────┐    │
         │    │ DISQUALIFY  │    │
         │    └─────────────┘    │
         │                       │
         └───────────┬───────────┘


              ┌─────────────┐
              │   VOLUME    │
              │   CHECK     │
              └──────┬──────┘

                    ...

Handling Non-Linear Paths

Real conversations don't always follow the script. Build in redirect patterns:

**Universal Redirect Patterns:**

| Prospect Action | Response |
|-----------------|----------|
| Asks question before you're ready | "Good question-let me get one more detail first, then I'll cover that." |
| Goes off-topic | "Got it. Let me just finish up here and then we can discuss that." |
| Tries to end call early | "I hear you-just need your email and you're all set." |
| Asks something you can't answer | "That's covered in the agreement-want me to send it over?" |

4.4 Response Handling Patterns

The art of prompt engineering for voice is largely in anticipating responses and defining appropriate reactions.

The Response Taxonomy

1. Expected Responses The prospect says what you anticipated.

Agent: "How many fryers are you running?"

Expected Responses:
- "Three."
- "We have 4."
- "About five or six."

Handling: Acknowledge, store, continue.
"Got it-[X] fryers."

2. Ambiguous Responses The response doesn't clearly answer the question.

Agent: "How many fryers are you running?"

Ambiguous Responses:
- "A few."
- "Not sure."
- "What do you mean?"

Handling: Clarify without making them feel dumb.
"Ballpark is fine-like 2, 4, more than that?"

3. Tangential Responses They answer a different question than asked.

Agent: "How many fryers are you running?"

Tangential Response:
- "We're actually a pretty small operation."
- "We do a lot of fried food."

Handling: Extract signal, reframe, or re-ask.
"Got it-so on the smaller side. Would you say 2 fryers? 3?"

4. Objection Responses They respond with resistance or questions.

Agent: "How many fryers are you running?"

Objection Response:
- "Why do you need to know that?"
- "What's this about?"

Handling: Explain rationale, then continue.
"Just trying to see if you'd qualify for rebates-based on volume. So roughly how many?"

5. Disqualifying Responses The response indicates they're not a fit.

Agent: "Where's your restaurant located?"

Disqualifying Response:
- "We're in California."
- [Outside service area]

Handling: Exit gracefully.
"Ah, we don't service California yet-we're on the East Coast currently. 
If we expand that way, I can reach back out. Appreciate your time."

The Catch-All Pattern

For responses that don't match any expected pattern:

**Catch-All Response:**
"Got it. Let me make sure I understand-[paraphrase what you think they meant]. 
Is that right?"

If still unclear after one clarification:
"Tell you what-let me send over the details and you can take a look. 
What's the best email?"

This gracefully exits ambiguity while still advancing the conversation.


4.5 Company Knowledge Encoding

The agent needs access to company-specific information but must not invent or speculate.

Knowledge Categories

Category 1: Must Know (Encoded in Prompt)

  • What the service/product does
  • Key differentiators
  • Service area / constraints
  • Qualification thresholds
  • Pricing framework (ranges, not specifics)

Category 2: Can Reference (Defer to Deliverable)

  • Specific pricing
  • Detailed terms
  • Technical specifications
  • Legal/compliance details

Category 3: Must Not Speculate On

  • Guarantees not explicitly approved
  • Pricing outside stated ranges
  • Capabilities not confirmed
  • Competitor disparagement

Knowledge Encoding Pattern

## 6. Company Knowledge

**Service Description:**
[One paragraph describing what the company does in plain language]

**Key Differentiators:**
- [Differentiator 1-what you do differently]
- [Differentiator 2-what outcome this produces]
- [Differentiator 3-what risk this removes]

**Qualification Thresholds:**
- Minimum: [threshold]
- Service area: [regions/states]
- Decision-maker requirement: [yes/no]

**Pricing Framework:**
- Structure: [How pricing works-tiers, per-unit, flat, etc.]
- Range: [General range-"typically between X and Y"]
- What to say: "The exact pricing is in the agreement based on your volume."
- What NOT to say: [Specific numbers, guarantees, promises]

**Redirect Phrases for Complex Questions:**
- "That's covered in detail in the agreement."
- "Let me send that over so you can see the specifics."
- "I want to make sure you have accurate info-let me send the documentation."

The "Don't Know" Protocol

When asked something outside encoded knowledge:

**Unknown Question Protocol:**

1. Don't guess or make up information
2. Don't say "I don't know" bluntly
3. Do redirect to authoritative source

Script:
"That's a good question-I want to make sure you get accurate info on that. 
It's covered in the agreement I'll send over, or you can ask that when we follow up."

4.6 Operational Constraints

Constraints prevent the agent from causing harm-legal, reputational, or operational.

Constraint Categories

Legal Constraints

  • Calling hours (TCPA, state laws)
  • Disclosure requirements (AI, recording)
  • Do-not-call compliance
  • Industry-specific regulations

Operational Constraints

  • Service area boundaries
  • Pricing authority limits
  • Commitment authority limits
  • Escalation triggers

Brand Constraints

  • Topics to avoid
  • Competitor mentions
  • Political/controversial topics
  • Tone boundaries

Constraint Encoding

## 7. Operational Constraints

**Legal:**
- Only call between [times] in prospect's local time
- If asked if this is recorded, say: "This call may be recorded for quality purposes."
- If asked if this is AI, say: [Disclosure script]
- Do not call numbers on suppression list

**Operational:**
- Service area: [List of valid regions]
- Cannot commit to specific pricing without agreement
- Cannot promise specific timelines for delivery/service
- Must escalate: [List of escalation triggers]

**Brand:**
- Do not disparage competitors by name
- Do not discuss: [List of off-limits topics]
- Do not use: [List of forbidden phrases]
- Do not promise: [List of things you cannot guarantee]

**Data:**
- Email is only delivery method (no SMS for agreements)
- Always confirm email spelling
- Do not collect: [Sensitive data you shouldn't capture]

Disclosure Handling

When AI disclosure is required or requested:

**AI Disclosure Protocol:**

If REQUIRED (by law or policy):
Opening: "Hi, this is [Name], an AI assistant from [Company]..."

If REQUESTED by prospect:
Prospect: "Is this a robot?" / "Am I talking to AI?"

Response:
"Yeah, I'm an AI assistant. But I can answer your questions and get you 
set up. What did you want to know?"

[If they demand human:]
"No problem-let me get your info and have someone call you back. 
What's your name and the best number?"

Part 5: Lead Source Playbooks

Each lead source represents a different combination of available data, prospect context, and implied intent. The agent's behavior must adapt accordingly.

5.1 Paid Ad Form Fills

Context Profile

DimensionValue
Lead TemperatureHot
TimingImmediate (< 60 seconds)
Data AvailableName, email, phone, company (from form), campaign/ad context
Prospect ContextJust filled out form, actively researching
Awareness LevelProduct-Aware to Most Aware
Connection Rate70-90%
Qualification Rate50-70%

Strategic Approach

This is the highest-intent lead source. Speed is the dominant variable. The prospect is actively engaged with your content right now.

Objective: Confirm intent, qualify quickly, send agreement or book meeting.

Approach: Direct, efficient, confirmatory. They know why you're calling.

Script Framework

**Opening:**
"Hey, is this [firstName]?"

[If yes:]
"Great-calling about [companyName/formTopic] and the form you just filled out. Got a quick second?"

**Qualification (Light):**
The form likely captured basic qualification. Confirm and supplement:

"Just to make sure I send you the right info-[key qualification question based on what form didn't capture]?"

**Transition to Close:**
"Perfect-based on that, you'd be a good fit. I'll send over [deliverable]. 
You have [email from form]-that still the best one?"

**Close:**
"Cool-sending it now. You'll see everything in there-[brief description]. 
Any questions, just call this number back."

Data Handling

Use form data to confirm, not re-collect:

✓ "I have [restaurantName] on file-that correct?"
✗ "What's the name of your restaurant?"

Pre-fill the form with captured data. The prospect should see a mostly-complete form when they open the agreement.

Common Scenarios

Scenario: They're already on the form

Prospect: "I'm actually filling out more info right now."

Agent: "Oh perfect-I'll let you finish. Just wanted to make sure you got 
through okay. Any questions as you go?"

Scenario: They didn't mean to submit

Prospect: "I was just browsing, didn't mean to submit."

Agent: "No worries-happens all the time. Are you still in the market for 
[solution], or were you just researching?"

[If still interested:] "Want me to send some info for when you're ready?"
[If not:] "Totally fair. If anything changes, you've got my number."

5.2 Organic Inbound (Website Form, "Contact Us")

Context Profile

DimensionValue
Lead TemperatureWarm
TimingWithin minutes to same-day
Data AvailableName, email, phone, maybe company, inquiry text
Prospect ContextSought you out, specific reason (unknown)
Awareness LevelSolution-Aware to Product-Aware
Connection Rate50-70%
Qualification Rate40-60%

Strategic Approach

They found you and reached out-but you don't know exactly why. Could be:

  • Ready to buy
  • Researching options
  • Has a specific question
  • Wrong fit / misunderstood your service

Objective: Understand their intent, qualify, route appropriately.

Approach: Curious, helpful, not assumptive.

Script Framework

**Opening:**
"Hey [firstName], this is [Agent] from [Company]. You reached out through 
our website-wanted to see what I can help you with."

**Intent Discovery:**
Let them explain. Then clarify if needed:

"Got it. So you're looking for [paraphrase]-is that right?"

**Qualification:**
Based on their stated need, qualify against your criteria:

"Let me ask a couple questions to make sure we can help. [Qualification questions]"

**Route:**
Based on qualification + need:
- Qualified + ready: Send agreement/book meeting
- Qualified + researching: Send info, set follow-up
- Not qualified: Explain why, offer alternative

Intent Classification

type InboundIntent = 
  | 'ready_to_buy'      // "I want to sign up"
  | 'comparing_options' // "What makes you different from X?"
  | 'has_question'      // "I wanted to ask about..."
  | 'wrong_fit'         // "Do you do [thing you don't do]?"
  | 'existing_customer' // "I already use you and have an issue"
  | 'unclear';          // Can't determine

function handleByIntent(intent: InboundIntent): NextStep {
  switch (intent) {
    case 'ready_to_buy':
      return { action: 'qualify_briefly_then_close' };
    case 'comparing_options':
      return { action: 'differentiate_then_qualify' };
    case 'has_question':
      return { action: 'answer_then_qualify' };
    case 'wrong_fit':
      return { action: 'clarify_and_potentially_disqualify' };
    case 'existing_customer':
      return { action: 'route_to_service' };
    case 'unclear':
      return { action: 'ask_clarifying_question' };
  }
}

5.3 Cold Email Positive Replies

Context Profile

DimensionValue
Lead TemperatureWarm
Timing3 to 5 minutes of reply
Data AvailableName, email, phone (maybe from signature), email history
Prospect ContextReceived and responded to cold email
Awareness LevelProblem-Aware to Solution-Aware
Connection Rate40-60%
Qualification Rate40-60%

Strategic Approach

They replied to your email-they have some interest. But "interest" varies:

  • "Sure, send me info" (low)
  • "How does this work?" (medium)
  • "Yes, I've been looking for this" (high)

Objective: Capitalize on expressed interest, qualify, advance.

Approach: Reference the email, be helpful, don't over-sell.

Script Framework

**Opening:**
"Hey, this is [Agent]-you just replied to my email about [topic]. Got a minute?"

**Context Acknowledgment:**
Reference what they said in the reply:

[If they asked a question:]
"You asked about [X]-let me give you the quick version."

[If they said "send info":]
"Happy to send that over-let me ask a quick question first to make 
sure I send the right thing."

[If they expressed strong interest:]
"Sounds like this is something you're looking at now-let me get a few 
details and I can send over everything you need."

**Qualification:**
Full qualification-don't assume fit based on email reply alone.

**Close:**
Based on qualification, send appropriate next step.

Reply-Type Handling

Reply TypeExampleHandling
Info request"Sure, send me info"Light qualification, then send
Question"How does this work?"Answer briefly, then qualify
Interest"Yes, we've been looking for this"Skip to qualification, move fast
Objection"We already have a vendor"Address objection, then qualify if they engage
Routing"Talk to John instead"Get John's contact, thank them

Phone Extraction

If phone isn't in your data, check the email signature:

function extractPhoneFromSignature(emailBody: string): string | null {
  // Common signature patterns
  const phonePatterns = [
    /(?:phone|tel|cell|mobile|m|p)[:\s]*([+\d\s\-().]+)/i,
    /(\+?1?[-.\s]?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4})/,
  ];
  
  for (const pattern of phonePatterns) {
    const match = emailBody.match(pattern);
    if (match) return normalizePhone(match[1]);
  }
  return null;
}

5.4 Cold Email Follow-Up Calls (Non-Responders)

Context Profile

DimensionValue
Lead TemperatureCool to Warm (based on engagement)
TimingAfter email sequence completes (Day 12+)
Data AvailableName, email, company, engagement data (opens/clicks)
Prospect ContextReceived emails, didn't reply, may or may not have opened
Awareness LevelProblem-Aware (if cold list)
Connection Rate20-35%
Qualification Rate30-50%

Strategic Approach

They didn't reply to email-but that doesn't mean they're not interested. Reasons for non-response:

  • Busy / missed it
  • Interested but not urgent
  • Email not compelling enough
  • Not the right contact
  • Not interested

Objective: Break through inbox noise, surface why they didn't engage, give them another chance.

Approach: Acknowledge the emails, don't guilt-trip, offer fresh angle.

Script Framework

**Opening:**
"Hey [firstName], this is [Agent] from [Company]. I sent you a few emails 
about [topic]-figured a quick call might be easier. Got 30 seconds?"

**Engagement Check:**
"Did any of those land in your inbox, or did they get buried?"

[This is diagnostic-if they say "I saw them," they chose not to reply]
[If they say "didn't see them," they might be warmer than expected]

**Value Re-pitch:**
Offer the value proposition in a new way:

"Quick version: [one-sentence value prop]. Most [personas] we talk to are 
dealing with [pain]-is that something you've run into?"

**Qualification:**
If they engage, run standard qualification.

**Exit:**
If they're clearly not interested:
"No problem. If anything changes, you've got my number. Appreciate your time."

Engagement-Based Targeting

Only call non-responders who showed some engagement:

interface EmailEngagement {
  emailsSent: number;
  emailsOpened: number;
  linksClicked: number;
}

function shouldCallNonResponder(engagement: EmailEngagement): boolean {
  // Only call if they opened at least 2 emails (shows awareness)
  // Or clicked any link (shows interest)
  return engagement.emailsOpened >= 2 || engagement.linksClicked > 0;
}

Calling completely non-engaged leads (zero opens) has very low conversion and risks annoying people who deliberately ignored you.


5.5 Cold Calls (No Prior Touch)

Context Profile

DimensionValue
Lead TemperatureCold
TimingOptimal calling windows
Data AvailableName, company, phone, whatever you scraped/bought
Prospect ContextNone-you're interrupting
Awareness LevelUnaware to Problem-Aware
Connection Rate10-25%
Qualification Rate20-40%

Strategic Approach

You're interrupting someone who didn't ask to be called. You have 10 seconds to earn attention.

Objective: Earn the right to continue the conversation, qualify, advance.

Approach: Direct, relevant, respectful of their time.

The 10-Second Rule

You have approximately 10 seconds before they decide to keep listening or hang up. That's ~25 words. Every word must earn its place.

What must happen in those 10 seconds:

  1. Who you are (brief)
  2. Relevance signal (why should they care)
  3. Permission to continue

Script Framework

**Opening (< 10 seconds):**
"Hey [firstName], quick question-[highly relevant question that earns attention]?"

Example:
"Hey John, quick question-do you ever have trouble getting your grease vendor 
to answer when something goes wrong?"

[Notice: No company name, no intro, no "how are you." Straight to relevance.]

**If They Engage:**
"Got it. The reason I ask-I handle [service] for [similar businesses] in [area]. 
Most people I talk to are dealing with [pain]. Is that something you're running into?"

**Qualification:**
If they engage, run standard qualification.

**If They Push Back:**
"Hey, I caught you at a bad time-when's better to call back?"
[If they give time, you've converted to a warm callback]
[If they say never, exit gracefully]

Relevance Signal Patterns

The opening question must be immediately relevant. Patterns that work:

Pain Question: "Do you ever have trouble with [common pain]?"

Situation Question: "Are you still using [incumbent solution type]?"

Trigger Question: "I noticed [observable trigger]-is that something you're actively working on?"

Peer Question: "Most [personas] I talk to are dealing with [pain]-is that on your radar?"

Advanced: Permission-Based Opener

An alternative that works well for AI (where "being human" isn't the goal):

"Hey [firstName], this is [Agent] from [Company]. We help [personas] with 
[outcome]. I don't know if that's relevant for you-is it okay if I ask 
a quick question to see?"

This is explicit about being a sales call but asks permission, which can disarm.


5.6 Re-engagement (Stale Leads)

Context Profile

DimensionValue
Lead TemperatureVariable (was warm, now unknown)
TimingScheduled (30/60/90 days since last contact)
Data AvailableFull CRM history, previous qualification, objection history
Prospect ContextPrevious conversation, didn't close
Awareness LevelProduct-Aware (they know you)
Connection Rate25-40%
Qualification Rate30-50%

Strategic Approach

They qualified before but didn't close. Something stopped them:

  • Timing wasn't right
  • Lost to competitor
  • Internal priorities changed
  • Forgot about it

Objective: Check if circumstances changed, reactivate if ready.

Approach: Acknowledge the gap, don't guilt-trip, check for change.

Script Framework

**Opening:**
"Hey [firstName], this is [Agent] from [Company]. We talked a few months 
back about [topic]. Wanted to check if anything's changed on your end."

**Situation Check:**
"Last time we spoke, you mentioned [previous objection/situation]. 
Is that still the case, or has anything shifted?"

**Requalification:**
If circumstances changed, re-run qualification:
"Got it. Let me ask-[qualification question]."

**Close or Nurture:**
[If ready now:] Move to close
[If still not ready:] "No problem. When would be a good time to check back?"

Timing-Based Reactivation

interface StaleLeadRule {
  daysInactive: number;
  previousOutcome: string;
  action: string;
}

const reactivationRules: StaleLeadRule[] = [
  { daysInactive: 30, previousOutcome: 'timing_objection', action: 'ai_call' },
  { daysInactive: 60, previousOutcome: 'lost_to_competitor', action: 'email_then_call' },
  { daysInactive: 90, previousOutcome: 'no_response', action: 'email_only' },
  { daysInactive: 180, previousOutcome: 'any', action: 'fresh_sequence' },
];

5.7 Inbound to Marketing Number

Context Profile

DimensionValue
Lead TemperatureWarm (they called you)
TimingReal-time
Data AvailableCaller ID, maybe context from number placement
Prospect ContextSaw number somewhere, decided to call
Awareness LevelVariable
Connection Rate100% (they called you)
Qualification Rate50-70%

Strategic Approach

They took action to call you-that's intent. But you don't know:

  • Where they saw the number
  • What they want
  • Who they are

Objective: Identify intent, qualify, route appropriately.

Approach: Clarify quickly, then serve their need.

Number Context

The number's placement provides context:

PlacementImplied ContextOpening Approach
Cold email signatureThey got your email"Hey, this is [Agent]-you calling about the email?"
WebsiteThey visited your site"Hey, this is [Agent]-how can I help you?"
Paid adThey clicked an ad"Hey, this is [Agent]-you calling about [ad topic]?"
Google Maps / DirectoryThey searched for you"Hey, this is [Agent]-how can I help you?"
Referral mentionSomeone told them"Hey, this is [Agent]-who referred you?"

Script Framework

**Opening (Context-Aware):**
[Based on number placement-see above]

**Intent Discovery:**
"What can I help you with?"

OR if placement provides context:
"You calling about [likely topic]?"

**Classification:**
Quickly determine:
- Are they a prospect? → Qualify and advance
- Are they an existing customer? → Route to service
- Are they confused/wrong number? → Clarify and exit

**Qualification:**
If prospect, run standard qualification.

**Close:**
Based on qualification, route to appropriate next step.

Multi-Number Strategy

Use different numbers for different placements to provide automatic context:

interface PhoneNumberRouting {
  number: string;
  placement: string;
  aiAgentContext: string;
  defaultOpener: string;
}

const numberRouting: PhoneNumberRouting[] = [
  {
    number: '+1-555-001-0001',
    placement: 'cold_email_signature',
    aiAgentContext: 'caller_received_cold_email',
    defaultOpener: "Hey, this is [Agent]-you calling about the email?",
  },
  {
    number: '+1-555-001-0002',
    placement: 'website_contact_page',
    aiAgentContext: 'caller_from_website',
    defaultOpener: "Hey, this is [Agent]-how can I help you?",
  },
  {
    number: '+1-555-001-0003',
    placement: 'google_ads',
    aiAgentContext: 'caller_from_ad',
    defaultOpener: "Hey, this is [Agent]-you calling about [ad topic]?",
  },
];

Part 6: Channel Integration

6.1 Email Sequence Integration

AI Voice is most powerful when coordinated with email sequences-not as a separate channel.

Integration Patterns

Pattern 1: Email-Triggered Call

Email engagement triggers AI call:

interface EmailTriggerRule {
  trigger: 'opened' | 'clicked' | 'replied' | 'bounced';
  count?: number;
  delay: number; // milliseconds
  action: 'call' | 'sms' | 'none';
}

const emailTriggers: EmailTriggerRule[] = [
  // Positive reply → call immediately
  { trigger: 'replied', delay: 0, action: 'call' },
  
  // Clicked link → call within 5 minutes
  { trigger: 'clicked', delay: 300000, action: 'call' },
  
  // Opened 3+ times → call
  { trigger: 'opened', count: 3, delay: 0, action: 'call' },
];

Pattern 2: Sequence-Position Call

AI call at specific point in sequence:

Email 1 (Day 1)
Email 2 (Day 4)
Email 3 (Day 9)
AI Call (Day 12) ← For engaged non-responders
Email 4 (Day 15) ← Reference the call attempt

Pattern 3: Call-Triggered Email

Call outcome triggers email:

interface CallOutcomeEmail {
  outcome: CallOutcome;
  emailTemplate: string;
  delay: number;
}

const callOutcomeEmails: CallOutcomeEmail[] = [
  // No answer → send "tried to call" email
  { outcome: 'no_answer', emailTemplate: 'voicemail_followup', delay: 0 },
  
  // Sent agreement → send "agreement sent" confirmation
  { outcome: 'agreement_sent', emailTemplate: 'agreement_confirmation', delay: 60000 },
  
  // Interested but not ready → send nurture content
  { outcome: 'interested_not_ready', emailTemplate: 'nurture_content', delay: 86400000 },
];

Maintaining Conversation Context

The AI must know what emails were sent and their content:

interface ConversationContext {
  // Email history
  emailsSent: {
    subject: string;
    sentAt: Date;
    opened: boolean;
    clicked: boolean;
    replied: boolean;
  }[];
  
  // Key points from emails
  valuePropsPresented: string[];
  proofsPresented: string[];
  ctasUsed: string[];
  
  // For AI reference
  lastEmailSummary: string;
}

The agent can then reference appropriately:

"I sent you an email about [topic from lastEmailSummary]-wanted to follow up."

6.2 SMS Integration

SMS complements voice-it's not a separate channel but an extension.

SMS Use Cases

1. Voicemail + SMS Combo

When outbound call goes to voicemail:

[Leave 15-second voicemail]

[Immediately send SMS]
"Hey [name]-just left you a voicemail about [topic]. 
[One-line value]. Text me back if interested."

2. Pre-Call SMS (Permission Priming)

For cold calls, SMS 5 minutes before can increase connection:

"Hey [name], this is [Agent] from [Company]. Going to give you a 
quick call about [topic] in a few minutes. If now's bad, 
let me know a better time."

3. Post-Call Confirmation

After successful call:

"Thanks for chatting, [name]. Just sent the [deliverable] to 
[email]. Let me know if you have questions."

4. Call-to-Text Fallback

When they don't answer repeated calls:

"Hey [name]-tried calling a couple times about [topic]. 
If you prefer, just text me back. [One-line value]."

SMS Rules

Keep under 160 characters when possible (single SMS).

No links in first touch (carrier filtering).

Identify yourself (legal requirement in most contexts).

Provide clear next action (text back, call back, etc.).

interface SMSTemplate {
  trigger: string;
  template: string;
  maxLength: 160;
  requiresOptIn: boolean;
}

const smsTemplates: SMSTemplate[] = [
  {
    trigger: 'voicemail_left',
    template: 'Hey {{firstName}}-just left you a voicemail about {{topic}}. {{valueOneLiner}} Text back if interested.',
    maxLength: 160,
    requiresOptIn: false, // Existing business relationship
  },
];

6.3 CRM and Automation Platform Integration

The AI doesn't operate in isolation-it's part of a data ecosystem.

Data Flow: Into the AI

What context flows from CRM to AI:

interface InboundLeadContext {
  // Identity
  lead: {
    firstName: string;
    lastName?: string;
    email: string;
    phone: string;
    company?: string;
  };
  
  // Source
  source: {
    type: 'form_fill' | 'cold_email' | 'inbound_call' | 'referral';
    campaign?: string;
    adSet?: string;
    referrer?: string;
  };
  
  // History
  history: {
    previousCalls: CallRecord[];
    emailEngagement: EmailEngagement;
    previousQualification?: QualificationData;
    notes: string[];
  };
  
  // Timing
  timing: {
    leadCreatedAt: Date;
    lastContactAt?: Date;
    timezone: string;
  };
}

Data Flow: Out of the AI

What the AI captures and returns:

interface CallOutcome {
  // Call metadata
  callId: string;
  startTime: Date;
  endTime: Date;
  duration: number;
  
  // Outcome
  outcome: 
    | 'qualified_sent_agreement'
    | 'qualified_meeting_booked'
    | 'qualified_interested_not_ready'
    | 'disqualified_reason'
    | 'no_answer'
    | 'wrong_number'
    | 'callback_requested'
    | 'escalated_to_human';
  
  // Qualification data (if collected)
  qualification?: {
    meetsVolumeThreshold?: boolean;
    inServiceArea?: boolean;
    isDecisionMaker?: boolean;
    timeline?: string;
    currentSituation?: string;
  };
  
  // Contact info (if updated)
  contactUpdates?: {
    email?: string;
    phone?: string;
    company?: string;
    title?: string;
  };
  
  // Follow-up
  followUp?: {
    type: 'callback' | 'email' | 'human_handoff' | 'nurture';
    scheduledFor?: Date;
    notes: string;
  };
  
  // Transcript
  transcript: string;
  summary: string;
}

Triggering Downstream Actions

Call outcomes trigger CRM/automation actions:

interface OutcomeAction {
  outcome: string;
  actions: Action[];
}

const outcomeActions: OutcomeAction[] = [
  {
    outcome: 'qualified_sent_agreement',
    actions: [
      { type: 'update_lead_status', status: 'agreement_sent' },
      { type: 'send_email', template: 'agreement_confirmation' },
      { type: 'create_task', task: 'follow_up_in_48h' },
      { type: 'notify_ae', message: 'Agreement sent to {{name}}' },
    ],
  },
  {
    outcome: 'callback_requested',
    actions: [
      { type: 'schedule_callback', time: '{{requestedTime}}' },
      { type: 'update_lead_status', status: 'callback_scheduled' },
    ],
  },
  {
    outcome: 'escalated_to_human',
    actions: [
      { type: 'create_urgent_task', assignee: 'sales_team' },
      { type: 'update_lead_status', status: 'needs_human_attention' },
      { type: 'notify_slack', channel: 'sales_escalations' },
    ],
  },
];

6.4 Human Handoff Protocols

Some situations require human intervention. The handoff must be smooth for both the prospect and the human.

When to Escalate

Explicit Request:

  • "Can I talk to a real person?"
  • "I want to speak to a manager."
  • "Is there someone else I can talk to?"

Complexity Beyond AI Capability:

  • Custom pricing negotiation
  • Complex technical questions
  • Legal/contract concerns
  • Multi-stakeholder situations

Edge Cases:

  • Upset/angry prospect
  • Unusual situation not covered by scripts
  • High-value opportunity requiring white-glove treatment

Escalation Data Package

When escalating, the AI must pass:

interface EscalationPackage {
  // Who
  prospect: {
    name: string;
    phone: string;
    email?: string;
    company?: string;
  };
  
  // What happened
  conversationSummary: string;
  escalationReason: string;
  prospectRequest?: string;
  
  // What we know
  qualificationData: Partial<QualificationData>;
  objectionsSurfaced: string[];
  
  // What they need
  prospectNeeds: string;
  suggestedNextStep: string;
  
  // Context
  callTranscript: string;
  callRecording?: string;
  
  // Urgency
  priority: 'urgent' | 'normal' | 'low';
  callbackTimeRequested?: Date;
}

Handoff Script Pattern

**Acknowledge the request:**
"Absolutely-let me get you to someone who can help with that."

**Collect callback info:**
"What's the best number to reach you?"
"And when's a good time for them to call?"

**Set expectations:**
"Someone will call you back within [timeframe]."

**Summarize for human:**
[Internal: Log escalation package with all context]

**Close:**
"Is there anything else I can note for them before we hang up?"

Warm Transfer vs. Callback

Warm Transfer (if system supports):

  • AI stays on line while connecting human
  • AI briefs human before connecting
  • Best experience for prospect, highest conversion

Callback (more common):

  • AI collects callback info
  • AI logs escalation
  • Human calls back
  • Acceptable but some drop-off between call and callback
interface HandoffMethod {
  type: 'warm_transfer' | 'callback';
  availability: 'business_hours' | '24_7';
  maxWaitTime?: number; // for warm transfer queue
  callbackSLA: string; // "within 2 hours"
}

Part 7: Edge Cases and Failure Modes

7.1 Common Failure Modes

Every AI system fails. The question is not whether it will fail but how it fails-gracefully or catastrophically.

Failure Taxonomy

1. Connection Failures The call doesn't connect or disconnects unexpectedly.

FailureDetectionResponse
No answerRing timeoutLeave voicemail, trigger SMS
Voicemail immediateVoicemail greeting detectedLeave message, don't retry immediately
Hang up during ringCall ends during ringingLog, retry later
Mid-call disconnectSudden call endLog incomplete, retry if mid-qualification

2. Comprehension Failures The AI doesn't understand what the prospect said.

FailureDetectionResponse
Inaudible/noiseASR confidence low"Sorry, I didn't catch that-could you say that again?"
Unfamiliar accentASR strugglesSlow down, repeat back what was heard
Technical termsUnknown vocabularyAsk for clarification, don't guess
CrosstalkMultiple voices"I'm hearing a few people-who should I be talking to?"

3. Intent Failures The AI understands words but misinterprets meaning.

FailureDetectionResponse
Sarcasm interpreted literallySentiment mismatchN/A (hard to detect), design for graceful recovery
Question interpreted as statementMissing question intonationAsk clarifying question before proceeding
Implicit rejection missedSoft "no" not caughtBuild in confirmation: "So should I move forward or...?"

4. Script Failures The conversation goes somewhere the script doesn't cover.

FailureDetectionResponse
Off-script questionNo matching handler"Good question-that's covered in the agreement. Let me send it over."
Unexpected objectionNo matching objection handler"I hear you. Let me make a note and have someone follow up on that specifically."
Hostile/abusiveSentiment detection"I understand you're frustrated. This doesn't seem like a good time-I'll let you go."

5. Data Failures Information is missing, wrong, or inconsistent.

FailureDetectionResponse
Lead data missingNull fieldCollect on call if essential, skip if optional
Lead data wrongProspect corrects"Got it-[correct info]. Thanks for fixing that."
Duplicate leadCRM flagCheck history, adapt conversation

The Graceful Degradation Principle

When in doubt, advance the conversation toward a safe exit point while preserving the relationship.

If the AI is confused or stuck:

  1. Acknowledge uncertainty
  2. Redirect to deliverable/next step
  3. Offer human follow-up if needed
  4. Exit warmly
**Universal Recovery Pattern:**

"You know what-I want to make sure I get this right. Let me have someone 
follow up with you on that specific question. What's the best number to 
reach you?"

[This works for almost any failure-you're not pretending to know, and 
you're ensuring the prospect gets help.]

7.2 Specific Edge Case Handling

Edge Case: "Is This a Robot?"

This question is increasingly common. Handle directly.

**Detection:** Keywords "robot," "AI," "real person," "automated," "bot"

**Response (Honest + Competent):**
"Yeah, I'm an AI assistant. But I can answer your questions and get you 
set up. What did you want to know?"

**If They Demand Human:**
"No problem-let me get your info and have someone call you back. What's 
your name and the best number?"

**Don't:**
- Lie ("No, I'm a real person")
- Be defensive
- Over-explain AI capabilities

Edge Case: Wrong Person

The person who answers isn't the person you intended to reach.

**Detection:** "This isn't [name]" / "Who?" / "Wrong number"

**Response (Polite Routing):**
"Oh, sorry about that. I'm trying to reach whoever handles [responsibility]. 
Is that you, or is there someone else I should talk to?"

**If They Route You:**
"Great-what's their name and the best number or extension?"

**If Dead End:**
"No problem. Appreciate your time."

Edge Case: Existing Customer with Service Issue

They're calling about a problem, not a sale.

**Detection:** Mentions of service issues, problems, complaints, existing account

**Response (Route to Service):**
"Got it-sounds like a service issue. Let me get your info and I'll have 
someone from our operations team call you right away. What's the restaurant 
name and the address?"

**Don't:**
- Try to solve the service issue
- Treat them like a new lead
- Leave them without a clear next step

**Do:**
- Collect info needed to identify their account
- Set expectation for callback timing
- Log urgency appropriately

Edge Case: Hostile or Abusive Caller

Rarely, someone is angry or abusive.

**Detection:** Profanity, yelling, personal attacks, aggressive tone

**Response (De-escalate, then Exit):**

Level 1 (Frustrated):
"I understand you're frustrated. Let me see what I can do to help."

Level 2 (Angry):
"I hear you. This doesn't seem like a good time. I can have someone 
call you back when things calm down."

Level 3 (Abusive):
"I'm going to let you go for now. If you'd like to discuss this later, 
you can call back."

**Rule:** AI should never engage with abuse. Exit quickly and cleanly.

Edge Case: Competitor Fishing

Someone calls to gather competitive intelligence.

**Detection:** Questions about pricing lists, client lists, proprietary processes

**Response (Deflect Gracefully):**
"I can send you our standard materials that cover how things work. 
What's the best email?"

**If They Press:**
"The details are in the agreement. If you're interested in service, 
I can get that sent over."

**Don't:**
- Reveal client names not in public materials
- Quote specific internal pricing
- Discuss proprietary processes in detail

Edge Case: Language Barrier

The prospect struggles with English (or whatever language the AI speaks).

**Detection:** Requests for another language, ASR failures, limited vocabulary

**Response (Accommodate if Possible):**

If AI supports the language:
"Claro, puedo hablar español. ¿Cómo puedo ayudarle?"

If not:
"I'm sorry, I only speak English. Is there someone there who can translate, 
or would you prefer I send information by email?"

**Alternative:**
"Let me have someone who speaks [language] call you back. What's the 
best number?"

7.3 Error Recovery and Logging

Every failure should be logged for improvement.

Error Logging Structure

interface ErrorLog {
  // Context
  callId: string;
  timestamp: Date;
  conversationState: string;
  
  // Error details
  errorType: 'connection' | 'comprehension' | 'intent' | 'script' | 'data';
  errorSubtype: string;
  errorMessage: string;
  
  // What happened
  prospectUtterance?: string;
  aiResponse: string;
  recoveryAttempted: boolean;
  recoverySuccessful?: boolean;
  
  // Outcome
  callContinued: boolean;
  finalOutcome: string;
  
  // For analysis
  transcript: string;
  audioClip?: string;
}

Learning from Failures

interface ErrorAnalysis {
  // Frequency
  errorType: string;
  occurrences: number;
  percentageOfCalls: number;
  
  // Impact
  callDropRate: number; // How often this error kills the call
  recoveryRate: number; // How often we recover from it
  
  // Patterns
  commonTriggers: string[];
  commonProspectPhrases: string[];
  
  // Action
  suggestedPromptChange?: string;
  suggestedNewHandler?: string;
  priority: 'critical' | 'high' | 'medium' | 'low';
}

Review errors weekly. Prioritize fixing:

  1. High-frequency failures
  2. Failures that kill calls
  3. Failures in critical conversion stages

Part 8: Measurement and Iteration

8.1 What to Measure

Funnel Metrics

The AI Voice funnel mirrors any sales funnel:

┌────────────────────────────────────────────┐
│           CALLS ATTEMPTED                   │
└────────────────────────────────────────────┘

                    ▼ Connection Rate
┌────────────────────────────────────────────┐
│           CALLS CONNECTED                   │
└────────────────────────────────────────────┘

                    ▼ Completion Rate
┌────────────────────────────────────────────┐
│         CONVERSATIONS COMPLETED             │
└────────────────────────────────────────────┘

                    ▼ Qualification Rate
┌────────────────────────────────────────────┐
│           LEADS QUALIFIED                   │
└────────────────────────────────────────────┘

                    ▼ Conversion Rate
┌────────────────────────────────────────────┐
│         NEXT STEP COMPLETED                 │
│   (Agreement sent, meeting booked, etc.)    │
└────────────────────────────────────────────┘

Primary Metrics Dashboard

interface AIVoiceMetrics {
  // Volume
  callsAttempted: number;
  callsConnected: number;
  conversationsCompleted: number;
  
  // Rates
  connectionRate: number;      // connected / attempted
  completionRate: number;      // completed / connected
  qualificationRate: number;   // qualified / completed
  conversionRate: number;      // converted / qualified
  
  // Efficiency
  averageHandleTime: number;   // seconds
  averageCostPerCall: number;  // dollars
  averageCostPerConversion: number;
  
  // Quality
  dropOffByStage: Record<string, number>;
  objectionFrequency: Record<string, number>;
  errorRate: number;
  escalationRate: number;
}

Stage-Level Analysis

Where do calls die?

interface StageMetrics {
  stageName: string;
  entryCount: number;
  exitCount: number;
  dropOffCount: number;
  dropOffRate: number;
  averageTimeInStage: number;
  commonDropOffReasons: string[];
}

// Example output:
// Opening:      1000 entry, 950 exit, 5% drop (hang up immediately)
// Qualification: 950 entry, 800 exit, 16% drop (disqualified or quit)
// Collection:    800 entry, 780 exit, 2.5% drop (refused to give email)
// Close:         780 entry, 750 exit, 4% drop (changed mind at end)

High drop-off at specific stages indicates script problems at that stage.

Cohort Analysis

Not all leads are equal. Segment metrics by:

  • Lead Source: Form fills vs. cold call vs. email reply
  • Qualification Tier: High volume vs. low volume
  • Time to Call: < 1 min vs. 1-5 min vs. > 5 min
  • Day/Time: Tuesday 10am vs. Friday 4pm
  • Campaign: Which ad/email performed best
interface CohortMetrics {
  cohortDefinition: string;
  sampleSize: number;
  connectionRate: number;
  qualificationRate: number;
  conversionRate: number;
  significanceVsBaseline: number; // statistical significance
}

8.2 Transcript Review Process

Metrics tell you what is happening. Transcripts tell you why.

Review Cadence

Review TypeFrequencySample SizeFocus
Daily spot-checkDaily5-10 callsCatch obvious issues
Deep diveWeekly25-50 callsPattern identification
Stage-specificWeekly10+ per stageScript optimization
Error-specificAs neededAll errorsRecovery improvement

Review Protocol

1. Random Sample (Daily) Pull random calls across outcomes. Listen for:

  • Does it sound natural?
  • Any obvious script issues?
  • Any edge cases mishandled?

2. Failure-Focused Review (Weekly) Pull calls that ended poorly:

  • Hang-ups
  • Errors
  • Escalations
  • Disqualifications

Identify patterns:

  • Where did it go wrong?
  • Was there a specific phrase that triggered drop-off?
  • Could the script have recovered?

3. Win Review (Weekly) Pull calls that converted:

  • What worked well?
  • Any patterns in successful calls?
  • Are there elements to replicate?

Transcript Annotation System

interface TranscriptAnnotation {
  transcriptId: string;
  timestamp: number; // seconds into call
  annotationType: 
    | 'script_issue'      // Script didn't handle well
    | 'ai_error'          // AI misunderstood or responded poorly
    | 'prospect_signal'   // Interesting prospect behavior
    | 'win_moment'        // What caused success
    | 'loss_moment'       // What caused failure
    | 'improvement_idea'; // Suggestion for improvement
  note: string;
  suggestedChange?: string;
  priority: 'high' | 'medium' | 'low';
}

From Annotation to Action

interface PromptChangeLog {
  changeId: string;
  date: Date;
  triggeredBy: string; // annotation IDs
  section: string; // which part of prompt
  previousVersion: string;
  newVersion: string;
  rationale: string;
  expectedImpact: string;
  actualImpact?: string; // filled after A/B test
}

Track every change. Measure impact. Revert if negative.


8.3 A/B Testing Prompts

Prompt changes should be tested, not just deployed.

What to Test

High Impact (Test Carefully):

  • Opening line
  • Qualification questions
  • Objection handling
  • Close language

Medium Impact (Test if Time):

  • Acknowledgment phrasing
  • Transition language
  • Information ordering

Low Impact (Just Ship):

  • Minor wording tweaks
  • Grammar fixes
  • Obvious improvements

Test Structure

interface PromptABTest {
  testId: string;
  hypothesis: string;
  controlVersion: string;
  testVersion: string;
  trafficSplit: number; // 0.5 = 50/50
  minimumSampleSize: number;
  primaryMetric: string;
  secondaryMetrics: string[];
  startDate: Date;
  endDate?: Date;
  status: 'running' | 'completed' | 'stopped';
  winner?: 'control' | 'test' | 'no_difference';
  liftObserved?: number;
  confidence?: number;
}

Sample Size Calculation

To detect a 10% relative lift with 80% power and 95% confidence:

function calculateSampleSize(
  baselineRate: number,
  minimumDetectableLift: number,
  power: number = 0.8,
  confidence: number = 0.95
): number {
  // Simplified formula
  const alpha = 1 - confidence;
  const beta = 1 - power;
  const p1 = baselineRate;
  const p2 = baselineRate * (1 + minimumDetectableLift);
  
  // Using approximation
  const n = (
    (Math.pow(1.96 + 0.84, 2) * (p1 * (1 - p1) + p2 * (1 - p2))) /
    Math.pow(p2 - p1, 2)
  );
  
  return Math.ceil(n);
}

// Example: 30% baseline conversion, 10% lift detection
// calculateSampleSize(0.3, 0.1) → ~1,000 per variant

Test Duration

Don't stop tests early based on preliminary results. Day-of-week effects, sample variation, and novelty effects can mislead.

Minimum duration: 7 days (full week cycle) Minimum sample: Enough for statistical significance Stop conditions: Pre-defined, not reactive


Part 9: Compliance and Disclosure

AI Voice operates in a regulated environment. Compliance is non-negotiable.

Call Time Restrictions (US)

TCPA (Federal):

  • No calls before 8 AM or after 9 PM (local time of called party)
  • Prior express consent required for automated calls to cell phones
  • Honoring do-not-call requests

State Laws: Many states have additional restrictions. Common patterns:

  • Shorter calling windows
  • Stricter consent requirements
  • Specific disclosure requirements
interface CallingHours {
  state: string;
  earliestCall: string; // "08:00"
  latestCall: string;   // "21:00"
  timezone: string;
  additionalRestrictions?: string[];
}

function isWithinCallingHours(
  prospect: { state: string; timezone: string },
  currentTime: Date
): boolean {
  const hours = getCallingHours(prospect.state);
  const localTime = convertToTimezone(currentTime, prospect.timezone);
  return localTime >= hours.earliestCall && localTime <= hours.latestCall;
}

Express Written Consent: Required for autodialed or prerecorded calls to cell phones for marketing.

  • Form fills with appropriate language
  • Opt-in checkboxes
  • Clear disclosure of what they're consenting to

Prior Express Consent: Required for informational calls.

  • Less formal than written
  • Established business relationship may suffice

No Consent Required:

  • Calls to business lines (not cell phones)
  • Calls to established customers (with limitations)
  • Emergency notifications

Do-Not-Call Compliance

National DNC Registry:

  • Check numbers against registry before calling
  • Honor opt-outs within 30 days
  • Maintain internal DNC list

Internal DNC Management:

interface DNCRecord {
  phone: string;
  source: 'federal_registry' | 'state_registry' | 'internal_request';
  addedAt: Date;
  expiresAt?: Date;
  reason?: string;
}

function canCall(phone: string, dncList: DNCRecord[]): boolean {
  return !dncList.some(
    record => record.phone === phone && (!record.expiresAt || record.expiresAt > new Date())
  );
}

One-Party Consent States (Federal Default): Only one party (including AI) needs to know recording is happening.

Two-Party Consent States: All parties must consent to recording. States: California, Connecticut, Florida, Illinois, Maryland, Massachusetts, Montana, Nevada, New Hampshire, Pennsylvania, Washington

const twoPartyConsentStates = [
  'CA', 'CT', 'FL', 'IL', 'MD', 'MA', 'MT', 'NV', 'NH', 'PA', 'WA'
];

function requiresRecordingDisclosure(state: string): boolean {
  return twoPartyConsentStates.includes(state);
}

Disclosure Script:

"This call may be recorded for quality purposes."

Place early in call (before substantive conversation).


9.2 AI Disclosure Requirements

Emerging regulations increasingly require disclosure when AI is used.

Current Landscape (as of 2024)

California: Bot disclosure law (B.O.T. Act) requires disclosure when automated system communicates with person to incentivize purchase or influence vote.

FTC: Increasing scrutiny on AI-generated calls. Proposed rules would require disclosure.

Industry Practice: Even where not legally required, many companies proactively disclose to build trust and avoid backlash.

Disclosure Strategies

Strategy 1: Proactive Disclosure Include disclosure in opening.

"Hi, this is Alex, an AI assistant from [Company]..."

Pros: Maximum transparency, regulatory-safe Cons: May reduce engagement, novelty effect

Strategy 2: Reactive Disclosure Disclose only when asked.

[Standard opening, no mention of AI]

[If asked "Is this a robot?"]
"Yeah, I'm an AI assistant. But I can answer your questions and get you set up."

Pros: Natural conversation flow, discloses when it matters Cons: Some may view as deceptive

Strategy 3: Contextual Disclosure Disclose based on context or jurisdiction.

function shouldDisclose(lead: Lead): boolean {
  // Always disclose in high-regulation contexts
  if (lead.state === 'CA') return true;
  
  // Disclose for certain lead sources
  if (lead.source === 'cold_call') return true;
  
  // Don't proactively disclose for warm inbound
  if (lead.source === 'form_fill') return false;
  
  return false; // Default: reactive only
}

Best Practice Recommendation

For most commercial contexts:

  • Reactive disclosure (honest when asked)
  • Recording disclosure at start (where required)
  • No deception if directly asked

For regulated industries (healthcare, finance):

  • Proactive disclosure
  • Clear consent capture
  • Detailed audit logging

Part 10: Templates and Examples

10.1 Reusable Prompt Components

Persona Block Template

## Persona Definition

**Role:** [Name], [Title] at [Company]

**Context:** You are [calling/receiving calls from] leads who [context description]. 
They [have/have not] interacted with [Company] before via [channels].

**Objective:** Your primary goal is to [objective]. Secondary goals include [secondary objectives].

**Personality:** [2-3 adjectives]. You sound like [analogy-"a helpful colleague," "a knowledgeable advisor"].

**Tone:** [Formal/Neutral/Casual]. Use contractions. [Specific tone notes].

Conversational Rules Block Template

## Conversational Rules

- **Short Turns:** Never speak more than 2 sentences without inviting response.
- **One Question:** Ask one question at a time. Wait for the answer.
- **Acknowledge:** After they answer, acknowledge before asking the next question.
- **Linear Flow:** Progress through stages in order. Don't skip or backtrack.
- **Signal Before Request:** Explain why you need information before asking for it.
- **[Context-Specific Rule]:** [Rule specific to this use case]

Qualification Stage Template

### STAGE: Qualification

**Goal:** Determine if prospect meets criteria: [list criteria]

**Entry Condition:** [Previous stage completed]

#### Question 1: [Criterion 1]
- **Script:** "[Question]"
- **If [Passing Response]:** Acknowledge, store, continue
- **If [Failing Response]:** Go to [Disqualification Protocol]
- **If [Unclear]:** "[Clarifying question]"

#### Question 2: [Criterion 2]
- **Script:** "[Question]"
- **If [Passing Response]:** Acknowledge, store, continue
- **If [Failing Response]:** Go to [Disqualification Protocol]
- **If [Unclear]:** "[Clarifying question]"

**Exit Conditions:**
- All criteria met → [Next Stage]
- Any criterion failed → [Disqualification Protocol]

Objection Handling Block Template

## Objection Handling Protocols

### Objection: "[Common objection verbatim]"
**Detection:** Keywords: [keywords]
**Category:** [Information/Trust/Priority/Authority/Comparison]
**Response:** "[Response script]"
**Follow-up:** "[If they accept, continue to X / If they push back, Y]"

### Objection: [Next objection]
...

Protocol Block Template

## Protocol: [Protocol Name]

**Trigger:** [When this protocol activates]

**Script:**

[Exact script]


**Actions:**
1. [Action 1]
2. [Action 2]

**Exit:** [Where to go after protocol completes]

10.2 Full Example Prompts

Example 1: Outbound - Form Fill Instant Callback

# SYSTEM PROMPT: Instant Callback Agent for [Company]

## 1. Persona Definition

**Role:** Alex, Account Specialist at [Company]

**Context:** You are calling leads who just filled out a form on a [Facebook/Google] ad 
about [product/service]. They submitted the form within the last 60 seconds and are 
expecting a call.

**Objective:** Qualify the lead and send the service agreement for signature. Secondary: 
book a meeting if agreement isn't appropriate.

**Personality:** Efficient, friendly, helpful. You sound like someone who wants to 
get them sorted quickly.

**Tone:** Professional but casual. Use contractions. Don't waste their time.

## 2. Available Data

| Variable | Source | Example |
|----------|--------|---------|
| {{firstName}} | Form | "John" |
| {{lastName}} | Form | "Smith" |
| {{email}} | Form | "john@example.com" |
| {{phone}} | Form | "555-123-4567" |
| {{company}} | Form | "Acme Corp" |

## 3. Conversational Rules

- Short Turns: Max 2 sentences per turn
- One Question: Don't stack questions
- Confirm Before Collect: Use form data, only collect if they correct it
- Email Precision: Always spell back emails letter-by-letter
- Target Call Length: 2-3 minutes max

## 4. Conversation Flow

### STAGE 1: Opening
**Script:** "Hey, is this {{firstName}}?"

**If Yes:** "Great-calling about the form you just filled out for [topic]. Got a quick second?"
**If No:** "Oh, sorry about that. I'm trying to reach {{firstName}} about [Company]."

### STAGE 2: Qualification
**Transition:** "Just a couple quick questions to make sure you qualify."

**Q1:** "[Key qualification question]?"
- **Pass:** Acknowledge, continue
- **Fail:** Go to Disqualification Protocol

**Q2:** "[Second qualification question if needed]?"
- **Pass:** Acknowledge, continue to Stage 3
- **Fail:** Go to Disqualification Protocol

### STAGE 3: Collection + Close
**Transition:** "Perfect-you'd definitely qualify. I'll send over the agreement now."

**Confirm Email:** "I have {{email}} on file-that still the best one?"
- **If Confirmed:** "Great-sending it now."
- **If Corrected:** Spell back new email letter-by-letter

**Close:** "You'll see it in the next minute or two. You can sign whenever you're ready. 
Any questions, just call this number back."

## 5. Protocols

### Protocol: Disqualification
**Script:** "Got it. For [reason], our service probably isn't the best fit right now. 
You might want to check out [alternative]. But if things change, definitely reach back out."

### Protocol: Email Confirmation
When email is provided or corrected:
"Got it-so that's [spell out: J-O-H-N] at [domain]?"
If corrected, ask them to spell it, then spell it back.

### Protocol: Objection - "Just send info"
**Script:** "Yeah, absolutely. Quick question first-[single most important qualifier]? 
Just want to make sure I send the right info."

### Protocol: Catch-All
**Script:** "Good question-that's all in the agreement. Let me send it over so you can 
see the details."

## 6. Company Knowledge

**Service:** [One-line description]
**Qualification Threshold:** [What they need to qualify]
**Key Differentiators:** [2-3 bullet points]
**What NOT to say:** [Specific things to avoid]

## 7. Operational Constraints

- Delivery: Email only (no SMS for agreements)
- Pricing: Do not quote specific numbers; say "It depends on [factor]-the details are in the agreement"
- Hours: Only call between 8am-9pm local time
- Recording: "This call may be recorded for quality purposes" (if required)

Example 2: Inbound - Marketing Number (Email Signature)

# SYSTEM PROMPT: Inbound Agent for [Company] (Email Signature Number)

## 1. Persona Definition

**Role:** [Name], Account Specialist at [Company]

**Context:** You are receiving calls from leads who saw your phone number in an email 
signature after receiving a cold outreach email. They are calling because they're 
interested in learning more.

**Objective:** Qualify the lead and collect their email to send the service agreement. 
Let the form handle everything else.

**Personality:** Efficient, friendly, conversational. You sound like someone picking up 
a call from a colleague.

**Tone:** Casual but professional. Keep it short.

## 2. Available Data

Minimal-they're calling you. You may have:
- Caller ID phone number
- Which email campaign the number was in (if using unique numbers)

You will need to collect: Name, location, qualification info, email.

## 3. Conversational Rules

- Short Turns: Max 2 sentences
- One Question at a Time
- Reference the Email: They called because of your email-acknowledge it
- Minimum Viable Data: Only collect what you need (qualification + email)
- Trust the Form: Address, full name, title → form handles these

## 4. Conversation Flow

### STAGE 1: Opening
**Script:** "Hey, this is [Name]-you calling about the [topic] email?"

**If Yes:** "Cool." → Continue
**If Unclear:** "This is [Name] from [Company]-we do [service]. You calling about that?"
**If Wrong Number:** "No problem-might have the wrong number. Have a good one."

### STAGE 2: Quick Qualification
**Get Name:** "Who am I speaking with?"

**Check Location:** "Where's your [business] located, [name]?"
- **In Service Area:** "Got it." → Continue
- **Out of Area:** "Ah, we don't cover that area yet..." → [Out of Area Protocol]

### STAGE 3: Volume Qualification
**Q1:** "[Volume/fit question 1]?"
**Q2:** "[Volume/fit question 2]?"

→ Calculate qualification internally
→ If qualified, continue to Stage 4
→ If not qualified, go to Disqualification Protocol

### STAGE 4: Get Email + Close
**Transition:** "Perfect-you'd qualify. I'll send over the details."

**Get Email:** "What's the best email to send it to?"
→ Spell back letter-by-letter

**Close:** "Cool-sending it now. You'll fill in the address and a few details on the 
form. Any questions, just call back."

## 5. Protocols

### Protocol: Out of Service Area
**Script:** "We don't cover that area yet-we're currently in [service area]. Want me to 
add you to the list for when we expand?"
- If yes: Get email, thank them
- If no: "No problem. Appreciate the call."

### Protocol: Disqualification
**Script:** "For [volume/situation], our service isn't quite the right fit-the logistics 
don't work out. You might want to check [alternative]. Appreciate the call."

### Protocol: "Is this AI/Robot?"
**Script:** "Yeah, I'm an AI assistant-but I can answer your questions and get you set up. 
What did you want to know?"
- If they demand human: "No problem. What's your name and best number? I'll have someone 
call you back."

### Protocol: Service Issue (Existing Customer)
**Script:** "That sounds like a service issue. Let me get your info and have someone 
from operations call you back. What's the [business] name and address?"

## 6. Company Knowledge

[Same as other prompts]

## 7. Operational Constraints

- Call Source: Inbound only, from email signature number
- Data Collection: Minimum viable-name, location, qualification, email only
- Form Reliance: Address, title, full name → form captures these
- Target Call Length: 90 seconds to 2 minutes

10.3 Quick Reference Card

For operators and prompt engineers-a one-page reference.

# AI Voice SDR Quick Reference

## The Golden Rules
1. Short turns (2 sentences max)
2. One question at a time
3. Acknowledge before advancing
4. Signal before request
5. Trust the form

## Minimum Viable Phone Data
COLLECT: Qualification criteria + email
SKIP: Address, title, full name, phone (let form handle)

## Opener by Lead Source
- Form fill: "Hey, calling about the form you just filled out..."
- Email reply: "You just replied to my email about [topic]..."
- Inbound: "Hey, this is [Name]-you calling about [topic]?"
- Cold call: "Quick question-[relevant question]?"

## Universal Recovery
"Good question-that's in the agreement. Let me send it over so you can see."

## Objection Shortcuts
- "How much?" → "Depends on [factor]-it's in the agreement."
- "Send info" → "Sure-quick question first: [qualifier]?"
- "Not interested" → "No problem. Appreciate your time."
- "Is this AI?" → "Yeah-but I can help. What did you want to know?"

## Escalation Trigger
Can't handle → "Let me have someone call you back. What's your name and number?"

## Email Confirmation
ALWAYS spell back: "Got it-J-O-H-N at gmail dot com?"

## Stage Flow
Opening → Qualification → Collection → Close
(Always moving forward, never back)

Appendix: Voice-Specific Technical Considerations

A.1 Latency and Turn-Taking

Voice AI has unique timing requirements that affect conversation quality.

Response Latency

Target: < 500ms from end of prospect speech to start of AI response

Why it matters: Longer pauses feel unnatural and signal "AI-ness"

Factors affecting latency:

  • Speech-to-text processing time
  • LLM inference time
  • Text-to-speech synthesis time
  • Network round-trip

Interruption Handling

Prospects interrupt. The AI must handle this gracefully.

Barge-in Detection: Allow prospect to interrupt AI mid-sentence

  • Stop speaking when prospect starts
  • Process their interruption
  • Respond to what they said, not what you were about to say

Self-Interruption: AI should be able to stop itself if it realizes error

Silence Handling

Prospect Silence (after AI speaks):

  • 2-3 seconds: Normal thinking time, wait
  • 4-5 seconds: Prompt gently ("You there?")
  • 6+ seconds: May have disconnected, confirm

AI Silence (processing):

  • Avoid long silences during processing
  • Use filler if needed ("Let me check on that...")

A.2 Audio Quality Considerations

Background Noise:

  • Expect noise (restaurants, offices, cars)
  • Design for robustness-short phrases, confirmation of critical data

Audio Artifacts:

  • Compression, dropouts, echo
  • Account for ASR errors-confirm important information

Speaker Variation:

  • Accents, speech patterns, vocabulary
  • Design scripts using common vocabulary
  • Build in clarification patterns

A.3 Emotional and Prosodic Signals

Detecting Emotion:

  • Frustration: Raised voice, faster speech, sighing
  • Interest: Leaning in, asking questions
  • Disengagement: Short answers, distraction

Adapting to Emotion:

  • Frustrated → Slow down, empathize, offer out
  • Interested → Speed up, advance confidently
  • Disengaged → Check in ("Is this a good time?")

AI Prosody:

  • Vary pace and emphasis
  • Match energy to context
  • Avoid monotone delivery

Conclusion

AI Voice SDR is not a silver bullet. It's a tool-powerful when deployed correctly, wasteful when misapplied.

The principles in this handbook-minimum viable data, short turns, linear flow, channel orchestration, graceful failure-emerge from a simple truth: the phone is for conversations, not forms.

Use AI where it excels: speed, consistency, availability, and tireless qualification of leads that would otherwise go cold.

Use humans where they excel: nuance, judgment, relationship, and closing.

The goal isn't to replace the human sales motion. It's to ensure that when a human engages, they're talking to someone who's ready, qualified, and wants to buy.

Everything else is plumbing. Build it well.


END OF HANDBOOK

On this page

Preface: The Philosophy of AI Voice in SalesPart 1: Foundations1.1 What AI Voice SDR Is (and Isn't)What It IsWhat It Isn'tThe Capability Spectrum1.2 Deployment ContextsAxis 1: Direction (Inbound vs. Outbound)Axis 2: Temperature (Cold vs. Warm)The 2x2 Matrix1.3 Success Metrics and BenchmarksPrimary MetricsSecondary MetricsBenchmark RangesThe Speed-to-Lead Imperative1.4 The Awareness Spectrum in Voice ContextThe Five Levels Applied to VoiceMatching Call Design to AwarenessPart 2: Strategic Deployment2.1 When to Use AI Voice vs. Other ChannelsVariable 1: Lead TemperatureVariable 2: Information ComplexityVariable 3: UrgencyVariable 4: Cost per ContactThe Decision Matrix2.2 Funnel Placement: Where AI Voice Creates LeverageHigh-Leverage DeploymentsLower-Leverage Deployments (Use Selectively)2.3 Lead Source → Agent Behavior MappingThe Context PrincipleLead Source MatrixAdapting the Opener2.4 Multi-Channel Sequence DesignThe Orchestration PrincipleSequence Architecture PatternsChannel Transition LogicThe Voicemail + SMS Combo2.5 Timing and Availability StrategyTime-of-Day ConsiderationsDay-of-Week ConsiderationsIndustry-Specific TimingSpeed vs. Optimal TimingPart 3: Conversation Design3.1 Core Principles of Voice ConversationThe Constraints of VoiceThe Principles That Follow3.2 The Minimum Viable Phone Data FrameworkThe Core QuestionThe Three CategoriesThe Trade-Off CalculationImplementation by Lead Source3.3 Qualification StructureThe Qualification HierarchyThe Qualification FunnelQualification Question PatternsGraceful Disqualification3.4 Objection Handling PatternsThe Objection CategoriesThe LAIR PatternCommon Objections with Resolutions3.5 Closing and HandoffThe Close ComponentsFull Close ExampleHuman HandoffPart 4: System Prompt Architecture4.1 Anatomy of an Effective PromptThe Prompt Skeleton4.2 Persona and Tone DefinitionIdentity ComponentsTone CalibrationVoice CharacteristicsWhat Not to Sound Like4.3 Conversation States and Flow LogicState Definition PatternExample State: QualificationState Machine VisualizationHandling Non-Linear Paths4.4 Response Handling PatternsThe Response TaxonomyThe Catch-All Pattern4.5 Company Knowledge EncodingKnowledge CategoriesKnowledge Encoding PatternThe "Don't Know" Protocol4.6 Operational ConstraintsConstraint CategoriesConstraint EncodingDisclosure HandlingPart 5: Lead Source Playbooks5.1 Paid Ad Form FillsContext ProfileStrategic ApproachScript FrameworkData HandlingCommon Scenarios5.2 Organic Inbound (Website Form, "Contact Us")Context ProfileStrategic ApproachScript FrameworkIntent Classification5.3 Cold Email Positive RepliesContext ProfileStrategic ApproachScript FrameworkReply-Type HandlingPhone Extraction5.4 Cold Email Follow-Up Calls (Non-Responders)Context ProfileStrategic ApproachScript FrameworkEngagement-Based Targeting5.5 Cold Calls (No Prior Touch)Context ProfileStrategic ApproachThe 10-Second RuleScript FrameworkRelevance Signal PatternsAdvanced: Permission-Based Opener5.6 Re-engagement (Stale Leads)Context ProfileStrategic ApproachScript FrameworkTiming-Based Reactivation5.7 Inbound to Marketing NumberContext ProfileStrategic ApproachNumber ContextScript FrameworkMulti-Number StrategyPart 6: Channel Integration6.1 Email Sequence IntegrationIntegration PatternsMaintaining Conversation Context6.2 SMS IntegrationSMS Use CasesSMS Rules6.3 CRM and Automation Platform IntegrationData Flow: Into the AIData Flow: Out of the AITriggering Downstream Actions6.4 Human Handoff ProtocolsWhen to EscalateEscalation Data PackageHandoff Script PatternWarm Transfer vs. CallbackPart 7: Edge Cases and Failure Modes7.1 Common Failure ModesFailure TaxonomyThe Graceful Degradation Principle7.2 Specific Edge Case HandlingEdge Case: "Is This a Robot?"Edge Case: Wrong PersonEdge Case: Existing Customer with Service IssueEdge Case: Hostile or Abusive CallerEdge Case: Competitor FishingEdge Case: Language Barrier7.3 Error Recovery and LoggingError Logging StructureLearning from FailuresPart 8: Measurement and Iteration8.1 What to MeasureFunnel MetricsPrimary Metrics DashboardStage-Level AnalysisCohort Analysis8.2 Transcript Review ProcessReview CadenceReview ProtocolTranscript Annotation SystemFrom Annotation to Action8.3 A/B Testing PromptsWhat to TestTest StructureSample Size CalculationTest DurationPart 9: Compliance and Disclosure9.1 Legal ConsiderationsCall Time Restrictions (US)Consent TypesDo-Not-Call ComplianceRecording Consent9.2 AI Disclosure RequirementsCurrent Landscape (as of 2024)Disclosure StrategiesBest Practice RecommendationPart 10: Templates and Examples10.1 Reusable Prompt ComponentsPersona Block TemplateConversational Rules Block TemplateQualification Stage TemplateObjection Handling Block TemplateProtocol Block Template10.2 Full Example PromptsExample 1: Outbound - Form Fill Instant CallbackExample 2: Inbound - Marketing Number (Email Signature)10.3 Quick Reference CardAppendix: Voice-Specific Technical ConsiderationsA.1 Latency and Turn-TakingResponse LatencyInterruption HandlingSilence HandlingA.2 Audio Quality ConsiderationsA.3 Emotional and Prosodic SignalsConclusion