Initial approach
When the client started using the dialer, I designed agent assignment around a single assumption: a user creating a campaign simply wants to select which agents are on it. The implementation reflected that — the full list of agents with a checkbox beside each, where the user checks or unchecks and saves.
Where it broke
The assumption didn't hold once real usage surfaced three distinct needs:
- One user wanted to override an agent's other campaigns and move them entirely into this one.
- Another wanted the agent to remain on their existing campaigns while also joining this one.
- A third wanted to decide per agent, in the moment — which campaign should override and which should stay intact.
A single checkbox couldn't express any of these. The model was too simple for how people actually assigned agents.
Resolution
We introduced a new design that supports all three behaviors — override, coexist, or decide case by case — rather than forcing every user into one fixed interpretation of what "adding an agent" means.

