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. I built its recommendation system from scratch: personal picks, intent detection and a pipeline that turns a recipe into a full cart.

Under NDA: live product
Under NDA: mobile
Client
Under NDA
Industry
Grocery retail
Services
Recommendations, ML, Search
100K+

SKUs behind each shopper's shelf

Top-15

grocer in the world

3

ML systems: personal picks, intent, recipe to cart

1:1

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.

My approach

I 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 I 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
Under NDA: Personal picks

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
Under NDA: Shopper intent

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
Under NDA: Recipe to cart
Under NDA: Recipe to cart, mobile

How it works

  1. 1

    Shopper signals

    Baskets, searches and clicks

  2. 2

    Intent model

    Reads the purpose of the visit

  3. 3

    Retrieval

    Finds candidates in 100K+ SKUs

  4. 4

    Ranking

    Sorts them per shopper and visit

  5. 5

    Recipe parser

    Reads ingredients and amounts

  6. 6

    SKU matching

    Picks a product and pack size

  7. 7

    Ready cart

    The whole recipe in one tap

Inside the product

Recipe to Cart

Under NDA: mobile screen 1
Under NDA: mobile screen 2
Under NDA: mobile screen 3

Results

  1. 01Built from scratch and shipped to production for a top-15 global grocer
  2. 02A personal shelf for every shopper, from 100K+ SKUs
  3. 03Suggestions that follow why the shopper came, not only past baskets
  4. 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

Next case · Under NDA

Raw video in, published articles out

Let's talk

Have a system that needs to work in production?

Tell me what you want to automate or personalize, and what data you already have. I'll reply with how I would approach it.

Vienna, AustriaGerman, English, Russian
Start a conversationLinkedIn

Hire me on Upwork or message me on LinkedIn