Inspiration

We wanted to recreate the magic of a “year-in-review” experience like Spotify Wrapped for League of Legends players—a polished, personalized snapshot of your season. LoL Wrapped

What it does

LoL Wrapped fetches your match history (up to ~100 games), computes 200+ statistics (KDA, win rates, temporal patterns), uses AI to generate insights and natural-language commentary, and lets you chat with your data in natural language. LoL Wrapped

How we built it

Frontend: Astro + React + TypeScript + Tailwind, deployed via AWS Amplify. LoL Wrapped

API layer: AWS AppSync (GraphQL) for client interactions, backed by AWS Lambda (Python) functions for data collection & processing. LoL Wrapped

Database: Amazon DynamoDB for fast, scalable storage of Wrapped data. LoL Wrapped

AI & analytics: Amazon Bedrock (Claude 4.5) for insights, an MCP server for exposing APIs to AI agents, and vector embeddings stored in S3 for conversational retrieval. LoL Wrapped

Challenges we ran into

Respecting the rate limits of the Riot Games API (20 req/s, 100 req/2 min) required intelligent request batching and back-off mechanisms. LoL Wrapped

Ensuring users didn’t face long waits: implemented status tracking, polling via GraphQL subscriptions to show progress while processing matches. LoL Wrapped

Cost control at scale: by using serverless architecture we kept idle costs near zero and scaled automatically with traffic. LoL Wrapped

Accomplishments that we’re proud of

Sub-2 minute processing end-to-end: from submission to ready Wrapped in ~90 seconds. LoL Wrapped

Seamless conversational interface: players can ask in plain language (“Which champion did I win most with?”) and get contextual responses based on their own game data. LoL Wrapped

What we learned

Building a fluid data-AI-UX pipeline is feasible with serverless tools all the way through.

Interactive retrieval of user-specific data via vector embeddings + retrieval-augmented generation makes analytics much more engaging.

Situations like API limits and workload spikes benefit greatly from event-driven and auto-scaling designs.

What’s next for LoL Wrapped

Expand the conversational agent’s capabilities to offer coaching-style insights (“Train to improve X metric”)

Add cross-player comparisons and friend leaderboards

Integrate additional games beyond League of Legends

Offer seasonal or challenge-based modes where achievements unlock custom visuals

Built With

  • amplify
  • apigateway
  • apprunner
  • appsync
  • bedrock
  • dynamo
  • lambda
  • mcp
  • python
  • s3
  • s3vectors
Share this project:

Updates

Submission history