VOICE AI · VAPI · TWILIO · N8N · GOOGLE CALENDAR · AIRTABLE
AI Voice Lead Capture System

The Problem
I built this for myself. As I started pitching automation services, I noticed the same thing every solo operator notices: inbound interest shows up at the worst times. Someone clicks a link, wants to talk, and hits a contact form with a 24-hour response window. By the time I follow up, the moment is gone.
The fix wasn't a faster reply. It was removing myself from the first step entirely. A prospect should be able to call or click, have a real conversation, pick a time, and get a calendar invite — without me being awake or available. That's what this system does.
The Automation Pipeline
End-to-end flow: inbound call to booked calendar event and logged lead record.
VAPI handles the voice conversation and calls three n8n tools mid-call: check availability, book the slot, and log the lead. n8n talks to Google Calendar and Airtable. The caller never touches a form.
Try It Right Now
The widget in the bottom-right corner of this page is the actual system. Click "Talk to my AI," hit Start call, and talk to the agent. It will check my real calendar availability, offer three open slots, and book a 15-minute discovery call if you want one. Every call is logged to Airtable with your name, phone number, chosen slot, and a conversation summary.
This is not a demo environment
Real calendar. Real booking. If you pick a slot, it creates an actual Google Calendar event and I will show up. Works on desktop and mobile Chrome.
How It Works
Caller connects via Twilio or the web widget
Inbound calls to a US Twilio number are routed to the VAPI assistant. The same assistant runs in the browser widget via the VAPI Web SDK — no phone required. The agent introduces itself and asks what brought the caller in.
VAPI runs the conversation with three tools
The AI agent has three custom tools wired to an n8n webhook: checkAvailability, bookAppointment, and logLead. During natural conversation, VAPI decides when to call each tool based on what the caller says. The caller never knows an API is being called mid-sentence.
n8n checks real calendar availability
When the agent calls checkAvailability, n8n queries Google Calendar for the next 7 days, filters out blocked slots and existing events, and returns three open 15-minute windows. VAPI reads them out to the caller and waits for a pick.
n8n books the discovery call instantly
Once the caller picks a slot, the agent calls bookAppointment with the chosen time and caller name. n8n creates a Google Calendar event on the spot and confirms the booking back to VAPI, which tells the caller they're booked.
Lead logged to Airtable with full context
After the call, the agent calls logLead with the caller's name, phone number, chosen appointment time, and a natural language summary of the conversation. Every caller is captured in Airtable — whether they booked or not.
The Key Engineering Decision
"The tool routing is VAPI's decision, not the caller's. The agent picks the right API call based on conversational context. The caller just talks."
The trickiest part of the build was the n8n webhook handler. VAPI sends a single POST with a toolCallList array mid-call, and the response has to match the tool call ID exactly or VAPI hangs the conversation. The Code node parses the tool name, branches to the right path, and returns the correct response shape before VAPI times out.
n8n's JavaScript sandbox does not support optional chaining (?.) or nullish coalescing (??). All extraction code uses explicit OR fallbacks. "Run Once for All Items" mode is required on the Code node to use $input.first() — that mode switch is non-obvious and was the biggest debugging sink.
What It Does for Me
Want this on your business line?
Same system wires into any calendar and CRM. Takes about a week to deploy and tune for your use case.