UI/UX & Digital Experience
Interface, flow and product experience, from research to design system.
When several people build one interface, it drifts into several styles. A design system gives them shared decisions to build from: colors, type, components, states and usage rules.
A design system is a documented set of design decisions plus the parts that carry them. It includes named values for color, type, spacing and motion, components with every state defined, common layouts, and rules for which to use when. It exists to be built from, not admired.
A good fit for
We collect every screen, control variant, color, space and type size already in use.
Color, type, spacing, radius, depth, screen sizes and motion are settled first, since everything depends on them.
Each component is designed in every state, including disabled, loading, empty, error and access-denied.
Components are combined into the layouts the product needs, so teams assemble pages instead of redesigning them.
We write usage rules, accessibility criteria, do and do-not examples, and the reason for each decision.
We agree an owner, a way to contribute and a versioning approach, so the system keeps up.
Problem
What we do
We inventory what exists and keep one version of each value and component.
Problem
What we do
Teams assemble new screens from ready components and patterns instead of starting from nothing.
Problem
What we do
We document usage rules and agree an owner, so the system keeps up with the product.
| Term | What it contains | What it does not do on its own |
|---|---|---|
| Style guide | A static document of color, type, logo use and tone. | Nothing is built from it; every build decision stays open. |
| Design tokens | Named values: color roles, type scale, spacing, radius, motion. | They hold decisions, not components or build guidance. |
| Component library | Built, reusable parts like buttons, inputs and cards, with states. | No usage rules, so two teams can build different products. |
| Design system | All of the above, plus documentation, accessibility rules and governance. | It does not maintain itself; it needs an owner. |
It follows the number of components and the number of states each one carries, not the number of pages. A token set with a core control library is a short engagement. A system covering dense tables, filtering, roles, permissions and a real onboarding flow takes considerably longer, because every state has to be designed rather than assumed.
Yes, and that is the more common starting point. An inventory of existing screens shows the duplication — four buttons, three blues, two radii — and the system is assembled from the versions worth keeping. Extracting a system also surfaces the inconsistencies nobody had counted, which is usually the moment the work gets approved.
It removes decisions that did not need making again, which speeds ordinary work up and makes genuinely new work more deliberate. The failure mode is a system so rigid that anything unanticipated has to be smuggled in, which is why a contribution route is part of the deliverable rather than an afterthought.
Whatever your product already uses, because a component library in a framework your team does not run is documentation. Our own default is React with tokens as plain CSS custom properties, which keeps the styling layer portable and adds no runtime cost to a page.
Partly. The brand layer — the mark, color values, typography and visual language — carries across digital and print, and that work sits under branding and creative design. Component behavior, states and responsive rules are specific to interfaces and have no print equivalent, so the two systems reference each other rather than merging.
Short answers are above. Open a panel below for the specifics: how we decide, what is included and the deeper questions.
Two designers, two developers, or an agency and an in-house team. The moment consistency depends on people remembering conventions rather than reading them, a system pays for itself.
If screens will still be added in two years, the system is what makes those screens cheap. If the product is finished at launch, the case is much weaker.
A handful of pages built once by one person does not need governance, contribution rules or a component catalog. Tokens and a short set of conventions are the proportionate version.
A system makes an interface consistent, not correct. Where the structure and the flows are the problem, design those first and extract the system from the result.
Four layers and their documentation: tokens holding each raw decision, components with every state defined, patterns combining those components, and rules stating which to use when. Around them sit accessibility criteria, responsive behavior, content and labeling conventions, and a named owner who keeps the whole thing current.
The list below is the usual inventory rather than a fixed package, and the scope is set by what the product actually contains. A system for a marketing site and a system for an application with roles, tables and dense filters are different sizes of job, and pretending otherwise is how a system ends up half-built.
Design tokens are named values that hold a design decision in one place: a color role, a type size, a spacing step, a radius, a duration. Components reference the name rather than the value, so changing the value changes every place that uses it and none of them can drift.
The important word is role. A token named for its purpose — a body text color, a border color, a raised surface — can be reassigned when the design changes. A token named for its appearance cannot, and a system full of those is a palette with extra steps.
Tokens are also what makes theming and brand alignment tractable. If a marketing site and a product both reference the same named roles, aligning them is a values change rather than a redesign.
In one file that the interface reads directly. On this site they are plain CSS custom properties, which no framework has to interpret and which cost nothing at runtime. Where several platforms consume the same tokens, a shared source generates the format each one needs.
They replace the part of a style guide that gets ignored. A document stating a color is decorative; a token is the value the interface actually uses. The document still earns its place for the reasoning, the rules and the examples of misuse.
By deciding who owns it, how somebody adds to it, and how the product consumes it — before it is built. Most abandoned systems were not bad systems. They were unowned ones: nothing updated them when the product moved, so building from them became riskier than copying the last screen.
Three things keep a system alive in practice. It has to be genuinely easier to use than to bypass, which is a documentation and ergonomics problem rather than a discipline problem. It has to have a route for adding the component somebody needs today, or that component gets built outside the system and never comes back. And somebody has to be accountable for it, with the time to be.
We agree those three before the first token, and hand over the process alongside the components. A system delivered without them is a snapshot, and snapshots age.
Usually not, and a system sold into that situation is overhead. A handful of pages built once by one person needs a token set and a short list of conventions, not governance and a component catalog. The threshold is more than one builder, or a product that will keep being extended.
The honest version of the argument is about where the cost lands. A design system is paid for up front and returns its cost across screens built later. If there are no later screens and no second builder, the return never arrives, and the proportionate deliverable is a token file plus interface designs.
Where that is the right answer, we say so and scope the smaller job. It is the same reasoning that puts a UX audit ahead of a redesign: the cheaper intervention first, where the cheaper intervention is what the situation actually needs.
A design system is layered, and each layer is assembled from the one below it. That is what makes the work compound: a decision taken once at the bottom is inherited by everything above it, rather than being re-taken on every screen.
The raw decisions: color roles, type scale, spacing, radius, elevation, breakpoints, duration and easing. Each one named once.
Buttons, inputs, selects, cards, tables, navigation and dialogs, each specified in every state it can be in.
Components arranged into the combinations the product needs: a form, a filter bar, a record view, an empty state.
Whole views assembled from patterns, which is where layout and responsive behavior are resolved rather than invented.
The complete interface, consistent because every screen in it inherits the same decisions from the same place.
Assembly replaces invention. The cost curve of adding to the product bends downwards instead of upwards, which is the entire commercial case for a system.
A decision held as a token is changed in one place. Without tokens, a brand color change is a search through a codebase and a set of screens, and some of them get missed.
A developer or designer joining in month eighteen has something to build from. Consistency stops depending on who remembers the conventions.
Focus treatment, contrast and target sizes live in the component rather than in each use of it, so the accessible version is also the default version.
Several years of features, several designers, and an interface that has stopped agreeing with itself. The work is to extract the system that is implicitly there and then fix what it reveals.
Where a product will be built over months and extended for years, tokens and components come first so the later screens are assembled rather than negotiated.
A marketing site, an application and a customer portal built by different people at different times. A shared token layer is what makes them read as one organization.
Tell us what you need and when you need it. We reply with a clear scope and the next steps.