Rules

All of these are enforced by the code, not by moderation.

1

One listing per domain

A domain can appear on the board exactly once. It is a uniqueness constraint in the database, not a policy — a second submission of the same domain is rejected outright. You cannot list the same product three times and take three slots.

2

One vote per matchup, per season

Each account settles a given pair of products once per season. Re-rolling a matchup you have already voted on will not show it to you again, and a duplicate vote is refused by a unique index rather than by a check the client could race.

3

You must be signed in for a vote to count

Anyone can browse the arena, open either product and skip as much as they like — hiding it behind a login would be absurd. But a pick only moves the ratings when it comes from an account. With no money gate, an account is the only real cost we can put on someone trying to buy a rank. Pick a side while signed out and the matchup simply waits: your choice is held and cast the moment you sign in.

4

Provisional until 20 matches

Every listing starts at 1200 and is ranked from its very first match — nothing sits in a waiting room. Below 20 matches it carries a provisional badge, because a rating built on a handful of games is a thin sample and you should be able to see that on the row. It is a label, not a penalty: the badge comes off on its own, and the refit re-rates the whole board from every comparison at once, so a lucky early run does not survive contact with the rest of the season.

5

New entries move fast, established ones do not

The K-factor — how far one result can move a rating — starts at 40 for a new listing, drops to 20 after 30 matches and 10 after 100. A newcomer can find its level in an evening; dethroning something with a thousand matches behind it takes sustained, repeated wins.

6

You never judge your own product

If you own a listing, it is never handed to you as a matchup, and a vote on a pair containing it is refused server-side.

7

Votes cast faster than a human can read do not count

A pick made in under 400ms was not a judgement about two products. It is recorded — throwing it away would hide the pattern from the anomaly scan — but it is flagged and excluded from both ratings.

8

Rigging is detected on patterns, not volume

Two independent signals run over the vote history. Concentration fires when a handful of accounts supplied most of a listing’s wins. Capture fires when a cluster of accounts both picks one listing nearly every time it appears and barely votes on anything else — that second condition is what separates a sock-puppet campaign from a genuinely beloved product, because real fans range across the whole board. Listings that trip these are quarantined for review.

9

Seasons reset monthly, but not to zero

At each rollover every rating is pulled halfway back to the mean. Proven products keep a real edge into the new season; nobody holds the top spot on the strength of a month that ended.

10

The board rating is refit, not accumulated

The number on the board comes from Bradley-Terry, fitted over every vote in the season at once. A burst of votes cannot be permanently baked into it the way it could into a running Elo — the next refit sees that burst in the context of the entire history.

More on why any of this is shaped the way it is: about outmatch.