Company
Charles Schwab
Role
Principal Product Designer
Scope
Migration + Redesign
Impact
1.8M+ users migrated
Timeline
2023 — 2024

Architecting personalization: a scalable recommendation engine for Macy's.

A unified decision layer that took recommendations from page-by-page widgets to one architecture spanning search, PDP, cart, and post-purchase.

Macy's recommendation engine across the shopping experience

Macy's recommendation system had grown one page at a time. The PDP, search results, and cart each shipped their own ranking model, and none of them shared signal — so a customer could see contradictory suggestions inside a single session.

I led design for the shift from page-by-page widgets to one decision layer: a shared model for signals, governance, ranking, and trust that every surface could render against the same component vocabulary.

The Problem

Every page recommending in isolation.

Before — Legacy PDP
Legacy Macy's PDP recommendation widget
After — Unified PDP
New Macy's PDP with context-aware recommendations

The problem wasn't the algorithm.
It was the surface around it.

The Approach

From siloed widgets to a unified decision layer.

Legacy systems operated on a page-by-page basis. The PDP had no context of what was seen on the search results page, and the cart had no memory of either. Each touchpoint shipped its own ranking model and produced contradictory suggestions.

The new architecture treated recommendations as a single decision — signals, governance, ranking, and trust — that any surface could query and render against shared design tokens.

Recommendation architecture diagram
The Decision Layer

A four-tier architecture: signals, rules, ranking, and trust.

Macy's new recommendation module on PDP
1
Signals Real-time telemetry — browse path, dwell time, cart additions, and visual similarity embeddings.
2
Rules Governance for margin, stock, and categorical exclusivity — the levers merchandising had been missing.
3
Ranking ML scoring by historical affinity and predicted probability of purchase.
4
Trust Final UI filter for price-point consistency and aesthetic harmony.
18ms
P99 latency on the cart overlay decision layer at peak shopping load.
Cart overlay — step one
Cart overlay — step two
Cross-Functional

One framework, four organizations.

01 / ML Engineering
Defining the human signal
Wrote the requirements for what the ranking model should weigh — visual similarity, brand affinity, and category fit ahead of raw click-through rates.
02 / Merchandising
Levers without breaking the model
Built the framework that let merchants inject seasonal relevance and house-brand priority into automated rankings — without degrading model trust.
03 / Product Strategy
From click to lifetime value
Realigned recommendation KPIs around LTV instead of next-click conversion, so the system rewarded loyalty over bait-and-switch tactics.
04 / Design Systems
One vocabulary, every surface
Shipped a unified component vocabulary for recommendations, so a "Complete the Look" module on PDP and a cart overlay drew from the same primitives.

Shipped in 2022.
Revisited in 2026 with AI.

What this project would look like if I shipped it today.

Claude
Figma Make
Retrospective

After Macy's launched, I went back and re-ran two phases of the work with AI in the loop, to see where it actually accelerated me and where it didn't.

Claude was strongest in synthesizing merchandiser interviews and behavioral analytics into the four context dimensions — work that took two weeks the first time around, and a few hours the second.

Figma Make let me prototype the cart overlay as a working component with live state, which made the 18ms latency target a design constraint instead of an engineering afterthought.

Macys Figma Make prototype screenshot
The Outcome
+24%
Conversion lift attributable to the Complete the Look architecture rollout.
18ms
P99 latency on the cart overlay decision layer at peak shopping load.
$140M
Annualized incremental revenue across digital channels.
Reflection

The hardest part of this project wasn't the algorithm or the UI — it was convincing merchandising, ML, and platform that they were designing the same system. Personalization is an org problem first, an architecture problem second.