A guided tour of the 10,000-supplier dataset for people who are not risk experts. Every chart is computed from supplier_risk_dataset.csv. Hover any chart for exact values. Metrics marked ★ matter most to a procurement engineer.
Each of the 10,000 rows is a company that sells parts or services to the railway operator. Each row has three kinds of information:
Every score runs from 0 (no risk) to 100 (maximum risk), and each score gets a label from the same four bands. Careful: this holds even for "ESG Performance" and "Credit Rating". A high number there is bad, which is the opposite of how those words normally sound.
Number of suppliers per total-risk score (bins of 5 points)
Purchase-order volume (€) per total-risk level
We reverse-engineered the formula, and it is exact for all 10,000 suppliers: Total = Σ (weight × score), rounded. The weights add up to 100%. Here is how much each of the 18 scores counts. The colours group related scores into 6 "pillars".
Because the formula is exact, we can show exactly where a supplier's total comes from. Each bar shows how many points a factor adds (weight × score). The bars add up to the total.
An average can hide a single disaster. Supplier has a total of only , but one of its scores is at the maximum. Bars past the dashed line are Critical.
Risk alone doesn't tell you what to do first. A risky supplier you buy €20k from is a footnote; a risky supplier you buy €50M from is a crisis. Each dot is a supplier (sample of ~2,300 out of 10,000).
Share of total spend held by the top X% of suppliers
Exposure = spend × (total risk ÷ 100). It is a rough "euros at risk" number. A €50M supplier with risk 87 has an exposure of €43.5M.
Because spend and risk are unrelated in this data (correlation ≈ 0), exposure adds new information. Big suppliers are not automatically safer or riskier.
Total exposure across all suppliers: .
Three operational numbers describe how a supplier behaves day to day. Each chart shows the average per total-risk level.
% delivered on time and correct. Higher = better. Axis starts at 70%.
% of orders confirmed in time. Higher = better. Axis starts at 70%.
% of orders changed after placing. Lower = better.
Two internal labels describe this: Sourcing Risk Level ★ (how hard it is to find an alternative) and Supply Chain Complexity ★ (how complicated the logistics and sub-suppliers are). Each cell shows the number of suppliers; darker = more.
The priority group combines three conditions:
suppliers meet all three, holding . Here are the top 10 by exposure:
Outlined cards (★) are the ones a procurement engineer should look at first.
| Missing | Why a buyer cares | What we do in the demo |
|---|---|---|
| Country / location | Floods, strikes and wars are regional | Simulated, linked to the geo scores, labelled SIMULATED |
| Part category (brakes, bogies, signalling…) | Buyers think and search in categories | Simulated from complexity and sourcing level |
| History over time | No trends, no "what changed this week" | Simulated monthly history anchored to today's values |
| Bill of materials (which train uses which part) | No "which trains are affected" | Small simulated fleet BOM |
| Alternative suppliers | Can't propose a switch | Same simulated category, lower risk, ranked |
| News, certificates, audits | Evidence behind a score | Live web search (Tavily) and document reading by agents |
Things NOT to claim: that big suppliers are riskier (they aren't, correlation ≈ 0); that ML "predicts" the total score (it is a fixed formula); that clusters were "discovered" (the data has no natural clusters).