Case study
Lead Response Loop.
I designed and built a system that turns missed calls into bookings for HVAC and plumbing businesses. When the business misses a call, the system texts the caller back, qualifies the lead, and asks the owner yes or no. Approved leads get a booking link. Try the live demo below.
Choose a scenario
+ Write your own (advanced)− Write your own (advanced)
Prospect thread
— waiting for scenario —
Owner view
— no notifications yet —
+1 (555) 432-1098
📞 Missed call
Sorry we missed your call. Can we help via text? Reply with what you need and we'll get back to you. Reply STOP to opt out.
water heater leaking everywhere can someone come today
Prospect
Auto Lead Response Loop
“water heater leaking everywhere”
Reply YES / NO / INFO
Owner
+1 (555) 432-1098
Book a time that works: cal.com/spm/hvac-appointment
✓ Booking confirmed · Tue 2:00pm
Prospect (after YES)
TL;DR
Metrics first
Shipped end to end in 14 days. Live decision support over real Twilio calls and real Claude qualifications. Beta partner onboarding is in progress.
- Qualification accuracy
- 96%across a 50-item labeled test set
- Beta response time
- 1.6swell under the 5-second target
- Beta partner status
- onboardingtelemetry lands the week of measurement
Problem
The response window is measured in minutes.
Most plumbers and HVAC companies miss 30 to 40% of their calls during the workday. The owner is usually driving between jobs, and there’s no receptionist to catch what comes in. Each missed call is real money. Studies show a 5-minute reply is roughly 21 times more likely to convert than a 30-minute one. A leaking water heater goes to whoever picks up first.
The tools that already exist don’t fit. CRMs take weeks to set up. Auto-responders send the same generic text to every caller, including spam. Neither one closes the gap between a missed call and a booked job.
So I designed something that does.
Interaction design
The simulator was designed, too.
The thing you played with above isn’t a screenshot. It’s part of the work. Four choices worth pointing out.
The whole point: close the gap.
A prospect calls and hangs up. The owner's phone buzzes about twenty-two seconds later. That's the whole product. The industry baseline for missed-call follow-up is hours or days. This one fits inside the prospect's walk to the kitchen.
Every step shows how long it took.
The simulator stamps each step in the pipeline with a duration. The 2-second wait between the AI classifying the call and the SMS going out isn't buried in a log. It's right there in the UI. If the system ever feels slow, you can see exactly which step is slow.
- 01label“new booking lead”
- 02confidence96%
- 03quote“leaking everywhere”
First: what kind of lead. Second: how sure. Third: a quote.
Owners glance, decide, move on. So the SMS is ranked for that. The rings light up from the inside out in the order the owner should read: label first, then confidence, then one verbatim quote from the caller. Five seconds from start to finish, yes or no.
When something breaks, it says so.
If the demo can't reach its endpoint, whether Twilio is down or the network drops or anything else, it says so out loud, with the error code and what it's doing to recover. The systems this replaces fail quietly: blank screens, missed messages, owners thinking everything's working when it isn't. I'd rather show a 504 than pretend.
Design decisions
Three calls.
A
Show the owner. Don't auto-send.
The default move with AI is to auto-book the confident matches. But one wrong booking and the owner has to apologize. So the system shows them every lead (label, confidence, the caller's words) and books only when the owner says yes.
B
Reply in under a minute.
Industry data says a 5-minute reply is roughly 21 times more likely to convert than a 30-minute one. The system aims to get a buzz on the owner's phone in under a minute. If the AI is slow, the message routes to the owner with no classification. Slower, but never silent.
C
SMS, not a dashboard.
Owners drive between jobs, work under sinks, climb ladders. A web dashboard assumes a laptop they can't reach. So the system uses one SMS notification per lead and one keyword reply. Read and decide in five seconds, no app to open.
Roadmap
What's next.
Web form follow-up.
Same idea, but for someone who fills out a contact form instead of calling.
Owner dashboard.
Everything happens over text right now. A web view becomes useful once a business hits 10 or more leads a day, or wants office staff handling decisions.
Weekly summary email.
What happened that week: calls handled, bookings, where things went wrong.
AI receptionist.
Voice instead of text. Pick up the call instead of letting it ring out. Bigger project, saved for after the text version is live.
Engineering proof
The technical detail, for anyone who wants it.
▸Expand · stack, testing, reliability, repos
Stack
Testing
Reliability
v1 and shared between the simulator on this page and the production webhook through a single Server Action proxy.Repos
- Product: github.com/simplepathmedia/auto-lead-response-loop
- Portfolio (this site): github.com/jaymoore/jay-moore-design