← Back to projects
ML & Statistics2025 — 2026In production

Assortment Analytics Platform

Predicts whether a product will sell before it is bought, and explains which attributes separate what sells from what does not.

4ML families combined
2user areas: assortment and buying

The problem

Deciding what enters and leaves the assortment meant reviewing past sales product by product: with no systematic way to know which attributes correlate with selling, nor to estimate whether a new product will sell before buying it.

What I did

I built a platform combining four families of machine learning over the same data: a Random Forest sellability classifier, topic modeling over product descriptions (TF-IDF and LDA), visual similarity with CLIP against the ecosystem vector store, and K-Means and DBSCAN clustering with UMAP visualization to explore the assortment in two dimensions. I added a visual-attribute analysis module of my own, a GPT-4o diagnostic chat, and recorded the resulting insights so other apps in the ecosystem reuse them instead of recomputing them.

The outcome

In production for the assortment planning and buying teams. The shared-insights pattern became ecosystem platform design rather than an isolated app.

How it predicts

  1. Assortment sales and attributesInput
  2. Sellability Random ForestWhat sells and what does not
  3. Description topic modelingTF-IDF and LDA
  4. Visual similarity with CLIPAgainst the vector store
  5. K-Means and DBSCAN clusteringExplored with UMAP
  6. Reusable insightsOutput: for the whole ecosystem

Four families of machine learning over the same data, each answering something the others cannot see: what sells, what the description talks about, what it visually resembles, and what it clusters with. Insights are recorded so other apps do not recompute them.

Stack

  • Python
  • Streamlit
  • scikit-learn
  • UMAP
  • TF-IDF / LDA
  • CLIP
  • Qdrant
  • sentence-transformers
  • LangChain
  • GPT-4o
  • Supabase
  • SQL Server
  • Docker

Blue Star Group internal project — the code is not public.

Next project: Continuous Replenishment Engine →