Skip to content
Back to selected work
Design systemAIComponents

Building a scalable design system for a multi-method research platform

How I created a reusable design foundation for a research platform expanding beyond surveys - using AI extensively to accelerate comparative research, UI audits, system planning, documentation, and design QA.

ROLE
Product Designer
Timeline
Mid-2025
Project
Product design system
Scope
Design-system strategy, UI audit, foundations and tokens, component architecture, states, documentation, engineering handoff, and adoption
PLATFORM
Multi-method B2B research platform connecting researchers with vetted participants for paid studies
Tools
Figma, Figma Variables, Components, AI-assisted research and documentation
Design-system overview in Figma - foundations, component families, state matrices, and documentation pages
An overview of the design system.

The context

The platform initially focused on online surveys. Researchers could create studies, recruit participants, collect responses, and manage incentives. Participants could discover relevant surveys, complete them, and receive rewards.

As the product expanded, it began supporting additional research methods, including:

  • Unmoderated testing
  • Moderated user testing
  • Research interviews
  • Study scheduling and session management
  • Participant management
  • More advanced study configuration
  • Search, filtering, and data-heavy workflows

The expansion changed the product from a survey-focused platform into a broader research platform. That shift introduced new interaction models, more complex forms, scheduling flows, richer participant data, new feedback patterns, and a larger set of UI states.

The existing interface had evolved through individual feature work. It contained useful patterns, but those patterns were not organized into a scalable or documented system.

From

Survey-focused workflows

To

Multiple research methods, scheduling, moderated sessions, and participant management

Design challenge

Create consistency across expanding workflows without making the system too rigid or difficult to maintain.

AI contribution

Accelerated comparative research, UI-audit synthesis, taxonomy exploration, documentation, and state-gap review.

The problem

As the platform grew, similar interface patterns were being designed and implemented differently across the product.

Examples included:

  • Buttons with similar purposes but inconsistent hierarchy, size, or styling
  • Form fields with different spacing, validation behavior, and states
  • Tags, badges, filters, and statuses used interchangeably
  • Missing loading, error, empty, selected, and disabled states
  • Screens designed from previous examples rather than shared principles
  • Engineering handoff that required screen-by-screen interpretation
  • New research methods at risk of creating separate visual languages

This was more than a visual-consistency issue.

For users, the product became harder to learn because similar interactions did not always behave or look the same. For designers, routine decisions were repeatedly revisited. For engineers, component behavior and edge cases were often unclear until implementation.

The challenge was not to create a library of polished UI elements. It was to create a shared product language that could support multiple research methods without fragmenting the experience.

My goal

I set out to create a practical, documented design system that would:

  • Support the platform’s expansion beyond surveys.
  • Create more consistent experiences across study creation, scheduling, participant management, and reporting workflows.
  • Make common design decisions faster and easier to repeat.
  • Give design and engineering a shared vocabulary for patterns, states, and behavior.
  • Establish a scalable foundation without overengineering the system.

I intentionally did not try to recreate a large enterprise design system. Instead, I focused on a useful core: the foundations and component families that would create the greatest value across current and upcoming product work.

My role

I was responsible for:

  • Auditing the existing product UI
  • Identifying repeated patterns, inconsistencies, and missing states
  • Researching and comparing established design systems
  • Defining the system’s structure and component taxonomy
  • Creating visual foundations, color scales, semantic colors, and usage guidance
  • Designing component families, variants, and interaction states
  • Creating documentation and usage guidance
  • Applying the system to real product workflows
  • Preparing handoff guidance for engineering
  • Using AI as a substantial support tool for analysis, synthesis, documentation, and design-system QA

1. Establishing a research foundation

Before designing components, I wanted to understand how mature design systems solve similar problems: organizing tokens, structuring components, documenting behavior, defining states, and balancing flexibility with consistency.

I selected established systems that represented different product contexts and levels of maturity:

  • Material Design
  • IBM Carbon Design System
  • Shopify Polaris
  • Adobe Spectrum
  • Atlassian Design System
  • Apple Human Interface Guidelines
  • Ant Design
  • Uber Base Web

The goal was not to copy any one system. It was to identify proven patterns and determine which approaches were appropriate for this platform.

Using AI for comparative design-system research

AI played a meaningful role in this phase.

I supplied AI with the reference design systems I had selected and directed it to analyze them using specific criteria. Rather than manually creating a first-pass comparison across every system, I used AI to synthesize the references and surface patterns across:

  • Foundation and token architecture
  • Component taxonomy
  • Naming conventions
  • Variant and state models
  • Documentation formats
  • Accessibility guidance
  • Content guidance
  • Design-to-development handoff patterns
  • Approaches to flexibility versus standardization

This allowed me to move faster from a large set of reference materials to a structured set of observations and questions.

For example, AI helped identify recurring questions such as:

  • How do mature systems distinguish filters, tags, badges, dropdowns, and selection controls?
  • Which interaction states are consistently treated as essential?
  • How are semantic tokens named and grouped?
  • What documentation structure is useful for both designers and engineers?
  • When do systems introduce a new component versus extending an existing one with a variant?

I used this analysis as a research accelerator - not as a substitute for professional judgment.

I validated important findings against the original reference systems, then evaluated them against the product’s actual workflows, the team’s language, user needs, and engineering constraints.

StageMy contributionAI contributionFinal output
Select reference systemsChose relevant, mature systems to study - Curated research set
Define evaluation criteriaIdentified what needed comparison: tokens, taxonomy, states, documentation, accessibilityStructured analysis around those criteriaComparative research framework
Supply reference materialProvided the selected system referencesSynthesized recurring patterns and differencesFirst-pass comparison
Review findingsValidated recommendations against source material and product needsSurfaced questions, patterns, and alternativesProduct-relevant observations
Make decisionsDefined the final system directionSupported exploration and documentationDesign-system strategy

AI significantly reduced the time needed to synthesize design-system research. It helped me process a wider set of references, compare approaches more systematically, and focus my time on product-specific decisions.

2. Auditing the existing product interface

With a research framework in place, I audited the current product interface.

I reviewed UI patterns across:

  • Buttons and links
  • Inputs, text areas, selects, and dropdowns
  • Search and filtering
  • Tags, badges, and status indicators
  • Navigation and pagination
  • Dialogs, overlays, and tooltips
  • Notifications, banners, and feedback messages
  • Tables and data-heavy interfaces
  • Empty, loading, error, and success states
  • Typography, colors, spacing, and icons

The purpose was not just to catalogue the product. I needed to understand which patterns were already reusable, which were inconsistent, and which new components were required as the product introduced more research methods.

Using AI to accelerate the UI audit

AI made the audit significantly more efficient.

After creating an initial inventory of the product’s UI patterns, I used AI to help organize, group, and interrogate the findings. It supported the early analysis by helping me:

  • Cluster visually or behaviorally similar patterns
  • Identify potential naming overlaps
  • Surface duplicate or near-duplicate components
  • Generate first-pass component categories
  • Flag areas where states appeared incomplete
  • Produce structured audit templates
  • Create prompts for accessibility and edge-case review
  • Explore alternative ways to organize the component library

For example, I could provide a list of existing patterns - such as buttons, search fields, filters, tags, badges, dropdowns, and select controls - and ask AI to identify likely overlaps, distinctions, and questions for further review.

This saved time during the divergent phase of the work: organizing a large amount of UI information, exploring alternatives, and identifying gaps.

I then manually reviewed and refined the output based on:

  • User intent
  • Interaction behavior
  • Visual similarity
  • Product-specific requirements
  • Engineering feasibility
  • Existing team terminology
  • Whether the pattern had enough repeated use to become reusable
CategoryDefinitionExample
Existing reusable patternsPatterns already used across the product that could be formalized and refinedButtons, form controls, notifications
Patterns needing consolidationSimilar patterns with inconsistent size, styling, naming, or behaviorFilters, tags, status indicators
New patterns required by expansionComponents needed because new research methods introduced new workflowsScheduling, calendar interactions, moderated-session flows

3. Defining the system architecture

I organized the design system into two clear layers: foundations and components.

Foundations

Foundations established the reusable decisions behind every interface:

  • Color scales, semantic colors, and usage guidance
  • Typography hierarchy
  • Spacing and sizing rules
  • Border-radius rules
  • Shadows and elevation
  • Icon usage
  • Interactive-state values

Components

Components translated those foundations into reusable product patterns:

  • Buttons and links
  • Inputs and text areas
  • Search, filters, selects, and dropdowns
  • Checkboxes and radio buttons
  • Tags and badges
  • Banners and notifications
  • Tooltips, overlays, and dialogs
  • Calendars and date controls
  • Navigation and pagination

This structure helped distinguish between the underlying rules of the interface and the assembled patterns used in product screens.

Design-system file architecture
An early look at the Figma file, showing foundations, color scales, button component properties, and button variant examples.

4. Creating scalable foundations

Color system and scalable color tokens

The product already used a clear and straightforward color-naming approach. I formalized that approach into a scalable color system that could be consistently applied across the interface.

The system included:

  • Violet as the primary brand and action color
  • Grays and white as neutral colors for text, backgrounds, borders, dividers, badges, and other interface elements
  • Semantic color scales for communicating feedback and status:
    • Green for positive and success-related states
    • Red for destructive actions, errors, and critical events
    • Yellow for warnings and actions requiring attention
    • Sky for important informational messages

Rather than introducing overly abstract token names, I used a simple scale-based naming convention across every color family. Each color was named by its family and intensity - for example, Violet-900, Violet-700, Gray-500, Green-600, and Red-500. This made the system easy to scan, discuss, and apply consistently in both design and handoff.

Color familyExample tokensPrimary use
VioletViolet-900 to Violet-25Brand identity, primary actions, and important highlights
GrayGray-900 to Gray-50Text, backgrounds, borders, dividers, badges, and supporting interface elements
WhiteWhiteLight surfaces and inverted contexts
GreenGreen-800 to Green-50Positive feedback and success states
RedRed-800 to Red-50Errors, destructive actions, and critical events
YellowYellow-800 to Yellow-50Warnings and states requiring user attention
SkySky-800 to Sky-50Informational messages and important information

The primary violet scale supported both high-emphasis actions and lighter interface treatments. For example, darker values such as Violet-900 and Violet-800 could support stronger emphasis, while lighter values such as Violet-200, Violet-100, and Violet-50 could be used for subtle backgrounds, selected states, or low-emphasis surfaces.

Neutral colors were used throughout the product to establish hierarchy and structure. Gray-900 was used as the primary text color, while lighter gray values supported secondary text, borders, background layers, and dividers. White was retained as a core surface color.

Semantic colors followed the same naming structure as the primary and neutral scales. This created a consistent and predictable system while allowing feedback colors to be used appropriately across banners, notifications, validation, status indicators, and other product states.

Text and border colors were selected according to their background context to maintain readable contrast. Text could invert on dark backgrounds when necessary, and borders were chosen to clearly separate elements without creating unnecessary visual weight.

Typography, spacing, elevation, and icons

I defined consistent rules for:

  • Page titles, headings, labels, body text, captions, and supporting text
  • Form-field spacing and label relationships
  • Button padding and component dimensions
  • Card, section, and layout gaps
  • Elevation for dialogs, dropdowns, overlays, and tooltips
  • Icon sizing, alignment, and semantic use

The goal was to reduce arbitrary decisions while preserving flexibility for complex research workflows.

Consistency should reduce unnecessary decisions, not remove the flexibility required by real product workflows.

5. Designing components around purpose and behavior

I designed components around the job they performed, not only their visual style.

Buttons

Buttons appeared throughout the platform: creating studies, saving configurations, managing participants, scheduling sessions, and confirming actions.

I created a flexible button family that supported:

  • Primary, secondary, tertiary, and destructive hierarchy
  • Multiple sizes
  • Text-only, icon-leading, and icon-trailing formats
  • Hover, focus, pressed, disabled, and loading states

A key decision was to use variants and properties when the interaction model remained the same, rather than creating a new component for every minor visual difference.

Form controls

The platform relied heavily on complex forms for study creation, participant screening, session setup, and research configuration.

I created reusable patterns for:

  • Input fields
  • Text areas
  • Search fields
  • Select fields
  • Dropdowns
  • Checkboxes
  • Radio buttons
  • Calendar controls

Each component accounted for relevant states and content conditions, including labels, helper text, placeholders, required indicators, validation, error messages, disabled behavior, read-only behavior, focus, long content, and selected values.

Search, filters, tags, and badges

These patterns were especially important for study, participant, and session-management workflows.

I clarified their different purposes:

PatternPrimary purpose
SearchHelps users find content
FilterNarrows a result set
TagRepresents a selected or removable value
BadgeCommunicates compact status or classification

This distinction reduced the tendency to use similar-looking components interchangeably.

Dialogs, notifications, and feedback

I also created reusable patterns for:

  • Success, warning, error, and informational messages
  • Persistent banners and temporary notifications
  • Confirmation dialogs
  • Destructive actions
  • Modal structures and overlay behavior

These patterns included guidance on hierarchy, action placement, dismissal behavior, severity, and long-content handling.

Color scale tokens for the violet primary ramp, grays, blue, and white
Semantic color scales for red, green, sky, and yellow feedback colors
Button component matrix covering default, primary, secondary, tertiary, and state variants
Text-input component matrix with default, hover, focused, typed, and disabled states
Badge component matrix with icon placements, sizes, and color variants
Modal component sheet with medium and small sizes, spacing spec, and destructive variant
A selected view of the design system in Figma, showing examples of foundational styles and reusable component patterns. The library also included additional components, variants, states, and documentation beyond those shown here.

6. Designing beyond the default state

A core focus of the system was ensuring components worked in realistic product conditions - not just in polished default states.

Depending on the component, I defined and documented states such as:

  • Default
  • Hover
  • Focus
  • Pressed
  • Selected
  • Disabled
  • Loading
  • Error
  • Success
  • Empty
  • Read-only
ComponentKey states considered
ButtonDefault, hover, focus, pressed, disabled, loading
Input fieldDefault, filled, focused, error, success, disabled, read-only
CheckboxChecked, unchecked, indeterminate, focused, disabled
DropdownClosed, open, selected, empty, error
CalendarCurrent date, selected date, unavailable date, loading, navigation
NotificationSeverity, persistent/dismissible behavior, action state

AI-assisted state and edge-case review

Once I had created a component, I used AI as a structured review tool to generate questions around potential gaps and edge cases.

For example:

  • Does the component have a clear focus state?
  • What happens with unusually long content?
  • Does the user understand the difference between disabled and unavailable?
  • Is the error behavior clear and consistent?
  • What happens when a search returns no results?
  • Does loading behavior prevent duplicate actions or unclear feedback?
  • Are there states that will matter during keyboard interaction?

AI did not decide which states belonged in the system. It helped make the review process more thorough and less dependent on memory alone. I evaluated the suggestions against the product’s real behavior and incorporated only what was relevant.

7. Accessibility considerations

Accessibility was included in the design-system work rather than treated as a final-stage review.

I considered:

  • Color contrast
  • Visible focus states
  • Text hierarchy and legibility
  • Touch and click target size
  • Labels and supporting text
  • Error-message placement
  • Keyboard-related states
  • Disabled versus unavailable behavior
  • Communicating meaning through more than color alone

AI was useful for generating accessibility review prompts and identifying potential omissions, such as unclear labels or missing focus behavior. However, AI output was never treated as accessibility certification or final validation.

Final component decisions were reviewed against accessibility guidance and discussed with engineering where implementation behavior mattered.

8. Documentation and engineering handoff

A component library becomes useful only when people understand how, when, and why to use it.

For each component, I documented:

  • Purpose
  • When to use it
  • When not to use it
  • Available variants and sizes
  • Supported states
  • Interaction behavior
  • Content guidance
  • Accessibility considerations
  • Do’s and don’ts
  • Related components
  • Handoff notes
  • Color-scale naming and intended usage for primary, neutral, and semantic colors
Component documentation example
Button component - documentation page showing anatomy, variants, states, usage guidance, accessibility considerations, do’s and don’ts, and engineering handoff notes.

AI as a documentation and knowledge-scaling tool

Documentation was one of the areas where AI delivered the most practical value.

After I defined a component’s real purpose, properties, behavior, and limitations, I used AI to create structured first drafts for:

  • Component descriptions
  • Usage guidance
  • Do’s and don’ts
  • State explanations
  • Content recommendations
  • Accessibility reminders
  • Handoff tables
  • Documentation outlines

This reduced repetitive writing and formatting work across a growing library. It allowed me to spend more time on the higher-value work: reviewing accuracy, resolving contradictions, refining product-specific guidance, and aligning documentation with implementation realities.

Every output was edited and validated before use. I ensured the documentation reflected:

  • The component’s actual behavior
  • The team’s product vocabulary
  • Design and engineering needs
  • Real workflow constraints
  • Clear, non-generic guidance
AreaHow AI helped significantlyMy responsibility
Comparative researchSynthesized the reference design systems I supplied and surfaced patterns across tokens, taxonomy, states, documentation, and accessibilitySelected the references, verified analysis, and chose what fit the product
UI auditOrganized inventories, suggested groupings, surfaced naming overlaps and possible duplicate patternsValidated real component boundaries and audit decisions
TaxonomyExplored alternative component categories and naming structuresDefined the final system architecture and vocabulary
State reviewGenerated structured questions about missing states, edge cases, and accessibility considerationsDecided which states were needed and how they should behave
DocumentationCreated first drafts of guidance, state descriptions, do’s/don’ts, and handoff structuresEdited, validated, and finalized product-specific documentation
Handoff preparationHelped structure component properties and state matricesAligned details with engineering constraints and product behavior

AI was not a minor add-on to the process. It was a practical force multiplier: it helped me research more broadly, audit more systematically, document more consistently, and review component gaps more thoroughly - while I retained ownership of design quality and product decisions.

9. Applying the system to real workflows

The design system was applied to product work supporting the platform’s expansion.

This included:

  • Various research study creation workflows
  • Forms and configuration
  • Search and filtering
  • Participant management
  • Scheduling and calendar interactions
  • Notifications and confirmation flows
  • Navigation and status displays

Applying components in real flows revealed gaps that were not visible in isolation.

For example, product use exposed needs for:

  • Better long-content behavior
  • More complete error treatments
  • Additional disabled or read-only states
  • Clearer relationships between components
  • Responsive considerations
  • More specific feedback behavior

I treated these discoveries as feedback for the system. Components were refined based on real product use instead of forcing workflows to fit an incomplete library.

Participant opportunities feed with filters, search, and research study cards
Create a pre-screener survey modal with branching-logic rules, conditions, and go-to actions
Account settings page with profile visibility, password update, and account deletion
Real product flows - including study setup, filtering, participant management, and scheduling - showing how shared components, color scales, semantic feedback colors, and interaction states were applied in context.

10. Engineering alignment and governance

A system is only valuable if it can be implemented, adopted, and maintained.

I worked with engineering to clarify:

  • Component naming
  • Variant structure
  • Token mapping
  • Interaction behavior
  • Responsive needs
  • Edge cases
  • Implementation constraints
  • Which patterns should remain shared versus product-specific

I also created contribution principles to guide future system growth.

Before adding a new component or variant, the team could ask:

  • Is this pattern repeated enough to become reusable?
  • Does it have a distinct purpose or behavior?
  • Can an existing component support the requirement?
  • Is the difference visual, behavioral, or both?
  • What states and documentation would it require?
  • Can it be implemented and maintained consistently?

This helped avoid an uncontrolled collection of one-off variants while leaving room for the system to evolve with the product.

Outcomes

The design system became a shared foundation for the platform’s expansion from a survey-focused product to a multi-method research platform.

Consistency

Shared foundations and component behavior created more predictable experiences across study setup, forms, filtering, participant management, feedback, and navigation.

Faster design decisions

Designers could start from documented patterns rather than repeatedly deciding hierarchy, spacing, error behavior, and states at the screen level.

Clearer handoff

Design and engineering gained a common language for components, variants, tokens, interaction states, and edge cases.

Product scalability

The system gave new research workflows a consistent base without forcing every workflow into identical layouts or patterns.

AI-enabled efficiency

AI reduced the manual overhead of synthesizing research, organizing the audit, exploring taxonomy, generating documentation drafts, and reviewing potential state gaps.

The value of the system was not that every screen looked identical. It was that recurring decisions became intentional, reusable, and easier to scale as the product grew.

Key learnings

A design system is more than a component library

A useful system includes:

  • Foundations and tokens
  • Components and variants
  • Interaction states
  • Naming and shared language
  • Documentation
  • Accessibility considerations
  • Engineering alignment
  • Contribution principles
  • Continuous learning from real product work

Systems need to be validated in product flows

A component can look complete in a library and still fail when it meets long content, complex forms, edge cases, data-heavy screens, or responsive constraints.

Applying the system in real product work was essential to making it practical.

AI works best when it strengthens - not replaces - design judgment

AI was most useful when used for information-heavy and repetitive work:

  • Comparative research synthesis
  • UI inventory organization
  • Taxonomy exploration
  • Naming options
  • Documentation drafts
  • State-gap prompts
  • Accessibility review questions
  • Handoff structure

Its value came from speeding up analysis and making the process more systematic. The final quality of the system still depended on product understanding, design judgment, validation, accessibility awareness, and engineering collaboration.

I used AI as a significant design-systems copilot: it expanded the breadth of my research, accelerated the audit, made documentation more scalable, and strengthened my review process. I used my product and systems-design judgment to turn that acceleration into a coherent, usable design system.