Store assortment optimisation

Optimise assortment based on store location and past sales

This was an internal project at the large Swiss retailer MIGROS with the aim to optimise assortment in a store to the location and customers of the particular store.

The project was implemented as a three-step procedure:

  • build an ML model to predict a performance KPI for various sizes of all assortment types in a store given its neighbourhood, store meta-data and past sales;
  • find an optimal combination of assortment sizes yielding the best total KPI under a set of business constraints;
  • wrap the solution into a user-facing interactive application.

The project involved collection, processing and understanding of multiple data-sources and was fully implemented in python. The resulting improvement has been checked in A/B testing.

I’ve been involved in all stages of the project:

  • understanding the business problem and formulation of a solution in a data-driven way;
  • collection of data and exploratory data analysis;
  • implementation of a scalable data pipeline;
    • migration of a local pipeline into an orchestration engine (Airflow);
  • ML modelling, model evaluation and selection;
  • solution of the optimisation problem as integer-linear programming (ILP) problem;
  • development of an interactive application that would run the optimisation step dynamically under additional user constraints;
  • deployment of the application into kubernetes;
  • A/B test of KPI change in real-store optimisation;
  • introduction of best-practices in software development:
    • automatic code checks, formatting and tests,
    • common soft-ware development standards in the team,
    • thorough documentation of the logic and the code;
  • implementation of CI/CD to validate the code and run deployment;
  • maintenance of the application and new releases of the tool;
  • iterative interaction with the business partners to understand evolution of requirements.