Case studies / Product profit concentration and SKU risk
8 of 118 products earn 84.5% of profit in a $35.2M catalogue

The question
A revenue report shows what sold. It does not show which products make the money, which ones lose it, or how much of the business rests on a handful of SKUs. This audit puts three questions to one catalogue: how concentrated is the profit, which products are weak, and what would a disruption to the strongest products cost.
The numbers
- Share of profit earned by 8 of 118 productsObserved in the data84.5%
- Products with weak margins and high delivery failure, together only 2.2% of salesObserved in the data28
- Profit at risk if the top 8 products lost 20% of margin, 16.9% of total profitModeled scenario, not an actual loss$643,000
Observed figures are measured directly in the dataset. Modeled figures are what-ifs built from it, not savings or forecasts.
Findings
- The other 110 products earn the remaining 15.5% of profit.
- Every one of the 118 products recorded at least one loss-making order.
- 44 products combine strong revenue with weak or negative profit. Two of them lost money across their whole three-year history.
- Between 93% and 97% of orders across nearly the whole catalogue were discounted. There was no statistically significant relationship between discount depth and margin (p = 0.73), so discount depth does not explain which products earn less.
- First Class shipping arrived late on every order, about one day behind schedule. A gap that uniform may point to a mis-set delivery promise rather than a process failure. That is a hypothesis, not a confirmed cause.
- The 28 weak products sit across 23 categories, so this is scattered drag rather than one bad supplier or category. Together they still earn about $67K, 1.8% of profit. They are weak, not loss-making.
What the modeled scenarios show
Each scenario is a what-if built from the observed data. None of them is a forecast.
- Cut all 28 weak products: about $67K of profit removed. Savings in handling, storage and support are not in the dataset, so they are not counted.
- 20% margin drop on the top 8 products: about $643K of profit removed, 16.9% of the total.
- Compounded operational stress (10% more discount dependence and 15% more delivery risk): about $181K, a directional estimate only.
What the audit concluded
RecommendationProtect the 8 products that carry the profit. Sort the 28 weak products by cause (new or seasonal, cost or discount, delivery, or genuinely dead) before cutting any.
Methodology
- Data model: a PostgreSQL star schema with an orders fact table and product, region and date dimensions. SQL is the source for every revenue, profit and delivery-risk figure.
- Cleaning: fraudulent and canceled orders are excluded by a hard filter, and each inclusion or exclusion decision is logged in the repository's decision log.
- Checks: SQL outputs were reconciled in Python with no data loss. Revenue and profit are heavily right-skewed, so the analysis uses medians and rank-based tests (Spearman, Kruskal-Wallis, Mann-Whitney) instead of means.
- Classification: every product is placed in one of four groups (cash generators, operational risks, underperformers, cut candidates) using catalogue medians, with a 0 to 100 composite risk score alongside.
- Scenarios: stress tests run in a separate notebook and labelled as modeled in the report. Findings in the report are marked observed, modeled or hypothesis.
Limitations
- This is a public Kaggle dataset, not client data. It shows what the method does, not how any real brand performs.
- The data shows that the 28 products are weak, not why. The cause needs checking before any of them is cut.
- Handling, storage and support costs are not in the dataset, so the savings from cutting weak products are not measured.
- The $643K figure is a stress test. It is not a forecast and not a loss that happened.
- The last month of the data may be incomplete, so the report draws no conclusion about a drop at the end of the series.
- An earlier version of the report overstated several claims. Version 1.1 corrects them, and every change is listed in the public revision log.
Report and source files
- Read the full report (PDF)
- Slide deck (PDF)
- Dashboard walkthrough (video)
- Code, queries and notebooks (GitHub)
- Revision log: what changed in version 1.1
Run this audit on your store
Want to know if your catalogue depends on a few products too? I run this kind of audit on your own order data, for a fixed fee agreed before any work starts. The first call is free.
Book a free 30-minute profit call