It answers, works out what the caller wants, checks a real diary, offers slots and books the appointment. This is the workflow we run in production, exported and stripped of our credentials. Not a cut down demo version.
Two n8n JSON files. Import, add your own credentials, edit two nodes. Full setup notes are in the README, and every node is readable before you import it.
Four things have to work for that sentence to end in a booking. This is where most voice agents fall over.
Matches "anti wrinkle", "forehead", "frown lines" to one service. You write the aliases customers actually say, not your price list wording.
Reads existing appointments and finds genuinely free slots, respecting opening hours, closed days and how long each service takes.
Up to three, one per day, so "Thursday" is unambiguous. It understands dates and weekdays, not just "1", "2", "3". Nobody answers a phone with an index.
Writes the appointment, keeps conversation state between turns, and flags a human when the question is outside what it should answer.
Which is the only reason this is fast enough to use.
Speech to text happens in the browser. Text to speech happens in a second, separate workflow. Only text crosses the wire into the main one. Routing audio through a workflow engine costs two to three seconds a turn before anything has thought about anything, and a voice agent reads as a dead line past about 1.2 seconds.
We measured the rest of it too. Of a 4.5 second reply, four Google Sheets reads were 3.29 seconds and the AI was 24 milliseconds. The caller was waiting on a spreadsheet, not on intelligence. The full breakdown, including why the newer Deepgram model was twice as slow as the older one, is in the write up.