One component library for every email we sent

At RetailMeNot, the email a customer received was effectively the front door to the product — and that front door didn’t match the house. As a UI Engineer, I owned a problem hiding in plain sight: every transactional and triggered email was designed and engineered slightly differently from the next. Fonts, spacing, buttons, and brand treatment drifted from one notification to the next, and any design change that needed to scale turned into a manual, find-and-replace slog across dozens of one-off templates.

The role

UI Engineer · RetailMeNot (~2014–2017). Built a shared component library powering every transactional and triggered email.

Componentized every triggered email template

I built a shared component library and rebuilt our templates on top of it, so every email looked and felt like it came from the same company. Just as importantly, templates now updated automatically when a design decision changed — one edit in the library propagated everywhere, retiring the manual find-and-replace work entirely.

Extended the library into Marketing’s Salesforce environment

I partnered with the marketing team to bring the same components into their Salesforce tooling, so brand and structural consistency held across both transactional/triggered email and marketing sends — not just the templates engineering owned.

Made design testing faster and more trustworthy

I built the library so we could swap styles per test group with ease, which sped up how quickly we could put design changes in front of users. It also gave us real confidence in template coverage — we knew exactly which emails a given test touched, instead of guessing.

Impact

A consistent, on-brand experience from email — the front door — through to the product. Product-wide design changes no longer meant manual, template-by-template updates, and design testing across email got faster and higher-confidence, with clear visibility into exactly which emails each test touched.

This is a snapshot of older work (~2014–2017) — happy to go deeper on any part of it in conversation.