Inspiration
In professional esports, the difference between a champion and a runner-up is often a single decision made in a split second. Coaches and analysts are currently overwhelmed with raw data—thousands of events per match, messy spreadsheets, and hindsight bias. We asked ourselves: What if a coach had an AI assistant that could see everything in real-time and even predict the outcome of alternative strategies? That was the spark for the Team Intuition Engine.
What it does
Team Intuition Engine is a comprehensive tactical dashboard that ingests live esports data directly from the GRID Data Platform. It provides:
- Real-Time Glass Dashboard: A stunning, low-latency interface that visualizes live match states for League of Legends and Valorant.
- The What-If Simulator: A powerful tool that allows coaches to pause a live match (mentally) and simulate alternative decisions. "Should we have forced a buy?" "What if we rotated to B site?" The engine calculates success probabilities for these hypothetical scenarios.
- Macro Review: A high-level strategic view that tracks team rotations, economy management, and objective control, helping teams identify their own habits and break them.
How I built it
We built Team Intuition as a high-performance, dual-service architecture:
- Backend (The Brain): Built with Python and FastAPI, this service connects to GRID's Central Data (GraphQL) and Live Data (WebSocket) APIs. It serves as a normalization layer, transforming complex, game-specific data from LoL and Valorant into a unified internal model. It also powers the simulation logic.
- Frontend (The Face): A Next.js application using TypeScript and Tailwind CSS. We focused heavily on UX/UI, using Framer Motion for seamless transitions and "Liquid Glass" styling to give it a futuristic, premium feel fit for an esports stage.
- Deployment: Both services are containerized and deployed on Railway, ensuring production-grade reliability and easy scaling.
Challenges I ran into
- The Firehose of Data: GRID's WebSocket feed provides an incredible amount of granular data. Managing this flow and normalizing it so that our frontend could render updates without stuttering was a significant engineering challenge.
- CORS & Production Networking: Connecting our secure production frontend to the backend while handling browser security policies required careful configuration of our middleware and reverse proxies.
- Unifying Game Models: League of Legends (MOBA) and Valorant (FPS) are fundamentally different. Designing a single GameState data structure that could gracefully handle both "Minion Kills" and "Headshot %" took several iterations of schematic design.
Accomplishments that I'm proud of
- Universal Game Support: We successfully abstracted the core concept of a "Match" so our dashboard works for both MOBA and FPS titles with minimal code duplication.
- Zero-Latency Feel: The dashboard feels alive. The animations and data updates happen instantly, creating an immersive experience for the user.
- The UI: We're really proud of the aesthetic. It helps clarify complex data rather than just displaying it.
What I learned
We learned that context is king. Raw data like "KDA" is meaningless without the context of the game state (economy, map pressure, objective timers). Building the "What-If" simulator taught us that the value of data isn't just in recording history, but in simulating the future.
What's next for Team Intuition Engine
Machine Learning Integration: We plan to train a custom model on historical GRID data to improve the accuracy of our "What-If" simulations. More Titles: Expanding support to CS2 and Dota 2 using the same unified architecture. Coach Collaboration: Adding real-time annotation and telestrator features so coaches can draw plays directly on the live map.
Built With
- but-railway-is-confirmed)-apis/data:-grid-data-platform-(graphql-&-websocket)-libraries:-framer-motion
- languages:-python
- lucide-react
- next.js
- pydantic
- react
- recharts
- tailwind-css-platforms:-railway
- typescript-frameworks:-fastapi
- vercel-(optional-if-used
Log in or sign up for Devpost to join the conversation.