Valorant Veto Assistant
A machine learning project that helps esports team managers during the map veto phase of Valorant tournaments. Given two teams and a map, it estimates the probability that one team beats the other on that map — turning a time-pressured, memory-based decision into a data-driven one.
Project snapshot
- Role
- Solo — data, modelling, analysis
- Focus
- Web scraping, ML modelling, evaluation
- Status
- Complete
Goals and approach
Map veto happens under time pressure with incomplete information. The aim was to see whether a model trained on historical professional results could give managers a useful win-probability estimate for a given team, opponent, and map. I built the full pipeline: scraping match data, engineering features, and comparing several modelling approaches against a simple baseline.
Data collection
Scraped roughly 7,800 professional matches (~18,400 map results) from VLR.gg across two years and all regions, with local page caching to avoid repeated requests to the site.
Modelling
Built a frequency-based baseline, a logistic regression trained with gradient descent implemented from scratch, and a PyTorch multilayer perceptron — then ran feature ablation studies to compare them.
Evaluation
Used a time-based train/test split so the model is always predicting future matches, and traced and fixed a data-leakage bug involving attack/defence metrics.
Tech stack
Outcome
All models converged around 55–57% accuracy regardless of features or architecture. The key finding was that data sparsity — not the choice of model — is the limiting factor, since most team-and-map pairs have fewer than 10 historical games. The project documents what did and didn't work, and gave me hands-on experience with the full ML workflow: data pipeline, feature engineering, model comparison, and honest evaluation.