Client under NDA · Grocery retail
A top-15 global grocer’s store that knows what each shopper came for
One of the world's 15 largest grocers, with 100,000+ products in its catalog. We built its recommendation system from scratch: personal picks, intent detection and a pipeline that turns a recipe into a full cart.


- Client
- Under NDA
- Industry
- Grocery retail
- Services
- Recommendations, ML, Search
SKUs behind each shopper's shelf
grocer in the world
ML systems: personal picks, intent, recipe to cart
a shelf ranked for each shopper, not for the average
The challenge
With 100,000+ SKUs, no shopper browses the whole catalog, and one shelf of bestsellers fits nobody. The same person shops differently for a weekly restock and a dinner for four. And a recipe lists ingredients, not products: every line still has to be found, sized and added by hand.
Our approach
We treated it as three problems with one shared picture of the shopper. Retrieval narrows 100K+ SKUs to the few that fit this person. An intent model reads what this visit is for and reshapes the picks. A recipe pipeline maps each ingredient to a real catalog product, so inspiration ends in a cart, not a shopping list.
Nobody wants 100,000 products. They want dinner, and the store should know which one.
What we did
01
Personal picks
Retrieval models learn from each shopper's baskets and browsing, then pull the best fits out of 100K+ SKUs. Two shoppers open the same store and see different shelves.
- Shopper and product embeddings
- Candidate retrieval across 100K+ SKUs
- Ranking tuned to past baskets
- Cold-start picks for new shoppers

02
Shopper intent
A classification model reads the signals of each visit and tells a weekly restock from a dinner for four. Suggestions, search and the shelf shift to match.
- Intent model on session signals
- Suggestions reshaped by intent
- Search tuned to the purpose of the visit

03
Recipe to cart
A pipeline reads a recipe, splits it into ingredients and amounts, and matches each one to a real product in the catalog. The shopper gets a full basket instead of a shopping list.
- Ingredients and amounts parsed
- Every ingredient matched to a SKU
- Amounts fitted to real pack sizes
- The whole recipe added in one tap


How it works
- 1
Shopper signals
Baskets, searches and clicks
- 2
Intent model
Reads the purpose of the visit
- 3
Retrieval
Finds candidates in 100K+ SKUs
- 4
Ranking
Sorts them per shopper and visit
- 5
Recipe parser
Reads ingredients and amounts
- 6
SKU matching
Picks a product and pack size
- 7
Ready cart
The whole recipe in one tap
Results
- 01Built from scratch and shipped to production for a top-15 global grocer
- 02A personal shelf for every shopper, from 100K+ SKUs
- 03Suggestions that follow why the shopper came, not only past baskets
- 04A recipe becomes a full cart: every ingredient matched to a real product
Built with
- Retrieval
- Two-tower model · ANN / HNSW search
- Ranking
- Collaborative and content-based filtering
- ML
- Python · PyTorch · scikit-learn · XGBoost
Services in this case
Next case · Metro Relocators
Website concept for an interstate mover, with the quote as a chat
Let's talk
Got a project? Let’s scope it in 30 minutes.
Tell us what you're building. You'll get a straight answer on timeline, team and approach on the first call.