Free to read

Ship a personalized recommender that runs four stages end to end

Notebook recommenders die at the API boundary. Build the production pattern: two-tower retrieval, CatBoost ranking, optional LLM rerank, served by FastAPI on local Postgres, Qdrant, and MLflow. Adapted from the open-source Decoding ML H&M course by replacing the Hopsworks coupling with a fully local stack.

Still deciding? Ask first.

Message a mentor about fit, prerequisites, or where to start. Replies come on WhatsApp, usually within a day.

  • Curriculum fit, prerequisites, or where to start
  • Honest answer, no pressure to enroll

Taught by an engineer who has shipped this

  • ISO 27001

    Led the engineering work behind the certification of a regulated EU platform.

  • Series A platform

    Architected the case-management product that became the business a €11.6M round was raised on.

  • 3x faster deploys

    Cut time-to-deploy by migrating to Kubernetes on GCP with deploy-on-merge.

Build a production-ready personalized recommender on H&M fashion data. Two-tower retrieval, CatBoost ranking, optional LLM rerank, served by FastAPI with Postgres, Qdrant, and MLflow. Adapted from the open-source Decoding ML course (https://github.com/decodingml/personalized-recommender-course) by replacing Hopsworks with a fully local stack. Source code: https://github.com/learnwithparam/personalized-recommender-system.

Build a four-stage personalized recommender: two-tower retrieval, ranking, optional LLM rerank, served by FastAPI on local Postgres, Qdrant, and MLflow.

What you'll ship

Real projects, not toy demos.

  • A four-stage recommender pipeline that retrieves, filters, ranks, and reorders candidates
  • Two neural towers that project customers and articles into a shared embedding space
  • A CatBoost ranker trained on engineered article and customer features
  • An optional LLM reranker that scores the top set with provider-neutral LiteLLM
  • A FastAPI service that returns top-K recommendations with article metadata
  • A Streamlit shop UI that consumes the API and renders article images

What you'll learn

You finish able to:

  • Design a four-stage recommender that scales to millions of articles and customers
  • Train a two-tower retrieval model that produces aligned customer and item embeddings
  • Index item embeddings in Qdrant and run sub-millisecond approximate nearest neighbour search
  • Train a CatBoost ranker on engineered article and customer features
  • Decide when to add an LLM reranker and how to budget its latency and cost
  • Serve the pipeline behind a FastAPI endpoint and measure recall@K, NDCG, and MAP

Curriculum

From H&M transactions to a four-stage recommender API.

  1. 01

    Foundations and the four-stage architecture

    Walk the H&M data, the FTI split, and the four-stage recommender that production teams run.

  2. 02

    Two-tower retrieval

    Train two neural networks that align customers and items in a shared embedding space, then index for fast lookup.

  3. 03

    Ranking and LLM re-ranking

    A CatBoost ranker on engineered features and an optional LLM rerank with cost and latency trade-offs.

  4. 04

    Production serving and evaluation

    Wrap the pipeline behind FastAPI, measure ranked retrieval, and plan for cold start.

Who it's for

Is this for you?

ML engineers

who have trained models in notebooks and now need to ship a recommender that survives a real product surface

Data scientists

who can move H&M data around in pandas but have never wired retrieval, ranking, and serving together

Backend engineers

who have to maintain the recommender service their data team handed off and want to understand every stage they are paged about

FAQ

Common questions.

  • Do I need a GPU?

    No. The sampled H&M dataset trains both models in under five minutes on a laptop CPU. The full Kaggle dataset benefits from a GPU but is optional.

  • Do I need Docker?

    Docker is the golden path with Postgres, Qdrant, and MLflow in containers. The repo also ships a LOCAL_MODE that runs on sqlite and embedded Qdrant so you can work without Docker.

  • Why two-tower instead of matrix factorization or FAISS only?

    Two-tower learns customer and item embeddings in the same space conditioned on context features like age and seasonality. Pure matrix factorization cannot do that. FAISS only gives you the index, not the model.

  • Is this the H&M Kaggle competition solution?

    No. This course teaches a production architecture you can ship. The H&M dataset is the substrate. Competition leaderboards optimise for offline metrics, while this curriculum optimises for an end-to-end system you would actually run.