Inspiration
Every season, elite athletes suffer injuries that change careers overnight. What makes these injuries especially frustrating is that many of them aren't random, but instead the result of accumulated workload, biomechanical inefficiencies, fatigue, and prior injury history.
Yet most teams still rely on: subjective observation, basic minutes tracking, post-injury medical reports.
There is no unified system that connects historical injury data, real-time biomechanics, and game workload stress into a single actionable risk score.
We built CourtsideIQ to change that. Our goal was some: What if game film alone could help predict injury risk before it happens?
What It Does
CourtsideIQ is an AI-powered injury platform that fuses:
- Historical player data
- Real-time biomechanics analysis from game film
- Workload and schedule stress modeling
Through these outlets of data, we predict the probability of injury for a given NBA player. This allows managers to rest players that are injury-prone or overplayed in a systematic manner.
How We Built It
Frontend:
- Next.js 14 + TypeScript
- Tailwind CSS
- Recharts for historical risk trends
- Interactive Minutes Optimization Simulator
- Anatomical Body Region Risk Map
Computer Vision Pipeline: Step 1: Player Detection & Tracking
- YOLOv8 (Ultralytics)
- Multi-player detection
- BYTETracker for consistent tracking across frames
Step 2: Pose Estimation
- MediaPipe Pose (33 landmarks)
- Runs directly in-browser via WebAssembly
- Temporal smoothing for stability
Step 3: Biomechanics Analysis We extract:
- Knee valgus angles
- Hip alignment
- Trunk lean
- Ground contact timing
- Asymmetry detection (left vs right comparison)
- Fatigue degradation patterns
We also detect:
- Jump events (velocity spike detection)
- Contact events (deceleration/jerk analysis)
- Hyperextension patterns
- Post-impact stillness
Risk Engine Architecture: We implemented a hybrid risk model: Baseline Risk Built from:
- Past 3 years of minutes
- Minor vs major injury history
- Contact frequency
- Age trends Game-Level Biomechanical Risk: Derived from:
- Movement quality metrics
- Event-based escalations
- Asymmetry penalties
Core Features
- Real-time Player Overview Panel
- Historical Risk Trends (last 20 games)
- Video Upload → Pose → Biomechanics → Risk
- Minutes Optimization Simulator
- Feature Importance Visualization
- Team Availability & Playoff Readiness
- Body Region Injury Heatmap
- Schedule Stress Tracking (back-to-backs, road trips)
Challenges We Faced
Real-Time Multi-Player Tracking:
- Keeping player identities consistent across frames was difficult. We had to combine detection confidence with tracking algorithms to avoid ID switching.
No Ground-Truth Injury Dataset:
- There is no publicly available dataset linking biomechanics directly to future injuries. We relied on sports science literature to define research-backed thresholds.
Signal vs Noise:
- Pose data can be noisy. We implemented temporal smoothing and rolling averages to stabilize biomechanical metrics.
Risk Interpretation:
- Predicting injury is inherently probabilistic. We focused on framing risk as a decision-support tool, not a medical diagnosis.
What We Learned
- Injury risk is multidimensional — biomechanics alone isn’t enough.
- Real-time browser-based computer vision is now viable at scale.
- Temporal sequence analysis is crucial — single-frame analysis is insufficient.
- Logistic regression remains powerful when features are well engineered.
- Combining ML with domain-specific heuristics creates more robust systems.
What's Next
- Player-specific biomechanical baselines
- LSTM / Transformer models for deeper temporal modeling
- Integration with professional performance APIs
- Real injury outcome validation dataset
- Deployment for real team testing
Why it Matters:
Injury prediction is not just about wins. It’s about:
- Protecting careers
- Extending longevity
- Reducing preventable damage
- Making smarter, data-driven decisions courtsideIQ transforms raw video into actionable intelligence.
Because redefining risk… changes lives.
Built With
- bytetracker
- flask
- git
- github
- mediapipe
- next.js
- node.js
- numpy
- pandas
- python
- scikit-learn
- tailwindcss
- visual-studio
- yolov8
Log in or sign up for Devpost to join the conversation.