Back to the project in the portfolio

Switchboard — voice agent

Every conversational turn is a full round trip: Twilio calls the webhook again, Claude re-reads the order so far, and the voice goes back out to the customer. Once the order is complete, the confirmation leaves the voice channel for WhatsApp.

Internal step External service Checkpoint — review or opt-in Verified output Application boundary
Customer inbound call call voice Twilio Voice number + webhook Switchboard · FastAPI (Docker) webhook Webhook /voice receives each conversational turn Transcription speech → text (Twilio) Claude understands and extracts the order Voice reply TwiML read out to the customer next conversational turn order Twilio WhatsApp confirmation message Customer order confirmation Manager order ticket
The application does not hold the line: it answers one webhook per conversational turn, and the loop goes through Twilio every time. The order only leaves the voice channel once it is complete, to two recipients who receive the same written record.
PythonClaudeTwilioWhatsAppFastAPI
View the code

All architecture diagrams