Your local business clients get 50 leads a month and close 3. The other 47 are tire kickers, wrong niche, wrong budget, wrong timing. Diagnosis funnels fix that at the source. The prospect self qualifies through a conversational AI bot, gets a partial diagnosis they want to hear the rest of, then books a call OR gets called by the sales team armed with the full picture. Close rates jump 2x to 4x. Cost per booked call drops in half.
🩺 1. Why 80% of Local Business Leads Waste Sales Time
Every local business owner runs the same broken loop. Traffic hits a landing page. A form gets filled out with name, email, phone. Sales calls the number. Half do not answer. Of those who do, most are not real prospects. The salesperson burns 8 hours to book 2 real conversations.
80%
of form fills never become real prospects
$247
avg cost per booked call for local services
12%
close rate on cold booked calls (industry avg)
The root cause: a form asks the buyer nothing. It captures a lead without qualifying it. The salesperson opens the call blind and has to sell AND diagnose in the same 20 minutes. That is why close rates suck and salespeople burn out.
⚡ 2. What a Diagnosis Funnel Does Differently
Instead of a static form, the prospect drops straight into a conversational AI bot that asks 5 to 8 diagnostic questions. Feels like a doctor intake, not a sales pitch. The bot reveals 1 to 2 partial answers as a teaser, then hands them to sales for the full picture.
🎯
Win 1
Leads self qualify
Bad-fit prospects drop off mid intake. Only real buyers reach the end. Sales stops burning hours on tire kickers.
🧠
Win 2
Sales opens the call armed
Every answer flows to the CRM. The salesperson opens the call knowing the pain, the budget signal, the timeline, and the objection.
🔒
Win 3
The teaser creates urgency
Partial diagnosis with 1 to 2 answers is more compelling than a full report. The buyer books the call to hear the rest.
💎
Win 4
Feels premium, not desperate
A diagnostic intake positions the business as an expert. A form positions them as a hungry salesperson. Perception flips the moment the bot starts asking questions.
🧬 3. The 4 Part Anatomy
No landing page. No hook page. The ad or link takes the prospect straight into the bot. Every fold has one job. If any of the 4 fails, the whole thing fails.
Part 1
💬
Bot Intake
5 to 8 conversational questions
→
Part 2
🔍
Partial Reveal
1 to 2 answers as a teaser
→
Part 3
📞
Book / Handoff
Calendar OR sales calls them
→
Part 4
📥
Sales Payload
Full diagnosis lands in CRM
Part 1 in depth
The bot intake (5 to 8 questions)
The bot is casual, warm, uses first person. Feels like the business owner texting you. First question is easy. Later questions get more diagnostic. Each answer shapes what the bot asks next.
- Q1: Opens the loop. Non threatening, easy to answer. "What made you look into this today?"
- Q2 to Q4: Situation questions. Where are they now? What have they tried?
- Q5 to Q6: Diagnostic. Reveal the actual gap. "How long has this been going on?"
- Q7 to Q8: Intent + budget signal. "How soon do you want this fixed?" "What is your rough budget range?"
Part 2 in depth
The partial reveal (this is the whole game)
Give them 1 to 2 things you see from their answers. Enough to prove you understood. Not enough to solve the problem. The gap is what pulls them into the call.
- Do: name the specific problem you saw. "Your AC is losing 30% efficiency because of X."
- Do: name the cost of doing nothing. "If untreated, you are looking at Y in the next 6 months."
- Do NOT: give the fix. That is what the call is for.
- Do NOT: price anything. Ever.
Part 3 in depth
The book OR handoff
Two paths. Pick based on the business owner's preference.
- Path A (calendar): embed Cal.com or Calendly right at the end. "Pick a slot to get the full diagnosis." Best for businesses with dedicated closers.
- Path B (handoff): "The owner will call you in the next 24 hours." Best for solo operators or high touch niches (legal, medical, luxury).
Part 4 in depth
The sales payload
The moment the bot finishes, every answer + the full AI generated diagnosis fires into wherever sales lives. This is what makes close rates jump.
- Payload contains: raw Q&A transcript, the AI's full 3 paragraph diagnosis, the risk of inaction, the recommended next step
- Delivered via: email to owner, SMS alert, Slack DM, direct CRM entry (HubSpot / GHL / Close), or all four
- Salesperson opens the call knowing: the pain, the timeline, the budget signal, the objection likely to surface
🎯 4. Which Niches This Actually Works For
The rule: does the buyer have a complex problem they would want diagnosed BEFORE committing? If yes, Tier A. If they already know exactly what they want, Tier C.
Tier A · Nails it
High ticket, complex problem, buyer wants a diagnosis
These 8 niches are where the funnel prints money. Close rate lift is typically 2x to 4x versus a static form.
| Niche | Diagnostic angle | Avg ticket |
| Roofing | Roof age + storm damage risk | $8K to $40K |
| HVAC | AC system health + energy savings | $5K to $15K |
| Solar | Home solar savings estimator | $20K to $50K |
| Med spas / aesthetics | Skin, body, or hair diagnostic | $500 to $5K per plan |
| Cosmetic dental (Invisalign, veneers, implants) | Smile eligibility + timeline | $5K to $15K |
| Chiropractic / pain clinics | Pain source diagnostic | $2K to $8K packages |
| Personal training / weight loss | Fitness + nutrition assessment | $2K to $10K programs |
| Legal (PI, estate, immigration, family) | Case eligibility + value estimator | $3K to $50K+ |
Tier B · Works with adjustment
Diagnosis-adjacent, softer fit but still viable
Works if the offer is positioned as consultative. Weaker for pure transactional buyers.
| Niche | Angle |
| Home renovation (kitchen / bath) | Renovation ROI + timeline |
| Auto (EVs, used luxury) | Best vehicle match |
| Financial / tax / accounting | Business finance health check |
| Real estate (sellers) | Home value + market timing |
| Wellness / massage / spa | Recovery + treatment plan |
Tier C · Do not waste time
Transactional, low ticket, buyer already knows what they want
Diagnosis feels forced. Use a simple booking form or ad-to-call instead.
- Pizza shops, cafes, restaurants
- Gyms (single membership sales)
- Barbers, tattoo artists, nail salons
- Retail, e commerce, drop shipping
- Fast turnaround services (lock smith, tow, quick oil change)
🛠️ 5. The Stack (Simple, Not Bloated)
The whole thing runs on 2 pieces. Build tool + whatever email or texting tool the client already uses. That is it. No Zapier chains, no 6 SaaS subscriptions.
Build tool
Claude Code
One prompt, one working web app. Hosted on Vercel. Owns the bot, the conversation logic, the diagnosis generation, and the payload dispatch. No plugin bloat.
Delivery layer
Whatever the client already uses
The AI hands the diagnosis to their existing tool. Do not force them to buy new software. Match what is already installed.
Why this stack wins: a solo operator can spin it up in 1 to 2 hours. No monthly SaaS creep. The bot lives on the client's own domain. Data belongs to the client. You (the agency) charge $2K to $5K to build + $500 to $1500 per month to maintain and iterate.
📋 6. Sample Intake (Roofing Example)
Here is what the 8 questions look like for a residential roofing client in a storm market. Copy this structure, swap for your niche.
Q1 · Open loop
"Hey, thanks for stopping by. Quick question first: what got you thinking about your roof today?"
Bot options: recent storm · seeing leaks · roof is old · insurance said to · just checking
Q2 · Situation
"Got it. When was the roof last replaced or inspected?"
Bot options: under 5 years · 5 to 10 · 10 to 20 · over 20 · no idea
Q3 · Situation
"Are you seeing any of these signs? Missing shingles, water stains, granules in the gutter, sagging."
Multi select
Q4 · Diagnostic
"Have you had recent storm activity in your area (hail, high wind, hurricane)?"
Yes / no / not sure
Q5 · Diagnostic
"Has your insurance ever paid for roof work before, or has anyone told you your roof might be covered?"
Yes covered · no not covered · never checked
Q6 · Intent
"If we found something covered, when would you want the work done?"
Immediately · in the next 30 days · in the next 90 days · just gathering info
Q7 · Contact
"Awesome, I have enough to run your diagnosis. What is the best number to text your results to?"
Phone capture
Q8 · Confirmation
"And your first name so I can address you properly?"
Name capture · triggers the partial reveal
🚀 7. The Claude Code Build Prompt (Paste This)
Open Claude Code. New project folder. Paste the full prompt below. Follow the Playbook 7 part structure from Class 5.0. Claude scaffolds the whole app in one shot.
COPY ALLROLE / CONTEXT:
You are helping me build an AI diagnosis funnel web app for a local business client. The prospect drops straight into a conversational AI bot (no landing page), answers 5 to 8 diagnostic questions, receives a partial diagnosis with a teaser, and either books a call OR gets contacted by the owner within 24 hours. The client is a [ROOFING / HVAC / MED SPA / etc.] business in [CITY].
GOAL:
Build a production ready Next.js app deployed on Vercel. One route (the bot). One API endpoint (OpenAI diagnosis generation). One outgoing webhook (payload to client's CRM / email / SMS). Ships in under 200 lines of code.
CONSTRAINTS:
- Next.js 14 App Router, TypeScript, Tailwind for styling
- Single page app, no auth, no database (all state in URL / session)
- OpenAI API key + client's CRM webhook URL live in env vars
- Chat UI: full screen, mobile first, feels like SMS / iMessage
- No em dashes, no "unlock / empower / leverage / dive in"
- No corporate polish. Casual first person voice. Feels like the business owner texting.
- Do NOT reveal pricing anywhere. Ever.
- Do NOT reveal the full diagnosis. Only 1 to 2 partial teasers.
INPUTS:
Client niche: [ROOFING]
Client business name: [PEAK ROOFING TAMPA]
Client tone: [urgent but trustworthy]
Client CRM webhook URL: [POST endpoint they gave you]
Twilio SMS credentials: [SID + auth token]
Owner phone for lead alerts: [+1XXXXXXXXXX]
Cal.com or Calendly link: [https://cal.com/xxx] OR "handoff mode" if owner will call directly
The 8 diagnostic questions (paste from Section 6 above, customized for niche)
OUTPUT FORMAT:
A complete Next.js project scaffold:
- app/page.tsx (the chat UI)
- app/api/diagnose/route.ts (OpenAI call + webhook dispatch)
- lib/prompt.ts (the bot's system prompt, exported)
- lib/questions.ts (the 8 questions as a typed array)
- .env.example (all required env vars)
- README.md (setup + deploy instructions in under 20 lines)
EXAMPLES:
UI reference: iMessage bubble chat. Business owner avatar top left. One question at a time. Multiple choice buttons OR text input. Progress bar at top (Q3 of 8).
Voice reference: casual owner, first name basis, warm but clinical. "Hey, quick question first" not "Please answer the following."
EVALUATION:
Before finishing, confirm:
1. Bot loads on mobile in under 2 seconds
2. Questions render one at a time, no scroll needed per question
3. The partial reveal shows exactly 2 findings, not more
4. The full diagnosis (never shown to prospect) fires to the webhook as JSON
5. SMS alert to owner fires the moment the prospect finishes
6. No em dashes anywhere in the app copy
7. No pricing mentioned anywhere
8. Deploys to Vercel with one command
🧠 8. The Bot's System Prompt (The Personality Layer)
This is what makes the bot feel human. Lives in lib/prompt.ts. Passed to OpenAI on every request.
COPY ALL// Bot personality + diagnosis instructions
// Passed as the system message on every OpenAI call
You are a senior [ROOFING] consultant conducting a quick intake for [PEAK ROOFING TAMPA]. You speak casually, warm but professional. First person. Feels like the owner texting a friend.
YOUR JOB:
1. Ask the 8 diagnostic questions provided one at a time
2. Never break character
3. Never mention pricing
4. Never quote a full diagnosis to the prospect
5. After Q8, output a partial reveal (2 findings max) + book / handoff CTA
6. Output the FULL structured diagnosis as JSON (for the sales team only, not shown to prospect)
TONE RULES:
- Use their first name after they give it
- No corporate words: unlock, empower, leverage, dive in, journey, ecosystem
- No em dashes
- Short sentences. Warm not chirpy.
- If they seem confused, rephrase simply
- If they type off topic, gently pull back to the question
PARTIAL REVEAL FORMAT (shown to prospect):
"[NAME], based on what you shared, here is what I see so far:
1. [Specific finding tied to their answers, one sentence]
2. [Second finding, the one that creates urgency, one sentence]
There is more but it needs eyes on the actual [ROOF / TEETH / SKIN / etc]. Best move is a 15 min call with [OWNER NAME] this week. He will walk you through the full picture and what your options look like.
Grab a time below OR reply "call me" and he will reach out within 24 hours."
FULL DIAGNOSIS JSON (sent to sales, hidden from prospect):
{
"prospect_name": "...",
"phone": "...",
"lead_score": 1-10,
"urgency": "immediate | 30 days | 90 days | browsing",
"budget_signal": "yes covered | not covered | unknown",
"primary_pain": "1 sentence",
"root_cause_diagnosis": "3 sentence paragraph",
"risk_of_inaction": "1 sentence",
"recommended_next_step": "1 sentence",
"objection_likely_to_surface": "1 sentence prediction",
"raw_answers": [ { "q": "...", "a": "..." } ]
}
EVALUATION (self check before responding):
- Did I use their first name?
- Did I mention pricing? (must be no)
- Did I give away the full fix? (must be no)
- Did I create a specific reason to book the call? (must be yes)
Why this prompt wins: the bot is warm, the reveal creates a specific gap, and the sales payload is structured so the salesperson opens the call knowing the exact pain, urgency, budget signal, and likely objection. Close rates on booked calls typically jump from 12% to 25-40%.
📤 9. The Handoff (Where Every Lead Goes)
The moment the bot finishes, the payload fires to every channel the client uses. Redundant on purpose. No lead falls through.
📱
SMS alert to the owner (within 3 seconds)
"NEW LEAD, [Name], score 9/10, wants work done in 30 days. Full diagnosis in email. Call within 24 hrs."
📧
Email to sales inbox (with full JSON diagnosis)
Structured, scannable in 30 seconds. Salesperson reads before they dial. Opens the call armed.
🗂️
CRM entry auto created
HubSpot / GHL / Close: contact created, note added with full diagnosis, tag applied ("hot lead"), owner assigned.
💬
Slack DM to the sales channel (optional)
If the client's team lives in Slack, drop a formatted card in #new-leads with the score, name, and 1 line summary.
📞
Prospect receives their booking confirmation
Either a Cal.com booked slot confirmation OR a text saying "[Owner] will call you within 24 hours from XXX-XXX-XXXX."
✅ 10. Homework
Ship one working diagnosis funnel this week. For a real client. With real traffic. Do not overthink the niche, pick one from Tier A and start.
The compounding play: once you have shipped one, the second takes 30 minutes. The third takes 15. By the end of month 2 you have a diagnosis funnel for every client on retainer and you are charging $2K to $5K per build + $500 to $1500 per month per client to maintain and optimize. That is the real business.
🏷️ Tags
diagnosis-funnellead-genlocal-businessai-botclaude-codesales-handoffself-qualification