Most draft tools show you a win rate and leave it there. Brawl Draft fuses several different signals — a learned win-probability model, empirical map and matchup stats, role fit, and optionally your own account history — into one number per brawler, and shows you every component that went into it.
This page explains exactly how that number is produced, what the underlying model is actually good at, and where it falls down. Nothing here is a secret-sauce pitch. If you understand the reasoning, you can decide for yourself when to follow a suggestion and when to ignore it.
This page is the plain-English version. If you want the architecture diagrams, the equations and the held-out numbers, the model dossier has all of it.
Every number traces back to real ranked matches, collected through the official Brawl Stars API.
That API is player-centric: you can ask for one player's roughly 25 most recent battles, but there is no global match feed you can just download. So the collector snowballs. It seeds from leaderboard players, pulls their ranked matches, harvests the other five player tags out of each one, and adds those players to the queue. The frontier expands outward from the top of the ladder.
Because a single match appears in up to six players' battle logs, everything is deduplicated by a stable key — the match's timestamp plus the six player tags sorted — before it counts once. Each surviving row is the same shape: map, mode, team A's three brawlers, team B's three brawlers, and who won.
The current model was built from 1,431,064 labeled ranked matches. 214,659 of those were held out for validation and never shown during training, leaving 1,216,405 the model actually learned from — which is why the accuracy figures below mean something.
Matches also decay. The empirical stats table weights each match by an exponential half-life of about three weeks, so a month-old game counts roughly a third as much as a fresh one, and a brawler that falls out of rotation after a nerf sheds its effective sample size on its own. The model is trained with the same idea at a roughly 30-day half-life. Nothing has to be manually flushed after a balance patch — old games just quietly stop mattering.
One thing is missing and cannot be fixed: the API never exposes the ban phase. It only reports the final picked teams. So there is no ban data anywhere in the dataset, and ban advice has to be inferred rather than learned.
The model takes eight things: your three brawlers, their three brawlers, the map, and the mode. It returns one number — the probability your side wins.
Every brawler gets a learned vector of 32 numbers, a compressed description of what that brawler does, derived purely from which teams win. The map and mode get their own smaller vectors, concatenated into a context.
Team strength. The three brawler vectors on a side are averaged, the map/mode context is stapled on, and a small network turns that into one strength score. The same network scores both teams, and the enemy's score is subtracted from yours. Averaging means the network is blind to the order you listed your brawlers in, which is correct — a comp is a set, not a sequence.
The counter term. Strength alone can only say "these three brawlers are good here." It has no way to express that a particular brawler eats a particular other brawler. So each brawler also gets two extra 16-number vectors: an *attacker* vector and a *defender* vector. Your team's attacker vectors are matched against their team's defender vectors, and the reverse is subtracted. When a brawler's attacker vector lines up with another brawler's defender vector, the model has learned "this one beats that one" — independent of whether either is strong in general.
That is the whole point of the counter term. A brawler can be excellent on a map and still be a bad pick into a specific enemy comp. A model that only adds up how good each brawler is literally cannot represent that. This one can.
Antisymmetry. Every term flips sign when the two teams are swapped, which means the probability your team wins plus the probability theirs does always adds to exactly 1 — by construction, not by training. There is no "team A wins slightly more" artifact to unlearn, and no need to feed the model every match twice with the sides reversed.
On the 214,659 held-out matches it never trained on:
A constant 50% guess scores a log loss of 0.6931 — that is the do-nothing baseline. A logistic regression on which brawlers are present gets 0.6847 log loss, 55.1% accuracy, and 0.572 AUC. The embedding model gets 0.6667 log loss, 58.8% accuracy, 0.626 AUC, and an expected calibration error of about 0.011.
On unfinished boards the same model degrades gracefully: with a single known pick its log loss is 0.6908 (barely better than knowing nothing, which is the truth of that situation), improving monotonically to 0.6667 as the board fills in, with calibration holding near 0.01 at every state.
In plain terms: shown two full comps and a map, with no idea who is playing them, it picks the winner right about 59% of the time. That is a real edge over a coin flip and it is not a large one.
That ceiling is a property of the game, not a bug in the model. Ranked matchmaking pairs players of similar skill. Both teams usually draft something reasonable. And then the match is decided by aim, positioning, Super timing, and rotations — none of which the draft can see. A tool that claimed to predict ranked outcomes from the draft alone would be lying to you.
The number worth caring about is calibration. An expected calibration error near 0.01 means the probabilities are close to literal: across the matches where it says 55%, that side wins about 55% of the time. It does not systematically inflate or deflate. That is exactly what an assistant needs, because the whole job is comparing small differences between candidate picks. A confident-but-miscalibrated model would rank picks badly even at the same accuracy.
So the model is used for *relative* ranking — is this pick better than that one, and by how much — not as a prophecy about the game you are about to play.
The model is one voice, not the whole recommendation. Four other signals are computed directly from the collected matches and blended with it.
Every raw win rate is first shrunk toward 0.5 with 20 pseudo-games. A brawler that went 3-0 on a map does not display as 100% — it displays as barely above the prior, and it earns its way toward its true rate as real games accumulate. That same math produces the confidence indicator next to each suggestion: games divided by games-plus-20.
The blend is a weighted average, but only over the signals that are active right now, renormalized so those weights sum to 1. Synergy needs at least one ally on the board. Counter needs a revealed enemy. On an empty board with first pick, only map win rate, role fit, and the model are live, and the score comes from those three alone — a missing signal is never quietly filled in with a neutral 0.5 that drags every candidate toward the middle.
Those weights are not vibes. They come from a held-out ablation built to be leakage-free — the net is retrained inside the test harness on the train split only, the empirical stats are built from train rows only and then scored on held-out rows, and per-mode estimates are cross-fit across five folds so they are not just noise. It has been run twice: June 2026 on about 40,000 matches, and August 2026 on 995,135.
The obvious intuition going in was that the weights should depend on context — counters ought to matter more in some modes, synergy in others. Both runs refuted that. Refitting the weights separately within each of the six ranked modes performed the same as one global set in every mode. Per-map or per-mode weighting would have added real complexity and bought nothing, so the weights stay global.
The more interesting finding is that the right blend *moved as the data grew* — and reversed. On the June run the empirical signals out-ranked a net trained on 40k matches, earning about 69% of a stacked model's weight. On the August rerun, the net retrained on the full dataset out-discriminated the entire empirical blend on its own (0.625 vs 0.608 AUC), and the stacker handed it 78% of the weight — a full reversal. The shipped weights followed: the model's share doubled from 0.20 to 0.40, funded by map (0.32 → 0.25) and synergy (0.15 → 0.05, its conditional coefficient is roughly zero in every mode once the other signals are present). The winning fixed blend scored 0.6262 held-out AUC against 0.6245 for the previous weights — beating them in 200 of 200 bootstrap resamples — and within 0.0005 of the 0.6267 ceiling a fully refit blend achieves.
The ablation also surfaced something more immediately useful to a player than any weight: how much the draft decides varies a lot by mode. Draft-based prediction was strongest in Heist and weakest in Knockout across both runs. Heist is heavily draft-decided; Knockout is mostly about how you play it. Treat that as a confidence dial on the whole tool rather than a reason to reweight anything.
The standing caveat: these weights chase the model's quality, so the suite gets re-run after major data growth — the June-to-August reversal is exactly why.
At Mythic and above, ranked uses the full reveal-and-counter draft: six bans, then a 1-2-2-1 snake where each team sees the other's picks as they land. Which means for most of the draft, the board is incomplete — and a model that can only judge finished 3v3s would have to guess at the missing slots.
This model doesn't guess. During training, every match is shown not only complete but also with random slots hidden — one pick known, two versus one, three versus two, every state a real snake passes through — with the hidden slots replaced by a learned "unknown" placeholder. So when it scores your candidate mid-draft, it is answering a question it was directly trained on: *across real ranked games where these exact brawlers were locked in, how often did that side end up winning?* The empty slots aren't filled with anything; their uncertainty is part of what the number means.
A useful consequence: early-draft model signals sit close to 50% and sharpen as picks land. That is honesty, not weakness — with one brawler on an empty board, nobody knows much, and the model says so. It also means blind-pick brackets (Diamond and below, where you never see the enemy team) need no special handling: your partial comp is scored against a fully unknown enemy, which is exactly the situation you are in.
Be clear about what this is not. The number is an average over how real opponents actually continued drafts — not a simulation of a perfect opponent finding your comp's sharpest counter. The match data also never records pick order, so the model cannot tell whether you or the enemy picks next from the same board. Reasoning about what you are exposing yourself to — "if I pick this now, what is their obvious answer?" — remains your job, and the guide's seat-position section covers how to do it.
Earlier versions offered a "Deep search" toggle that played out the remaining snake as a minimax against an optimally-countering enemy. It was retired when the model learned to read partial boards: the search ranked picks from a five-candidate shortlist chosen by a crude heuristic, ignored your roster and personal history entirely, and assumed perfect play from everyone — including your random solo-queue teammates. The always-on model signal prices in the rest of the draft from a million real games instead.
The meta pick is only useful if you own it and can play it. In the snake draft (Mythic up), enter your tag and mark which of your team's three picks is you (the "I'm pick" selector under Your team) — that pick, and only that pick, gains two account-specific signals and one hard filter. Your teammates' seats aren't restricted to your collection, because they aren't drafting from it. At Diamond and below the whole team picks at once, so there is no seat to mark: with your tag loaded, the suggestion list splits into a meta column and a personal column instead, and the personal column carries the same signals and filter.
The owned filter is the blunt one: candidates are restricted to brawlers you can actually field — ones on your account, plus this season's free "boosted" brawlers that Ranked hands everyone fully maxed. No more being told to first-pick something you do not have.
Mastery is how invested you are in a brawler — mostly build completeness (a star power weighs most, then a gadget, then each gear), plus a little comfort from your highest trophies on it. It is now shown for context rather than mixed into the pick score: it was a units mismatch, a 0-to-1 investment index averaged in with win-rate-shaped signals. What the *score* does instead is conservatively correct the aggregate meta baseline for how far your copy is from a fully built one. Power level is a hard gate first — below Power 9 (through Diamond) or Power 11 (from Mythic up) a brawler cannot be selected at all, so the owned filter drops it before it is ever scored. Above the floor, the score subtracts a measured deficit for the power gap (about 4 win-rate points at Power 10, 7.5 at Power 9, estimated within-player behind a placebo gate) plus smaller estimated deficits for a missing star power, gadget, gear, or released Buffy. Each missing gadget, star, or hyper Buffy gets its own small estimated adjustment, but only when the curated availability table says that Buffy exists for the brawler; an old roster response with no Buffy field stays neutral instead of being treated as three missing items. These deductions are capped and fade out as your own record on the brawler grows, because the record already carries the handicap. A missing standard hypercharge is still flagged but not priced, since the match log cannot measure it yet. The recommendation's YOUR COPY chips show each reason and the exact score movement.
Personal win rate is your own record with a brawler, pulled from matches in the dataset that your tag appears in, deduplicated and recency-weighted like everything else. Personal samples are tiny, so it uses a two-level back-off: your rate with a brawler on a specific map shrinks toward your rate with that brawler overall, which in turn shrinks toward the population's rate for that brawler on that map. It enters as a small, capped adjustment after the blend — net of your overall win rate, so it reflects the brawler and not just your general skill — and it scales with its own confidence, so two games nudge the score gently and sixty games speak up.
Separately, knowing your tag lets the tool use rank-bracket stats. A match's bracket is the median ranked tier of its six players, and a separate stats table is built for any bracket with at least 300 matches, each shrinking back toward the global table wherever a cell is thin. Mythic drafts are not Bronze drafts, and where there is enough data to say so, the numbers reflect it.
Because the API never exposes bans, ban value cannot be learned from outcomes. It is inferred instead: threat is 0.85 times the brawler's map win rate plus 0.15 times how contested it is — its pick rate on that map, capped. In practice that reads as "deny the strongest brawler on this map," nudged upward for the ones people actually keep picking. It is the least data-backed part of the tool, and it is worth treating as a starting point rather than an instruction.
Composition warnings are rule-based checks over your team's classes: no frontline to contest space in Brawl Ball, Gem Grab or Hot Zone; no long range and therefore weak to poke and throwers; three of the same class; Heist without burst to crack the safe; the enemy running two Tanks with no Marksman on your side to shred them.
The post-draft game plan is two halves, and the panel labels which is which. The strategic half — win condition, three per-brawler opening jobs, mode do's and don'ts, and how to cover a composition hole — is rule-based rather than learned. A small curated map registry can name exact positions where the geometry is known; Parallel Plays, for example, assigns its bottom-left near zone, top-right pressure zone and center rotation. Unprofiled maps deliberately get mode-level jobs without made-up directions. An exact curated matchup can also name who should match an enemy's route and who covers the vacated zone, so the swap stays coordinated. Aggregate head-to-head results never create movement instructions.
The other half is measured, and sits under “from the collected matches”: a head-to-head grid of each of your brawlers against each of theirs, each of your brawlers' win rate on that specific map, and your drafted pairs' win rate together. The model's win probability for the finished draft sits separately at the top, as the panel's headline. These read from the same matches and the same network that rank the pick board.
The honest caveats, because this is the half that looks most authoritative. Every rate shown is smoothed toward 50% by the same Bayesian prior the pick board uses, so a thin cell is pulled toward even rather than swinging wild — they are corrected rates, not raw tallies. Each one is shown with the effective sample behind it, “effective” because older matches are down-weighted, so the figure is not a match count. A cell too thin to say anything is left out entirely: blank in the grid, and simply absent from the map and pair lists, which is why those may list fewer than three. The model's win probability is the one figure with no sample attached — it is a network output, not a tally. A head-to-head number is a team result attributed to a pairing, not a duel win rate: it is how often your side won with both of those brawlers on the board. The “lean on” and “risk” callouts each have to clear a two-sigma bar, so a small sample cannot take a headline on noise alone; the “focus” callout is a plain average and only appears when it covers at least two matchups. And the model's read covers the draft alone — six brawlers, the map and the mode, and nothing about how either team plays. Below Mythic the enemy is hidden during the draft, so the head-to-head grid, the style clash and the model read only appear once enemy picks are on the board.
The limits deserve to be stated as plainly as the capabilities.
The draft is a slice, not the game. At the skill level this data comes from, both teams draft competently and the result is mostly decided by how the match is played. That caps how much any draft tool can possibly know — around 0.63 AUC here, and lower in modes like Knockout. A drafting edge is a small edge applied many times, not a win button.
There is no ban data anywhere, so ban recommendations are heuristic by necessity.
The population is skewed. The crawl is seeded from the top of the ladder, so the stats describe high-skill ranked play, mostly solo queue. Lower brackets play differently, and coordinated premades play differently again. Bracket-specific tables help where there is enough data; they do not erase the skew.
Balance changes create a lag. Recency weighting means the numbers start tracking a new patch quickly, but "quickly" still means after enough matches have been played and collected. Right after a balance change, treat the stats as trailing reality. Brand-new brawlers are the extreme case: with almost no games, the shrinkage correctly parks them near 50% until real data arrives — which reads as the tool being unimpressed when it is really just being honest about not knowing yet.
The model does not see map geometry, your teammates' skill, or comms. It knows a map as an identifier with statistics attached, not as walls and lanes. Exact position calls in the game plan are separately hand-authored rules for profiled maps, not something learned from match movement; mode-level fallbacks remain intentionally less specific. Best-of-3 series context is not modeled either.
Brawl Draft is an unofficial fan project. It is not affiliated with, endorsed by, or sponsored by Supercell.