ScrimCoach – Hackathon Submission
Inspiration
Coaches and analysts drown in raw statistics. We wanted a Moneyball for esports: turning match data into actionable insights, not just numbers.
We also saw a gap:
GRID and other APIs provide rich data
But there’s no simple way for coaches to spot:
- Recurring mistakes
- Draft vulnerabilities
- Execution gaps under pressure
- Recurring mistakes
ScrimCoach bridges that gap.
What it does
ScrimCoach is a web app for League of Legends coaches.
Core workflow
- Takes a pro team name (e.g., T1, Gen.G, Cloud9)
- Pulls recent match and series data from the GRID Esports API (GraphQL)
- Analyzes performance patterns across wins and losses
Insight generation
Produces severity-rated insights with clear coaching recommendations, including:
- Critical performance issues
- Players whose deaths spike in losses
- Draft strategy issues
- Champions with consistently poor win rates
- Execution gaps
- Performance differences between wins vs losses
- Team balance signals
- Over-reliance on a single carry
- Macro breakdowns
- Death → objective-loss correlation
- Phase-based weaknesses (early / mid / late)
Visualization & outputs
Displays a polished dashboard with interactive visuals:
- Objective efficiency view
- Death correlation matrix
- Phase performance (early / mid / late)
- Strategic death heatmap
Produces coach-friendly deliverables:
- Executive Summary
- Detailed Analysis
- Practice Planning view
- Printable practice plan for review and sharing
How we built it
Backend (Flask, Python)
Implemented a clean, layered architecture:
domain/– core models (Insight,AnalysisResult)use_cases/– orchestration logic and analyzersinfrastructure/– GRID GraphQL integrationinterfaces/– presenters shaping JSON for the UI
Background analysis jobs (threaded):
/api/analyze– start analysis/api/progress/<task_id>– stream progress (“quest log”)/api/cancel/<task_id>– clean cancellation
Data pipeline (Pandas / NumPy)
- Transform raw API responses into analysis-ready tables
- Run multiple analyzers to:
- Detect recurring issues
- Rank findings by severity
Frontend (Vanilla HTML / CSS / JS + Chart.js)
- Single-page UI (
templates/index.html) - Features:
- Team autocomplete
- Recent searches
- Interactive charts
- Gamified progress UX
- Clear result modes for different coaching needs
Data source
- GRID Esports API via GraphQL
- Central-data endpoint
- Series-state endpoint
Tooling
- Built using JetBrains IDEs
- Assisted by Junie AI (as noted in project docs and UI)
Challenges we ran into
- Designing analysis that produces actionable coaching guidance, not just metrics
- Handling long-running analysis without freezing the UI:
- Progress polling
- Cancellation
- Failure states
Accomplishments we’re proud of
- A complete, working product:
- Team search → live data → insights → dashboards
- Insights that map directly to coaching actions:
- Clear severity levels
- Recommendation-driven language
- A polished UI experience:
- Executive, Detailed, and Practice modes
- Charts, heatmaps, and printable practice plans
- A codebase designed for extensibility:
- New analyzers can be added cleanly
What we learned
- Building real-time-feeling apps using background jobs and progress streaming
- Practical patterns for integrating GraphQL APIs into maintainable architectures
- Turning analytics into decision support:
- Prioritization
- Severity scoring
- Coach-friendly wording
- The importance of UX in analytics tools:
- Coaches need clarity and next steps, fast
What’s next for ScrimCoach
Near-term
- Spatial pattern analysis
- Champion synergies
- Multi-team comparison
- Historical performance tracking
Long-term
- VOD integration
- Predictive modeling
- Automated practice plan generation
- Multi-game support
- Collaboration features
- Mobile app
Log in or sign up for Devpost to join the conversation.