Design a Cloud Call-Center Platform for Programmatic Outbound Calls
A SaaS company provides a programmatic calling platform. Enterprise clients integrate via an API to initiate outbound phone calls to their end-users. These calls can be for various purposes, such as appointment reminders, verification, or interaction with an automated voice agent. The platform is responsible for receiving these requests, establishing the call through telecom carriers (PSTN/SIP), ringing the end-user's phone, and then bridging the call to a specified media endpoint (e.g., a voice agent or an audio stream) once answered.
Design this platform end-to-end, covering the request path, call placement and tracking mechanisms, and strategies for maintaining system stability under load. The primary challenge is scaling, so allocate sufficient time for this aspect.
Constraints & Assumptions
- Enterprise clients submit call requests via an HTTPS API. Each request specifies a single destination phone number and a media configuration (e.g., which voice agent or audio to play).
- Calls are placed through one or more telecom carriers using SIP trunks. Each carrier has strict limits on the maximum number of simultaneous channels (concurrent calls) and the per-second call-attempt rate (CPS). These external limits are non-negotiable.
- The platform serves a few hundred enterprises. Average call duration is 2-5 minutes. Traffic is expected to be bursty, with campaign launches potentially generating thousands of call requests within seconds.
- Call states include:
queued,dialing,ringing,in_progress,completed,failed,no_answer,busy. - The platform must report per-call status back to enterprises via webhooks and a status API.
- The time from request acceptance to initiating the dial-out should be low (seconds) for immediate calls. However, queuing and pacing calls during bursts is acceptable.
Follow-up Questions
- How would you enforce a per-carrier concurrency budget across a distributed dialer fleet? Consider mechanisms like shared atomic counters, leases, or sharding destination numbers to specific workers.
- If a carrier begins exhibiting increased failures and latency, how would the system detect this and shift traffic to an alternative carrier without causing a thundering herd of retries?
- How would you implement support for scheduled campaigns and enforce calling window compliance (e.g., respecting the recipient's local timezone)?
- Describe how you would add the real-time audio leg for bridging answered calls to an AI voice agent. What new scaling constraints would live media processing introduce?
AI interview prep
Core dilemma
Balancing aggressive outbound call initiation to meet enterprise demand against strict, external telecom carrier rate limits and concurrency constraints, while ensuring fair tenant isolation and system stability during traffic bursts.
3 tradeoffs and 3 stress tests locked
Interview prep
Unlock the interviewer X-Ray rubric, tradeoff matrix, stress tests, clarifying questions, and key concepts.
Design a Cloud Call-Center Platform for Programmatic Outbound Calls
A SaaS company provides a programmatic calling platform. Enterprise clients integrate via an API to initiate outbound phone calls to their end-users. These calls can be for various purposes, such as appointment reminders, verification, or interaction with an automated voice agent. The platform is responsible for receiving these requests, establishing the call through telecom carriers (PSTN/SIP), ringing the end-user's phone, and then bridging the call to a specified media endpoint (e.g., a voice agent or an audio stream) once answered.
Design this platform end-to-end, covering the request path, call placement and tracking mechanisms, and strategies for maintaining system stability under load. The primary challenge is scaling, so allocate sufficient time for this aspect.
Constraints & Assumptions
- Enterprise clients submit call requests via an HTTPS API. Each request specifies a single destination phone number and a media configuration (e.g., which voice agent or audio to play).
- Calls are placed through one or more telecom carriers using SIP trunks. Each carrier has strict limits on the maximum number of simultaneous channels (concurrent calls) and the per-second call-attempt rate (CPS). These external limits are non-negotiable.
- The platform serves a few hundred enterprises. Average call duration is 2-5 minutes. Traffic is expected to be bursty, with campaign launches potentially generating thousands of call requests within seconds.
- Call states include:
queued,dialing,ringing,in_progress,completed,failed,no_answer,busy. - The platform must report per-call status back to enterprises via webhooks and a status API.
- The time from request acceptance to initiating the dial-out should be low (seconds) for immediate calls. However, queuing and pacing calls during bursts is acceptable.
Follow-up Questions
- How would you enforce a per-carrier concurrency budget across a distributed dialer fleet? Consider mechanisms like shared atomic counters, leases, or sharding destination numbers to specific workers.
- If a carrier begins exhibiting increased failures and latency, how would the system detect this and shift traffic to an alternative carrier without causing a thundering herd of retries?
- How would you implement support for scheduled campaigns and enforce calling window compliance (e.g., respecting the recipient's local timezone)?
- Describe how you would add the real-time audio leg for bridging answered calls to an AI voice agent. What new scaling constraints would live media processing introduce?