Design a per-client outreach campaign that sends email and timed text follow-ups, stops on response, and records terminal failure or unresponsiveness. Evaluate duplicate and out-of-order events, response-timeout races, missing contact data, cancellations, durable history, observability, and operation at timer-heavy scale.
Design an internal campaign engine that lets an agent select a custom subset of clients and start an outreach campaign for each selected client.
For each client, send an email first. If the client has not responded within three days, send a text. If there is still no response after another three days, retry the text once. If the client remains silent for three more days, mark that client's campaign as unresponsive. A response at any stage ends further outreach successfully. A communication failure or missing contact information ends the campaign for that client as failed.
### Constraints & Assumptions
- A campaign may contain many clients, but each client's state progresses independently.
- Delivery attempts and response events may be duplicated or arrive out of order.
- Timing does not need to be exact to the second, but actions must not be silently lost.
- Agents need to inspect current state and attempt history.
### Clarifying Questions to Ask
- Does a missing phone number fail immediately or only when a text becomes necessary?
- What counts as a response, and how is it correlated to a campaign?
- Can an agent cancel or pause a campaign?
- Are quiet hours or consent rules part of this exercise?
### What a Strong Answer Covers
```premium-lock What a Strong Answer Covers
```
### Follow-up Questions
- How would you safely process millions of timers?
- How would you support campaign cancellation?
- How would you replay a failed event without sending a duplicate message?
Quick Answer: Design a per-client outreach campaign that sends email and timed text follow-ups, stops on response, and records terminal failure or unresponsiveness. Evaluate duplicate and out-of-order events, response-timeout races, missing contact data, cancellations, durable history, observability, and operation at timer-heavy scale.
Design an internal campaign engine that lets an agent select a custom subset of clients and start an outreach campaign for each selected client.
For each client, send an email first. If the client has not responded within three days, send a text. If there is still no response after another three days, retry the text once. If the client remains silent for three more days, mark that client's campaign as unresponsive. A response at any stage ends further outreach successfully. A communication failure or missing contact information ends the campaign for that client as failed.
Constraints & Assumptions
A campaign may contain many clients, but each client's state progresses independently.
Delivery attempts and response events may be duplicated or arrive out of order.
Timing does not need to be exact to the second, but actions must not be silently lost.
Agents need to inspect current state and attempt history.
Clarifying Questions to Ask Guidance
Does a missing phone number fail immediately or only when a text becomes necessary?
What counts as a response, and how is it correlated to a campaign?
Can an agent cancel or pause a campaign?
Are quiet hours or consent rules part of this exercise?
What a Strong Answer Covers Premium
Follow-up Questions Guidance
How would you safely process millions of timers?
How would you support campaign cancellation?
How would you replay a failed event without sending a duplicate message?