About BeatBuddy
🎮 Inspiration
VALORANT has always been more than just a game to me—it’s a mental battleground that sharpens decision-making and strategic thinking in real-time. Watching how fast-paced gameplay can enhance cognitive skills inspired me to blend my passion for data science and computer science. This hackathon was the perfect arena to channel that enthusiasm, transforming a personal love for the game into a tangible tool. BeatBuddy is the culmination of that passion—a strategic companion born from the desire to innovate and elevate the VALORANT experience for players of all levels.
🚀 What It Does
BeatBuddy is your all-in-one VALORANT strategy companion, designed to empower players with the tools they need to succeed. Whether you’re building fantasy teams, analyzing strategies, or diving deep into player stats, BeatBuddy has you covered with features that cater to every skill level:
- Fantasy Team Building: Craft custom teams based on comprehensive player stats, roles, and performance metrics.
- Strategy Analysis: Gain insights into team compositions, role effectiveness, and map-specific tactics.
- Player Insights: Dive into detailed player statistics, win rates, and damage metrics to make informed decisions.
- Dynamic Conversations: Engage in interactive dialogues where BeatBuddy understands and responds to your queries with contextually relevant information.
- Advanced Simulations: Experiment with strategic combinations and refine complex tactics to master the game.
BeatBuddy isn’t just about winning games—it’s about learning, evolving, and mastering the art of VALORANT.
🛠️ How I Built It
Building BeatBuddy was a journey of innovation and technical exploration. Here’s how it all came together:
Data Preprocessing: Using Python, I transformed raw VALORANT datasets into a structured database focused on player stats, role scores, and custom class scores. This foundation was crucial for enabling BeatBuddy’s fantasy team-building and strategy features. This process involved running various Python scripts over the course of several days, systematically going through each match’s data and updating statistics for every player involved in that match.
Database Link: Click Here
Sample entry from the database:
Unique Player ID,Display Name,First Name,Last Name,Status,League,Team,Region,Matches,Registered Kills,Registered Deaths,Registered Assists,Registered KD Ratio,Assists,Total Damage,Average Damage Per Match,Shots Hit,Total Headshots,Headshot Percentage,Registered Wins,Registered Matches,Registered Win Rate,IGL Score,Match Data Available,Weapon Kills,Maps Played,Maps Won,Maps Lost,Agent Stats,Agent on Maps,Agent Wins,Agent Losses,Controller Score,Initiator Score,Sentinel Score,Duelist Score,Deadeye Score,Enforcer Score,Infiltrator Score,Fortress Score,Sharpshooter Score,Guardian Score,Conduit Score,Juggernaut Score,Trailblazer Score,Chameleon Score,Astra,Breach,Brimstone,Chamber,Clove,Cypher,Deadlock,Fade,Gekko,Harbor,Iso,Jett,Kayo,Killjoy,Neon,Omen,Phoenix,Raze,Reyna,Sage,Skye,Sova,Viper,Yoru,Overall Score,Big League,Stat Facts 106116440965658227,aspas,Erick,Marmo,active,champions,LOUD (LOUD),vct-international,182,3176,2419,636,1.312939231,677,481554.9951,2645.906566,9050,2316,25.59116022,107,170,62.94117647,,Yes,"[0, 0, 0, 1093, 21, 588, 7, 0, 80, 24, 80, 207, 21, 406, 119, 25, 47, 37, 80]","[14, 19, 18, 25, 7, 11, 12, 28, 19, 13, 4]","[12, 11, 10, 19, 4, 6, 6, 18, 10, 8, 3]",,"[[0, 0, 0], [0, 0, 0], [0, 0, 0], [33, 34, 7], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [1883, 1352, 319], [0, 0, 0], [0, 0, 0], [324, 263, 101], [0, 0, 0], [13, 15, 5], [898, 741, 195], [25, 14, 9], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]","[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0], [0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 14, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 5, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]","[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 11, 0, 0, 28, 1, 0, 0, 0, 0, 0]",,38,38,36,92,79.25,73.57,44.04,54.28,100.0,36.54,37.88,88.05,41.1,78.24,33,33,33,65,33,24,24,33,33,33,33,100,33,24,100,33,73,100,100,24,33,33,33,33,100.0,,"Top 50 highest ranked player worldwide\nTop 25 Chamber player in Vct International\nTop 25 Clove player in Vct International\nTop 25 Deadlock player in Vct International\nTop 25 Iso player in Vct International\nTop 25 Jett player worldwide\nTop 10 Neon player worldwide\nTop 10 Phoenix player in Vct International\nTop 25 Raze player worldwide\nTop 5 Reyna player worldwide\nTop 50 Yoru player in Vct International\nTop 5 Duelist player worldwide\nTop 10 most accurate player in Vct International\nTop 1 sniper player worldwide\nTop 50 flex player worldwide"NLP Task Matching: The backend process starts here, with a vectorized embeddings-based system that interprets user prompts. Task matching in BeatBuddy leverages custom NLP processing to extract relevant filters and match user intent, ensuring accurate response generation by aligning user queries with specific game-related tasks.
Sample JSON for Prompt Registration:
{ "PromptID": 14, "UserID": "testuser", "PageID": 5, "CreatedAt": "2024-11-05 06:29:09.358803", "Prompt": "Build a team that includes at least two players from an underrepresented group, such as the Game Changers program. It should include tenz and zekken. Define roles and discuss the advantages of this inclusive team structure.", "TaskMatched": "build_team", "ThreadOpen": true }Sample JSON for NLP Result:
{ "matched_task": "build_team", "similarity": 0.860281765460968, "filters": { "players": ["106229920360816436", "106525416849604559"], "regions": ["vct-international", "vct-challengers", "game-changers"], "stats": [] } }Data Fetching: The filters obtained from the NLP result are used to filter the data relevant to the specific task. Each task has its own data filter logic and method for applying these filters. The filtered data is then integrated into a custom context tailored for each type of task, ensuring high accuracy and relevance in the results. This meticulous approach guarantees the best possible outcomes, as shown in the image below.

AWS Integration: BeatBuddy leverages AWS App Runner for backend hosting and ultimately uses Claude 3.5 Sonnet, a powerful language model that enables accurate responses, in-depth strategy analysis, and seamless conversational interactions. "But why Claude 3.5? It is such an overkill!" While it may appear excessive, I selected Claude 3.5 Sonnet for its robustness and versatility, ensuring BeatBuddy can handle complex user prompts and perform strategic calculations effectively, making it adaptable for future developments. The LLM is configured to return parts of the data in a specific format that is then parsed on the frontend as table data.
Sample response from Claude 3.5:
[Team Start] Unique Player ID,Display Name,First Name,Last Name,Agent,Role,IGL,Sniper 106116440965658227,aspas,Erick,Marmo,Jett,Duelist,No,Yes 106525416849604559,zekken,Zachary,Patrone,Skye,Initiator,No,No 107760831992553421,Kadoom,Kantapong,Kingthong,Brimstone,Controller,Yes,No 106230236294103708,ScreaM,Adil,Benrlitom,Phoenix,Duelist,No,No 106651793396690606,Sayf,Saif,Jibraeel,Chamber,Sentinel,No,No [Team End] [Team Score Start] 89/100 [Team Score End] Team Synergy: This team composition brings together a mix of aggressive and tactical playstyles, combining some of the most skilled players from the VCT International scene. The lineup features strong individual performers who also have the potential to work well as a cohesive unit. Attack Strategy: On attack, this team can execute fast-paced site takes led by aspas on Jett and ScreaM on Phoenix. Their aggressive entry potential is supported by zekken's Skye, who can gather crucial information and set up plays with flashes. Kadoom on Brimstone provides essential smoke coverage and post-plant molly lineups, while Sayf on Chamber offers both offensive firepower and the ability to watch flanks with his Trademark ability. The dual Duelist setup allows for explosive site entries, with Skye's flashes and Brimstone's smokes creating space. Chamber can either support the push or hold angles for potential retakes. The team can also split push effectively, using Chamber's teleport and Jett's mobility to create quick rotations. Defense Strategy: On defense, this composition allows for a strong site hold and retake potential. Sayf's Chamber can hold long angles with the Operator, supported by Brimstone's smokes to deny enemy vision. ScreaM and aspas can play aggressively on their respective sites, using their mobility to take off-angles and fall back. Zekken's Skye provides valuable information gathering and can delay pushes with her utility. Kadoom, as the IGL on Brimstone, can coordinate the team's rotations and use the global smoke ability to support either site quickly. The team's retake potential is strong, with multiple flashes from Skye and Phoenix, combined with Jett and Chamber's ability to quickly reposition. Map Example (Haven): On Haven, the team could set up with aspas (Jett) and ScreaM (Phoenix) taking aggressive positions on A and C sites respectively. Sayf (Chamber) could hold B site with an Operator, while zekken (Skye) plays a flex role, ready to support either site. Kadoom (Brimstone) would play from a central position, ready to smoke for retakes or site executes. For an A site execute, Kadoom could smoke Heaven and A Link. Zekken would Trailblaze into site, followed by a Curveball from ScreaM. Aspas would then dash in, supported by Sayf holding long angles from B. This coordinated push utilizes each agent's strengths and creates multiple points of pressure for the defenders to deal with. Overall, this team composition offers a balance of aggressive play-making potential and tactical utility usage. The mix of experienced veterans and young talents provides a dynamic that could be very effective in competitive play. Kadoom's high Controller score makes them well-suited for the IGL role, coordinating the team's strategies and adapting mid-round. With aspas as a primary Operator user and the flexibility of agents like Skye and Phoenix, this team has the tools to handle various situations and opponents.Frontend and Backend Development: Utilizing Flask for the backend and Next.js for the frontend, I crafted a modular, interactive architecture that supports dynamic user interactions and efficient data management. The language model is configured to return data in a structured format, using markers like [Team Start] and [Team End] to designate specific sections of information. On the frontend, this data is parsed into a table format, with IDs embedded within the dataset used to fetch and enrich the displayed results. This additional data enhances the user experience, offering a more comprehensive and detailed view of player and team insights, as illustrated in the image below.


Some Fun Prompts to Try:
- "Build a team that includes at least two players from an underrepresented group, such as the Game Changers program. Define roles and discuss the advantages of this inclusive team structure."
- "Assign team roles including 2 duelists, 1 controller, and 2 initiators or 2 sentinels, one of the two, to the team of tenz, aspas, f0rsaken, scream, something."
- "Calculate the effectiveness of this team comp on the map Bind: breach, jett, raze, omen, brimstone."
- "Analyze the team of Miku, rukia, zekken, fNs, fluxxy and prepare a list of their strengths."
- "Give me a good team comp for the map Split."
- "How well would demon1 play a duelist role?"
🧩 Challenges Faced
The road to creating BeatBuddy was not without its hurdles. The most significant challenge was when my initial team decided to step away halfway through the hackathon, leaving me to navigate the project solo. Balancing creativity with practical functionality required innovative problem-solving and relentless dedication. Additionally, integrating advanced NLP capabilities while maintaining efficient performance demanded meticulous planning and execution. Despite these setbacks, overcoming these obstacles strengthened my technical skills and resilience.
What Would We Do If We Didn’t Have Throttling Issues
I've recently been facing throttling limitations on the AWS Claude 3.5 bot, which has restricted my ability to test follow-up prompts. Although I’m confident that the follow-up prompts should work according to the thread open/close functionality designed for this project, testing and improving is always beneficial, but I haven't been able to utilize that opportunity fully. The thread functionality enables the NLP to recognize follow-up prompts, allowing it to pass the previous context in a specific format along with the new context, but only within the specific thread tied to that follow-up timeline. When a new task is recognized, the current thread is closed, and a new one begins.
🏆 Accomplishments
Completing BeatBuddy on my own was a proud achievement, especially while balancing multiple responsibilities as a junior student with various projects and part-time jobs. What makes this even more meaningful is that I’ve never taken any formal machine learning or database programming courses. Every technique, from data analysis to integrating machine learning and NLP for intent recognition, comes from self-taught practical methods and hands-on experience. This journey has been a true testament to the power of independent learning and dedication to problem-solving. BeatBuddy stands out as a unique tool that I’m incredibly proud to present, showcasing the potential of AI-driven gaming tools.
📚 What I Learned
Building BeatBuddy was an invaluable learning experience, offering insights into full-stack development, advanced data preprocessing, and integrating large language models to support VALORANT team composition. I delved into machine learning concepts crucial for analyzing player statistics, intent recognition, and task matching, enhancing my understanding of NLP and model-driven decision-making.
Using AWS services to create a scalable and efficient application, I learned the intricacies of managing cloud-based deployments, which elevated my backend proficiency. Beyond the technical gains, BeatBuddy sharpened my problem-solving skills and adaptability, especially when facing unexpected challenges. This project reinforced my passion for data science and AI, fueling my drive to create impactful, data-driven solutions in gaming and beyond.
🌟 What's Next for BeatBuddy
The journey doesn’t end here—BeatBuddy is poised to evolve and grow. Future enhancements include:
- Real-time Data Updates: Keeping insights aligned with the latest VALORANT meta.
- Advanced Performance Tracking: Providing deeper insights into individual gameplay metrics.
- Enhanced Team Composition Analysis: Refining algorithms to suggest even more optimized teams based on current data trends.
BeatBuddy is here to stay, helping everyone from Silvers to Immortals. Whether you’re learning new strategies, exploring fantasy team setups, or mastering advanced gameplay techniques, BeatBuddy aims to be the go-to tool for all VALORANT enthusiasts.
Built With
- amazon-web-services
- claude
- flask
- javascript
- nextjs
- python
- react
Log in or sign up for Devpost to join the conversation.