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

+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



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."
Related work
