Back to Blog
Tutorial15 min read

How to Write a Call Qualification Script That AI and Agents Both Follow

Build scripts that qualify callers the same way across AI and human agents.

How to Write a Call Qualification Script That AI and Agents Both Follow

Last month I watched two intake teams — one AI, one human — run the same HVAC campaign with the same traffic source. The AI agent qualified 34% of callers. The human team qualified 41%. Same leads. Seven-point gap.

I assumed the humans would win by more. They didn't.

The difference wasn't the AI's voice or the humans' charm. It was the script. The human team was working from a loose outline — "ask about the system, get the address, check if they own the home." The AI agent had a rigid decision tree that dead-ended callers when they gave unexpected answers. Neither had a real qualification script. And honestly, I'd built both of those scripts myself six months earlier when I knew less than I do now. The gap was my fault.

A qualification script isn't a telemarketing pitch or a chatbot flowchart. It's a filter. A structured sequence of questions that determines whether a caller moves forward — and it needs to work the same way whether a human or an AI voice agent is asking.

This tutorial covers: core qualifying questions, branching logic that doesn't break, disqualification rules that exit non-fits fast, and a format both AI and human agents can execute. We're building a filter. If you're running paid search to drive calls, ClickzProtect handles the click fraud layer first. For context on how AI voice qualification affects your CPL, see our AI voice qualification economics guide.

Prerequisites

  • A pay-per-call or inbound lead qualification use case
  • Access to your IVR or call routing platform (VeloCalls, Ringba, or similar)
  • If deploying to AI voice: access to your voice agent builder
  • Historical call data (30+ days) showing which attributes predict conversion

Step 1: Define Your Qualification Criteria First

Before you write a single question, get clear on what actually qualifies a lead.

Hard disqualifiers. These are binary: if the answer is wrong, the lead is worthless. For HVAC, "Are you the homeowner?" is a hard disqualifier — renters can't authorize system replacements. For PI auto, "Were you injured in the accident?" is the gate. For Medicare AEP, "Are you currently enrolled in Medicare Part A and B?" filters out the ineligible. Legal intake has its own compliance requirements — our legal pay-per-call guide covers vertical-specific disqualifiers.

Soft qualifiers. These affect lead quality or routing, but don't kill the lead. "What's your timeline?" matters — a caller who needs HVAC next week is worth more than one asking about next summer — but both are still leads. Soft qualifiers influence priority, payout tier, or buyer matching, not pass/fail.

Required data points. Information you must capture regardless of qualification: name, phone (you have it), zip code, and usually 1-2 vertical-specific fields. These aren't qualification questions — they're data collection. Don't confuse the two.

Write these down before you write the script. I've watched operators spend hours crafting question phrasing before they could define what a qualified lead looked like. Backwards. I've done it myself. It feels productive. It isn't.

Step 2: Structure Questions in Priority Order

The sequence matters as much as the questions themselves.

Rule 1: Disqualifiers first. If a caller doesn't meet your hard criteria, exit them before you spend 3 minutes collecting data you'll never use. Ask "Are you the homeowner?" at position 1 or 2, not position 6.

Rule 2: High-value soft qualifiers before low-value ones. If "emergency service needed" routes to a $90 payout buyer and "scheduled estimate" routes to a $45 payout buyer, ask about urgency early. You want the routing decision as soon as possible so the rest of the script can adapt.

Rule 3: Data collection at the end. Name, address, callback number — these are housekeeping. The caller is already qualified by the time you're asking for their email. Don't waste premium attention (the first 30 seconds) on logistics.

Rule 4: Group related questions. All property questions together. All injury questions together. Jumping between topics confuses callers and breaks conversational flow. AI agents especially struggle with topic whiplash — they lose context when the domain shifts mid-script.

Here's the order that works for most verticals:

Position 1: Primary hard disqualifier
Position 2: Secondary hard disqualifier (if any)
Position 3: Urgency/priority soft qualifier
Position 4-5: Vertical-specific qualification (service type, damage type, injury type)
Position 6-7: Data collection (name, address, contact)
Position 8: Callback confirmation and handoff

(Yes, this is more positions than the "five to seven questions" recommendation. The data collection at the end doesn't count toward cognitive load the same way qualification questions do. Callers expect to give their name and address once they've decided to proceed.)

Step 3: Write Questions for AI and Human Delivery

The same question lands differently depending on who's asking.

Human agents can improvise. A trained intake rep might ask "And you're the homeowner, right?" or "Just to confirm — you own the property?" Both work. Humans read tone and adjust.

AI agents need precision. An AI voice agent needs the exact phrasing it will speak, plus explicit instructions for handling responses. "Are you the homeowner?" works. "Could you tell me a bit about your ownership situation with regard to the property?" does not. Clear prompts, clear expected responses, clear fallback behaviors.

Write both versions side by side. The qualification logic is identical. The phrasing differs. Human version: "Are you the homeowner, or is there a homeowner I should be speaking with?" AI version: "Are you the homeowner? Please say yes or no." The AI needs expected response variants mapped — "yes", "yeah", "correct", "I am", "that's me" — plus fallback behavior when no match occurs and escalation rules for extended silence.

Avoid compound questions. "Are you the homeowner and is the property residential?" Humans can answer this. AI gets confused. Split it: "Are you the homeowner?" then "Is this a residential property or a commercial building?"

Step 4: Design Branching Logic That Converges

Branching makes scripts smarter. Too much branching makes them impossible to maintain.

Keep branches shallow. A branch should diverge for 1-2 questions, then rejoin the main flow. If you're building a script where emergency callers go down a completely separate 8-question path from scheduled callers, you've actually built two scripts. Maintain them separately.

Use branches for routing, not qualification. The purpose of a branch isn't to ask different qualification questions — it's to collect different routing data or set different disposition flags. An emergency branch might skip the "timeline" question (obviously it's now) but still asks every qualification question the standard path asks.

Map it before you build it. Draw the flow on paper or in a whiteboard tool. If you can't trace every path in under 60 seconds, simplify. I've inherited scripts that looked like circuit diagrams. Embarrassing confession: I've also created scripts that looked like circuit diagrams. Nobody could follow them — not the agents, not the AI, and definitely not me trying to debug why qualified callers were getting disqualified at 2am before a Monday launch.

For plumbing: Q1 disqualifies non-homeowners. Q2 asks emergency vs scheduled — that's your branch point. Emergency branch asks "Is water actively leaking?" to set priority. Scheduled branch asks about timeline to tier the lead. Both branches rejoin at Q4 for zip code and data collection. Two branches, clear convergence. That's maintainable.

Step 5: Define Exit Points and Handoff Triggers

Not every call should reach a human. And not every qualified call should reach the same human.

Disqualification exits. When a caller fails a hard disqualifier, exit gracefully. Don't just hang up. "I'm sorry, we're only able to help homeowners with this service. If the homeowner would like to call back, we're here 24/7." That's an exit, not a rejection.

Escalation triggers. Some callers need a human even mid-AI-script. Define the triggers: caller requests human three times, caller expresses frustration, caller provides answer AI can't parse after two attempts. In VeloCalls, you configure escalation rules in the AI agent flow — on other platforms, this lives in the prompt fallback logic. If you're evaluating platforms, our Ringba alternatives comparison covers how escalation rules differ across vendors.

Tier-based handoffs. A Priority 1 emergency goes to a different buyer (or queue) than a Priority 4 quote request. Your script should tag the call by the time it reaches data collection — if you're rebuilding that tag-and-route logic on a new platform, our Retreaver-to-VeloCalls migration guide walks through porting tags and routing rules. The handoff decision is already made before you ask for their name.

Priority 1 gets immediate warm transfer — no hold music, under 15 seconds. Priority 2-4 uses standard routing with up to 45-second acceptable hold. (Honestly, even 45 seconds feels too long. But that's where most operators land.)

Don't hide the exits. I've seen scripts where the only disqualification path was "if homeowner = no, go to question 7 anyway and collect their data before telling them we can't help." That's wasting everyone's time. Exit early, exit clearly.

Track exit reason codes. Every disqualification should log why. "DQ-001: Not homeowner." "DQ-002: Commercial property." "DQ-003: Out of service area." These codes let you analyze why calls fail qualification. If 30% of your disqualifications are service area, maybe you need to expand buyer coverage — or maybe your traffic source is sending you the wrong geography. The data tells you. Without codes, you're guessing. The 2026 TCPA one-to-one consent rules also require you to document consent at each step — exit codes help here too.

Step 6: Build Confirmation and Repair Loops

Callers give unclear answers. Scripts need to handle that without breaking.

Confirmation prompts. After any critical field, confirm. "You said 78741 — is that correct?" This catches typos in data entry and mishearings from AI transcription. One extra question prevents a callback to wrong address.

Repair loops for AI. When the AI doesn't understand a response, it needs to recover. First attempt: rephrase with clearer options. Second attempt: narrow to binary yes/no. Third attempt: escalate to human. Three tries, then bail. Human agents just ask again — "Sorry, could you repeat that?" — but they still need guardrails. Two attempts on any required question, then mark incomplete and escalate.

Log unclear responses. Whatever your callers are saying that's confusing the AI — that's training data. If 15% of callers say "I guess" instead of "yes" and your AI doesn't handle it, add "I guess" to your expected response set. The script improves over time only if you're watching what fails.

Handle silence differently than confusion. Five seconds of silence after a question means something different than "um, what?" Silence might be the caller checking their insurance card or pulling up their address. Build a silence tolerance: wait 7-8 seconds before prompting, then offer help — "Take your time, I'm here when you're ready." Confusion gets clarification; silence gets patience. AI agents in particular tend to jump in too fast when callers are just thinking.

Step 7: Document for Training and Maintenance

A script that lives only in your head or your AI configuration isn't a script. It's a single point of failure.

Create a master document. Every question, every branch, every exit condition, every expected response. This is the source of truth. When you train new agents, they read this. When you configure new AI voice agents, you copy from this. When the script changes, you update here first, then deploy everywhere else.

Include the "why." For each question, note why it's there and what happens if removed. Six months from now, someone will ask "why do we ask about insurance carrier?" If the document says "routes to storm-damage buyer who requires carrier verification," that question stays. If it just says "ask about insurance," someone will cut it to "simplify the flow." And break the routing. I've been that someone. More than once. It's a humbling experience to debug a problem you created by trying to be clever.

Version control your scripts. Date every change. Note who made it. Note why. When conversion rates drop 12% and nobody knows what changed, you need to be able to diff last week's script against this week's. Each question entry should include: ID, human text, AI text, purpose, branching behavior, data field name, date added, and modification history.

Common Errors and How to Fix Them

Callers dropping off at a specific question. Review recordings at that step. If callers hesitate, rephrase. If they answer then hang up, the question might be offputting — "How much are you looking to spend?" before explaining the service is a classic turnoff.

AI routing callers to wrong queue. Branch logic isn't matching responses. Pull transcripts from misrouted calls, expand your synonym sets. "It's urgent," "kind of an emergency," "asap" all need to trigger the emergency branch.

Human agents skipping questions. Train on the "why." If agents understand that skipping the homeowner question means the buyer rejects the lead, they'll ask it. (Or fire them. I know that sounds harsh. But an agent who won't follow a six-question script after training isn't going to improve.)

Qualification rate differs between AI and human. Audit 50 calls per channel. Score them against written criteria. Usually AI isn't catching synonyms or humans are qualifying out of sympathy. The sympathy thing is frustrating — your best, kindest reps are often your worst qualifiers because they want to help everyone.

Next Steps

Test with live calls first. Run 50-100 calls through the script manually before pushing to production. For tracking test call outcomes, JustAnalytics can tie results to specific question sequences.

A/B test question phrasing. "Are you the homeowner?" vs "Do you own or rent?" might have different completion rates. Small phrasing changes move qualification rates 5-10%. This is one of the few places where marginal-gain thinking actually pays off in pay-per-call. Most "optimization" is theater. This isn't.

Build vertical-specific variants. The structure applies to any vertical, but the questions differ. Roofing asks about insurance claims; Medicare asks about current coverage; PI asks about injury date. Fork your master script per vertical. For more on vertical economics, see our pay-per-call benchmarks report.

Connect qualification data to close rates. After 60-90 days, analyze which answers predict buyer conversion. Callers who say "emergency" might close at 28% while "just getting quotes" closes at 4% — adjust routing accordingly. On junk call filtering that protects your qualification data, see our junk call filtering guide.

The questions filter. The branches route. The documentation survives when you're not around.

Look, most qualification scripts I've audited are bad. Not terrible-bad, just mediocre — thrown together, never iterated, never documented. Yours doesn't have to be. Run it, measure it, improve it. The bar is low. Clear it.

Frequently Asked Questions

How many questions should be in a call qualification script?

Five to seven questions is the sweet spot for most verticals. Fewer than five and you're not really qualifying — you're just routing. More than eight and callers start dropping off or giving garbage answers to speed through. The exception is legal intake, where compliance requires more questions (10-12 isn't unusual for mass tort), but even then you should front-load the critical disqualifiers so non-fits exit early.

Should AI voice agents and human agents use the same script?

Yes, with minor delivery adjustments. The question sequence, branching logic, and disqualification criteria should be identical — that's how you get consistent qualification rates across channels. What changes is phrasing: AI agents need shorter, cleaner prompts with explicit confirmation handles ('Did you say Austin? Press 1 for yes, 2 for no'). Human agents can riff slightly on wording but must hit every required data point in order.

What makes a good disqualification question?

A good disqualifier is binary (yes/no), comes early in the script (positions 1-3), and filters out a meaningful percentage of unqualified traffic without false-positive risk. 'Are you the homeowner?' is a classic — renters can't authorize HVAC work, so there's no point qualifying them further. The question has to be answerable without awkwardness. 'Is your household income above $50,000?' is technically a disqualifier, but callers won't answer it honestly.

How do I handle branching logic without making the script too complicated?

Limit branches to one per question, max two total per script. Each branch should rejoin the main flow within 1-2 questions — don't create parallel tracks that never converge. Map it visually before you build it: if your diagram looks like a subway map, simplify. Most qualification scripts need at most two branches: one for intent type (emergency vs scheduled) and one for geography or coverage area.


Try VeloCalls for Your Vertical

AI calling + pay-per-call platform built for HVAC, plumbing, roofing, PI lawyers, Medicare brokers, and insurance. Smart routing, real-time bidding, visual IVR builder, AI conversation intelligence. Per-minute pricing — Managed starts at 4¢/min, BYOC at 2¢/min, both drop as you scale.

See pricing → · Book a demo

call-qualification-scriptai-voice-agentsintake-scriptspay-per-calllead-qualificationbuildinpublicsaasstudioaiworkforcebuildwithclaude
Share

Ready to try VeloCalls?

Set up intelligent call tracking and routing in minutes. No credit card required.

Get Started Free

Stay Updated

Get the latest articles and industry insights delivered to your inbox.

No spam. Unsubscribe anytime.

Related Articles