Skip to content
All case studies

Retail · Enterprise AI · Heritage retail group

A personalization engine that lifted average order value 18%

Generic bestseller lists became real-time, per-shopper recommendations served consistently across web, app, and email.

Next.jsRedisPythonpgvector
Retail case study — A personalization engine that lifted average order value 18%

+18%

avg order value

Timeline

3 months

Team

4 engineers + 1 data scientist

The challenge

What was breaking

  • 01Recommendations were static bestseller lists, the same for everyone.
  • 02The model couldn't react to a shopper's current session.
  • 03Web, app, and email each showed different suggestions.

The approach

How we tackled it

  • 01Embedded products and shoppers into a shared vector space.
  • 02Combined retrieval with a contextual bandit that balances exploit and explore.
  • 03Unified the recommendation API across every channel.

The solution

What we shipped

  • 01Real-time recommendations on web, app, and email.
  • 02A bandit that learns what each shopper responds to.
  • 03Cold-start handling for new products and new visitors.

In pictures

A closer look

Personalized storefront
Personalized storefront
The recommendation model
The recommendation model
One API, every channel
One API, every channel

The results

+18%

avg order value

+12%

conversion

+27%

email CTR

60ms

rec latency

"The site finally feels like it knows you. Average order value moved the first week and never looked back."
Head of Growth, Heritage retail group

Related work