This page documents:
Use this as a reference when adding new data sources, understanding what's available for model development, debugging missing or incorrect data, or planning new features.
Sources:
Tables:
games: Game records with teams, dates, scores, locationsmarket_lines: Betting odds from various sources (OddsAPI, SGO)bets: Generated picks from models (Hybrid V2, V4 Labs, etc.)Used by:
/picks): Shows upcoming games with model picks and odds/weeks/review): Historical performance by week/season-review): Season-long profitability analysis/labs): Experimental overlays (V4, Fade V4)Source: CFBD Advanced Stats API (aggregated season-level stats)
Table: team_season_stats (numeric columns)
Fields:
Offense:
ypp_off: Yards per playsuccess_off: Success ratepass_ypa_off: Passing yards per attemptrush_ypc_off: Rushing yards per carrypace_off: Plays per game (tempo)epa_off: Expected points addedDefense:
ypp_def: Yards per play allowedsuccess_def: Success rate allowedpass_ypa_def: Passing yards per attempt allowedrush_ypc_def: Rushing yards per carry allowedpace_def: Opponent plays per gameepa_def: Expected points added (defense, negative is better)Used by:
raw_json.drive_stats)Source: CFBD Drives API (play-by-play drive data)
Table: team_season_stats.raw_json.drive_stats
Fields:
Used by:
raw_json.roster_churn)Source: CFBD Returning Production + Transfer Portal APIs
Table: team_season_stats.raw_json.roster_churn
Fields:
Used by:
raw_json.sgo_stats)Source: SportsGameOdds API (curated stats)
Table: team_season_stats.raw_json.sgo_stats
Fields:
⚠️ Labs-only, optional
🚧 Not yet implemented (stubs exist in apps/jobs/src/talent/portal_indices.ts)
These four indices will be computed from raw_json.roster_churn data and used as Labs overlays first, then potentially integrated into V5 Hybrid model.
Data Source: CFBD returning production + transfer portal net counts
Intended Use: Labs overlay to identify teams with high/low roster stability; if stable, may adjust Hybrid V2 confidence or power rating adjustments in V5.
Data Source: Position-group breakdowns from roster_churn.returningProduction
Intended Use: Labs overlay to flag teams with extreme turnover at key positions (QB, OL, DL); may inform matchup-specific adjustments in V5.
Data Source: 1-year transfers and short-eligibility players from transfer portal data
Intended Use: Labs overlay to identify teams heavily reliant on transfers; may adjust for chemistry/cohesion factors in V5.
Data Source: Net talent gain from transfers (transferPortal.netCount + talent ratings if available)
Intended Use: Labs overlay to flag teams that aggressively use the portal; may inform power rating adjustments in V5 if portal-heavy teams show consistent patterns.
Script: scripts/inspect-team-data.ts
Usage:
npx tsx scripts/inspect-team-data.ts --season 2025 --team lsu npx tsx scripts/inspect-team-data.ts --season 2024 --team "Ohio State"What it prints:
team_season_statsraw_json.drive_stats (if present)raw_json.roster_churn (if present)raw_json.sgo_stats (if present)raw_json.portal_meta (if present, future)Why it's useful:
When adding new data to team_season_stats.raw_json:
inspect-team-data.ts to display the new blockportal_indices.ts for portal/NIL data)