What you can actually learn: ML tasks the dataset supports
A synthetic dataset is only useful for machine learning if the signal is real — if the patterns a model could learn were actually put there by the process that generated the data. Because the distributor dataset is built as an interlocking business rather than a pile of random columns, the relationships a model needs are genuinely present: demand has seasonality, churn has drivers, prices have elasticity, and defects propagate into fill rates. Here are the ML tasks it supports out of the box, and what makes each one non-trivial.
Demand forecasting (time series)
Predict next period's demand per item or DC from order_lines and
orders history. The series carry real seasonality, trend, lifecycle effects, and
promotion-driven spikes, so classical methods (ARIMA, Holt-Winters), gradient-boosted
regressors on lag features, and sequence models all have something to fit — and something to
get wrong. The built-in item_forecast and forecast_accuracy_history
tables give you a baseline and a ready-made error target (MAPE, bias) to beat.
Churn and at-risk prediction (classification)
Label accounts by recency/frequency decay and predict who lapses next. Features come from order cadence, returns, credit behavior, and support activity. The interesting part is that churn risk is correlated with, not determined by any single feature — big accounts and small accounts churn for different reasons — so a naive threshold underperforms a model that combines signals.
Price elasticity and margin optimization (regression)
Estimate how quantity responds to price using price_history,
order_lines, and the promotion tables. Because discounts and promotions are
modeled with real elasticity, you can fit demand curves per segment and category, then search
for the margin-optimal price — a clean causal-inference and optimization exercise on data
where the ground-truth relationship actually exists.
Customer lifetime value (regression / survival)
customer_lifetime_value_history, orders, returns, and cost data support both
direct LTV regression and survival-style models of customer tenure. Pair it with the churn
model and you have an end-to-end "acquire → retain → value" pipeline.
Anomaly and exception detection (unsupervised)
Shipment exceptions, inventory adjustments, and AR write-offs give you rare-event structure to find without labels. Isolation forests, autoencoders, and robust statistics all have a target here — and because the "normal" is coherent, injected anomalies genuinely stand out rather than drowning in noise.
Recommendation and affinity (association / collaborative filtering)
customer_item_preferences and order co-occurrence support market-basket
analysis and item-to-item recommenders. The catalog and buying patterns are structured enough
that lift and confidence mean something.
Vendor risk scoring and segmentation (supervised + clustering)
Score vendors from vendor_performance, defect rates, lead times, and PO history;
cluster customers or SKUs (ABC/XYZ) from behavior. These are the everyday "score it, then
group it" tasks that most real analytics teams actually ship.
Because every table reconciles to the same underlying business, a model trained on one part of the data is learning real structure — not artifacts of an independent random draw. That's the difference between a dataset you can benchmark on and one you can only demo.
Why the realism matters for ML specifically
Models are pattern amplifiers. Point one at data where the "patterns" are random and it will happily overfit noise, and your evaluation will tell you nothing. Point it at data where demand really does depend on season and price, where churn really does trail declining order cadence, and the exercise becomes meaningful: feature engineering pays off, better models win, and the leaderboard reflects skill. That's what a coherent synthetic business gives an ML team — a safe, shareable, infinitely reproducible sandbox where the right answer is actually in the data.