CASE STUDY

Volt Design System

From one heavy master file to a tokenized design system the EOS One team can actually find things in.

ROLE

Product Designer

TEAM

Design manager, contract designer, and me as system owner

PLATFORM

EOS One web app, all breakpoints

TIMELINE

2 Months

OUTCOME

Built Volt, EOS’s first design system, from a tokenized component library and per-feature Figma files. Design-to-dev handoff time dropped 40%.

01

Overview

As the newest designer on a team of three, I pitched a new way to organize our Figma work. That reorganization turned a loose page of components into Volt: tokens, components, patterns and guidelines for EOS One, built from an audit and shipped one feature at a time.

02

Problem

Every screen from past features and brainstorms lived in one giant, heavy Figma file, next to a page of library components from that period. Nothing kept the product consistent: there were no type patterns, and the same intent showed up in many shades, like three different reds in one simple flow.

As the product evolved and more designers joined, inconsistencies in layout, interaction patterns, and visual styles created friction for users and slowed the team. Developers were often rebuilding similar components from scratch. We needed a shared system that would bring clarity to the experience, streamline design-to-dev handoff, and help new designers ramp up quickly.

The team had components. It didn’t have a system.

03

Approach

Organize files by verticals

One heavy master file became light files per vertical, with a page per feature: the flow, a prototype, the components used, and the linked tickets. Designers and engineers, new or not, can now find everything connected to a feature in one place.

Files, pages and cover, before and after

How the EOS One Figma structure changed

Files: one per vertical

Before · one file

The EOS One Screens folder before the change, holding a single Figma file called EOS One screens with the whole product laid out on one canvas.

The whole product in one file

After · a file per vertical

The EOS One folder after the change: separate Figma files for Dashboard, V/TO, Onboarding, Settings, A/C, Mobile and Meeting, plus the Volt Design System.

Seven product files + the Volt Design System

Pages: grouped by the work they hold

Before · EOS One screens

The Figma pages panel of the old master file: Dashboard_1.3, Components, Archive 2.0, Designs, Working and Archive, above a long layers list with names like Path_320 and Vector 288.

Six pages · default layer names

After · Dashboard file

The pages panel of the Dashboard file after the change, with pages grouped by the work they hold.

Thumbnail • Delivery • Discovery

After · continued

The rest of the Dashboard file pages panel: exploration, feedback, working files and archive.

Exploration • Feedback • Working files • Archive

Cover: the same start for every flow

First frame of every story/feature/ticket/task

What the cover points to

1

User Story

Context and ticket link

2

Mark up Screens

Review

3

Prototype

Interaction

4

Miro Board Link

Board

5

Designer

Owner

Placeholders stay in brackets until a flow is filled in.

Detach the library.

Pulled the component page out of the master file, organized it and tokenized it. That became Volt.

Naming the system: Volt

The idea in three beats

How the name came together

1

The bulb was already there

The EOS logo is a light bulb, and the product already uses it for tooltips and the Learn about EOS documentation.

2

What would fuel it?

After some brainstorming, the question became what powers that bulb, in the same way a design system would fill the EOS ecosystem.

3

Volt

The energy that lights the bulb. Shared with the team as the name of the design system.

4

Approved, then built

All stakeholders approved the name, and the Volt library was created with it in mind from the first component.

The idea in three beats

EOS One logo

EOS One logo, with a light bulb inside the O of EOS.

The EOS bulb

The EOS light bulb mark in orange.

Volt,
what fuels it

Volt Design System logo: an orange lightning bolt outline next to the word Volt and the words Design System.

Audit before fixing.

Logged every inconsistency: 25 colors mapped by use, and 16 text styles that resolved to only 10 font specs.

Audit before fixing

Real screens reviewed and logged first

Reviewing the real screens

Create Meeting · notes pinned

The real EOS One Create Meeting screen with the attendee search open.
1 2 3 4 5

Reviewer notes, in the reviewer's words

1

H1 Font

Page title

2

Select Attendee

Dropdown field

3

Just have an icon here

Search field

4

Change Icon + Text Invite new

Invite action

5

Repeat Meeting?

Schedule field

Also flagged on the same page

Why so many different font-styles here?

Logged first: colors and text styles

25 colors mapped by use

The color audit sheet with 25 colors, naming, hex, RGB and where each is used.

Three reds for one intent

Three red rows from the audit sheet with their hex values and usage.

Typography audit, styles to specs

The typography audit: 16 text style names on the left with the font spec each one resolves to on the right.

16 text styles resolved to 10 font specs

Five styles, one spec: Open Sans Bold 14

One audit across many real screens

Task modals

Task modals from the product, reviewed as part of the audit.

Create Meeting modals

Create Meeting modals from the product, reviewed as part of the audit.

Meeting History

The Meeting History screen, reviewed as part of the audit.

Ship in increments.

Ship in increments

Fixes folded into the features they touched

Status badges for handoff

Design and dev status badges: Blocked, In Progress, Done, Prod Reviewed, Shipped and more.

Grid and layout, six breakpoints

The grid at six breakpoints, from 1512 pixels down to 320.

Grid table

The grid table: screen size, margin and layout columns.

Spacing

The spacing scale from 0 to 96 pixels.

Old login

New login

The old login screen next to the new login screen after the redesign.

04

Key decisions

DECISION 1

One naming convention for every color.

Every color became a token named --eos-color-[type]-[shade]-[color], grouped as Primary, Secondary, Accessible, System and Additional. The three reds each got one job: error toasts, accessible contrast and avatar backgrounds.

One naming convention for every color

Key decision 1

Standard, from the colors page

Name convention standards--eos-color-[type]-[shade]-[color]Example:--eos-color-primary-orange--eos-color-primary-dark-blue

Five groups

Primary2Secondary11Accessible4System5Additional3 + 3 gradients

Volt colors page

Primary

primary-orange#EF7001
primary-dark-blue#142233

Secondary

secondary-blue#0A76AD
secondary-navy#445777
secondary-light-blue#EDF8FD
secondary-teal#00A9AD
secondary-green#01805E
secondary-light-green#EDF7F4
secondary-red#C42847
secondary-light-red#F9E9EC
secondary-beige#FBEDE2
secondary-light-yellow#FCF2E2
secondary-light-grey#E7E8EA

Accessible

accessible-red#FF0033
accessible-green#009B72
accessible-yellow#E7A029
accessible-burnt#B25301

System

black#000000
grey#444444
light-grey#687078
lightest-grey#F3F4F5
white#FFFFFF

Additional

brown#996E24
purple#7A56A7
orange#F04E23
orange-gradientORANGE GRADIENT
blue-gradientBLUE GRADIENT
eos-gradientEOS GRADIENT

The three reds each got one job: secondary-red for error toasts, accessible-red for contrast, secondary-light-red for avatar backgrounds.

DECISION 2

Fewer type styles, named by role.

Sixteen styles resolved to only ten font specs, and five of them were the same Open Sans Bold 14. I proposed eleven roles instead: H1 to H7, Body, Body Bold, Button caps and Caption.

Fewer type styles, named by role

Key decision 2

Old styles on the left, new roles on the right

Heading 6 - PopupMontserrat SemiBold 26
Heading 7 - PopupMontserrat Medium 26
Heading 1Montserrat Medium 24
Heading 2 BoldMontserrat Bold 20
Heading 2Open Sans Semibold 20
Heading 3Open Sans Semibold 18
H5Open Sans Bold 14
LinkOpen Sans Bold 14
Blue Buttons - BOpen Sans Bold 14
Word ButtonOpen Sans Bold 14
Heading 4 - BOpen Sans Bold 14
Heading 5 - SBOpen Sans Semibold 14
Heading 4Open Sans Regular 14
Normal textOpen Sans Regular 14
A/C - Normal textOpen Sans Regular 12
Small textOpen Sans Regular 12

Became

H1Montserrat SemiBold 26
H2Montserrat Medium 26
H3Montserrat Medium 20
H4Montserrat Medium 20
H5Open Sans Bold 20
H6Open Sans Semibold 20
H7Open Sans Semibold 18
Body Bold CapsOpen Sans Bold 14, buttons
Body BoldOpen Sans Bold 14
Body RegularOpen Sans Regular 14
CaptionOpen Sans Regular 12

An earlier draft of the set

H1Montserrat SemiBold 26
H2Montserrat Medium 26
H3Montserrat Medium 24
H4Montserrat Bold 20
H6Open Sans Semibold 20
H7Open Sans Semibold 18
H8Open Sans Bold 14
H9Open Sans Bold 14
Normal textOpen Sans Regular 14
Small textOpen Sans Regular 12

16 styles became 10 specs

Five of them were the same Open Sans Bold 14, so they collapsed into Body Bold.

11 roles

H1H2H3H4H5H6H7Body Bold CapsBody BoldBody RegularCaption

DECISION 3

Accessibility as a rule, not a review.

Colors that failed WCAG AA contrast came out of the system, like the gray once used for placeholder text in input boxes. An Accessible group gives designers contrast safe options by default.

Accessibility as a rule, not a review

Key decision 3

Accessible group, from the colors page

Accessible

--eos-color-accessible-red#FF0033
--eos-color-accessible-green#009B72
--eos-color-accessible-yellow#E7A029
--eos-color-accessible-burnt#B25301
Aa
--eos-color-accessible-red#FF0033Black text · 5.30:1AA PASS
Aa
--eos-color-accessible-green#009B72Black text · 5.93:1AA PASS
Aa
--eos-color-accessible-yellow#E7A029Black text · 9.46:1AA PASS
Aa
--eos-color-accessible-burnt#B25301White text · 5.08:1AA PASS
1 gray failed WCAG AA and was deleted on 7/18/24. It had been the input placeholder color.Ratios computed from the hex values

Button text test, from the buttons page

Button Text
No pass
Button Text
Pass
Button Text
Pass

The first is the existing button. The next two changed text or fill until they passed.

05

Outcome

Live in Figma

Volt holds foundations, components, patterns and guidelines, plus page specific components for Meetings, Settings and Dashboard widgets.

Built into handoff

Status, notes and link components inside Figma show engineers what is ready, what changed and where the ticket lives.

Results

  • Streamlined Cross-Functional Handoff: Cut the design-to-dev handoff timeline by 40%, aligning product and engineering teams around standardized components and clear technical specs.

  • Amplified Engineering Confidence: Minimized ambiguity and downstream code rework by introducing predictable, accessible design systems that empowered developers to ship faster.

  • Elevated UX Cohesion: Addressed fragmented interface patterns with a unified design system, directly resolving user-reported usability friction and creating a seamless product experience.

06

Leadership

DIRECTION

Pitched a new way of working.

As the newest designer, I proposed splitting the master file and linking every feature page to its prototype and tickets.

FOUNDATION

Built the system from the audit up.

Turned an audit of colors, type and icons into tokens, components and guidelines the team could build on.

TRUST

Made handoff self explanatory.

Added status, notes and link components so engineers could see what was ready without asking. "Love how it keeps everything organized and I know exactly what I need to focus on for my week!”

NEXT CASE STUDY

Merge Duplicates →

© 2026 Joao Medeiros