Pipeline · from nflverse to a published artifact

What actually runs.

This page describes the system as built. If a capability is not listed here, the site does not have it.
01

Data

The only data source is nflverse: weekly player statistics and roster files. There are no injury feeds, weather feeds, news scrapers, or third-party projections. Every input file is hashed and the hash is recorded with the model that consumed it.

02

Features

Features are computed as-of each week: a player's row for a given week uses only that player's own earlier weeks (trailing averages, variance, opportunity share, games played) plus static context such as age. Outcomes of a week are only added to the history after that week has been scored, so nothing from the future leaks into the past.

The feature set carries a version string that every API response echoes, so a projection can always be tied to the exact feature definition that produced it.

03

Models

One model per position (QB, RB, WR, TE), trained on a PPR points target. The champion is a RandomForest; an XGBoost challenger is trained beside it on the same rows. Floors and ceilings are residual quantiles from a validation season, added to the point prediction per position and candidate; the floor is clipped at zero. Half-PPR and standard scoring are derived on the server from the PPR prediction using the player's as-of receptions estimate.

04

Evaluation

The holdout is a forward-time split: everything before the test start is training data, everything after is scored once. A causal baseline (a trailing mean of the player's own earlier realised points, with a position fallback) is scored on the same rows. Rolling-origin folds refit the model before each scored week. All of it is written to an evaluation artifact with the metric formulas embedded, and that artifact is what the evaluation page renders.

05

Tiers

Preseason tiers come from a Gaussian mixture fitted on prior-season aggregates: points per game, its variance, games played, opportunity share, and age, scaled and reduced with PCA before clustering. The number of components is chosen by BIC. Tiers are ordered by their component's mean prior PPG, each player carries the membership probability the mixture assigned, and the artifact records how the tiers matched the realised season.

06

Weekly job

A scheduled GitHub Actions workflow pulls the latest nflverse data, rebuilds features, scores the existing champion and challenger, and applies a policy: publish the new predictions file, hold if the evaluation regressed or the data is incomplete, or promote the challenger when it beats the champion on the agreed metrics. The decision, its reasons, and the resulting versions are written to a manifest that the API reads at startup. Model training is a separate, manually initiated workflow; the weekly schedule does not silently retrain.

07

Warehouse and serving

dbt loads statistics and Python-produced artifact families into bronze, applies silver quality and deduplication contracts, then builds gold player-week, evaluation, tier, and decision marts in DuckDB/MotherDuck. A snapshot captures player attributes from the first warehouse capture onward; the as-of views explicitly flag periods that must fall back to current attributes. The weekly build exports an allow-listed set of gold relations to Parquet, which FastAPI serves under /marts/*. Evaluation artifacts remain independently served by /performance.

Inspect the model grains, SQL, tests, and limits on the Data Platform page.

08

What the site does

Predictions

The latest published week with point, floor, ceiling, and the scoring derivation.

Tiers

Preseason tiers per position with membership probabilities and the tier evaluation.

Draft board

A snake mock draft where opponents pick by tier, then prior PPG.

Start/Sit

Side-by-side intervals for any players in the latest predictions file.

Player history

Frozen test rows and weekly rows for one player, prediction against actual.

Evaluation

The full evaluation artifact: metrics, baseline, cohorts, folds, definitions, provenance.

Not included: league imports, trade analysis, injury or weather modelling, accounts, or paid plans.