Six-source reconnaissance from both vantage points found the v3-era
blockers gone: FotMob serves full xG/shotmaps/player-ratings from the
VPS with no signed header, and FIFA's official v3 API (lineups with
player IDs + headshots, XY timelines, attendance) is open too. The
plan: capture-first ingestion (FotMob/FIFA/ESPN-deep/weather), four
CV-gated model experiments (xG-informed Team-DC, lineup-aware refresh,
bias-corrected in-play, a scorer model benchmarked against DraftKings
props), and a feature tier built on it — with explicit design-handoff
slots for the visual overhaul arriving from Claude Design.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- docs/V3-GIGA-PLAN.md: the v3 plan (data lake to 7+GB, GIGA ensemble, scoreboard,
UI clarity) with the honest reframe: perfect accuracy = perfect calibration;
'beat the betting sites' = a live public head-to-head, scored with proper rules.
- src/lib/odds.ts: American-ml → decimal, de-vig (normalize away the margin),
overround; 3 vitest cases incl. tonight's real opening lines.
- ESPN core odds adapter (server/src/ingest/espnOdds.ts): captures DraftKings
1X2 moneylines + O/U + spread per fixture; follows $ref pointer items.
- odds_history table (insert-if-changed → clean line-movement history);
scheduler odds sweep every 3h over a 14-day horizon, first sweep at boot;
/api/odds + /api/odds/:num. Odds are a benchmark ONLY — never a model input.
- Boot speed-up: fixture↔event mapping skips dates already fully mapped.
- Verified: 54 fixtures captured with real moneylines locally.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>