💡 Inspiration: The "Moneyball" Moment
We were inspired by a scene in the movie Moneyball where Peter Brand tells Billy Beane: "Your goal shouldn't be to buy players. Your goal should be to buy wins."
In modern esports, coaches and analysts spend 80% of their time manually scrubbing through VODs (video on demand) to find patterns. They are looking for the "why"—why did we lose that round? Why is our top lane falling behind?
We realized that GRID's in-game data contains the answer, but it's raw numbers. We wanted to build a bridge between raw data and human strategy. We wanted to build the "Digital Assistant Coach"—an Agentic AI that doesn't just show you a chart, but tells you exactly how to win.
🏗️ How We Built It
Vanguard was built using a modular "Twin-Engine" architecture to handle the distinct nature of the two games:
- The Data Ingestion Layer (GRID API):
We utilized GRID's GraphQL API to fetch granular match data. We built a robust
GridDataLoaderthat handles the extraction of complex nested JSON, normalizing events likePositionSample(LoL) andRoundEnd(VALORANT) into a unified Pandas structure. - The Analytics Core (Python & Pandas): We didn't want the AI to "hallucinate" math, so we built deterministic analyzers in Python.
- For League of Legends: We treated the game as a continuous time-series problem. We calculated Jungle Proximity by mapping coordinate densities over time .
For VALORANT: We treated the game as a discrete probability problem. We calculated conditional probabilities, such as the likelihood of winning a round given a First Blood:
The Agentic AI (LLM): We used LangChain to feed these calculated statistics into an LLM (OpenAI/Gemini). We designed a "System Prompt" that forces the AI to adopt the persona of a ruthless esports coach. It analyzes the statistical anomalies and outputs a structured "Win Condition."
The Visualization (Streamlit & Plotly): We wrapped everything in a high-performance Streamlit dashboard with interactive Plotly heatmaps and charts, designed with a dark UI to match the Cloud9 aesthetic.
🚧 Challenges We Faced
- The "Continuous vs. Discrete" Problem: League of Legends is a flow (continuous), while VALORANT is stop-and-go (discrete rounds). Building a single system that could gracefully handle both data structures without duplicating code was a significant architectural challenge.
- Data Granularity: GRID data is incredibly detailed. Handling thousands of
PositionSampleevents per match to generate a heatmap without slowing down the dashboard required optimizing our Pandas aggregation logic using vectorization instead of loops. - Prompt Engineering: Initially, the AI was too polite. It would say things like "The team could improve their economy." We had to tune the prompt to be specific and actionable, resulting in outputs like "Their fatal flaw is force-buying on Round 2. Punish this by playing long angles."
🧠 What We Learned
- Agentic AI needs "Grounding": You cannot ask an LLM to "analyze a match" from raw JSON—it's too much noise. The magic happens when you use Python to calculate the Feature Vectors (Win Rates, Gold Diffs) and then ask the LLM to interpret those vectors.
- The Power of Coordinates: The coordinate data from GRID is the most under-utilized asset in esports. Visualizing player positioning gave us insights that no scoreboard could ever show.
🚀 What's Next for Vanguard
We plan to implement a Real-Time Draft Predictor. By using Bayesian inference on historical pick/ban rates, we believe we can predict the enemy's next champion selection with accuracy during the live draft phase:
Vanguard isn't just a tool; it's the future of data-driven coaching.
Log in or sign up for Devpost to join the conversation.