Inspiration

We are avid league of legends players, and were frustrated that OP.GG was too unspecific to help us improve. To validate this, we interviewed other players and found a common pain point: while OP.GG tracks performance, it doesn’t turn insights into specific, actionable tasks for improvement.

What it does

Vision helps players actually understand their gameplay. Instead of just showing stats, it explains performance changes and turns them into personalized coaching quests. After each match, players get AI-generated feedback highlighting what they did well, what went wrong, and actionable skills to focus on in their next few games. Vision transforms static data into a learning experience, and helps players improve faster and more intentionally.

How we built it

We built Vision using AWS Lambda, API Gateway, and Amazon Bedrock. On the backend, our Lambda function automatically connects to the correct Riot API region to pull a player’s account info, solo rank, and the ten most recent ranked matches. It then runs a custom performance calculator that scores players differently based on their role — weighting KDA, vision, CS, and objectives according to whether they play top, jungle, mid, ADC, or support.

The function also uses Riot’s DDragon dataset to translate raw item IDs into readable item names and compiles a structured JSON summary of match stats. This data is then sent to Amazon Bedrock, which generates natural-language feedback and coaching quests. The frontend turns these results into a clean, interactive dashboard that displays match reports, improvement trends, and personalized quests.

Challenges we ran into

Our biggest challenge was connecting the Riot API, AWS Lambda, and Amazon Bedrock into a single flow. Riot’s API structure is region-dependent, meaning every player’s match data had to be fetched from a different endpoint depending on where they played. Handling those variations, along with rate limits and inconsistent response structures, took significant debugging. Once the data arrived, it was messy: raw item IDs, redundant stats, missing timestamps, and dozens of optional fields. We had to design a custom parser and normalizer to clean and reshape the data into consistent match objects before sending them to Bedrock for feedback generation.

Creating a fair, role-specific scoring system was another major challenge. League has five very different roles, and what defines “good performance” for a support isn’t the same as for a jungler or top laner. We designed our own weighted scoring model that balanced KDA, CS, vision score, and objective participation differently by role. To do that, we ran multiple simulations, reviewed actual match histories, and adjusted coefficients until the scores felt both realistic and actionable.

Lastly, integrating the backend output with our frontend dashboard was a constant source of pain. AWS Lambda outputs JSON through API Gateway, which meant CORS, HTTP methods, and asynchronous fetching had to be handled in React.

Accomplishments that we're proud of

We are proud that Vision is a working prototype that connects Riot’s API, AWS Lambda, API Gateway, and Amazon Bedrock into a single automated feedback loop. A user can enter a Summoner name, and within seconds the app: Pulls their ten most recent ranked matches, runs a role-based performance algorithm that calculates a normalized score per match, generates natural-language feedback and improvement quests using Bedrock, and displays everything on a live React dashboard. Also, instead of using raw KDA or win rate, we developed our own scoring model that weighs different metrics depending on a player’s role. Lastly, one of our most exciting wins was fine-tuning prompts for Amazon Bedrock to produce short, structured feedback that reads like a real coach. For example, instead of generic advice like “farm more,” Vision might say: “You secured strong early vision control but overextended twice during mid-game rotations. Focus on syncing your ward timings with your jungler to stay safe after 15 minutes.” Getting this full cycle to run smoothly, without manual intervention, was one of the biggest technical accomplishments of the project.

What we learned

We learned that AWS Lambda can simplify scaling, but debugging serverless code is tricky. Small mistakes — like a missing CORS header or undefined environment variable — can completely block API responses. We learned to rely on structured logging and modular testing to isolate issues quickly.

Also we learned that good AI feedback starts with good context. Early Bedrock outputs were vague because our prompts weren’t structured enough. We learned to include player role, key performance metrics and match outcome. This drastically improved feedback quality.

Through our user interviews, we learned that most players already use OP.GG or Blitz, but they’re craving something different: understanding. They don’t just want to know they had 6 deaths; they want to know why and how to improve next time. That insight validated our entire design philosophy.

What's next for Vision

Next, we want to: Integrate more advanced in-game event tracking for deeper analysis. Add social features so friends can share progress and challenge each other. Build a web and mobile companion for real-time feedback. Explore partnerships with esports coaches to refine our AI coaching models.

At its core, Vision makes League of Legends not just more competitive — but more coachable.

Built With

Share this project:

Updates