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

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 analyzers
  • infrastructure/ – GRID GraphQL integration
  • interfaces/ – 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

Built With

Share this project:

Updates