Inspiration
The idea for LOL Wrapped was born from the popularity of year-in-review features like Spotify Wrapped, which turn personal data into engaging, shareable stories. As avid League of Legends players, we saw an opportunity to apply this concept to the game's vast match history data. League players often track stats through tools like OP.GG or Blitz, but these lack the narrative flair and deep AI-driven insights that make recaps memorable. Participating in the AWS AI & League of Legends Hackathon 2025 inspired us to leverage AWS services and the Riot Games API to create a cinematic, personalized experience that not only summarizes a season but also provides actionable coaching, fun roasts, and "what-if" simulations to help players reflect and improve.
Use the live endpoint: 👉 https://leaguewrapped.xyz/ For now, only cached summoners will load with entire match history: denathor mex Shimmer Sylvan cheesedbeluga arcona Aontevanger mannar
What it does
LOL Wrapped is an AI-powered platform that analyzes a player's entire 2025 League of Legends season, transforming raw match data into an immersive, story-driven recap. Users input their summoner name (currently limited to cached profiles due to API constraints), and the system generates:
Global Statistics Dashboard: Tracks hours played, total damage, gold earned, win/loss rates, multi-kills, vision metrics, combat stats, objectives secured, top champions, and performance profiles.
Player DNA: A "playstyle fingerprint" derived from hundreds of matches, highlighting tendencies like CS@10, roam patterns, death locations, facechecking, aggression levels, and objective pressure.
AI Coaching: Personalized advice on macro strategies, mechanics, pathing, vision control, consistency, and role-specific optimizations, powered by Amazon Bedrock.
AI Roasts: Humorous, data-backed critiques of blunders like river deaths, missed farm, or failed invades for shareable fun.
Friend Comparisons: Side-by-side stats with friends or opponents in categories like win rate, KDA, and vision score.
Parallel Universes: Simulated alternate timelines, such as "without your main champion," "optimized champion pool," or "peak performance mode," showing potential win rate boosts, time savings, and rank climbs.
This turns stat tracking into an entertaining, insightful experience that's authentic to the League community.
How we built it
We built LOL Wrapped using a modern, cloud-native stack centered on AWS and the Riot Games API. The backend is a FastAPI Python application that fetches match history via the Riot API and caches data in DynamoDB for efficiency. We preprocess raw data server-side to compute enriched metrics like temporal trends, behavioral flags, and champion consistency.
For AI features, we integrated Amazon Bedrock with Claude 3.5 Sonnet, tuning temperatures (e.g., 0.9 for creative roasts, 0.7 for balanced coaching) to generate narrative insights from structured summaries—avoiding raw data dumps for cost optimization. The frontend dashboard presents everything in a cinematic, League-themed UI.
Deployment runs on an AWS EC2 instance with Docker Compose pulling images from ECR. A CI/CD pipeline via GitHub Actions automates builds, secret management through SSM Parameter Store, and orchestration. Local development uses a simple docker-compose.local.yml for easy setup with a .env file for API keys.
Challenges we ran into
Riot API rate limits were a major hurdle, restricting real-time loading for new summoners and forcing us to rely on cached profiles initially. Processing large match histories (400+ games per player) required careful data aggregation to avoid overwhelming Bedrock requests, so we implemented server-side preprocessing for efficiency.
Integrating AI prompts demanded iteration to ensure outputs were grounded in data—roasts needed to be funny but accurate, while coaching had to be actionable without being generic. Deployment challenges included securing secrets in CI/CD and ensuring multi-container consistency on EC2.
Accomplishments that we're proud of
We're thrilled with how LOL Wrapped elevates basic stats into engaging narratives, like persona profiles and parallel universes, making it feel like a true "Wrapped" experience. Successfully integrating Bedrock for role-specific coaching and data-anchored roasts stands out, as does our lightweight simulation engine for "what-if" scenarios.
Building a fully automated CI/CD pipeline with secure secrets management was a win for scalability. Despite API limits, we delivered a polished demo with cached summoners, and the architecture's cost-optimization (structured inputs to AI) keeps it efficient. Overall, creating something fun and useful for the League community in a hackathon timeframe feels like a pentakill.
What we learned
We deepened our expertise in AWS services like Bedrock, DynamoDB, EC2, and ECR, especially for AI orchestration and secure deployments. Prompt engineering for LLMs taught us the importance of structured data inputs for consistent, grounded outputs—balancing creativity with accuracy. Working with the Riot API highlighted API design challenges, like rate limiting and data granularity, pushing us to innovate with caching and heuristics. We also learned about game analytics, deriving meaningful insights from metrics like vision scores and temporal splits. On the devops side, automating multi-container CI/CD reinforced best practices for resilient, repeatable pipelines.
What's next for LOL WRAPPED
Next, we'll expand real-time support by implementing API key rotation or batch processing to handle more summoners without hitting limits. Adding social features, like shareable Wrapped cards or multiplayer comparisons, could make it more viral.
We plan to integrate more AWS tools, such as SageMaker for advanced ML-based predictions or Lambda for serverless scaling. User feedback will guide refinements to AI tones and new universes (e.g., "no tilt" mode). Long-term, open-sourcing parts of the codebase and partnering with Riot for official integration could turn this into a staple for League players worldwide.
Built With
- amazon-bedrock
- amazon-dynamodb
- amazon-ec2
- amazon-ecr
- amazon-web-services
- claude
- fastapi
- javascript
- nextjs
- python
- react
- riot-games
- terraform
- typescript
Log in or sign up for Devpost to join the conversation.