How the ranking works

How Pull or Skip turns yes-or-no votes into a ranking: the Wilson lower bound, why the deck is shuffled for every session, why a character needs 50 votes before it gets a rank, and what the numbers do not mean.

The question, and why it is that question

Every vote on this site answers one thing: shown a character, would you spend money on that banner? Not whether they are strong, not whether they are well designed, and explicitly not whether they are attractive. That framing is the reason every character in all four games is here with no filtering, and it is also the reason the results are interesting — “would you pay” is a question with a real answer that varies, where most character polls collapse into a popularity contest nobody learns anything from.

A vote is binary. There is no scale, no half-mark, no abstain. That costs some nuance and buys something better: every vote is the same size, so a character’s score is a proportion rather than an average of numbers that different people interpret differently.

Why a raw percentage is the wrong ranking

The obvious ranking is the share of yes votes, sorted descending. It fails immediately. A character seen once and voted yes once has a 100% pull rate, and would sit above every character on the site. One vote is not evidence, but a percentage does not know that — it reports 100% with exactly the same confidence whether it saw one vote or ten thousand.

The fix is to rank by how low the true rate could plausibly be, rather than by the observed rate. This site uses the lower bound of a 95% Wilson confidence interval: roughly, the worst case still consistent with the votes we have. A small sample has a wide interval, so its lower bound is far below its observed rate; a large sample has a narrow one, so its lower bound sits close.

The same observed rate, ranked very differently depending on how much was seen.
VotesObservedRanked byMargin
1 of 1100.00%20.65%±39.67%
9 of 1090.00%59.58%±19.31%
94 of 10094.00%87.52%±4.85%
9,400 of 10,00094.00%93.52%±0.47%

A single yes vote scores 20.65%, not 100%. Ninety-four yes votes out of a hundred score 87.52%. The same 94% share measured over ten thousand votes scores 93.52%. Nothing here is a penalty for being new; it is a refusal to claim more than the votes support.

The part that surprised us

Wilson’s lower bound is strictly increasing in yes votes for a fixed number of votes. So once every character has been seen about the same number of times, ranking by Wilson gives exactly the same order as ranking by raw percentage. All the machinery buys precisely one thing: protection against unequal sample sizes.

That is not nothing — it is the difference between a sane board and a nonsense one in the first 48 hours, on a per-game view, and every time a new character arrives. But it is worth being clear that on a mature, evenly-sampled board the confidence interval is doing no reordering at all. Most of the work is done somewhere else entirely.

Where the work is actually done: the shuffle

Every session deals the roster in a fresh random order. This is the single most important decision in the whole ranking and it has nothing to do with statistics.

If the deck were fixed — alphabetical, or newest first, or anything stable — the characters near the front would collect thousands of votes and the ones near the back would collect a handful, because most people stop partway through 302 characters. Simulated across 8,000 sessions, a shuffled deck reproduces the true ranking with a rank correlation of 0.99. A fixed deck manages 0.42.

The unsettling part is that the site looks completely normal either way. There is no error, no warning, nothing on screen that differs. Only the rankings are wrong. That is why there is no fallback ordering anywhere in the code: if a shuffle seed is missing, one is generated, and the alphabetical option does not exist to be reached for by accident.

Why 50 votes, and what happens below it

A character with fewer than 50 votes is held off the main board. Their page shows the vote count but no percentage and no rank, because a percentage over a handful of votes is a coin flip presented as a fact.

Below the threshold, characters are ordered by a Bayesian average instead, which starts a character at the roster-wide mean and moves away from it as votes arrive. The reason is practical rather than theoretical: Wilson starts a zero-vote character at zero, which is indistinguishable from universally hated. Against a roster averaging 60% over thousands of votes, a genuinely excellent new character scores about 0.21 on its first vote and needs tens of votes just to reach parity. A new character ships roughly every six weeks, and that is exactly when people visit, so a brand-new unit sitting at the bottom of the board “because it has three votes” is the common case rather than an edge case.

Two things follow that are easy to get wrong, and this site treats both as rules. A provisional character never displays a rank, because a rank implies a position among peers that 50 votes has not earned. And a character with no votes at all is absent from the board rather than sitting at 0%: zero means nobody would pull for them, which is the opposite of not knowing.

One vote per character per session

Each session carries a signed cookie, and the server keeps a record of which characters that session has already been counted for. Replaying a deck, refreshing mid-run or reopening the page never counts a character twice. The undo button is a convenience on screen only — a vote already sent stays as it was first cast.

This is deliberately not identity. Nobody signs in, nothing is linked to a person, and clearing your cookies gets you a new session. It stops the accidental double-counting that would otherwise dominate the numbers, and it is not proof against someone determined to vote twice. A public poll with no accounts cannot be, and claiming otherwise would be the dishonest part.

What these numbers are not

Check it yourself

Every ranking is published as JSON under CC BY 4.0, including the vote counts, so none of the above has to be taken on trust. Rows below the threshold carry their counts with a null rate and a null rank, matching exactly what the pages show.

The writing goes further into what the roster data does and does not support, and about covers what the site is and where the character data comes from.