Case studies / Product profit concentration and SKU risk

8 of 118 products earn 84.5% of profit in a $35.2M catalogue

The Profit Leak Diagnostic. Public Kaggle dataset: 180,519 transactions, $35.2M in sales. PostgreSQL, Python and Power BI. Report version 1.1, October 2026.

Power BI dashboard from the Profit Leak Diagnostic showing profit by product, shipping reliability and margin risk

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

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

Other case studies