๐Ÿ›  The Toolsโš– The Tribunal๐Ÿ“‹ Run Sheet๐Ÿฆธ Hero Lab๐Ÿ“Š The Data

The Data

Run your own numbers. This is the same audited dataset the whole site is built from โ€” every custom, ranked and quick-play game we've harvested since Feb 2025. Download it, hand it to Claude (or Excel, or Python), and check our math. If you find something we got wrong, the record is open.

Downloads

data/games.csvยท one row per player per game ยท the file most questions need

Deduped and analysis-ready: date, mode, map, player, primary hero + role, result, K/D/A, damage, healing, MVP/SVP. Humans only, best source per game (full lobby detail where we have it, feed otherwise).

data/rivals.dbยท full SQLite database ยท the power tool

Everything, raw: matches, match_players (incl. bots), hero_lines (per-hero playtime within each game), rank_seasons, players. Claude Code and Claude desktop can query SQLite directly.

data/rank_seasons.csvยท per-season peak ranks per account

Every account's rank arc across seasons (peak tier + rank score). Cross-platform ranks are separate ladders โ€” compare with care.

The rules that keep the numbers honest

True strength โ€” why we don't just use win rate

We pick the teams every week, and we pick them to be fair. That quietly breaks win rate: balance a weaker player onto a strong side and their win% climbs toward 50, split the best players apart and theirs falls toward 50. Everyone converges on 50% and the number stops measuring the player. Pair ("chemistry") win rates are worse, because who you're paired with is exactly the thing being chosen.

So the site also publishes data/strength.json โ€” one rating per player from a Bradley-Terry model (ridge-penalised logistic regression, the same family as chess ratings, generalised to teams) fit across every decisive custom at once. Each player's rating is estimated in the presence of their teammates and their opponents, so placement cancels out. It also composes, which means it can price a line-up that has never been played.

Fields: strength (points, 0 = lobby average), lo/hi (90% bootstrap range), trueWin (win% if we swapped an average player for this one), rawWin (plain win rate), bias (rawWin โˆ’ trueWin: positive = the balancer has been flattering you). Also calShrink (confidence shrink, because the raw model overstates blowouts), and cvModel/cvNaive/cvElo โ€” forward-tested log-loss for the model vs win-rate vs Elo, where 0.693 is a coin flip and lower is better. Built by data/strength_model.py; group beliefs about never-played comps live in data/priors.json.

Hand it to Claude โ€” copy this first

Paste this prompt with the CSV (or point Claude Code at the URLs) and it inherits our conventions instead of re-learning our old bugs:

I'm analyzing my friend group's Marvel Rivals data from marvelgooners.com/data/ (games.csv; full SQLite at rivals.db).
Rules the numbers must follow:
- One row per player per game (already deduped). mode='custom-game' = our Friday customs; 'competitive' = solo ranked; exclude other modes unless asked.
- Win rate = wins / (wins+losses). Draws are NEUTRAL (excluded from the denominator, but report them in records as W-L-D). Per-game rates (kills/game, MVP rate, attendance) DO include draws.
- Teams were deliberately balanced, so win rate is confounded by placement โ€” if you want player strength, fit a Bradley-Terry model on team compositions rather than averaging win rates.
- Blank damage/healing = missing lobby detail (newest games), NOT zero โ€” exclude those games from damage/heal averages.
- primary_hero is playtime-based. hero_role: Tank / DPS / Healer.
- Win rate is a TEAM outcome (teams are re-balanced weekly to be fair) โ€” don't present it as individual skill without saying so.
- Cross-platform ranked ladders aren't comparable (PC and console queue separately).
Sanity anchors to verify your load: ~600+ custom games, ~11 tracked players, record runs Feb 2025 โ†’ present.

Good first questions

Data regenerates with every site update โ€” same pipeline, same audits. Fine print: this is our private lobby's harvested record; be chill with it. Receipts live at marvelgooners.com.