Case Study — Amazon

Making the path to
promotion visible.

Amazon's promotion process was opaque. We built a career development LMS that gave employees, managers, and HR a shared source of truth — for the first time.

Role L5 UX/UI Designer
Company Amazon Internal Creative Services
Timeline Nov 2021 – Mar 2023
Platform Web · Android · iOS
Tools Figma · FigJam · Jira

Amazon's promotion process was a black box.

The difference between L4 and L5 — or L5 and L6 — is significant in compensation, scope, and career trajectory. But for most employees, the path to promotion was opaque. Managers described expectations differently. Required competencies weren't standardized. Employees didn't know what "ready" actually looked like until they were told they weren't there yet.

Employees had no visibility into what specific competencies they needed to demonstrate to reach the next level.

Managers described promotion criteria inconsistently across teams, creating inequity in the process.

HR had no aggregate view of promotion pipeline health — calibration sessions were manual and time-consuming.

There was no single platform connecting learning, feedback, assessments, and promotion readiness in one place.

Three users. Three definitions of success.

The most critical early insight was that each user type had a fundamentally different relationship with the same data. We designed three distinct experiences on one unified platform.

Employee — L4 / L5
Individual Contributor
  • "What do I need to do to get promoted?"
  • Needs clarity on competency gaps
  • Wants to see progress over time
  • Anxiety about being compared to peers
  • Needs guidance, not just information
Manager — L5 / L6
People Manager
  • "How ready is my team for promotion cycles?"
  • Needs to track multiple employees at once
  • Wants to flag who needs coaching
  • Needs to document evidence for HR reviews
  • Time-constrained — needs fast scanning
HR / Leadership — L6+
Senior Leadership
  • "Is the promotion pipeline healthy?"
  • Needs org-wide aggregate views
  • Wants to identify systemic gaps
  • Needs data for calibration sessions
  • Cares about equity and consistency

Designed across three user flows.

Eight screens spanning employee, manager, and HR experiences — designed across three distinct user flows.

Promotion Pathway Dashboard
Employee Flow
Promotion Pathway Dashboard
Readiness ring, competency progress cards, and recommended next steps — all in one view.
Learning Path — Course Catalog
Employee Flow
Learning Path — Course Catalog
Courses mapped directly to L-level competencies, with required-for-promotion badges and filters.
Team Promotion Dashboard
Manager Flow
Team Promotion Dashboard
Scannable team readiness overview with status chips, coaching flags, and calibration countdown.
Org-Wide Analytics Dashboard
HR / Leadership Flow
Org-Wide Analytics Dashboard
Pipeline health metrics, equity filters, and calibration export — designed for senior leadership.

Measurable impact at launch.

Results measured at 90 days post-launch against pre-launch baseline across Amazon Creative Services.

+40%
Platform Adoption
vs. pre-launch baseline
−15%
Support Tickets
post-launch, first quarter
100+
Hours Saved / Mo.
through consolidated workflows

What this project taught me.

"The most important conversation I had on this project wasn't about UI — it was convincing stakeholders that employees needed to see their own data before managers did."

Designing for high-stakes decisions requires extra care around information hierarchy. When data directly affects someone's promotion and compensation, every label carries weight. The manager/employee visibility boundary was the hardest UX problem on the project — getting it wrong would have destroyed trust in the entire system.

Working as one of several designers on a cross-functional team at Amazon meant learning to advocate for design decisions in a room full of PMs and engineers who moved fast. I learned that at this level, alignment is itself a design artifact.

// Also trigger on load for anything already visible window.addEventListener('load', () => { reveals.forEach(el => { const rect = el.getBoundingClientRect(); if (rect.top < window.innerHeight) { el.classList.add('visible'); } }); });