Six stages, two systems, and one rule that never bends: if it isn't in the corpus, the agent doesn't say it.
Password, plus a resumable ten-minute budget, checked server-side before anything so much as thinks about opening a microphone.
A signed URL scoped to one private agent, generated seconds before it's used. ElevenLabs' signed URLs don't stay valid long, so neither does the wait.
The browser opens a WebSocket straight to ElevenLabs. Audio runs both ways from here — my server steps back and lets it.
Every reply is retrieved from an uploaded corpus, never invented. No match in the knowledge base means no answer, just an honest that's not something I have on file.
When the agent hits the edge of what it knows, or a visitor wants to be reached, it calls a tool. One logs the gap. The other passes along contact info.
The webhook sends real email over SMTP. No dashboard to check, nothing lost in a queue — Siri hears about it the same day.
Quote a salary. Guess at availability. Share an opinion about someone by name. Speak for Siri on anything he hasn't actually said. Ask it directly — it'll tell you the same thing.