Case study
Automating Dealership Calls with a Multi-Tenant AI Voice Agent
Calls are handled automatically, and the platform can move between voice providers with zero downtime.
- Project
- Otto Revenue Engine
- Industry
- Automotive / AI SaaS
- Role
- Engineer
- Python
- FastAPI
- async SQLAlchemy
- PostgreSQL
- Alembic
- Redis
- Celery
- React 18
- TypeScript
- TanStack Query
- Tailwind CSS
- Auth0
- Twilio
- AWS S3
- WebSockets
- Docker
The context
Otto Revenue Engine is a multi-tenant AI voice and CRM SaaS for automotive dealerships. An AI voice agent handles the dealership's inbound calls, so revenue isn't lost to calls nobody answered or follow-ups that never happened.
The problem
Dealerships were losing revenue to missed inbound calls and dropped follow-ups.
My responsibility
- Built the multi-tenant SaaS platform that automates inbound dealership calls with an AI voice agent
- Engineered the voice pipeline: signature-verified telephony webhooks, real-time tool calling for appointment booking, and call transcript persistence
- Put two voice providers, Retell and x.AI Grok realtime over Twilio Media Streams, behind one switchable abstraction
Architecture
- Inbound callTwilio
- Signature-verified webhook
- Voice agent with tool callsRetell or x.AI Grok realtime, behind one switch
- Booking and transcript savedAppointment booked during the call
Key decisions
Two voice providers behind one abstraction
Retell and x.AI Grok realtime over Twilio Media Streams run behind the same switchable interface, so the platform can migrate between them with zero downtime.
Verify every telephony webhook
Telephony webhooks are signature-verified before the platform acts on them.
Book during the call
The voice agent books appointments through real-time tool calling while the caller is still on the line.
Technical challenges
1.Changing voice providers without downtime
The two providers connect differently: Retell directly, and x.AI Grok realtime over Twilio Media Streams. Hiding both behind one switchable abstraction means the rest of the platform doesn't change when the provider does.
2.Trusting requests from the phone network
Telephony webhooks arrive from outside the platform. Each one is signature-verified, so a forged request can't trigger a booking.
Results
- Inbound dealership calls are answered and handled automatically by the voice agent
- The platform can move between voice providers with zero downtime