Inspiration

LoLo was inspired by yearin.lol, which turns a player’s year into a story. We wanted to bring that same idea but make it smarter, not just a summary of stats but real insights that help players understand their habits, strengths, and areas to improve.

What it does

LoLo pulls your ranked matches from Riot’s API, analyzes patterns using AWS Bedrock, and gives personalized insights such as focus points, strengths, and playstyle habits. It also compares your data with pro players stored in S3 and generates recap cards ready to share.

How we built it

We collect match timelines and stats from Riot’s Match-V5 API, add Data Dragon metadata, and process them into structured feature sets. Those features are sent to AWS Bedrock’s Nova Micro model using role-based prompts for reflection.
The backend runs on AWS Lambda with SST, stores data and share images in S3, and serves through CloudFront. Bedrock handles the reasoning layer, while the frontend built with React and Vite renders the insights.

For match stats, we use batching instead of individual requests. A shared counter feeds several concurrent workers that fetch match details through a custom rate limiter. The HeaderRateGate monitors Riot’s API limits, applying automatic waits and retries. If too many requests fail, it slows down and retries missing matches to stay efficient without hitting the limit.

Challenges we ran into

Riot’s rate limits required a batching system and careful retry logic. Getting Bedrock to output consistent structured responses needed tight prompt control. We also had to resolve CDN mismatches between Lambda and CloudFront when generating shareable images.

Accomplishments that we’re proud of

We built a complete AI coaching system from scratch that connects data collection, analysis, AI reasoning, and frontend presentation in one flow on AWS. Every part works together smoothly, giving players something that feels personal and meaningful.

What we learned

We learned to connect multiple AWS services like Lambda, S3, CloudFront, and Bedrock using SST. It was also our first time designing a batching system for a rate-limited API. The process was challenging but fun, and LoLo ended up feeling more like a real reflection tool than a stat viewer.

What’s next for LoLo

Next, we plan to build a player-vs-player comparison mode that shows stat differences from shared matches, and expand the reasoning depth for more detailed and context-aware insights.

Built With

Share this project:

Updates