I was the UX designer. Before touching a single new screen, I needed to build the foundation the entire platform would run on. That meant auditing what existed, defining the system architecture, building components from scratch, and getting a team that had never worked with a designer to actually use it.
65% faster design output. 40% faster development. 67% fewer post-launch bugs. WCAG 2.1 AA compliance from day one. And a satisfaction score of 4.6/5, up from 2.8 in the legacy system.
A design system isn't a component library. It's a set of decisions made once, so you never have to make them again under deadline pressure.
KEY METRICS FROM THE DESIGN SYSTEM IMPLEMENTATION
The platform had been extended by rotating dev teams for 20 years with no designer involved. The result was a UI that looked and behaved differently across almost every workflow area.
In a dispute management platform, inconsistency has real consequences. Status colors that contradict themselves affect how banks classify cases. Broken form accessibility means compliance risk. And without a shared system, every new feature required designers and developers to start from scratch.
Before building a single component, I established the token layer: the design decisions that flow through every element in the system. Tokens are what make a system resilient: one variable update instead of hundreds of component edits when things inevitably change.
Developers were not expected to infer values from screenshots. The same semantic token drove the Figma component, the CSS variable, and the JavaScript theme object used in the application.
color.status.error--ds-status-errortokens.color.status.error
Every component was built for the realities of a financial data platform: data-dense tables, multi-state forms, accessibility-first interaction patterns, and AI-transparency elements that had no off-the-shelf equivalent.
Text fields, selects, date-pickers, radio groups, and checkboxes, all with focus states, error states, and ARIA labels baked in from day one.
Sortable, filterable, with bulk-action selection, sticky headers, and status-badge integration, the backbone of every queue and list view.
High / Medium / Low labels replacing opaque percentages, designed so agents see why the system thinks something, not just a score.
Consistent patterns cover success, error, warning, and information states. Icons reinforce color, while ARIA roles announce each state to screen readers.
The table spec covered the conditions analysts actually handled: high-volume queues, batch selection, SLA urgency, sticky headers, long chargeback reasons, row actions, loading states, and keyboard focus.
Inputs covered labels, helper text, error copy, disabled values, required fields, and focus treatment, so engineers could ship consistent dispute forms.
The system separated AI-generated recommendations from user-entered data, required confidence language, exposed source evidence, and kept override paths visible for auditability.
color.ai.surfacemerchant, amount, historyaccept / overrideNo Storybook. No design token pipeline. Developers received Figma specs. Some had long habits of writing their own CSS. Getting adoption without mandating it was the critical challenge.
The fastest path on paper was to enforce the system, lock the components and require its use. But the developers had years of writing their own CSS and no Storybook to lean on, so a mandate would have bought resistance, not adoption. I made the system easier to use than not using it, drop-in components and real documentation, and won adoption by pull instead of decree. Slower to full coverage, but it actually stuck.
Figma annotations documented exact spacing, CSS properties, and state conditions, which gave developers clear implementation guidance.
I involved senior developers in naming decisions early. Two became informal advocates who flagged off-system work during code review.
WCAG compliance went into sprint acceptance criteria. I framed it as preventing future rework, not adding new work. That reframe changed the conversation.
Building a design system is a political project as much as a design project. The system has to be easier to use than not using it, or it won't be used.
Mandate the system and developers resent it as imposed process; leave it optional and nobody adopts it. No Storybook, no token pipeline to lean on.
Make the system easier to use than not: clear annotations, exact CSS values, and senior devs pulled into naming decisions. Adoption became a design problem, not a mandate.
No Storybook, no token pipeline. I made the system easier to use than not: clear annotations, one-on-ones with senior devs, involving them in naming decisions. Two became informal advocates who flagged off-system work in code review.
When I introduced accessibility requirements, some developers saw it as scope creep. I reframed it: we're preventing future rework, not adding new work. I ran contrast checks, wrote specific WCAG criteria per component, provided exact CSS values. The ask to developers was small.
No design reviews, no shared Figma workspace, no established process. I made the process lightweight: async Figma comments instead of scheduled reviews, acceptance criteria written in developer language. The system had to fit the team's workflow or it wouldn't get used.
Measurable impact across design velocity, development efficiency, and product quality.
They're what made the system resilient to the changes that always come. One variable update instead of hundreds of component edits. I'd do this even earlier on the next project.
Perfect doesn't get used. Components that ship and get used get better through real feedback. That feedback made the system better than any amount of upfront planning would have.
A design system only works when teams use it. I should have documented more of the reasoning behind each decision, which would have helped future designers more than adding components.
Some component decisions I made unilaterally were harder to implement than necessary. A conversation with the tech lead at the token-naming stage would have saved two sprint cycles.