OmniScout

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 PlayerMatchStat when 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

  1. Overview — soccer lists with sample floors.
  2. Defensive Actions — Def/90 with ≥450′.
  3. Open a Big5 centre-back profile — scorecard + recent appearances.
  4. Clubs · Brasileirão — 2026 W/D/L from live standings.
  5. Shortlist → Compare → Report for the same player.

Full checklist: /demo

Full write-up: docs/SCORING.md in the repository.