How jodhbirs/valai works
ValAI is a Valorant composition optimizer: a user selects a map and locks agents, requests role-valid completions, and receives ranked teams with predicted win rate and uncertainty. The runtime path is React UI → API client → FastAPI solve route → combinatorial solver → batched scorer → permutation-invariant Transformer; metadata initializes the UI. Separate model-preparation capabilities include tournament-data scraping, Bayesian-adjusted datasets, pairwise pretraining, and full-composition training. The README documents these capabilities, though source excerpts for scraping and pair-data loading were not provided, so uncertain implementation links are omitted.
Main entry points: app.py API routes · scorer.py Team scorer · dataset.py Composition dataset · train.py Two-phase trainer
Components 20
Web interface
- App bootstrap
frontend/src/App.tsx - Composition UI
frontend/src/components/OptimizerView.tsx - API client
frontend/src/api/client.ts - API types
frontend/src/types/index.ts
Inference API
- API routes
api/app.py - Request schemas
api/schemas.py
Prediction engine
- Completion solver
solver.py - Team scorer
scorer.py - Synergy Transformer
model.py - Agent and map catalog
constants.py - Agent win-rate data
agent_win_rates.csv - Trained checkpoint
valai_model.pt
Model preparation
- Composition win-rate data
comp_win_rates.csv - Composition dataset
dataset.py - Pairwise dataset
pair_dataset.py - Two-phase trainer
train.py - Agent data scraper
scrape_data.py - Composition scraper
scrape_comps.py
Other components
- Optimizer user
- rib.gg tournament data
Connections 29
- Optimizer user → Composition UI: selects picks
frontend/src/components/OptimizerView.tsx - App bootstrap → API client: checks metadata
frontend/src/App.tsx - App bootstrap → Composition UI: renders
frontend/src/App.tsx - Composition UI → API client: requests solve
frontend/src/components/OptimizerView.tsx - API client → API routes: calls endpoints
frontend/src/api/client.ts - Composition UI → API types: uses response types
frontend/src/components/OptimizerView.tsx - API client → API types: uses API types
frontend/src/api/client.ts - API routes → Request schemas: validates requests
api/app.py - API routes → Completion solver: dispatches solve
api/app.py - API routes → Agent and map catalog: builds metadata
api/app.py - API routes → Team scorer: loads checkpoint scorer
api/app.py - Completion solver → Team scorer: scores batches
solver.py - Completion solver → Agent and map catalog: checks roles
solver.py - Team scorer → Synergy Transformer: predicts win rate
scorer.py - Team scorer → Composition dataset: loads adjusted baselines
scorer.py - Team scorer → Agent win-rate data: reads baselines
- Synergy Transformer → Agent and map catalog: uses role mappings
model.py - Composition dataset → Composition win-rate data: reads compositions
dataset.py - Composition dataset → Agent win-rate data: reads agent rates
dataset.py - Composition dataset → Agent and map catalog: maps identities
dataset.py - Two-phase trainer → Pairwise dataset: pretrains embeddings
train.py - Two-phase trainer → Composition dataset: trains compositions
train.py - Two-phase trainer → Synergy Transformer: fine-tunes
train.py - Two-phase trainer → Trained checkpoint: saves model
train.py - Pairwise dataset → Composition win-rate data: reads composition data
- Agent data scraper → rib.gg tournament data: collects data
- Composition scraper → rib.gg tournament data: collects data
- Agent data scraper → Agent win-rate data: produces rates
- Composition scraper → Composition win-rate data: produces compositions