01Personalization is three problems, not one
- Discovery — what should we show this person on the home page?
- Ranking — given a category, which products go first?
- Search relevance — given a query, what is most relevant for this person?
A practical guide to building a retail personalization engine — recommendations, ranking, and the cold-start tricks that make it work for new visitors.
Binate AI
July 15, 2025

On this page
Retrieve 200–500 plausible products fast. Methods: co-purchase, embeddings, popularity in segment.
Score candidates with a learning-to-rank model trained on clicks, add-to-cart, and purchases.
Avoid showing five variants of the same item. Maximum marginal relevance or category capping.
Stock cutoffs, margin floors, promotion enforcement. Always last.
New visitors have no history. New products have no interactions. Both must work on day one.
New user
New product
def serve_homepage(user):
candidates = get_candidates(user, k=300)
feats = build_features(user, candidates)
scores = ranker.predict(feats)
ranked = sorted(zip(candidates, scores), key=lambda x: -x[1])
diversified = mmr(ranked, lambda_=0.4, k=24)
return apply_business_rules(diversified)Quick Quiz
We build production-grade recommenders for retail and ecommerce.
See our retail workPersonalization is a stack — candidates, ranker, diversification, rules. Train on the metric you sell, not the metric that is easiest.
Our experts are ready to power your AI journey.