The problem: most home service businesses (plumbers, HVAC, electricians) lose leads simply because follow-up is too slow. By the time someone calls back, the lead has already gone with a competitor.
What I built: a 3-workflow n8n pipeline that calls every new lead within seconds of form submission, has a live AI conversation, checks calendar availability mid-call, and books the appointment automatically.
Stack: n8n, Vapi (voice AI), Airtable (CRM), Twilio (SMS confirmations), Cal.com (scheduling) How it works:
1. Outbound Caller — Form submission creates a lead record in Airtable and immediately triggers an outbound call through Vapi.
2. Calendar Checker — This one's the interesting part. It's not a scheduled workflow, it's called mid-call as a live tool by the Vapi assistant. When the lead asks for a specific time, Vapi hits this webhook in real time, n8n checks Cal.com for availability, and the response gets spoken back into the live call. 3. Transcribe & Book — Fires when the call ends via Vapi's end-of-call-report webhook. An AI agent reads the call summary, classifies the outcome (booked / no answer / not interested), and routes accordingly — books the Cal.com slot + sends SMS confirmation, or retries the call up to 3 times if there was no answer. Biggest technical challenges:
- Getting the mid-call tool-calling pattern right (webhook has to respond fast enough to not create dead air in the conversation)
- n8n's newer node versions (If/Switch) use a different condition schema than older exported JSON — cost me a few hours of "Could not find property option" errors before I isolated it node by node
- Vapi's free trial numbers don't support international calls, so testing required a US-based number
Currently testing end-to-end call quality using ElevenLabs voices through Vapi + GPT-4o for the conversation logic. Latency is low enough that it doesn't feel like a typical IVR bot.
Happy to share more details on any part of the build if useful to anyone working on something similar.