Cosmic Design System

A Design System for Developers and Agents

Scope
Design Audit, Token Architecture, Design Foundation, Component Libraries, WCAG Compliance, Guideline & Patterns, DS Dev Collaboration
Duration
1.5 months
Year
2026
Role
Design Engineer

How I rebuilt Qapita's design system so designers could prototype faster with AI using the real components, and engineers, and AI agents writing code, could ship consistent UI without a review on every screen.

CustomLibraries+ ✕
All libraries ⌄
color/brand
color/accent
color/gradient
color/neutral
Component configuration
◆ Component set Selected variant
Description

A single component to compose your own screens. Available in different styles, states and backgrounds — every value bound to a token.

BISH11.🔗</>
Cosmic
for “Designers, Product Owners, Developers and Agents”
who “needs to design and build working prototypes with AI or Figma”
is the “single source of truth”
which “provides foundation and component library for designers (UI Kit), ready-made UI web components as code for developers, as well as guidelines, rules, and documentation for all.”

Context

Qapita is an equity-management platform, cap tables, ESOP administration, and digital share issuance, used by founders, finance teams, and employees across India and Southeast Asia.

The product's entire promise is a single, trustworthy source of truth for who owns what. That raises the stakes on interface consistency: when someone is approving an option exercise or reading their equity payslip, a screen that looks improvised reads as "can I trust this number?" Visual inconsistency isn't cosmetic here, it undercuts the core value proposition.

By the time I took this on, the platform served 2,500+ companies and 350,000+ stakeholders holding over USD 60 billion in equity across India and Southeast Asia. It had grown fast, and its interface had grown with it, in every direction at once.

Timeline

1
2–3 days
Audit - FigJam
Catalogued every icon, component, and color token already in use across the product.
2
1.5 weeks
Build - Figma, Claude and VS Code
Defined the token architecture, then built the foundation, core components, and icon set on top of it.
3
1 week
Document & QA - Storybook, Notion
Wrote component specs, ran accessibility checks, and stress-tested edge cases before rollout.

Audit

The existing system was React components layered on top of a mix of custom and open-source icon and UI libraries - built up over time, with no governing layer above it. Nobody owned consistency, so nothing stayed consistent. The audit put a number on the gap.

From a foundation nobody owned to a governed system: from “however it was built that day” to one documented answer.

Components
24
was ~12, undocumented
Icons
200+
was ~50, mixed sources

Token Architecture

1
Base
Primitives
Raw values only
2
Roles
Semantics
Defines intent and usage
3
Usage
Component tokens
Maps tokens w/ components
VALUE
#633EA5
BASE TOKEN · Base
color.palette.brand.1.default
ALIAS TOKEN · Roles
color.ui.interaction.default
COMPONENT TOKEN · Usage
button.primary.background.default
VALUE
18 base tokens · 35 role tokens
TtRobotoTtfont.family.1
Tt48px (3 rem)Ttfont.size.7xl
TtboldTtfont.weight.bold
BASE TOKEN
Typography · Base
Tt120%Ttfont.lineHeight.snug
Tt2,5% (0,025em)Ttfont.letterSpacing.wide
ROLE TOKEN
Typography · Base
Tt./. (with normal letters not necessary)Ttfont.textcase.
TYPOGRAPHY TOKENTttypography.display.1

Assets

Color token scale, Brand/50 to Brand/950 with hex values
Color Token
Typography token scale, Roboto Slab weights and sizes
Typography Token
Component typography tokens for buttons mapped to roles
Component Typography Token
Refreshed icon library, receipt illustration on a grid of outline icons

To identify gaps the existing icons assets were audited to identify specific icons in both, solid and outline variations, and a new and refreshed icon library was designed using Illustrator and Figma.

~200 icons
Component library, navigation, buttons, toggles and the component configuration panel

Components were built as reusable blocks of our design system. Each component meets a specific interaction need, and has been specifically created to work together to create patterns.

~24 components
Design patterns, shell components composed into a multi-step flow and shell layout

Patterns were designed in a way that they can be reused in different parts of the design journey. Based on the design requirements and refinements of a flow, compositions were created with the involvement of the designers and engineers along with product and brand teams.

design patterns

One system, many brands

The three-layer model isn't drift-proofing for its own sake, it's what lets one system carry many brands.

Color is organised into a small set of roles: a primary for identity and key actions, a secondary for accent and emphasis, and a neutral range for surfaces and text. Components reference only these roles, never raw values, so re-skinning for a different client is a base-palette swap, not a rebuild. Change the values behind the roles and every component re-skins at once. That's what lets the system scale from an in-house tool into a white-label foundation, shaped to each client we work with.

DEFAULT · IN-HOUSE Primary Accent Primary Secondary Neutral Purple identity, yellow accent, near-black neutral. WHITE-LABEL · CLIENT BRAND Primary Accent Primary Secondary Neutral High-contrast blue & teal for a financial client.
Same components, same roles, only the base palette changes. That's the whole mechanism behind white-labelling the product per client.

Metrics

The rollout is ongoing, so I'm treating early movement as signal, not proof. What I'm most deliberate about is how success gets measured, each metric ties back to a goal I set at the start.

What I'm measuringWhy it mattersHow it's captured
Component adoption% of new screens built from system components vs. one-offsComponent-usage lint / codebase scan per release
Token coverage% of styling from tokens vs. hardcoded hexStatic scan for raw hex/px in the codebase
DriftNet-new one-off components created per sprint (trending to zero)Tracked against the component request flow
Design-review loadReview rounds per UI featurePR review data / design QA tickets
Agent spec-pass rate% of agent-generated components passing spec-lint first trySpec-lint on AI-generated PRs

Early, directional signals so far: component reuse is up, drift has slowed, and the team reports UI features coming together faster with the system in place. I'm holding these loosely until the numbers above are instrumented.

Challenges and Learnings

Consistency

Getting consistency across product lines meant rules couldn't live in tribal knowledge or Figma comments, they had to be explicit enough for a designer, a developer, and an AI agent to read the same intent without translation. Forums and pattern libraries worked as the human-facing layer, but the real forcing function was writing naming and token rules precise enough that a non-human collaborator could parse them too.

Idea to Prototype made easy

Speed wasn't the goal until the system was mature enough to expose it as a gap: teams were rebuilding primitives instead of composing them. Once the library was structured and swappable, prototyping time collapsed, and that same structure is what let an agent assemble a feature from components without needing a human to hand-hold the logic.

Reusability and modularity

Gaps kept surfacing at the handoff from brainstorm to production, components that looked reusable in Figma diverged the moment engineering touched them. The fix was continuous embedding, not a one-time sync: keeping designers, developers, and any AI-driven step aligned to the same source components throughout, so nothing needed re-interpretation downstream.