Skip to content

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

  1. Inbound callTwilio
  2. Signature-verified webhook
  3. Voice agent with tool callsRetell or x.AI Grok realtime, behind one switch
  4. Booking and transcript savedAppointment booked during the call
How an inbound call flows. Both voice providers sit behind the same abstraction.

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. 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. 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

Building a SaaS product with AI in it?

From the data model to the deployed interface: multi-tenant platforms, AI voice agents, LLM features and Stripe billing.