Michael Wilson.
Available for product design roles Dallas — ← All work

Case study · Design systems · fromAtoB

One design system, three platforms.

Rebuilding a sprawling, undocumented style guide into a governed system the whole team could build from, spanning web, iOS, and Android.

RoleProduct Designer CompanyfromAtoB PlatformsWeb · iOS · Android DurationDec 2019 – Dec 2020
The fromAtoB design system's primary colour sheet on a dark ground: the consolidated palette with usage notes.
45 → 10 min
Design handoff
80 → 47
Components, consolidated & documented
Failing → AA
Primary CTA contrast, WCAG

I drove the architectural decisions behind fromAtoB's first real design system, owned its color and accessibility audit end to end, and co-built its component library, 47 documented components, with the design team. The system was in active production when I left, after cutting design handoff from 45 minutes to 10 and consolidating a sprawling style guide (28 colors, 64 text styles, 80 components) into a documented, governed set roughly half the size.

The piece I'm proudest of is the component library. The design team built it together, and it's the part of the system people used every day.

The fromAtoB logo on the office wall, set inside a route map with dark red lines, orange airport markers, and A and B pins.

The problem

The style guide existed. The system didn't.

fromAtoB already had a style guide. On paper. In the live product, it had stopped meaning anything.

Colors, fonts, and styles that weren't in the guide had crept into shipping screens, so the product looked inconsistent across web, iOS, and Android, and inconsistent within each one. The same error message used dark red with white text in one place and light red with dark text in another, depending on which designer had built it.

The guide itself was part of the problem. Designers wanted to use it, but the components were buried in Sketch and nobody could find them, so they rebuilt from scratch and the drift got worse. Across six designers and three platforms, every new screen made the inconsistency a little harder to undo.

Audit detail: four reds from the live product, each mapped to a named replacement (Background, Error, Focused, and Feedback Red) and shown in the error states where it appeared, like a pale red ‘Sorry either your email or password is wrong’ banner.
The drift the audit caught, with one error state in several reds
28
Colors in the guide
64
Text styles
80
Components, and no documentation

My role

Who did what.

A full redesign of web, iOS, and Android ran in parallel with the design system underneath it. My work centered on the system. On a team of six designers, I want to be exact about what was mine and what was ours.

Mine alone

The color audit and accessibility pass, including the full inventory of what was shipping, the consolidation from 28 colors to 17, and the WCAG contrast work that moved the primary CTA from failing to AA.

Mine to drive

The two architectural calls that shaped the system, building on Material instead of from scratch and staying in Sketch instead of migrating to Figma mid-flight.

Co-built

The component library of 47 documented components, built with the design team.

Contributed

Recommendations into the design principles workshops. The sessions themselves were a team effort.

Key decisions

DECISION 01

Build on Material Design, not from scratch

We could have designed a system from first principles. I made the case against it. Engineering had already built much of the product on Material, so anchoring the design system to the same foundation meant the design and the codebase shared a vocabulary from day one, with less translation and less drift.

The iconography page of the design-system docs: icons drawn on a 20px grid and exported on a 24px artboard, built from basic shapes in three sizes, followed by the action, arrow, and social icon sets.
The icon spec in our docs uses a 20px grid inside a 24px artboard, the same as Material’s system icons
The tradeoff

Less distinctiveness in the primitives, which we bought back through a brand layer of color, type, and principles on top.

DECISION 02

Stay on Sketch instead of migrating to Figma

The tempting move was to do everything at once. Redesign the product, build the design system, and migrate to Figma. I made the call to stay. Chasing three changes at once tripled the risk to the one that mattered, which was shipping the system. The team already worked in Sketch, so we stayed and put the effort into the foundation.

The most senior call I made on this project was knowing what not to do.

A wall-sized planning board in the fromAtoB office: swim lanes of sticky notes and printouts, with posters on the next wall.
A year of system work, sequenced and transparent to the whole team
The tradeoff

Staying on aging tooling to protect the launch.

DECISION 03

Inventory reality before designing the ideal

Before designing anything, I audited what was in the product. I ran the audit myself. I captured every screen across web, iOS, and Android, pulled every color and style into one table (name, HEX, where it was used, a real example from the product) and only then designed the consolidated set.

That's how 28 colors became 17 and 80 components became 47. Every cut had a screenshot behind it, which made them easy to defend to marketing and engineering.

The color audit: every color in the live product, grouped as brand, neutral, and utility colors, each marked as kept or replaced, with its usage noted.
The audit table maps every color shipping to where it appeared
The old style guide’s type ramp in Open Sans: Jumbo, Headline, Title, and Subheader styles, each repeated as separate secondary and disabled color variants.
The old type ramp, where every color variant was its own text style
The tradeoff

Weeks of inventory work before any visible design, which paid for itself the first time the cuts had to survive review.


How it came together

Foundation first, then the library.

1  The audit doubled as a contrast pass

Testing the live palette against WCAG contrast ratios surfaced failures, including the primary CTA, the control users press most in a booking flow, which was failing outright. My rework moved it from failing to AA.

That matters on a travel product. fromAtoB's travelers include the people a 4.5:1 ratio exists for.

The contrast audit table: four elements with their background and foreground colors and how many of six criteria each passed. The primary ‘Continue to traveller info’ button, white on #00B928, passed two of six.
The contrast audit, with the primary CTA failing before rework
A whiteboard of color decisions: ‘Let’s own the blue. No functional green.’ and ‘Never use red for anything which is not negative feedback,’ with green kept for positive feedback and eco-green for eco accents.
The call on the team’s whiteboard was to own the blue, with no functional green
The search screen before and after. Before: the old form with a light green Search button and white text. After: the redesigned form with a primary blue Search button.
The search button before and after, going from white on green at 1.8:1 to white on the system’s blue at 7.2:1

2  Forty-seven components, documented in every state

With the foundation locked, the design team and I built the component library, with 47 components covering every interaction state (enabled, hover, pressed, focus, disabled) in light and dark. Each one was documented so a designer could find it in Sketch and use it without rebuilding it. A working rebuild of that standard lives in the Garage, where one token table drives a live text field and generates its own state sheet, so the spec and the artifact can't drift apart.

Controls sheet: checkboxes, radios, and switches in every interaction state, including on-dark variants.
Controls in every state, light and dark
Buttons with icons: primary, secondary, ghost, danger, and danger-ghost variants across enabled, hover, pressed, focus, and disabled states.
Buttons in five variants and five states
The consolidated text styles: H1 to H4 in Gilroy Bold, then Subtitle 1 and 2, Body 1 and 2, Button 1, Caption, and Overline, eleven styles in all.
The 11 text styles that replaced 64, in Gilroy and Roboto
List item components with leading radio and price, in single-line and secondary-text variants with divider options.
List items, the booking flow's workhorse
Four redesigned app screens on a blue background: a Hamburg to Berlin itinerary, a Munich to Berlin trip sheet with Close and Choose buttons, a discount card list with checkboxes and a Select button, and a login screen with Apple, Facebook, and Google sign-in.
The library in use across itinerary, trip details, discount cards, and login

3  Old vs. new, tested with users

Our researcher ran 30-minute usability sessions with nine employees, comparing old and new with a focus on type and color. The output was a prioritized list of fixes that went straight back into the system.

A usability-testing readout of the payment screen with two findings called out: mixed font sizes and weights made it hard to tell what mattered, and the total price was too small.

Impact

45 minDesign handoff, before
→
10 minAfter
design handoff

The redesign the system shipped into moved the product numbers too, with booking conversion up 28%, checkout time down 10%, and abandonment down 18% in the 60 days after launch. Those are team outcomes (six designers and a rebrand), but the checkout and search simplification I worked on sits behind two of them, and the system is what let three platforms ship the changes consistently.

When I left in December 2020, the system was in active production, still being built out and already paying off.

17 / 11 / 47Colors / text styles / components, from 28 / 64 / 80
Failing → AAPrimary CTA contrast, WCAG

What I'd do differently

I'd have instrumented adoption from day one. We measured handoff time because it was easy to measure. Adoption, how many designers were building from the shared library, was the number that mattered, and I never measured it. A simple count from week one would have let me show the system's value instead of describing it.