Six phases – discover, define, ideate, create, test, develop – audit through two iterations, with the organizational resistance between them being the most instructive part.
The audit came first. Collected every email communication sent over the prior year – and what emerged was a picture of accumulated design debt. No shared components, no common thread between campaigns. Every file a unique static build reflecting years of inconsistent decisions and abandoned rebrands. Three emails, same organization, same month – three completely different designs.

The button inventory made the problem specific: eleven variants, no logic connecting them.

The brand voice team had already developed communication intents – Welcome, Introduce, Educate, Select, Prompt, Support. Using those as the organizing framework meant we could map what each type of communication needed to do, what users expected from it, and what UI patterns actually had to exist. The intent map gave the audit somewhere to land.
With the intents mapped, the content patterns broke down quickly. Wireframed each intent at mobile and desktop – then reduced. Redundant patterns collapsed into shared components. What remained was the minimum: a set of building blocks that could express any intent without requiring a unique design decision each time.

A single shell template and a component library that could flow within it. The first iteration shipped across multiple campaign types – transactional, promotional, event-driven, thought leadership. Real communications, real audiences, the system carrying the weight of all of them.

Stakeholders had grown attached to the individual character of each communication. The variety that read as inconsistency from a systems perspective read as personality from theirs. Getting buy-in for a unified system meant confronting that directly – and accepting that the right answer would have to be a simpler one.
The second iteration stripped the system to its MVP: fewer variables, tighter constraints, a shell that made consistency the path of least resistance rather than a policy to enforce. The development team adopted it. The handoff became a conversation rather than a translation problem.