All projects

BQool / Enterprise SaaS / AI insights

Turning Campaign Chaos into Confident Decisions.

Led the system-level redesign of BQool's advertising and automation platform — replacing a fragmented legacy UI with a shared, token-based library and structuring AI recommendations sellers can act on with confidence.

Role

Senior Product Designer & Design System Lead

Period

2025 - Present

Engagement

Full-time

Industry

Advertising technology

Complexity

Simplified workflow-heavy advertising and repricing tools

System

Rebuilt a fragmented UI library into a scalable design system

Decisions

Turned dense metrics into clearer signals, diagnosis, and action

B2B SaaSAI Product DesignData-Heavy InterfacesDesign Token ArchitectureDesign Systems & DesignOpsDesign-to-Code HandoffCross-functional Leadership
BQool advertising intelligence artwork
02 · What Changed

Fragmented UI

Shared product language

Metrics without direction

Signal → diagnosis → action

AI as answer

Evidence + review

Independent components

Governed system

Static handoff

Versioned design-to-code workflow

03 · Product complexity

A System,
not a Screen.

Challenge

BQool had grown into a powerful advertising and automation platform, but a decade of ad-hoc Bootstrap patterns left no shared design language behind it.

  • Fragmented UI — tables, filters, forms, and automation settings had each evolved independently.
  • Trust Gap — high-volume campaign work was hard to scan and act on with confidence.
  • Distributed Team — PMs, engineers, analysts, and customer-facing staff spanning the US and Asia.

Design strategy

I focused the redesign on decision quality, replacing legacy Bootstrap patterns with a shareable, token-aligned component library.

  • Library-first — tables, filters, forms, and modals draw from one token-driven source.
  • Hierarchy & Disclosure — hierarchy surfaces what needs attention; disclosure controls density.
  • Guided Automation — contextual guidance and validation build trust into automation settings.
  • Explainable AI — BQool Insight structures findings with evidence and a next step.
04 · Research and Insights

Insight without a research team.

BQool had no dedicated research function, so insight came from the people closest to the problem — synthesized into findings, not left as scattered anecdotes.

Support
Sales
CS
Product
PM
QA
SynthesisUX priorities

Repeated signals were treated as evidence; isolated anecdotes were not.

Research approach collage: support tickets and conversation volume by product, competitive repricing analysis, Amazon Ad Console domain expertise, and AMC/Xnurta recordings
Real legacy Figma file: duplicated components (Tooltip-Copy, Dropdown-Template), inconsistent naming, and an ungoverned Variables panel — the file-hygiene and token drift this insight is drawn from
Optional depth — all 12 discovery sources & insights

Discovery sources

  • Customer Success — Direct seller pain points surfaced from support conversations.
  • Business Analysis — Amazon advertising domain expertise — match types, policy constraints, campaign structures.
  • Marketing — Launch messaging and competitive positioning, surfacing what needed to read clearly at a glance.
  • Project Management — Historical and technical context on why past patterns existed.
  • Product Management — Roadmap priorities and product requirements.
  • QA — Logic validation and behavior patterns against real edge cases.

Key insights

  • Data overload — Sellers were overwhelmed by dense tables, metrics, and filters.
  • Inconsistent patterns — Components were rebuilt page by page without a shared atomic structure, so the same interaction behaved differently depending on where a seller ran into it.
  • Policy-driven UX — Frequent Amazon policy changes forced flows to adapt on short notice.
  • AI underutilized — Sellers didn’t understand how to use the AI features at all.
  • Learning curves — Sellers preferred stable, familiar UI over novel patterns.
  • Token & file drift — Naming, layer structure, and component properties had all drifted from Bootstrap 5 conventions, with static variants standing in for Figma’s interactive properties.
05 · Decision architecture

BQOOL DECISION SYSTEM

From metrics to action.

The dashboard is designed as a decision path: establish performance, inspect the highest-impact exception, then choose an informed action.

01

Signals

Campaign performance

Sales, spend, ACoS, orders, trends

Real BQool screenshot: Performance Overview, Total Sales stat card
02

Diagnosis

Prioritized finding

Impact, evidence, and explanation

Real BQool screenshot: Ad Sales vs Ad Spend performance-over-time chart
03

Decision

Recommended action

Review, adjust, approve, or dismiss

Real BQool screenshot: campaign goal strategy tree showing Auto and Manual Campaign structures with ad groups and keyword match types
06 · Data and Visualization Decisions

Density and hierarchy, deliberately.

Every table is a set of visualization decisions before it’s a set of rows — what sorts first, what stays visible, and what a color alone is never allowed to say.

Real BQool dashboard screenshot: Campaigns table with Status, Goals, Daily Budget, AI-Bidding, AI-Harvesting, and Delivery Status columns
01
02
03
01

Status visibility

02

Inline budget validation

03

Scoped AI controls

07 · Explainable AI Recommendations

AI recommendations stay proposals until the seller approves them.

Research showed sellers didn’t understand how to use BQool’s AI features at all. BQool Pilot routes a request to the right skill — campaign audits, period comparisons, search-term waste — and BQool Insight is the structured report that comes back: an auditable execution history, a confidence rating, and a mode badge when data is incomplete or stale, instead of masking it. Findings stay ranked by severity with the source agent attached.

BQool Pilot AI assistant panel, rebuilt in the design-system demo: quick-skill starting points (Campaign audit, Period comparison, Search-term waste) and a chat composer with a greeting message
BQool Insight report template, rebuilt in the design-system demo, shown in a degraded/low-confidence state: executive summary flagging partial coverage and stale data, auditable execution history, and scope metadata
08 · Trust and Guardrails

Critical automation stays inspectable before it becomes irreversible.

Trust is designed at two levels: guardrails inside the interaction itself, and guardrails built into the shared component library so every new screen inherits them.

Interaction guardrails

Rule-based automation controls live ad spend, so these guardrails are load-bearing, not decorative:

  1. 01Contextual guidance

    Inline explanation of what a rule will actually do before it’s configured.

  2. 02Validation before save

    A rule can’t be saved until its value passes validation — the Save action stays disabled until the input is valid.

  3. 03Guardrail before unattended action

    A confirmation step gates anything that acts on live spend without a human in the loop.

Real BQool screenshot: Manual Target ACOS Strategy modal with guided risk tiers, an invalid-value error, and a disabled Save button

System guardrails

Verified automatically, not assumed.

Every component runs through Storybook’s accessibility addon (axe-core) — contrast, ARIA, and focus checks execute automatically. Real catch: a button’s text contrast measured 2.6 against a required 4.5:1, flagged before it shipped.

Real Storybook screenshot: axe-core accessibility panel flagging a serious color-contrast violation (2.6 measured vs 4.5:1 required) on the Button component
09 · Cross-Product Consistency

One seller, three products, one language.

Repricing Manager, BigCentral, and Advertising serve the same seller, often in the same session. Before the shared library, each had drifted into its own visual language — different tables, different filters, different ways of saying the same thing.

Before

Repricing

Own visual language

BigCentral

Own visual language

Advertising

Own visual language

After

A seller moves between all three without noticing the seams

Real BQool product screenshots composited together: Repricing Manager's pricing rules table, BigCentral's review manager, and Advertising's billing screen, sharing one visual language across all three products
10 · Design System Architecture

One source of truth, versioned like code.

The response to the audit was a token-driven library that consolidated 50+ redundant components into one governed source — serving Repricing, BigCentral, and Advertising instead of three divergent UIs.

Real Figma screenshot: Variables panel showing the global (113), semantic (76), and component (108) collections, with semantic color tokens like text/primary aliased to global tokens like color/grey/900, and text/brand aliased to color/brand/500

Consolidation at scale

50+ → 1

redundant components consolidated into one governed library, documented and browsable in Storybook.

RepricingBigCentralAdvertising
11 · Design-to-Code Pipeline

How consistency survives implementation.

One design token, one governed source, multiple implementation targets.

A governed system only holds if it survives handoff. Every token moves through the same reviewable pipeline, from Figma to shipped product.

Token StudioFigma VariablesJSON ExportGitHub SyncDesign-to-CodeAI-Assisted Handoff
    01Define

    Global, semantic, and component layers — structured as Figma Variables, not one flat list.

    02Sync

    Token Studio exports the token set as JSON; AI coding agents (Claude Code, Codex) help translate it to and from code via MCP, synced through the GitHub API.

    03Review

    Engineers review a real PR diff — reviewable, commentable, revertible.

    04Ship

    Merged JSON drives Bootstrap today — the same pipeline maps to Tailwind or React Native.

Optional depth — see the token in code

One token, three outputs

The same brand-500 token, structured once in Figma Variables, consumed however the stack needs it:

Bootstrap (shipped)

$brand-500: #0873bd;

Tailwind config

500: 'var(--color-brand-500)'

React Native theme

export const colorBrand500 = "#0873bd";

Real PR diff

A token sync reviewed like any other code change — this PR adds a missing keyboard focus-ring token and wires it into a real component.

Real GitHub pull request: adding a focus-ring design token and wiring it into the Button component, showing the tokens.json, Button.tsx, and generated CSS/SCSS/JS diffs
12 · Leadership and collaboration

Design that shipped, not just shipped design.

Leading the migration meant aligning more than pixels — coordinating scope with PM, specs with BA, and Bootstrap 5.3 handoff with engineering, while bringing junior designers into the new system.

Collaboration

Coordinated scope and roadmap with PM, feature specs with BA, and launch visuals with marketing — so the migration moved as one system, not five separate handoffs.

Mentorship

Mentored junior designers into the new atomic component patterns, turning the migration into a shared design language instead of a solo rebuild.

Technical handoff

Partnered directly with engineering on Bootstrap 5.3 alignment — token JSON and annotated Figma Dev Mode specs replaced back-and-forth clarification threads as the actual handoff artifact.

Verified in implementation, not assumed from handoff.

Real Figma Dev Mode screenshot: Validation & spacing panel showing inline error states and redline spacing, alongside Component specs (layer properties: padding, border, exact dimensions) and Token references (CSS output naming design tokens, not raw values)
13 · Outcomes and scale

What the design changed.

Although some metrics are confidential, measurable improvements include:

Comprehension

15% fewer pricing-logic support tickets

Clearer operational hierarchy reduced user confusion around repricing setup, measured directly in support ticket volume.

Trust

Higher adoption of AI automation

AI-feature adoption increased after the redesign, alongside clearer recommendations and safer automation controls.

System

Roughly 3x faster developer-design alignment

An automated token pipeline and one governed library — consolidated from 50+ redundant components — is an estimated 3x improvement in how quickly design and development stay aligned on new releases.

Accessibility

Improved accessibility for mid-age users

Component states and contrast were designed around BQool's actual seller base, not a default assumption.

Scale

Roughly 25% faster onboarding for new sellers

Guided workflows and a consistent interaction language are estimated to have cut ramp-up time by about a quarter for sellers getting started with campaigns and automation.