Building Order from Complexity

Building Order from Complexity

Building Order from Complexity

Responsibilities

UI, UX, Design System

Client

Gogoro

Duration

6 months

Platform

iOS, Android
Overview

As the app continued to grow, so did its complexity.

Over time, I noticed recurring friction in our daily design work: similar features looked slightly different across the app, designers spent excessive time searching for references, and developers often needed clarification on which version of a component to use.

These issues didn’t come from poor design decisions — they were the natural result of a fast-growing product without a unified system.
This project started as an internal initiative to bring clarity, consistency, and scalability back into the product.


My Role
  • Led the design system initiative from problem definition to execution

  • Conducted component audit and consolidation

  • Defined design standards and usage principles

  • Collaborated closely with engineers and cross-functional teams

  • Created documentation to support long-term adoption


Problem

As features accumulated, the UI evolved organically rather than systematically.

  • Similar components existed in multiple variations

  • No single source of truth for component usage

  • Designers and developers relied on memory instead of standards

  • Inconsistent UI patterns led to user confusion and slower iteration

At a certain point, shipping faster actually meant creating more long-term design debt.


Goal & Strategy

I framed the project around one simple idea:
A design system should reduce decision-making, not add more rules.

To achieve this, I defined three core goals:

  1. Component Inventory — understand what already exists

  2. Design Standardization — reduce variation and define clear rules

  3. Team Alignment — ensure the system works in real workflows

Step 1: Component Inventory

The first step was a full audit of the existing UI.

I reviewed 120+ components across different features and screens, documenting:

  • Where each component was used

  • Functional overlaps and inconsistencies

  • Components that were visually different but functionally identical

This phase was intentionally exhaustive.
Before proposing solutions, I needed a shared, objective view of the problem.

Key decision:

Avoid redesigning too early. First, understand the system as it actually exists.

Step 2: Standardization Through Reduction

Rather than designing new components immediately, I focused on reducing complexity.

  • Merged redundant components with similar behavior

  • Defined a consistent visual language (colors, typography, spacing)

  • Clarified component hierarchy and intent

Instead of asking “Which one looks better?”, the guiding question became:
“What problem does this component solve?”

Step 3: Designing for Adoption

A design system is only successful if teams actually use it.

I worked closely with engineers and other designers to ensure:

  • Components mapped cleanly to development logic

  • Usage rules were practical, not theoretical

  • Documentation answered real questions teams had

This collaboration shaped many decisions, especially around naming, variants, and constraints.

Key insight:

Consistency is a team agreement, not just a visual outcome.


Before & After

Before the system, the same UI elements appeared in multiple inconsistent forms, slowing down both design and development.

After consolidation:

  • Fewer components, clearer roles

  • Predictable patterns across features

  • Easier handoff between design and engineering

The design system quickly changed how the team worked:

  • Faster Design Process
    Designers could focus on solving problems instead of recreating UI.

  • Reduced Development Time
    Clear specifications minimized back-and-forth and rework.

  • More Consistent User Experience
    Users encountered familiar patterns, improving usability and trust.


Takeaways

This project reinforced an important lesson for me:

A design system is not about control — it’s about enabling better decisions at scale.

By investing time in structure and alignment, we created a foundation that supports future growth rather than slowing it down.
Instead of designing screens one by one, we’re now designing a system that designs itself.

Overview

As the app continued to grow, so did its complexity.

Over time, I noticed recurring friction in our daily design work: similar features looked slightly different across the app, designers spent excessive time searching for references, and developers often needed clarification on which version of a component to use.

These issues didn’t come from poor design decisions — they were the natural result of a fast-growing product without a unified system.
This project started as an internal initiative to bring clarity, consistency, and scalability back into the product.


My Role
  • Led the design system initiative from problem definition to execution

  • Conducted component audit and consolidation

  • Defined design standards and usage principles

  • Collaborated closely with engineers and cross-functional teams

  • Created documentation to support long-term adoption


Problem

As features accumulated, the UI evolved organically rather than systematically.

  • Similar components existed in multiple variations

  • No single source of truth for component usage

  • Designers and developers relied on memory instead of standards

  • Inconsistent UI patterns led to user confusion and slower iteration

At a certain point, shipping faster actually meant creating more long-term design debt.


Goal & Strategy

I framed the project around one simple idea:
A design system should reduce decision-making, not add more rules.

To achieve this, I defined three core goals:

  1. Component Inventory — understand what already exists

  2. Design Standardization — reduce variation and define clear rules

  3. Team Alignment — ensure the system works in real workflows

Step 1: Component Inventory

The first step was a full audit of the existing UI.

I reviewed 120+ components across different features and screens, documenting:

  • Where each component was used

  • Functional overlaps and inconsistencies

  • Components that were visually different but functionally identical

This phase was intentionally exhaustive.
Before proposing solutions, I needed a shared, objective view of the problem.

Key decision:

Avoid redesigning too early. First, understand the system as it actually exists.

Step 2: Standardization Through Reduction

Rather than designing new components immediately, I focused on reducing complexity.

  • Merged redundant components with similar behavior

  • Defined a consistent visual language (colors, typography, spacing)

  • Clarified component hierarchy and intent

Instead of asking “Which one looks better?”, the guiding question became:
“What problem does this component solve?”

Step 3: Designing for Adoption

A design system is only successful if teams actually use it.

I worked closely with engineers and other designers to ensure:

  • Components mapped cleanly to development logic

  • Usage rules were practical, not theoretical

  • Documentation answered real questions teams had

This collaboration shaped many decisions, especially around naming, variants, and constraints.

Key insight:

Consistency is a team agreement, not just a visual outcome.


Before & After

Before the system, the same UI elements appeared in multiple inconsistent forms, slowing down both design and development.

After consolidation:

  • Fewer components, clearer roles

  • Predictable patterns across features

  • Easier handoff between design and engineering

The design system quickly changed how the team worked:

  • Faster Design Process
    Designers could focus on solving problems instead of recreating UI.

  • Reduced Development Time
    Clear specifications minimized back-and-forth and rework.

  • More Consistent User Experience
    Users encountered familiar patterns, improving usability and trust.


Takeaways

This project reinforced an important lesson for me:

A design system is not about control — it’s about enabling better decisions at scale.

By investing time in structure and alignment, we created a foundation that supports future growth rather than slowing it down.
Instead of designing screens one by one, we’re now designing a system that designs itself.

Overview

As the app continued to grow, so did its complexity.

Over time, I noticed recurring friction in our daily design work: similar features looked slightly different across the app, designers spent excessive time searching for references, and developers often needed clarification on which version of a component to use.

These issues didn’t come from poor design decisions — they were the natural result of a fast-growing product without a unified system.
This project started as an internal initiative to bring clarity, consistency, and scalability back into the product.


My Role
  • Led the design system initiative from problem definition to execution

  • Conducted component audit and consolidation

  • Defined design standards and usage principles

  • Collaborated closely with engineers and cross-functional teams

  • Created documentation to support long-term adoption


Problem

As features accumulated, the UI evolved organically rather than systematically.

  • Similar components existed in multiple variations

  • No single source of truth for component usage

  • Designers and developers relied on memory instead of standards

  • Inconsistent UI patterns led to user confusion and slower iteration

At a certain point, shipping faster actually meant creating more long-term design debt.


Goal & Strategy

I framed the project around one simple idea:
A design system should reduce decision-making, not add more rules.

To achieve this, I defined three core goals:

  1. Component Inventory — understand what already exists

  2. Design Standardization — reduce variation and define clear rules

  3. Team Alignment — ensure the system works in real workflows

Step 1: Component Inventory

The first step was a full audit of the existing UI.

I reviewed 120+ components across different features and screens, documenting:

  • Where each component was used

  • Functional overlaps and inconsistencies

  • Components that were visually different but functionally identical

This phase was intentionally exhaustive.
Before proposing solutions, I needed a shared, objective view of the problem.

Key decision:

Avoid redesigning too early. First, understand the system as it actually exists.

Step 2: Standardization Through Reduction

Rather than designing new components immediately, I focused on reducing complexity.

  • Merged redundant components with similar behavior

  • Defined a consistent visual language (colors, typography, spacing)

  • Clarified component hierarchy and intent

Instead of asking “Which one looks better?”, the guiding question became:
“What problem does this component solve?”

Step 3: Designing for Adoption

A design system is only successful if teams actually use it.

I worked closely with engineers and other designers to ensure:

  • Components mapped cleanly to development logic

  • Usage rules were practical, not theoretical

  • Documentation answered real questions teams had

This collaboration shaped many decisions, especially around naming, variants, and constraints.

Key insight:

Consistency is a team agreement, not just a visual outcome.


Before & After

Before the system, the same UI elements appeared in multiple inconsistent forms, slowing down both design and development.

After consolidation:

  • Fewer components, clearer roles

  • Predictable patterns across features

  • Easier handoff between design and engineering

The design system quickly changed how the team worked:

  • Faster Design Process
    Designers could focus on solving problems instead of recreating UI.

  • Reduced Development Time
    Clear specifications minimized back-and-forth and rework.

  • More Consistent User Experience
    Users encountered familiar patterns, improving usability and trust.


Takeaways

This project reinforced an important lesson for me:

A design system is not about control — it’s about enabling better decisions at scale.

By investing time in structure and alignment, we created a foundation that supports future growth rather than slowing it down.
Instead of designing screens one by one, we’re now designing a system that designs itself.

Create a free website with Framer, the website builder loved by startups, designers and agencies.