Product Design Case Study

Scaling CashNote's Design System

How I built scalable Figma components for Korea's leading SMB super-app — serving 2M+ merchants processing ₩65 trillion in transactions.

2M+
Active merchants
15%
Efficiency gain
47→8
Button variants
$1B
Company valuation
Overview

The Project

Korea Credit Data (KCD) operates CashNote, the #1 business management super-app for Korean SMBs. Backed by Morgan Stanley and valued at $1B, CashNote helps merchants track sales across 8 credit card companies, manage tax invoices, monitor delivery apps, access loans, and connect with other business owners.

I joined to solve a critical infrastructure problem: as the product scaled from dashboard to super-app, design consistency was breaking down.

Role

Product Designer
Design Systems & Mobile UI

Duration

Jan 2024 – Oct 2025
1 year 10 months

Team

Cross-functional collaboration
Engineering, Product, QA, Data

Tools

Figma, Auto Layout, Variants
Design Tokens, Flutter

⚠️

Confidentiality Note: Due to NDA constraints, specific screens and proprietary data have been abstracted or recreated. Metrics and methodologies are shared with permission. This case study focuses on process and systems thinking rather than pixel-level deliverables.

Understanding CashNote

CashNote isn't just an app — it's the operating system for Korean small businesses. To design for it, I needed to understand its complexity.

📊 Product Scope

  • Sales dashboard (8 card companies + cash + delivery)
  • Tax invoice management
  • Business credit scoring
  • Loan marketplace
  • B2B supplies marketplace
  • Merchant community forum
  • Government subsidy alerts

👥 User Context

  • Restaurant owners checking daily revenue
  • Retail merchants reconciling card payments
  • Service providers tracking client invoices
  • Age range: 30-60, varying tech literacy
  • Peak usage: Early morning, late evening
  • Primary device: Android (78%)

Who We Design For

Through user research and analytics, we identified three primary personas that represent the majority of CashNote's user base.

👨‍🍳

김사장님

Restaurant Owner, 52
Business Type Korean BBQ Restaurant
Monthly Revenue ₩40-60M
App Usage 5x daily, 2 min sessions
Pain Point Card settlement delays

"I just need to see if today's sales match what I expected. Quick glance, that's it."

👩‍💼

이대표

Retail Store Owner, 38
Business Type Clothing Boutique
Monthly Revenue ₩20-30M
App Usage 3x daily, 5 min sessions
Pain Point Tax invoice management

"I need to track which suppliers I've paid and manage my tax documents for the accountant."

👨‍🔧

박원장

Auto Repair Shop, 45
Business Type Service Business
Monthly Revenue ₩30-50M
App Usage 2x daily, 10 min sessions
Pain Point Loan access for equipment

"The loan marketplace saved me weeks of paperwork. I could compare rates in minutes."

Design Debt at Scale

CashNote grew from 1.2M to 2M+ users during my tenure. Five feature teams were shipping independently, and the seams were showing.

47

Button Variants

Each team had created their own button styles. Primary buttons alone had 12 different implementations.

4hrs

Avg. Handoff Time

Engineers spent hours per feature deciphering design specs. No consistent naming or documentation.

0

Responsive Components

Fixed-width designs broke on different screen sizes. Designers rebuilt layouts for each device.

12

Card Patterns

Data cards, transaction cards, summary cards — all slightly different. No shared foundation.

3.2

Accessibility Score

Contrast issues, undersized touch targets. Users with vision impairments struggled.

Duplicated Effort

Same components rebuilt across teams. No single source of truth.

Competitive Analysis

I analyzed design systems from comparable fintech apps to understand industry standards and identify opportunities for differentiation.

App Design System Auto Layout Dark Mode Motion
Toss TDS (Toss Design System) ✓ Full ✓ Yes ✓ Lottie
Kakao Pay Kakao Design System ✓ Full ○ Partial ✓ Lottie
Naver Pay Naver Design System ✓ Full ✕ No ○ Basic
CashNote (Before) None (Ad-hoc) ✕ None ✕ No ✕ None

Key Insight

Korean fintech leaders had invested heavily in design systems. CashNote was falling behind not just in visual polish, but in development velocity. Without a system, we couldn't compete on feature speed or consistency.

Research & Audit

Before building anything, I needed to understand the full scope of the problem — and get buy-in from stakeholders.

🔍

Component Audit

Catalogued every UI element across 50+ screens

💬

Engineering Interviews

5 devs on pain points in design-to-code workflow

📋

Designer Survey

Mapped which components were rebuilt most often

📊

Usage Analytics

Identified highest-traffic screens for prioritization

Interview Insights

👨‍💻
Senior Flutter Developer 3 years at KCD
"Every feature feels like starting from zero. I spend more time asking designers 'what's the padding here?' than actually coding."
👩‍🎨
Product Designer Marketplace Team
"I know I'm rebuilding the same card component someone else made, but I can't find it. So I just make a new one."
👨‍💼
Product Manager Core Dashboard
"The inconsistency isn't just ugly — users get confused. Different buttons do different things depending on where you are."

Component Consistency Audit — 50 Screens

Inconsistent
Partial match
Consistent
BTN
BTN
CARD
BTN
NAV
INPUT
LIST
BTN
CARD
MODAL
NAV
CHART
BTN
TAG
CARD
ICON
BTN
LIST
INPUT
CARD
NAV
BTN
TOAST
BTN

Key Findings

The audit revealed that 68% of components had inconsistent implementations. Buttons were the worst offender, but the real issue was structural: there was no shared foundation for spacing, color, or typography.

Building the System

I followed a phased approach — starting with foundations, building components, then rolling out with documentation and training.

1

Foundation: Design Tokens

Weeks 1-2

Established the atomic elements everything else would build on.

  • Color palette with semantic naming (primary, success, error, etc.)
  • Typography scale optimized for financial data display
  • Spacing system (4px base unit)
  • Border radius and shadow standards
  • Dark mode token mappings
2

Core Components

Weeks 3-6

Built the high-impact, high-frequency components first.

  • Buttons (8 variants from 47 — primary, secondary, ghost, danger, sizes)
  • Input fields with validation states
  • Cards with flexible content slots
  • List items for transaction displays
  • Navigation components (tabs, headers)
3

Complex Patterns

Weeks 7-10

Tackled the CashNote-specific patterns that required domain knowledge.

  • Sales dashboard cards (daily/weekly/monthly views)
  • Transaction list with virtualized scrolling specs
  • Chart components for revenue visualization
  • Empty states and error handling patterns
  • Form flows for tax invoice creation
4

Documentation & Handoff

Weeks 11-12

Made the system usable by others — not just buildable by me.

  • Usage guidelines embedded in Figma
  • Do's and don'ts for each component
  • Naming conventions aligned with Flutter codebase
  • Spacing and layout principles
  • Accessibility requirements checklist
5

Rollout & Training

Weeks 13-16

Shipped the system and helped teams adopt it.

  • Pilot with one feature team (Marketplace)
  • Weekly design system office hours
  • Code review participation for design fidelity
  • Feedback collection and iteration
  • Gradual rollout to all 5 teams
6

Maintenance & Evolution

Ongoing

Kept the system alive and responsive to new needs.

  • Bi-weekly component review sessions
  • New pattern requests workflow
  • Version control and changelog
  • Cross-team component sharing

The Component Library

Built with Figma Auto Layout for responsive behavior and clean handoff to Flutter development.

Today's Sales
View all →
₩X,XXX,XXX
↑ 12.4% vs yesterday

Sales Dashboard Cards

Responsive containers displaying revenue data with real-time updates. Supports daily, weekly, monthly views with trend indicators.

Auto Layout Variants Data Binding
Card Payment
Shinhan Card · 14:32
₩XX,XXX
Cash Payment
POS Terminal · 14:28
₩XX,XXX
Delivery Order
Baemin · 14:15
₩XX,XXX

Transaction Lists

Virtualized list components handling 10K+ daily transactions. Type indicators, timestamps, amounts with overflow handling.

Virtualization States Accessibility
Parent Frame (Fill Container)
Icon
Content (Fill)
Action
Nested Frame (Hug Contents)
Label
Badge

Auto Layout Architecture

Every component built with proper fill/hug behavior. Nested frames maintain structure across screen sizes without manual adjustment.

Responsive Constraints Nesting

Button System

Consolidated from 47 to 8 variants. Size, state, type, and icon combinations as Figma variants with consistent touch targets.

8 Variants 3 Sizes States

Foundation Elements

The atomic pieces that everything else builds on. Documented in Figma with usage guidelines.

Primary/900
Primary/500
Primary/300
Success
Error
Warning
Gray/900
Gray/600
Gray/200

Color Tokens

Semantic naming mapped to brand palette. Includes dark mode tokens for future implementation.

Display ₩2,847,000
Heading Today's Revenue
Subhead Card Payments
Body Transaction details
Caption Updated 2 min ago

Typography Scale

Financial-first hierarchy. Large display for amounts, clear labels, subtle metadata. Optimized for quick scanning.

4px
8px
16px
24px
32px
48px

Spacing System

4px base unit. Consistent rhythm across all components. Mapped to Flutter padding/margin values.

// Component naming convention

Button/Primary/Medium/Default
Button/Primary/Medium/Hover
Button/Primary/Medium/Disabled

Card/Sales/Daily
Card/Sales/Weekly
Card/Transaction/Default

Naming Conventions

Hierarchical naming aligned with Flutter widget structure. Engineers find components without guessing.

Interaction States

Every interactive element has defined states to provide clear feedback and meet accessibility requirements.

Default

Submit

Hover

Submit

Active

Submit

Disabled

Submit

Loading

Submit

Inclusive Design

CashNote's users range from 25 to 65+, with varying levels of vision and tech literacy. Accessibility isn't optional.

Color Contrast WCAG AA

All text meets minimum 4.5:1 contrast ratio. Large text (18px+) meets 3:1.

Primary Text
Body Text

7.2:1 ratio on primary buttons

Touch Targets 48px min

All interactive elements meet minimum 48x48px touch target size, with 8px spacing between targets.

Focus States Visible

Clear focus indicators for keyboard navigation. 2px offset ring with primary color.

Screen Readers Labeled

All components include proper aria-labels and semantic structure for TalkBack/VoiceOver compatibility.

Design-Engineering Handoff

A design system only works if engineers can implement it accurately. I embedded myself in the development process.

📐

Spec Documentation

Every component includes pixel-perfect specs: padding, margins, border radius, colors with exact values. No ambiguity.

🔗

Flutter Alignment

Component names match Flutter widget naming. Auto Layout properties map directly to Row/Column/Expanded patterns.

👀

Code Review Participation

Joined PR reviews to catch design drift early. Built relationships with engineers and learned implementation constraints.

📹

Prototype Videos

Screen recordings of interactive prototypes for complex flows. Engineers see intended behavior, not just static screens.

🗓️

Weekly Syncs

Standing meeting with lead engineers. Surfaced implementation blockers early, iterated on component APIs together.

📚

Living Documentation

Guidelines updated as we learned. When a pattern didn't work in code, we revised the design system together.

Results

The design system rolled out across CashNote's 5 feature teams over 6 months. Here's what changed:

15%
Faster feature delivery
10%
Reduced dev costs
60%
Faster design handoff
47→8
Button consolidation
4.2→4.8
Accessibility score
5
Teams adopted

Before

  • 47 button variants across codebase
  • 4+ hours average handoff time per feature
  • Designers rebuilt components for each screen
  • No responsive behavior — fixed widths
  • Inconsistent spacing and typography
  • Accessibility issues in production

After

  • 8 button variants with clear use cases
  • ~90 minutes average handoff time
  • Drag-and-drop from component library
  • Auto Layout handles all screen sizes
  • Consistent 4px spacing grid
  • WCAG AA compliance across components

What the Team Said

"Before Alan's system, every new feature felt like starting from scratch. Now I can grab a component and know it'll work. My implementation time dropped significantly."
JK
Senior Flutter Developer Core Dashboard Team
"The naming convention aligned with Flutter was a game-changer. I don't have to guess what 'Card-v2-final-FINAL' means anymore. It just matches our code structure."
SL
Mobile Engineer Marketplace Team
"Having Alan in code reviews meant fewer back-and-forth cycles. He understood what was easy vs. expensive to implement, so his designs were realistic from the start."
YP
Engineering Manager Platform Team

What I Learned

01

Systems are political

The hardest part wasn't Figma — it was getting 5 teams to adopt shared patterns. I spent as much time in stakeholder meetings as in design files. Buy-in requires showing value, not mandating compliance.

02

Fintech needs trust

When users are looking at their money, every pixel matters. Alignment, consistent spacing, and professional typography aren't aesthetic choices — they're trust signals. Sloppy UI = "is my money safe?"

03

Auto Layout pays off

Setting up proper constraints takes 3x longer upfront but saves 10x downstream. Components that "just work" at any size eliminate entire categories of bugs and redesign requests.

04

Sit with engineering

The best design decisions came from understanding Flutter constraints. Attending code reviews taught me what's easy vs. expensive to implement. I became a better designer by learning to think in widgets.

05

Document as you go

I initially built components without guidelines. Big mistake — people used them wrong. Now I write usage notes before marking anything as "done." Documentation is part of the deliverable.

06

Version control matters

When 5 teams use your components, breaking changes break everyone. I learned to treat the design system like a product — with changelogs, deprecation warnings, and migration guides.

Let's Connect

I'm exploring product design opportunities in fintech. Currently based in Seoul, open to relocation.