Back to work
United Airlines 2023–Present Enterprise Pilot Platform Design + Implementation

CCS+ Trade
Center

My Role Senior Designer, Frontend Implementation
Team 6-person hybrid UX + Engineering
Platform Web, Angular and Orion Design System
Impact 15,000+ pilots · 2 production releases
01
Context

Two legacy tools.
One modern platform
built from scratch.

Before CCS+, United Airlines pilots managed their schedules across two separate tools: a legacy internal system and a third-party app called Crew Companion. Both were non-responsive, built on 90s-era UI patterns, and deeply frustrating to use. Neither communicated with the other, forcing pilots to constantly context-switch to complete a single workflow.

United's answer was CCS+, a single, modern, mobile-responsive platform built in-house to replace both. I joined the project from day one, before it had a name, when the team was still designing and building the foundational components from scratch.

The Trade Center is the most critical and highest-traffic feature of CCS+. It is where pilots trade trips, pick up open trips, manage requests, and check schedule legality. For a pilot, a wrong trade doesn't just mean inconvenience. It can mean a compliance issue or a missed paycheck.

"Before CCS+, the tools were so outdated that pilots had to switch between two separate apps just to complete one task. There was no trust in the system. They were scared to click things."

15K+pilots on platform
2prod releases
02
Research & User Testing

I flew to Houston, Denver,
and Chicago to find out
what pilots actually need.

In-person research wasn't optional for this project. Pilots operate in high-stakes, time-pressured environments where a wrong tap can have real consequences. To understand that, I needed to be in the room with them.

I traveled to Houston twice, Denver, and Chicago, sitting with pilots, watching them use the legacy tools and early CCS+ prototypes, and listening to what made them hesitate. What I found wasn't just a list of feature requests. It was a trust problem.

Pilots would hover over a button and pause, visibly unsure whether clicking it would trigger something irreversible. They were not confused by the interface. They were scared of it. That shifted everything about how I approached the design.

The key insight was that experience level changed everything. Frequent traders had muscle memory and tolerance for ambiguity. Trainers and infrequent users had none of that. They needed explicit signaling, clear reversibility, and visible confirmation at every step. Designing for both meant building a system that was efficient for power users without being intimidating for everyone else.

01
Trust is a design problem
Pilots hesitated before clicking, scared of triggering irreversible actions. We designed explicit confirmation states, reversible flows, and visible feedback to rebuild confidence in the system.
02
Pay and legality come first
Pilots primarily care about two things: how a trade affects their pay and whether it is schedule-legal. Every other piece of information is secondary. This changed how we prioritized data visibility in the trade grid.
03
Data density is a feature
Pilots want to see as much information as possible at once. They scan and decide fast. Progressive disclosure and hidden columns weren't options. The design had to honor density, not fight it.
03
Process

From requirements
to shipped code.

Every feature in CCS+ went through the same four-stage process. Not as a formality, but because each stage catches something the others miss. Skipping one almost always created rework downstream.

01
Understand requirements before touching Figma

Before sketching anything, I read the user story carefully, then had direct conversations with the business analyst, stakeholders, and the lead designer. The goal was to surface ambiguity early. What does done actually look like? What constraints exist that are not written in the ticket? What are stakeholders optimizing for versus what the user actually needs? Misalignment at this stage is far cheaper to fix than misalignment after designs are presented.

02
Rapid sketch iteration, all directions, no filtering

Paper first, always. I sketch fast and broadly, getting every possible direction out before evaluating any of them. The point is volume, not quality. The early trade board sketches below show this: multiple layout approaches for the same dashboard, different ways of surfacing the engine run timer, different structures for the calendar and pay summary. Nothing is precious at this stage.

03
Pressure-test against four constraints before proceeding

Before moving a sketch into Figma, I check it against four things simultaneously: Does it solve the actual user story? Does it align with existing design standards and Orion components already in the app? Is the technical lift reasonable given the sprint scope? Does it fit the page or flow it needs to live in? If a direction fails more than one check, I go back to sketches rather than investing in a Figma mock that will get rejected.

04
Figma, present, iterate, implement

The strongest sketches go into Figma for higher-fidelity exploration. I iterate until the design is ready to present, incorporating feedback from design review and stakeholder sessions before final approval. On CCS+, I also implemented approved designs in Angular and SCSS, which meant I caught edge cases before engineering did and resolved them in the same sprint rather than opening new tickets.

Early sketches

These are from the earliest exploration phase of the Trade Board, before anything went into Figma. You can see the dashboard structure being worked out, the engine run timer concept forming, and the timeline color-coding system for seniority windows taking shape.

Early trade board overview sketch

Trade Board overview: navigation structure, trade pool table, and pay summary accordion taking shape in first pass.

Engine run timeline with color-coded seniority windows

Engine run timeline with color-coded seniority windows: green for all pilots, blue for line holders only, purple for reserve windows.

Calendar iteration sketch

Calendar layout iteration: exploring how to surface pay summary, engine run info, and schedule in one scannable view.

Engine run detail state sketch

Engine run detail state: in-progress timer, processing message, and next-run scheduling details alongside the calendar view.

04
Before / After

From legacy chaos
to structured clarity.

The before state wasn't just visually outdated. It had no information hierarchy, no visual language for trip data, and no way to scan across multiple items efficiently. Every screen required the pilot to read, not scan.

Pilot Pool Display Before / After
Legacy CCS
Legacy pool display

Dense legacy table, no visual hierarchy, no data prioritization, no trip visualization.

CCS+
New Trade Center

Modernized Trade Center with visual trip bars, horizontal and vertical scroll to surface all data in a single row, and clear hierarchy.

Trip Customization Modal Before / After
Legacy CCS
Old modal

Static column configurator with no live preview and minimal usability.

CCS+
New modal

Live trip bar preview, drag-and-drop column reordering, multi-breakpoint support, reusable template component shared across multiple views.

Reserves Available (RAD) Before / After
Legacy CCS
Old RAD

Raw data dump. No grouping, no visual structure, no way to orient quickly by date or position.

CCS+
New RAD

Date-grouped, collapsible sections, searchable filters, consistent with the table system used across CCS+.

05
Key Design Decisions

The decisions that
mattered most.

Every major decision on CCS+ had downstream consequences. The platform shares components across features, so a change to one pattern ripples through the entire system. These were the calls I made or advocated for that had the biggest impact.

01
Horizontal and vertical scroll on the trade grid
Pilots need to see all data in a single row. Collapsing or hiding columns wasn't an option. It forces more clicks to find information evaluated for every single trade. The solution was a scrollable grid that respects both axes, so nothing is hidden and everything is reachable. This was the foundational layout decision for the Trade Center.
Data Architecture
02
Visual trip bars as first-class data
The trip bar, a horizontal visual representation of a trip's timeline, which was new to CCS+. It gives pilots an at-a-glance way to compare trips without reading raw time data. I advocated for making it a prominent column in the trade grid, not an optional detail, because it directly maps to how pilots mentally evaluate trips. It also became a reusable component used across multiple features.
Visual Design
03
Shopping cart pattern for trade requests
Stakeholders requested a way for pilots to queue multiple trade requests before submitting. I designed a shopping cart interaction that lets pilots stage requests, review them together, and submit in batch. This reduced server round trips and gave pilots a clear moment to review before committing, directly addressing the fear of irreversible actions seen in user testing.
Interaction Design
04
Reusable filter template component
The filter modal needed to work identically across multiple views: Trade Board, Category Schedule, and Reserves Available. Rather than designing each separately, I designed a single configurable template component. One design decision propagated consistently across the product, reduced engineering rework, and created predictable behavior wherever pilots encountered filters.
Design Systems
05
Pushing back on stakeholder overrides
One of the most consistent challenges was stakeholders, sometimes a single person, making UX decisions affecting 15,000+ pilots based on personal preference rather than user data. I advocated strongly for user-testing findings over subjective requests, even when it created friction. When we couldn't win outright, we proposed scope-limited versions and formally documented the risk. Not every battle was won, but the practice of documenting design rationale protected the team and kept us honest about tradeoffs.
Design Leadership
06
Constraints

Designing inside
real constraints.

CCS+ wasn't a greenfield project. It was built on an established design system, with an engineering team managing complex backend business rules, a compressed timeline, and stakeholders with strong opinions and limited UX fluency. Navigating all of that simultaneously was part of the job.

Design System Boundaries

All UI was built using Orion, United's official design system, with Angular Material components aligned to Orion standards. Change requests that required new component variants meant frontend rework, backend integration changes, and regression testing everywhere those components were used. We frequently redesigned within existing constraints rather than requesting new components.

Complex Business Rules

Trip trading is governed by union contract rules, FAA regulations, and United's scheduling logic. A pilot can only pick up a trip if it's schedule-legal, and "legal" involves dozens of overlapping constraints around rest periods, flight hours, and position qualifications. Every UI decision had to account for these rules without surfacing their complexity to the pilot.

Stakeholder Decision-Making

Decisions affecting 15,000 pilots were sometimes made by a single stakeholder acting on personal preference rather than user data. We worked to counter this by bringing user testing findings into every design review, documenting rationale formally, and proposing phased releases that let us validate with real users before committing to large changes.

Scope and Timeline

CCS+ was one of several concurrent projects. I was simultaneously working on FA CCS features, the Trade Board Engine Admin App, and contributing to Orion extensions. Scope cuts were frequent and often painful. Features I had designed and tested were cut before reaching production. Knowing what to fight for and what to let go was a constant judgment call.

07
What I Owned

End-to-end ownership
across multiple workstreams.

CCS+ was a large, multi-team effort spanning 30+ people. Here is an honest accounting of what was mine, what was collaborative, and where I took a leadership role beyond the design work itself.

Feature / Area Ownership Notes
Trade Board Pool Display redesign Sole designer End-to-end design and Angular / SCSS implementation
New Request complete overhaul Sole designer Full redesign from scratch, designed and implemented
Customize Trip Modal Sole designer Live preview, drag-and-drop reordering, reusable template component
Trade Board Filtering Sole designer Filter modal pattern reused across multiple CCS+ views
Admin Communications App Design lead Owned from discovery to delivery; mentored a junior designer through this project
Trade Board Engine Admin App Sole designer Designed from scratch, no prior reference; extremely data-heavy audit tool for scheduling operations
Orion Design System CCS+ extensions Collaborative CCS+ required Angular Material components rather than native Orion components due to platform constraints. We built a CCS+-specific layer that aligned visually with Orion standards while meeting the technical requirements of the application. Contributed to dark mode implementation and extended the system for use across other United employee apps.
In-person user research Active participant Traveled to Houston (x2), Denver, Chicago; sat with pilots, facilitated sessions, brought findings back to design
Acting design lead Interim leadership Stepped in as primary design resource during team lead's maternity leave; reviewed designs, led standups, managed design priorities
08
Reflection

What I learned
building from scratch.

I have been with CCS+ since before it had a name. I've watched it grow through dozens of iterations, two major releases, and collaboration across 30+ people. That continuity, from blank canvas to production, shaped how I think about product design at scale.

What worked

In-person research was non-negotiable for this type of product. Watching pilots hesitate in real time gave us insights no survey would have surfaced. And building in code, implementing our own designs in Angular, meant we caught problems before engineering did, and shipped faster.

What was hard

Organizational design is as hard as product design. The biggest friction was not technical. It was navigating stakeholder decisions that prioritized preference over evidence. Learning to document rationale, propose phased alternatives, and pick battles strategically was as important as the design itself.

What I'd do differently

Earlier and broader user pilots. We got great signal from power users but caught some edge cases late that trainers and infrequent users would have surfaced sooner. Broadening the testing group earlier would have saved rework in later iterations.

15K+pilots on platform
2production releases
30+components shipped
4cities for research
Next project
Cosmos Design System
at StackPath