System Design: A Developer API Platform for SMS and Voice Calls Like Twilio
Company: Stripe
Role: Product Manager
Category: System Design
Difficulty: medium
Interview Round: Other
Design a cloud communications platform like Twilio, which lets developers add text messaging and phone calls to their own applications through an API.
```hint Follow one text message
Trace a single outbound text from the developer's API call to the recipient's phone and back as a delivery report, and ask what can fail at each hop, especially the hops you do not control.
```
### Clarifying Questions
- Which channels are in scope: SMS only, or voice calls too, and other channels such as email or chat apps?
- Do we connect to mobile carriers directly, or route through existing messaging aggregators?
- What traffic should we design for: time-critical one-time passcodes, bulk marketing campaigns, or both on the same system?
- Who is responsible for the consent and opt-out rules that carriers enforce: the platform or each customer?
### What a Strong Answer Covers
- Functional and non-functional requirements for developers sending and receiving messages and calls, with a stated scale estimate.
- The developer-facing API and webhooks: sending, inbound messages, delivery status callbacks, phone number provisioning, authentication and idempotency.
- The outbound and inbound message paths, including queuing, carrier routing, per-sender throughput limits and delivery receipts.
- Reliability, fairness between customers, and failure handling when a carrier or a customer's webhook is down.
- Compliance, abuse prevention, billing and observability, with the product trade-offs a PM would own.
### Follow-up Questions
- One customer starts a large marketing blast and other customers' login codes begin arriving late. What do you change?
- A carrier connection silently stops returning delivery receipts. How would you detect it, and what do customers see in the meantime?
- How would you price messages, and how does pricing feed back into how you route them?
Overview: A system design question for product manager interviews: design a cloud communications platform like Twilio that lets developers send and receive text messages and phone calls through an API. It tests API and webhook design, routing messages through carriers, delivery status, scaling, reliability, compliance and abuse prevention.