GameSense: Automated Beach Volleyball Intelligence Platform
Joey Musselman · March 1, 2026
Professional beach volleyball statistics are locked behind the FIVB website with no public API. I needed a way to automatically collect, structure, and analyze match data to power a YouTube analytics channel.
Challenge
The FIVB site is a dynamic SPA with overlays, cookie banners, and tabbed interfaces that change state between data loads. Extracting box scores across 5 skill categories for both teams required navigating complex DOM states, detecting data contamination between teams, and retrying with stabilization when validation failed. The data model needed to support players, tournaments, matches, per-skill statistics, video segments, and point-by-point tracking.
My Role & Contribution
Sole Developer — Full-Stack Development & Data Engineering
- Built a Playwright scraper with exponential backoff, multi-selector fallback strategies, and cross-contamination detection
- Designed a 12-table PostgreSQL schema covering players, tournaments, matches, stats, video segments, and transcripts
- Created a live match tracker with point-by-point recording, court zone visualization, and bracket-aware scoring (21/15 sets, side-switching)
- Implemented a discover → filter → scrape → summary batch pipeline with upsert-based idempotency
- Built the frontend dashboard with Next.js and Radix UI for browsing players, tournaments, and match statistics
Key Technologies
Impact
Automated collection of professional beach volleyball statistics that were previously only available through manual data entry. The scraper handles the full FIVB tournament schedule with resilient error recovery and deduplication. The live tracker enables real-time match analysis with zone-based shot tracking for YouTube content production.