Skip to main content

WiseAI Agency — Vertical Demo + Video System

The shift (why)

Replace ~400 thin per-prospect demos (only 77 had a working call button) with one excellent, fully-wired demo per industry. Each vertical demo = live browser voice-call test + chat, both wired with that industry's knowledge + its real common calls as canned questions, plus an optional pro-website link. Each gets a short intro video that proves we know their trade by naming the calls they actually get.

Why it wins: build once per vertical (not per prospect), higher quality, no per-prospect provisioning gap, reusable as ad/landing/email/YouTube assets, and one video matches one demo (kills the "press the call button that isn't there" mismatch).

The personalization we'd lose (per-business "I built this for YOU") is replaced by industry specificity ("we know your calls") — which is more credible and scales. Optional thin skin: a ?for=BusinessName header swap personalizes the page without per-prospect provisioning.

Current-state reality (from DB, 2026-06-17)

  • All ~400 demos are vertical home_services (industry is only a metadata.category tag); chat is generic; 77 have a pre-recorded sample_call_audio_url (which gates the call button). No per-industry knowledge or canned questions are wired today.
  • Template exists and is reused: HomeServicesDemo (chat + sample-call player + browser-call button), ServiceBusinessTemplate//s/[slug] (pro website). So this is wiring, not new infrastructure.

Build pattern (do ONE vertical end-to-end, then clone)

  1. Research the top ~10 real calls for the vertical (sourced, in the trade's language). ← keystone
  2. Pick/create a canonical demo for the vertical — a neutral fictional business (not a real prospect's), clean URL.
  3. Wire the knowledge into the demo's chat + the voice agent demo tenant (services, hours, pricing ranges, policies) + guardrails (what it must NOT do).
  4. Add the canned questions (suggested prompts beside the chat / "ask it this") = the demo-able subset of the top calls.
  5. Set sample_call_audio_url so the call button renders; confirm the live browser call routes to the vertical-knowledge agent (open question — verify, don't assume).
  6. Verify on the real wiseaiagency.com host (preview hosts skip the host-rewrite middleware — see memory/feedback_preview_host_hides_middleware_rewrites).
  7. Record the intro video (script below) → brand via lead-video skill.
  8. Clone steps 2–7 for the next vertical.

Vertical #1 — Vets (veterinary clinics)

Top calls a vet front desk actually gets (researched)

Grouped; trade language in quotes. Sources at bottom.

Scheduling / new clients

  1. "Are you taking new patients?" (new-client onboarding — high-intent)
  2. "I need to book an appointment" — wellness/annual exam, "my dog's due for his shots"
  3. "My pet is sick — vomiting / not eating / limping — can you get him in today?" (same-day sick visit)

Meds & prevention 4. "I need a refill on his heartworm / flea-and-tick prevention" (or a prescription med) 5. "Does my dog need the kennel cough (Bordetella) shot for boarding?" / rabies / puppy series

Pricing & services 6. "How much is an exam / a spay / a neuter / a dental cleaning?" 7. "Do you do spays/neuters, and how far out are you booking?"

Logistics 8. "What are your hours? Are you open Saturday?" / location, parking 9. "Can you send my pet's records / I'm transferring from another vet"

Urgent / sensitive (escalate — do NOT diagnose) 10. "My dog just ate chocolate / grapes / something — is this an emergency?" (after-hours triage) 11. End-of-life / euthanasia inquiries (gentle, route to the team)

Canned demo questions (the suggested prompts beside the chat / "ask it this")

Pick demo-able, impressive, safe ones — and include ONE that shows the safety bridge:

  1. "Are you taking new patients?"
  2. "My dog's due for his shots — what do you have this week?"
  3. "How much is a spay for a cat?"
  4. "Can I get a refill on heartworm prevention?"
  5. "Are you open Saturday?"
  6. "My dog just ate chocolate — what should I do?" ← showcases the agent recognizing urgency and getting the owner to a human/ER fast, without playing vet. This is the most reassuring one for a vet to watch.

Knowledge wiring + guardrails (AI-bridge)

Knows: services offered, hours/location, new-patient policy, vaccine offerings, pricing ranges, refill process, how to book. Never does: diagnose, give medical/dosing advice, quote exact treatment costs it can't know. For symptoms/ingestion/emergencies → recognize urgency, direct to the clinic now or the ER line, capture name + callback. End-of-life → gentle, route to team. (Matches the research: receptionists escalate diagnosis/medical advice. Reinforces [[ai-bridge-principle]] — and it's the behavior a vet wants to see.)

Intro video script

Master template (swap the bracketed bits per vertical):

Hey, I'm John with WiseAI Agency. If you run a [VERTICAL], you know these calls: [3–4 SIGNATURE CALLS]. And they come in while you're [INDUSTRY MOMENT] — so they hit voicemail, and that's a lost [client/job]. So I built an AI receptionist that knows [the trade]. Press the call button and ask it what a [client] would — [examples]. Or use the chat beside it. It answers in your [shop]'s voice, 24/7, and books straight into your calendar. And the urgent ones? It [bridge behavior] — it never plays [expert]. It handles the everyday calls so your team can do the work. Like it? Give me ten minutes and I'll wire it to your real [business]. Go ahead — press the button.

Vets, filled (target ~60–75s):

Hey, I'm John with WiseAI Agency. If you run a veterinary clinic, you know these calls: "Are you taking new patients?", "My dog's due for his shots," "How much is a spay?" — and the 9 p.m. "my dog just ate chocolate." They come in while your team's with a patient, so they hit voicemail — and that's a lost client, or a scared owner with nowhere to turn. So I built an AI receptionist that knows a vet clinic's calls. Go ahead — press the call button and ask it what a client would: are you taking new patients, what's an exam run, can I refill heartworm prevention. Or try the chat beside it. It answers in your clinic's voice, around the clock, and books straight into your calendar. And the emergencies? It recognizes them and gets the owner to you or the ER fast — it never plays vet. It handles the everyday calls so your team can do medicine. If you like what you hear, give me ten minutes and I'll wire it to your clinic. Press the button.

Note the honest "never plays vet / hands emergencies to you" line — it's true, on-brand for the bridge principle, and it's the objection-killer for a clinician worried about an AI giving medical advice.

Sources (vet call research)


Vets — wiring status & build path (scoped 2026-06-17, voice-agent-engineer)

Surprise: most of the vet demo is already built. The blocker is a two-model split, not green-field work.

  • Two parallel vet datasets: local_businesses (category=vet) = 40 seeded rows, all with full services/FAQs/hours profiles + sample_call_audio_url — these render the /s/[slug] page + chat. Separately, vet_clinics/premium_vet_clinics = 1 row that the rich vet voice persona loads — but it has no page.
  • Today's gap: a vet page's browser call passes the local_businesses slug → token route stamps vertical:'local_business' → call gets the generic front-desk persona, NOT the vet one (which has the ASPCA poison line, pet-ER routing, after-hours triage, no-diagnosis). Chat similarly uses the home-services prose persona ("licensed plumber…") even though vet config exists.
  • The good news: the vet voice persona (verticals/vet/prompts.py) and routing (main.py _build_vet_prospect_path) are already built and wired — the README's "NOT DEPLOYED" note is stale. The AI-bridge guardrails you wanted (no diagnosis, ASPCA, pet-ER, after-hours) are already in it. End-of-life is implicit; explicit copy optional.

Build path (safest sequencing):

  1. Chat first — Vercel-only, NO voice deploy, low risk: pass vertical="vet" from HomeServicesDemo.tsx; vet-specialize buildHomeServicesSystemPrompt (swap plumbing copy → vet no-diagnosis/emergency/end-of-life); swap default suggested prompts → vet phrasing. Verify on the real wiseaiagency.com host.
  2. Voice — gated: Option A (recommended) token-route detects vet category on a local_businesses row → stamps vertical:'veterinary' + a local_businesses→vet-dict adapter so the existing vet persona hydrates. This is a voice-agent change → independent QA voice review + founder go BEFORE lk.exe agent deploy (LIFE-SAFETY; one deploy hits every customer line). Option B (no voice deploy): seed vet_clinics rows + a /s/[slug] vet-page adapter — more new TS, zero voice-deploy risk.
  3. Fix the stale verticals/vet/README.md note in the same PR (knowledge-sync gate).

Production-safety: the demo browser call shares the SAME deployed agent + LiveKit project + SIP trunk as paying customer lines. Chat changes are Vercel-only (safe). Any voice-agent code/prompt change is the gated path above. Full file:line scope is in the agent transcript.


Vertical #2 — Roofing

Top calls a roofing office actually gets (researched)

Service requests (high-intent)

  1. "Can someone come look at a leak this week?" (repair / inspection)
  2. "I need a quote on a new roof / re-roof" (replacement)
  3. "We got storm/hail/wind damage — can you inspect it?" (storm + insurance season driver)

Estimates & cost 4. "Do you do free estimates?" / "roughly what's a tear-off / re-shingle run?" 5. "Do you offer financing / payment plans?"

Materials & scope 6. "Do you do metal / flat / shingle roofs?" 7. "How long does a replacement take?"

Trust / qualification (big in roofing) 8. "Are you licensed and insured?" (proof of insurance) 9. "Do you handle insurance claims / work with my insurer?" 10. "Can I see references / past work — are you BBB-rated?"

Urgent 11. "I've got an active leak right now" (storm after-hours) → urgency capture + fast callback

Canned demo questions (suggested prompts beside chat)

  1. "Can someone come look at a leak this week?"
  2. "Do you do metal roofs?"
  3. "Are you licensed and insured?"
  4. "Do you handle insurance/storm-damage claims?"
  5. "Can I get a free estimate?"
  6. "I've got an active leak right now — what do I do?" ← showcases urgency capture + "we'll get someone out fast" without quoting blind.

Knowledge wiring + guardrails

Knows: materials/services, service area, licensed-&-insured status, financing, free-estimate policy, insurance-claim handling, how to book an inspection. Never: quote a roof sight-unseen (captures address + damage, books the estimate), or claim certifications/insurance it doesn't have. Active emergency → capture urgency + fast callback (bridge to a human).

Intro video script (roofing, ~60–75s)

Hey, I'm John with WiseAI Agency. If you run a roofing company, you know these calls: "can someone look at a leak this week?", "do you do metal roofs?", "are you licensed and insured?" — and after a storm, the phone doesn't stop. They come in while you're up on a roof and can't pick up, so they hit voicemail — and the next roofer gets the job. So I built an AI receptionist that knows roofing. Press the call button and ask it what a homeowner would: do you give free estimates, do you handle insurance claims, can someone look at a leak. Or use the chat beside it. It answers in your company's voice, 24/7, takes the address and the damage, and books the inspection straight into your calendar. It won't quote a roof sight-unseen — it gets the details and books the estimate, and flags the storm emergencies so you can get someone out fast. Like it? Give me ten minutes and I'll wire it to your company. Press the button.

Sources (roofing call research)

Open decisions for the founder

  1. Canonical demo identity — neutral fictional clinic name (e.g., "Maplewood Veterinary Clinic") + clean URL (/demo/vet?), vs. reusing an existing /s/{slug}.
  2. Personalization skin — add the ?for=BusinessName header swap? (keeps cold-email "for you" feel cheaply)
  3. Pro website — bundle a link in the demo, or pitch separately?
  4. Sample-call audio — generate one clean vet sample clip (Cartesia, single — fine under serial rule), or rely on the live browser call only?