Six stages across two systems, with one fixed rule: if it isn't in the knowledge base, the agent doesn't say it.
A password and a resumable ten-minute budget, checked on the server before the microphone is ever requested.
A signed URL scoped to one private agent, created seconds before it's used, because ElevenLabs' signed URLs expire quickly.
The browser opens a WebSocket straight to ElevenLabs, and audio runs both ways from there. My server isn't involved once the call is live.
Every reply comes from an uploaded knowledge base. If nothing matches, the agent says 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 an email over SMTP, so Siri hears about it the same day without checking a dashboard.
It won't quote a salary, guess at availability, give an opinion about someone by name, or speak for Siri on anything he hasn't said. Ask it and it'll tell you so.