Inspiration
RiftCoach was inspired by multiple sources. For the core framework we are using, the color methodology, we were inspired by the LS's content from years ago, where he introduced viewers to the concept of Colors in Magic: The Gathering. This was extremely interesting and eye-opening perspective on the game and it stayed with us to this day. Another feature, the “metric to improve on,” was inspired by the concept of Counterfactual Explanations in Machine Learning, which one of us studied during a university course. Other ideas have been growing in our minds for quite some time, shaped by our experience of learning and improving at League of Legends.
What it does
RiftCoach brings together several features that we believe are both interesting and genuinely useful for players. One of the main ones is Champion Pool Identity Analysis, powered by our Colors Framework. Most players intuitively feel what their champions want to do, but it’s often hard to articulate. We make this intuition explicit -- organizing that knowledge to help players understand their true playstyle and goals. After all, it hurts to see a Viktor player go for early aggression in a draft that naturally wins after minute 25. Another key feature provides actionable advice. We analyze a player’s champion pool to identify champions that either underperform or don’t fit their core identity. Then we suggest more cohesive champions to add instead. We also find the most similar high-ELO player (from EUW, NA, or KR) -- someone who “plays like you, but better.” Many players struggle to find a true role model, and this feature bridges that gap. Using this "pro twin" we identify metric at which player and their twin differ the most and we suggest improvements on that. All of the above features are powered by AI analysis. Our agent is enhanced with "knowledge base" which we handfully created, gathering all knowledge about each champion from high elo players. Players can also chat directly with RiftCoach to ask for gameplay tips or explanations about the framework itself. At the end, each player receives a personalized profile card describing their identity, playstyle, and an AI-generated cinematic summary, a unique, narrative touch to their performance review.
How we built it
RiftCoach began as a simple CLI tool that classified players into one of the color archetypes. From there, the project evolved iteratively, first into a backend service, and then into a full web application.
Our tech stack includes Python (FastAPI, NumPy) for the backend and TypeScript (Next.js, TailwindCSS) for the frontend. The application runs on AWS EC2, powered by AWS Bedrock for LLM-based analysis. We use Redis for caching to reduce redundant queries, and no persistent database, since all analyses are generated on the fly for each user.
Under the hood, RiftCoach aggregates player data, builds embedding representations of champion pools and playstyles, and uses cosine similarity to identify the most similar high-ELO players or champions. This analytical layer connects machine learning techniques with game knowledge to produce human-readable insights.
Challenges we ran into
While we didn’t encounter any major blockers, we faced several interesting design and engineering decisions along the way.
One of the main challenges was the API rate limiting imposed by Riot Games. Initially, we planned to perform full-year analyses of players’ match histories, but due to strict throttling we had to compromise and limit our analysis to the most recent 50 games. The system, however, is already built to scale to full-year data once higher API quotas become available.
One of the issues was creating efficient Knowledge Base on AWS Bedrock. We started with the default vector store (OpenSearch service) but quickly ran into problem of high costs. As we had no experience in AWS we had to spend some time thinking about different approach that costs less and we found out about S3 vectors, which are kinda new. They work great and they are cheap.
Lastly, we spent time balancing AI interpretability, making sure Bedrock-generated feedback feels consistent and personal, not generic. That meant designing a custom knowledge base and prompt templates to control tone and content quality. We acknowledge that some responses could be more specific, like actionable tips, but for the current state of the application we find it satisfying enough. If the app receives positive feedback and attracts more users we definitely plan to expand our knowledge base and make the AI coach even smarter.
Accomplishments that we're proud of
First and foremost, we’re proud that we managed to bring RiftCoach to life, from idea to a fully working web application within the timeframe which was relatively short. We found out about it in the middle of the hackathon.
We also received incredibly positive feedback from many high-elo players, Riot partners, and community figures. They not only gave us valuable suggestions for future improvements but also genuinely praised the project for being interesting, insightful, and actually useful. Hearing that from experienced players felt like a huge validation of our idea.
We’re also very happy with the visual aspects of the app. It simply looks good. The clean, polished UI and the cinematic profile cards give the project a distinct personality we’re proud of.
Another big accomplishment is that we managed to externalize and organize the knowledge that had been sitting in our heads for years. For a long time, we wanted to apply our color framework to a practical tool. Originally, we considered building a draft assistant, but that domain introduced too many complexities. With RiftCoach, we finally found the perfect way to present and validate the framework in action.
What we learned
It was our first full hackathon -- it was fun, but also beneficial. We learned definitely a lot about AWS services, as none of us have worked with AWS before. Also it was nice to refresh and organize our League of Legends' knowledge.
What's next for RiftCoach
Right now, the application is publicly available, and we’re gradually sharing it with more players. However, we’re still limited by Riot Games’ API rate caps, which restrict how many matches we can analyze with one key. If that could change and we would get more freedom in that regard we would love to make this application more popular for people to use, as we believe this is fresh and interesting approach to analysis in League of Legends. We're proud that our tool is unique and goes beyond whats available on apps like op.gg, porofessor or dpm.lol. We'd like to keep it up for people to play with.
Built With
- amazon-bedrock
- amazon-ec2
- amazon-web-services
- bedrock
- celery
- ec2
- fastapi
- next.js
- numpy
- python
- redis
- riotgamesapi
- tailwind
Log in or sign up for Devpost to join the conversation.