← All findingssource · memory/project_cv_rebound_tracking_spec.md
User wants a system to catch "stretch player never crashes the boards but I trusted the rebound prop anyway" mistakes (Jeremy Grant example) — asked whether to build computer vision on recorded League Pass/YouTube broadcast footage to track player positioning. Ran an 8-agent research+design workflow (4 research agents + 3 candidate architectures + synthesis, ~650K tokens, ~16.5 min) before any code.
Headline finding — check this before writing any CV code:
stats.nba.com/stats/leaguedashptstats?PtMeasureType=Rebounding (+
PaintTouch/ElbowTouch) is REAL Second-Spectrum optical-tracking data,
publicly exposed today, with fields (OREB_CHANCES, OREB_CHANCE_PCT,
contested/uncontested splits, PAINT_TOUCHES) that answer almost exactly
"was this player ever in rebounding position" — for NBA. This repo already
has a working stats.nba.com proxy pattern to clone (see
reference_nba_summer_league_stats — the same x-nba-stats-origin/token
header gotcha applies). This should ship as a proxy + methodology flag
(days of work) before any CV investment, and may resolve most of the pain
if it's mostly an NBA problem.
WNBA has no equivalent — verified against stats.wnba.com's own nav (box-score categories only) and SkillCorner (lists NBA/G-League/NCAA D1, not WNBA). Real Second Spectrum tracking exists in WNBA arenas since 2024 but is team/front-office-only, no public API. WNBA is the only league where a from-scratch CV build is actually justified.
Recommended phased path (not yet started, no code written):
- Phase 0 (days): ship the NBA stats.nba.com rebound-proxy → SDS route →
data-hydrator
PlayerBundle.RimEngagementfield → newstat == "rebounds"branch indiagnostic.go:356-412'scomputeMethodologyFlags(mirrors the existingstat == "points"Usage branch atdiagnostic.go:283-285). - Phase 0.5 (<1 day): verify WNBA PBP is actually live — a WNBA PBP wiring commit landed on pbp-service's main only ~2 days before this research and was NEVER confirmed with a real ingested game (live-fetch verification was blocked from dev-machine IPs per the commit's own note). Hard prerequisite for Tier B, must be confirmed not assumed.
- Phase 1 (1-2 weeks, cheap, kill-gated): build the event-anchored CV pipeline ONCE on ~10-15 NBA games, correlate its rim-proximity output against Tier A's real ground truth. Pure architecture validation — if it doesn't track real optical-tracking data where ground truth exists to check it, stop; it won't work blind on WNBA. This POC is throwaway, never wired into production for NBA (Tier A already covers NBA).
- Phase 2 (conditional, realistically 6-10 weeks not the 4-8 proposals guessed — first-ever CV/ML-vision project for this team): port to WNBA only if Phase 1 clears + Phase 0.5 confirms PBP.
- Phase 3 (months): promote from informational flag to hard
LineEdges.Qualitygate only after graded-pick validation, same governance already used for ActiveStatus/grade_v2/EB-shrinkage.
Tech choices for the CV tier (if built): YOLOv8/v11 + ByteTrack, event-anchored 3-10s windows only (not continuous tracking), per-window homography (not per-game), discard-on-camera-cut (no validated solution exists anywhere in the literature for bridging identity across broadcast cuts — even soccer's best-funded benchmark tops out at 63.81/100 GS-HOTA), jersey OCR with multi-frame majority vote constrained by roster-elimination from lineup+PBP data first. Explicitly rejected: pose/box-out detection (zero CV precedent found for this specific action), SAM2/segmentation (1-2 FPS on a T4, too slow), full-game ReID.
Real risks flagged, not hand-waved:
- Homography precision may not clear the bar needed — best published basketball-specific result is 126cm mean error, only 76.5% of frames under 1m — may not reliably distinguish "at the rim" from "just outside the paint," which is the exact distinction the feature needs.
- WNBA has no ground truth to validate against (unlike NBA) — a bad WNBA CV signal would only get caught the slow way, via graded-pick performance over a season.
- Zero CV/ML-vision expertise on this team (sports-scout-service is classical tabular ML) — every effort estimate should be read as optimistic.
- Legal/ToS: real but manageable gray zone (Betamax + NBA v. Motorola support the copyright side; ToS risk tops out at account termination, not litigation, no enforcement precedent found against private non-redistributed use) — mitigate by discarding raw footage post-processing, sourcing from paid League Pass over YouTube, staying internal-only. Operator should sign off knowingly.
- Open question for the operator, unresolved: is the actual pain point mostly NBA or WNBA? If mostly NBA, Phase 0 alone may fully resolve it. Also: WNBA already has a substantial higher-certainty backlog (see project_wnba_backlog) — worth an explicit call on whether CV beats clearing that queue for the next 2-3 months.
Why: Team has a track record of shipping sophisticated features that measured no lift and got reverted (see project_feature_experiments — USG%/position-aware DvP). Phase 1 is designed as a real kill-gate for exactly this reason, not a formality en route to a build already half-decided.
How to apply: Do not start CV implementation without re-confirming this plan with the user first — nothing has been built yet, this is a spec only. Full research detail (per-agent findings, all 3 candidate proposals) is in the workflow transcript, not duplicated here.