When a coach stops trusting a dashboard, the instinct is to blame the model. In our experience, the real culprit is almost always upstream, in the pipeline that got the data there.
Player and team IDs frequently differ across vendors — tracking data, box scores, and biometric feeds each have their own identifiers. Without a canonical mapping layer, joins silently drop or duplicate rows.
Vendor feeds change schema without warning. A pipeline with no validation layer will happily ingest malformed data and propagate it straight into a dashboard, with no alert fired.
Re-running a failed batch job should never double-count events. If your pipeline isn't idempotent, every retry is a landmine.
Getting data into a warehouse is necessary but not sufficient. The real work — and the real trust-building with coaching staff — happens in the semantic layer that turns raw rows into "expected goals" or "load management risk."
Good pipelines are unglamorous. They're also the difference between a dashboard that gets opened every morning and one that gets ignored by week three.