TeamForge

TeamForge is an LLM-powered digital assistant designed to help you build a VALORANT esports team.

Inspiration

VALORANT has a massive esports scene with players from all around the world. It can be overwhelming for a general manager looking for players to form a new team. That's where TeamForge comes in.

The name for TeamForge is inspired by VALORANT's Episode 4 cinematic and also reflects its purpose (i.e., helping a general manager forge a new team).

What it does

TeamForge simplifies the team-building process through an easy-to-use chat interface. Users can ask it to build a team with any criteria, and it will select players from VCT International, VCT Challengers, and/or VCT Game Changers (depending on the prompt) along with justification using stats and roles. It also can answer follow-up questions about the team's strengths/weaknesses and stats.

How I built it

The chatbot is powered by an Amazon Bedrock agent using Claude 3.5 Sonnet as its model (for the finalist stage, this was switched to the Amazon Titan Text G1 - Premier model due to request rate limit issues, so it may not perform as well as expected; however, considering how much faster and cheaper the Amazon model is, I'm pretty happy with its performance).

The player data was scraped from vlr.gg using Python and Beautiful Soup and was stored in two locations: the basic stats for each player were stored in a database hosted on Supabase and the more detailed recent statistics were stored in an Amazon S3 bucket in a separate text file for each player (to avoid any issues with automatic chunking). The database was queried using an AWS Lambda function that was called via a Bedrock action group. Meanwhile, the text files were connected to an Amazon Bedrock knowledge base with the Titan Text Embeddings v2 model and Pinecone.

The web application was built using Next.js and Tailwind and hosted on Vercel.

What would I do if I didn’t have throttling issues

I would switch the model back to the Claude 3.5 Sonnet model (which, from my testing, worked better for this use case) and adjust the prompts to improve the performance of the model. With the Amazon Titan Text G1 - Premier model (which I'm using due to the throttling issues), I find that sometimes it strays from the system prompt (e.g., doesn't select one player per role or doesn't assign an IGL using the criteria I specify), which wasn't the case in Stage 1 when I was using the Claude model; I believe I would be able to get significantly better responses than I am now if I could use Claude 3.5 Sonnet. However, I did adjust the prompts to work better for the Amazon model, and considering how much cheaper and faster it is, I'm satisfied with its performance.

Challenges I ran into

It was challenging to organize the large amount of player data. I tried several formats, including CSV and JSON, before eventually deciding to store the data in a database and in text files with the info of each player stated in plain English. From my testing, putting the data into full sentences significantly improved agent performance versus just having it in a CSV or JSON file, and allowing the model to query a database significantly reduced average response times.

Accomplishments that I'm proud of

It was my first time using AWS's services, so I'm proud I was able to successfully use several of them (Bedrock agents and knowledge bases, S3, Lambda functions, and Secrets Manager) in this project.

What I learned

I learned a ton about AWS, generative AI, and web scraping. I also realized it takes a lot of research and effort to form a successful VALORANT team.

What's next for TeamForge

  • Using Amazon Bedrock's agent action groups to allow the agent to query even more detailed data (like scraping the Valorant Wiki or even r/ValorantCompetitive threads) would be awesome.

Built With

Share this project:

Updates