The Problem
Here's something I kept hearing from every service business I talked to: they were missing calls. Not because they didn't care — but because they were on a job site, driving between appointments, or just busy doing the actual work.
A missed call from a potential customer is money left on the table. Most people don't leave voicemails anymore. They just call the next business on the list. One plumber told me he estimated he was losing $3,000–$5,000 a month in missed leads. He knew it was happening. He just didn't have a way to fix it without hiring a full-time receptionist.
What I Built
I built an AI receptionist that answers every call, 24/7. Not a voicemail system. Not a phone tree. An actual conversational AI that picks up, talks to the caller, understands what they need, and takes action.
Here's what happens when someone calls:
- The AI answers in a natural voice, introduces itself, and asks how it can help
- It understands the caller's intent — are they booking a service, asking about pricing, or reporting an emergency?
- For appointments, it checks availability on Google Calendar in real time and books the slot
- It sends the business owner a detailed summary via Discord — who called, what they need, and what was booked
- For emergencies (like a burst pipe at 2am), it triggers an urgent alert with a different notification priority
The Stack
The voice AI layer handles the actual phone conversation — speech-to-text, natural language understanding, and text-to-speech. I spent a lot of time tuning the voice to sound natural. The uncanny valley is real with voice AI, and if the caller feels like they're talking to a robot, they hang up.
Behind the voice layer, the logic runs through n8n workflows. n8n is where I wire everything together — it receives webhook events from the voice platform, processes the call data, hits the Google Calendar API, and pushes notifications to Discord.
The Google Calendar integration was straightforward but had some tricky edge cases. Timezone handling is always a headache, and I had to account for buffer time between appointments (you can't book a plumber back-to-back with zero travel time).
The Hard Parts
Getting the AI to stop hallucinating services
Early on, the AI would confidently tell callers that the business offered services it didn't actually offer. A caller would ask "do you do electrical work?" and the AI would say "absolutely!" — even though the client was a plumbing company. I had to be really deliberate with the system prompt and add explicit guardrails about what services exist and what to say when asked about something outside the scope.
Emergency detection
Figuring out what counts as an "emergency" sounds easy until you try to codify it. "My basement is flooding" is clearly urgent. "I think my toilet is running" is not. But "there's water coming from somewhere and I don't know where" — that's a judgment call. I built a scoring system that weighs keywords, urgency language, and time of day to make that decision.
The handoff problem
Sometimes callers want to talk to a real person. The AI needs to know when to stop trying to help and just route the call. I set up a transfer flow that connects the caller to the business owner's cell if they ask for a human, with a warm handoff message so the owner has context before picking up.
Results
The first client I deployed this for went from missing ~40% of their incoming calls to capturing every single one. Within the first month, they booked 23 appointments that would have otherwise gone to a competitor. At their average job value, that's roughly $8,000 in revenue they would have lost.
The Discord notifications turned out to be the feature they loved most. The owner told me he checks his Discord channel between jobs and always knows exactly what's coming next. No more checking voicemail, no more calling people back three hours later and hoping they haven't already hired someone else.
What's Next
I'm working on adding SMS follow-up — after the call, the AI texts the caller a confirmation with the appointment details and a link to reschedule if needed. I'm also building out a dashboard so business owners can see call volume, booking rates, and common questions at a glance.
If you're a service business losing leads to missed calls, let's talk about what this could look like for you.