Design an Outbound Dialing Campaign Scheduler
Company: Salient Ai
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design a scheduling system for outbound dialing campaigns. Explain how campaign work becomes eligible, how dialing capacity is allocated, and how call attempts and their outcomes are tracked through retries, pauses, and failures.
### Constraints & Assumptions
- The source provides the outbound-campaign scheduling topic without a detailed business or telephony specification.
- **Practice scope:** a campaign contains contact work items, configured eligibility windows and attempt policies, and a concurrency budget. The scheduler submits eligible call attempts to a telephony provider and receives outcomes asynchronously.
- Eligibility and contact rules are supplied policy inputs; do not invent legal requirements, a predictive-dialing model, or an organization-specific retry rule.
- Audio transport, speech recognition, and the content of a call are outside this scheduling exercise.
- No campaign count, call rate, provider limit, or latency target is supplied.
### Clarifying Questions to Ask
- Are calls fully automated or dependent on available human agents, and what capacity must be reserved before dialing?
- Which clock, time zone, eligibility windows, and attempt limits apply to each work item?
- What does the provider acknowledge on submission, and can an uncertain request be queried or deduplicated?
- What should pause or cancellation do to queued, submitted, ringing, and connected attempts?
### Part 1 — Eligibility and Capacity
Describe campaign, work-item, and attempt state, plus the selection policy across campaigns.
#### What This Part Should Cover
- Durable due-time scheduling and policy checks at dispatch.
- Fairness and capacity reservations before external submission.
- A distinction between a contact's logical work item and successive call attempts.
### Part 2 — Outcomes and Recovery
Explain provider callbacks, retries, pauses, stale workers, and uncertain submissions.
#### What This Part Should Cover
- Stable request identity, guarded transitions, and callback deduplication.
- No blind redial merely because a worker lost an acknowledgment.
- Recovery of reservations and visible unresolved outcomes.
```hint A submitted call may still be active
A scheduler timeout does not prove that the provider stopped ringing or that a person did not answer. Decide what evidence permits another attempt or releases capacity.
```
### What a Strong Answer Covers
- A durable scheduling loop with explicit eligibility and capacity rules.
- Separate campaign, work-item, attempt, and provider states.
- Bounded retries and honest handling of uncertain external execution.
### Follow-up Questions
- How would a campaign pause race with an already claimed work item?
- How would you keep one large campaign from occupying every available dialing slot?
- What happens when the provider delivers a completion event before the submission response reaches the scheduler?
Overview: Design outbound campaign scheduling with durable eligibility, fair capacity allocation, provider callback handling, and recovery from uncertain call attempts.
Read the full Salient Ai Software Engineer interview experience this question came from