01 a

Design Systems

I specialize in creating easy to adopt design systems that provide cohesive and scalable design infrastructure.
My Experience AI Automation Foundations Principles Processes Practices User Interface Elements Design Tokens Components Patterns Measuring Adoption Turning Adoption Into Value Scaling Past One Advocacy Automation

My Experience Top

Since 2014, I've worked on design systems for companies big and small, and in various capacities. Some brands you know. Some you may not.

Microsoft Sagent DreamHost

I've worn many hats over the years, including design lead, interface engineer, and technical writer. I like to work end-to-end. I enjoy partnering across disciplines to define the visual language and strategic direction of a system. Other core strengths include designing and engineering tokens, components, patterns, guidelines, and tooling.

AI Automation Top

While at Microsoft, I designed Autopilot, a Figma plugin powered by Microsoft’s AI assistant, Copilot. Autopilot enables designers to quickly access the resources they need—without ever leaving Figma.

To use it, simply launch the plugin, select a frame, and click to receive automated suggestions for design tokens and components. Unsure how to use a component or looking for pattern guidance? Just prompt Copilot using the built-in chat input, and relevant insights appear directly within the plugin.

No context switching. No extra browser tabs. No endless scrolling through documentation or component libraries.

A prototype of Copilot-enabled Figma plugin called Autopilot

Autopilot shortcuts the Figma assets panel by allowing designers to include design tokens and components directly from the plugin UI. This means that designers can go from zero-to-full adoption with a few keystrokes and the push of a button.

A prototype of Autopilot with actions to shortcut the Figma assets panel

Foundations Top

Principles Top

For the Apollo Design System, I applied established design principles to guide decision-making across core systems. I included these principles at the beginning of each document to help consumers understand the rationale behind key choices. This approach was especially effective in more opinionated documents, such as our motion guidelines.

Design principles for the Apollo motion model

At Microsoft, I took this a step further by developing design principles to guide my early exploration of foundational elements, including the system's tooling strategy and grid model. These principles helped me stay focused on the system's needs and its key stakeholders while evaluating the best approach. They also served as a clear explanation of the rationale behind my decisions.

Three of five design principles created for researching different grid models Design principles four and five, created for researching different grid models

Processes Top

For Apollo, I collaborated with product managers and engineering leads across five distinct product workstreams to workshop models for system contribution and governance. The team prioritized flexibility and sought ways to enable contributions from across the organization. At the same time, they needed a consistent approach to system governance. I addressed this by defining models for auditing components and maintaining a product inventory over time.

Our product inventory model Our library audit model

Over my year and a half as design lead for the system, I conducted multiple audits that resulted in a 13% reduction in component count and complexity. This simplification led to a leaner, more performant component library—reducing bugs, lowering maintenance overhead, and driving greater adoption across teams.

A spreadsheet of library audit results

Practices Top

At Microsoft, I had the opportunity to collaborate closely with dedicated accessibility designers and engineers on every component I delivered. Their partnership ensured alignment with our accessibility standards—an invaluable practice that deeply shaped my approach. I've applied many of the lessons I learned to this portfolio site and continue to prioritize accessibility in all of my work.

A11y review at Microsoft

But accessibility isn't just about end users. It also applies to the people building the product. For Apollo, I established practices to ensure the system was accessible to our colleagues as well, and I documented these in our accessibility guidelines. By doing so, we created a system that more team members could contribute to over time, without being excluded.

The accessibility guidelines in Apollo Design System

User Interface Elements Top

Design Tokens Top

Color and typography variables in Figma

For Apollo, I structured our design tokens down to the semantic level to provide consumers with reusable, purpose-driven style primitives. This semantic tier offered a balance of usability and specificity, while significantly simplifying governance. Compared to managing hundreds or thousands of component-level tokens, a streamlined set of semantic tokens—organized by intent—proved far more sustainable over time.

Color design token documentation in Apollo design system

At Microsoft, I leveraged Figma's newly released typography variables to represent both base and semantic-level design tokens, enabling more flexible and scalable design solutions.

Microsoft typography variable in Figma

As a source of truth, I typically default to JSON, though I recognize that each system has unique needs. JSON is often the best choice because it is (mostly) human-readable, easily translates across different programming languages, and is accessible to both designers and developers. Additionally, as a web standard, it is more likely to outlast and scale better than any design software currently available.

A11y review at Microsoft

For Apollo, I implemented a build process using Amazon Style Dictionary to transpile design tokens from JSON into the formats used by the frontend development team, including CSS, SCSS, and JavaScript.

Repository in Apollo for Amazon Style Dictionary

Components Top

Apollo documentation for the button component

I designed a comprehensive catalog of components for Apollo to help designers maintain consistency and rapidly prototype their ideas. In many cases, components allowed designers to create high-fidelity prototypes just as quickly as low-fidelity ones, thanks to a robust component-based infrastructure. This approach often led to reduced communication overhead and minimized confusion during the handoff between design and development.

Apollo components landing page

The Apollo library consisted of over 26 different components, used across every work stream of the flagship product. Components were categorized as

The result was a highly coherent and scalable design language throughout the product.

Apollo components being leveraged to create a view for the product

Building a component library is the easy part; the real challenge lies in maintaining and growing it over time. As design lead for Apollo, I drove adoption from zero to all five product workstreams by closely collaborating with product designers, engineers, and stakeholders. My approach focused on meeting consumers where they were and minimizing the effort required for adoption. For example, the Button component alone was instantiated over 3,600 times across 84 different files.

Figma analytics for the Button component in Apollo
3.6k instances
5/5 workstreams

Patterns Top

Pattern is a nebulous term that is defined differently from system to system. My approach for taxonomy is to lean on definitions that provide the most meaning for the team and system's consumers.

At DreamHost in 2016, we used the terms "component" and "pattern" interchangeably, which worked for our team at the time. However, this approach eventually led to some confusion as the project evolved.

The dreamhost.css landing page showing the terms pattern and component

For Apollo, I defined "components" as UI elements of any size, while configurations of those elements designed to address specific user experience needs were referred to as "patterns."

The Apollo pattern library landing page

At Microsoft, I collaborated with another system designer, and through workshopping with the broader team, we settled on defining "pattern" as any UI element that depended on smaller, individual elements. While this wasn't typically my first choice, it proved to be the most effective solution for our team and its specific needs.

The Figma file that I created while leading a Microsoft workshop for defining patterns

At PennyMac, we didn't use the term pattern in our system at all.

Although each of these systems defined the same terms differently, I consistently advocated for the definition that made the most sense to me at the time. At the same time, I fully supported whichever definition resonated most with the users of the system.

Measuring Adoption Top

I measure adoption by breaking down the concept of perfect adoption and modeling it across three dimensions: time, space, and anxiety. This framework allows me to derive meaningful signals and metrics to track adoption progress effectively.

Here's how I did that for the PennyMac Design System called Home.

Goal Signal Metric
Intended usage occurred Component inclusion, token inclusion, principle violations, style violations Component inclusion rate, token inclusion rate, principle violation rate, style violation rate
Usage was effortless Anxiety and stress, satisfaction Designer NPS, designer satisfaction, engineer NPS, engineer satisfaction
Communication was effortless Comms overhead, channel usage Mean contact duration, contact rate, multi-contact rate, channel usage rates

Turning Adoption Into Value Top

Transforming a design system from a cost center to a value driver can be modeled and tracked by evaluating key metrics such as operational cost, operational value, frequency, velocity, and time.

Cost refers to both human resources and tooling expenses. Frequency measures how often various components of the system are used, including actual components (e.g., Web or React Components), practices, processes, principles, and patterns. This is a key indicator of "adoption." Velocity tracks the time it takes for system consumers to accomplish tasks, providing insights into efficiency and productivity.

Savings is a measure of design costs, frequency, and velocity over time. This translates directly to operational value.

Scaling Past One Top

Advocacy Top

Advocacy often accounts for up to 50% of my role. At Microsoft, I collaborated with two design peers to lead communication and education efforts for our system. As part of this initiative, I created reference modules within Figma that offered designers quick, digestible tutorials on key system features—without requiring them to open new browser tabs. One example is a module I created to explain our implementation of design tokens using Figma Variables.

A module that I made at Microsoft to train team members on our usage of Figma Variables

On Apollo, I implemented a recurring bi-weekly office hours session where designers, engineers, and product stakeholders could openly ask questions and provide feedback. Additionally, I created concise five-minute Loom videos to explain new features and updates to the system, making it easier for team members to stay informed.

A Loom video that I made to describe recent changes to our Textfield component

The other side of advocacy comes in the form of governance. I view this as a necessary evil, and it's something that I have strong feelings about. I believe governance should be as automated as possible to eliminate bias. For the manual aspects, they should be flexible enough to allow consumers to explore both within and outside the system, while still maintaining its overall integrity.

Automation Top

I design and develop custom tooling to automate as much system maintenance and governance as possible. In addition to the Autopilot plugin, here are some example of other tools I've designed.

Scaffold

Scaffold is a Figma plugin that allows designers to input information into a simple form, which then automatically generates all the pages within a Figma working file based on the provided details. The outcome is a set of clean, consistent, and well-organized files that are easy to navigate.

View on GitHub

A Figma dashboard showcasing the well organized output of the Scaffold plugin

Theme Magic

Theme Magic is a Figma plugin that enables designers to seamlessly translate designs between light and dark modes. By selecting one or more frames in Figma, designers can run the plugin with no additional input required, automatically generating a copy of the frame in the opposite theme. Theme Magic detects the theme of the original composition by analyzing the color tokens within the design.

View on GitHub

A Figma frame automatically being duplicated from light mode to dark mode using Theme Magic

Change Log

The Change Log widget is a straightforward tool used by the Apollo design team to track changes at the component level. It automatically records the name of the contributor, making it a valuable resource for ensuring consumability and facilitating collaboration with stakeholders.

View on GitHub

A demo showcasing how to track changes using the Change Log widget for Figma