Methodology
How ratings, sample floors, and opportunity flags are computed.
Data sources
Season lines come from ESPN boxscores and API-Football enrichment. Ratings and opportunity flags are OmniScout models. Soccer is the reference sport — basketball and American football reuse the same workflow with thinner coverage today.
Player Rating (soccer)
- With ≥ 450':
6 + goals/90 × 0.35 + assists/90 × 0.25, clamped to 5–10. Rates soft-capped at 1.8. - With < 450': conservative baseline from raw goals/assists (max 7.0) so cameos cannot inflate ratings.
- Source of truth:
src/lib/scoring/soccer-rating.ts.
Player Rating (basketball)
- With ≥ 10 games and ≥ 200 minutes:
6 + PPG×0.08 + RPG×0.04 + APG×0.06 + SPG×0.18 + BPG×0.14, clamped to 5–10 (per-game averages as stored). - Below that sample floor: conservative baseline (max 7.0) so short bursts cannot print a 9.5.
- Source of truth:
src/lib/scoring/basketball-rating.ts. List, profile, rankings map, and reports share the same helpers.
Player Rating (American football)
- With ≥ 6 games and ≥ 360' proxy minutes: role-aware formula (QB / skill / defense) from yards, TDs, tackles, and sacks.
- Below that sample floor: conservative baseline (max 7.0).
- Source of truth:
src/lib/scoring/football-rating.ts.
Match rating (appearances)
- Soccer: baseline ~6.5, then goals / assists / tackles / interceptions. Not Opta or Sofascore data.
- Basketball: baseline ~6.5, then PTS / REB / AST / STL / BLK (+ FG% when volume ≥ 5 attempts). Written when NBA boxscores sync.
- American football: baseline ~6.5, then yards / TDs / tackles / sacks. Written when NFL or CFB boxscores sync (or when you open a finished match page).
- Stored on
PlayerMatchStatwhen boxscores sync (or when you open a finished match page).
Top Prospect
U23 players with a strong productivity rating and a reliable sample (soccer minutes / BB·AF games).
Thresholds: age ≤ 23, rating ≥ 6.25, soccer minutes ≥ 450.
Best Performers
Players with the highest productivity rating in the current dataset (reliable sample only).
Dashboard list uses rating ≥ 6.35 (and soccer minutes ≥ 450).
Market Opportunity
Strong rating, age ≤ 25, reliable sample — soccer ≤ €8M market value; NBA/NFL ≤ $5M Cap Hit (no Cap Hit feed for NCAA, EuroLeague, or CFB).
Thresholds: age ≤ 25, rating ≥ 6.25, soccer value ≤ €8M / Cap Hit ≤ $5M (NBA & NFL salary feed), soccer minutes ≥ 450.
Real vs derived data
- Live / synced: ESPN hubs and match feeds; DB season rows when
DATA_SOURCE=db. - Derived: Goals/90, Assists/90, Def/90, proxy ratings, prospect / opportunity labels.
- Not covered: Opta eventing, paid tracking, video — we do not invent those fields.
Suggested demo path
- Overview — soccer lists with sample floors.
- Defensive Actions — Def/90 with ≥450′.
- Open a Big5 centre-back profile — scorecard + recent appearances.
- Clubs · Brasileirão — 2026 W/D/L from live standings.
- Shortlist → Compare → Report for the same player.
Full checklist: /demo
Full write-up: docs/SCORING.md in the repository.