GrabbleStats does not ship six products. It ships one pipeline and six ways into it — which is why a number you meet in a profile is the same number the model used, not a second figure computed for display.
Team, player, coach and referee profiles built from the same feature set the models use, so what you read in a profile is what the probability was computed from.
Defensible numbers with their sources and their limits attached, so a figure that goes into a broadcast can survive being questioned on air.
Model against margin-free market across thirty-one markets, with divergence reported as a measurement and eligibility stated per market.
Squad structure rather than squad lists: which phases of play depend on which players, and what disappears structurally when one is unavailable.
A provider-agnostic core. Registry, provider seam, eligibility and engines are separate layers, so swapping a data source changes one adapter.
Append-only analysis memory with the world-state that produced each snapshot, which is the minimum needed to evaluate a model honestly after the fact.
The fastest way to judge this is to open one and read what it says — including where it says it does not know.