
What I built:
-
140-table dimensional data warehouse — star and snowflake schema, 51 dimension tables, 84 fact tables, covering players, games, teams, events, shifts, and advanced metrics
-
Multi-phase ETL pipeline in Python processing raw game tracking data into 140 output CSV tables — event enhancement, stat attribution, Corsi/Fenwick calculations, xG modeling, shift parsing
-
50+ page interactive dashboard in Next.js with Supabase (PostgreSQL) as the backend — player pages, team pages, game logs, standings, advanced stats, coaching composites
-
Computer vision pipeline for automated player tracking from GoPro footage — YOLO object detection, ByteTrack multi-object tracking, homography coordinate mapping, identity cascade for team assignment
-
200+ documented architecture decisions covering data model, metric definitions, event taxonomy, and product direction
-
Live with real NORAD recreational league data
Tech stack: Python, PostgreSQL, Next.js, TypeScript, Supabase, Vercel, GitHub Actions, OpenCV, YOLO