
Rift Rewind
AI League of Legends coach that remembers each player across sessions. Won the Roast Master 3000 Prize ($1,000) at the AWS × Riot Games Rift Rewind hackathon.
- Role
- Backend and cloud lead
- Team
- Team of 3
- When
- Oct – Nov 2025
- Python
- Flask
- AWS Elastic Beanstalk
- DynamoDB
- SQLite
- Amazon Bedrock
- Claude
- LangChain

Problem
Stat dumps don’t coach anyone. Sites like op.gg show KDA, CS and damage, but not the story of a game, and they don’t remember that three games ago you struggled with early jungle invades. The goal was a coach that holds a conversation, remembers what a player struggled with, and checks whether the advice was applied.
What it does
- Interactive map. Click a zone of Summoner’s Rift, such as top lane, the dragon pit or the enemy jungle, and get feedback on that area in Coach or Roast mode.
- Conversational coach. Chat with Claude Sonnet 4.5, which remembers previous sessions and can query the player’s match history in real time.
- Shareable player cards with AI-written titles such as “The Scaling Menace” or “The 0/10 Powerspike Enthusiast”.
What I built
I was the backend and cloud lead in a team of three:
- the Python/Flask backend, deployed on AWS Elastic Beanstalk;
- the data layer: DynamoDB for player conversations and dynamic data, SQLite for static League reference data (champions, items, runes);
- the AI layer: Claude Sonnet 4.5 on Amazon Bedrock, with a custom LangChain tool-calling system that gives it champion counters and matchups, build and item statistics, the player’s match history and per-zone performance;
- per-player conversation memory in DynamoDB;
- CLI testing tools.
How it works
The coach builds a profile of each player across sessions, remembers past issues and checks whether advice was applied, as a conversation rather than a stat dump.
What we learned
Fewer, better tools
The first version gave Claude too many tools: it called ten or more functions per response, burning tokens and money. We consolidated related queries into single tools, pre-fetched common data into the context, and used the tool descriptions to guide its choices.
One DynamoDB table
Moving to a single-table design, with conversations and matches stored under each player’s key, cut the number of tables from five to one and query latency by 60%.
Memory that stays affordable
Storing every message got expensive. A sliding window keeps the last 10 messages in DynamoDB and has Claude summarise older ones into compact metadata: an 80% cost reduction, with the context kept.
Concurrent conversations
Two chats at the same time could overwrite each other’s history. DynamoDB conditional writes with version numbers fixed it.
Roast mode, tuned
Early testers found the roasts too savage. The system prompt now asks for humour that stays constructive, and zone stories are generated on demand when the player clicks a zone.
Results
Won the Roast Master 3000 Prize ($1,000) at the AWS × Riot Games Rift Rewind hackathon. Most entries competed on statistics; this one won on personality and coaching quality.
Seen running





I don't own or work for Riot Games. Any Riot artwork shown here appears because this project was built for the Rift Rewind hackathon they hosted.

LinkedIn