the problem
Five channels each ran their own upsells, with no shared vocabulary, measurement or strategy.
One shared language for upselling across the app, kiosk, voice AI, POS and menu boards, tested through research and live experiments.
Five channels each ran their own upsells, with no shared vocabulary, measurement or strategy.
I audited every surface, benchmarked 9 brands and built one framework: when to ask, what to offer, how to rank.
+18% upsell purchases in a live A/B test, and a taxonomy leadership adopted company-wide.
Each channel ran its own upsells, with no shared vocabulary, no shared measurement and no strategy. Many app users never scrolled far enough to see the first upsell.

I audited every upsell surface in 5 channels and benchmarked 9 QSR brands across 6 funnel stages. What I found: everyone has solved the front of the funnel. The difference is in the cart, checkout and after the order.

I built the framework around three questions: when to ask, what to offer, and how to rank.

A 4-type upsell taxonomy (Size Up, Upgrade, Premium Swap, Add-on) with triggers, and a map of 15 surfaces.

An upsell card component with 84 variants, and social-proof badges grounded in Cialdini. The rules: one badge per card, and every claim has to be true.

In a 2026 live A/B test, my recommended checkout pattern lifted upsell purchases 18%, a statistically significant result, and became the production default.
Leadership adopted the taxonomy company-wide, across app, kiosk, POS and marketing, and added 3 of my team’s projects to the next roadmap.

Hiding prices looked like an easy way to lower hesitation. Research predicted it would hurt trust instead: 38 of 39 participants said so. The live test confirmed it, and prices stayed.
Scroll sideways for the screens that didn’t fit the story.



Two rounds of factorial usability testing that shaped a better checkout, plus a code-first research setup that stopped broken prototypes from losing data.
or see all 20 projects