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