mock — 2024 sample (framework preview; no key)
To go live Licensed scores feed (MySportsFeeds ~$40-100/mo). Set MYSPORTSFEEDS_API_KEY in .env + data_sources.scores.enabled: true.
CLEAN DATA · WHAT'S LIVE
We build the whole framework now on a 2024 sample, so a paid feed is a plop-in-key later — no rebuild. Here's exactly which feeds are the sample and which are live. Clean data only on these boards: nothing here is scraped, and nothing goes live (or spends) until a licensed key is dropped in.
0 live · 5 sample · of 5 feeds — checked 2026-07-09
mock — 2024 sample (framework preview; no key)
To go live Licensed scores feed (MySportsFeeds ~$40-100/mo). Set MYSPORTSFEEDS_API_KEY in .env + data_sources.scores.enabled: true.
mock — 2024 sample (framework preview; no key)
To go live Licensed RB-matchup feed (SIS / PFF / Fantasy Points, public-display rights). Set RB_COV_API_KEY in .env + data_sources.rb_cov.enabled: true to go live.
mock — 2024 sample (framework preview; no key)
To go live Licensed TE-matchup feed (SIS / PFF / Fantasy Points, public-display rights). Set TE_COV_API_KEY in .env + data_sources.te_cov.enabled: true to go live.
mock — 2024 sample (framework preview; no key)
To go live Licensed coverage feed (SIS / PFF / Fantasy Points, public-display rights). Set SIS_API_KEY in .env + data_sources.wr_cb.enabled: true to go live.
mock — 2024 sample (framework preview; no key)
To go live Official X API (pay-per-use ~$25-100/mo in-season). Set X_BEARER_TOKEN in .env + data_sources.x.enabled: true.
The site's free layer runs on published open-data releases (nflverse) — downloaded whole, cached locally, refetched on a timer. Nothing is scraped from anyone's website; these are files the community publishes for exactly this use. Here's each one, what it powers, and how fresh our copy is.
| Source file | What it powers | Cache age | Size |
|---|---|---|---|
| Weekly player statsplayer_stats_2024.csv | stat lines, DvP grades, shares, VOR, shapes | 2h | 1.7 MB |
| League schedulegames.csv | matchups, byes, Vegas lines, venue, rest | 3h | 2.2 MB |
| Seasonal rostersroster_2026.csv | age & experience chips | 2h | 0.8 MB |
| Snap countssnap_counts_2024.csv | snap % tiles + true team pace | 2h | 2.4 MB |
| Next Gen Stats (rec)ngs_receiving.csv.gz | real separation / YAC over expected | 2h | 1 MB |
| Next Gen Stats (rush)ngs_rushing.csv.gz | rush yards over expected (RYOE) | 2h | 0.3 MB |
| Official depth chartsdepth_charts_2026.csv | listed roles, the room, handcuff 2nd source | 2h | 30.4 MB |
| Draft picksdraft_picks.csv | draft capital + the rookie class | 2h | 1.7 MB |
Every board below is restamped by the scheduled refresh. If one sits older than 36 hours — the scheduled refresh missed a run — it goes amber. Ages are measured against your clock, right now, not against when this page was built.
The grid above says whether the scheduled refresh ran; this says how. Each board-builder's runtime on the latest run (2026-07-09), against its own typical run (across 4 logged runs). Slowest first — a producer that keeps getting slower is tomorrow's missed run.
| Producer | Last run | Typical | Change | Status |
|---|---|---|---|---|
| player_index | 3.1s | 1.9s | +61% | ok |
Why it works this way. Each feed goes live only when it's switched on and its licensed key is present — otherwise it serves the bundled 2024 sample, so the site never goes dark waiting on a purchase and nothing spends by accident. The samples are illustrative last-year values (clearly labeled as such on each board), not live data. The free/factual layers — the published schedule, points-allowed-to-position, ADP, injury and waiver trending — are always live; they're open data, no key required.