Provable picks

Picks you can prove

Save your picks and Comped hands you a ten-character receipt — a fingerprint of that week's sheet that gives away nothing about it. Post it in the group chat before kickoff. Once the games lock, anyone can check that the picks showing are the ones that code stands for: not just the commissioner, not just us.

✓ SEALED UNTIL KICKOFF✓ APPEND-ONLY LOG✓ ANYONE CAN CHECK

Why it matters

Every pool has this argument.

The claim

“I had that one”

Everyone remembers their picks a little better on Monday. The code sitting in the chat from Saturday came out of that week's sheet and nothing else — after the games lock, the sheet either reproduces it or it doesn't.

The commissioner

The person running it plays too

Nobody can read anyone's picks before a game locks — not the commissioner, not Comped through any public page. All that exists in the meantime is the fingerprint, and a fingerprint can't be turned back into picks.

The late edit

A pick that changed after kickoff

Every save appends a new code and nothing ever overwrites an old one — the database itself refuses. A pick altered after its receipt was recorded reads as a mismatch to anyone who checks.

Check a receipt

Check anyone’s receipt right now.

Paste an entry link and the week. Everything below comes straight from Comped’s public receipts endpoint — the hash comparison runs in your browser, not on our server, so you aren’t taking our word for the answer either.

How a receipt works

Four steps, and none of them ask you to trust us.

  1. 01

    Save picks, get a code

    Every time you save, Comped lines up your picks for the week in a fixed order, adds a random salt, and takes a SHA-256 fingerprint of the result. The first ten characters of that fingerprint are your receipt code, shaped XXXXX-XXXXX.

  2. 02

    Post it before kickoff

    Drop the code in the group chat. The chat's timestamp is the witness — it shows the code existed before the games started, and the code can't be produced without the picks.

  3. 03

    Sealed until each game locks

    Nobody can see anyone's picks until each game locks — not the commissioner, not us through any public page. Only the fingerprint is on record, and a fingerprint can't be reversed into picks.

  4. 04

    After kickoff, anyone can check

    Once every game you picked has locked, the exact text that was fingerprinted and the salt are disclosed. The math is public: hash them together and you get the code back — this page does it in your browser, or you can run it yourself anywhere.

The math, in public

Here is a whole receipt, start to finish.

Two picks in one week — one of them carrying a confidence value — lined up in the fixed order, then the salt. This exact example is hashed by our test suite on every build, so it can never quietly stop being true.

THE PICKS, IN THE FIXED ORDER · THEN THE SALT

v1|k7m2p9qx4v|1|0f3c1a2e-5b6d-4c7e-8f90-1a2b3c4d5e6f:2b7e1c9d-3a4f-4b5c-9d6e-7f8091a2b3c4:{};4a1b2c3d-6e7f-4a8b-9c0d-1e2f3a4b5c6d:9e8d7c6b-5a4f-4e3d-8c2b-1a0f9e8d7c6b:{"confidence":2}
|3f9a1c7e5b2d4680a9c3e1f7b5d2c4a6

↓ SHA-256

9242f35a5fe8ba56cedefa73dd5ee80971327e33b86eb3dc05458e67ecbb04c6

↓ FIRST TEN CHARACTERS

9242F-35A5F

RUN IT YOURSELF · ANY TERMINAL WITH SHASUM

printf '%s|%s' 'v1|k7m2p9qx4v|1|0f3c1a2e-5b6d-4c7e-8f90-1a2b3c4d5e6f:2b7e1c9d-3a4f-4b5c-9d6e-7f8091a2b3c4:{};4a1b2c3d-6e7f-4a8b-9c0d-1e2f3a4b5c6d:9e8d7c6b-5a4f-4e3d-8c2b-1a0f9e8d7c6b:{"confidence":2}' '3f9a1c7e5b2d4680a9c3e1f7b5d2c4a6' | shasum -a 256

It prints that same hash, character for character. The checker hands you the same command for any real entry once its games have locked — nothing about the calculation is ours to keep.

The honest version

What it proves, and what it doesn’t.

What it proves

  • The picks showing after kickoff are the ones fingerprinted before it. A pick changed after the fact — by anyone, us included — reads as a mismatch.
  • The receipt log can't be edited, only appended. That's enforced in the database, not just by policy: every save adds a row, nothing updates or deletes one. (The one exception: erasing your entry erases its receipts with it.)
  • Your picks stayed private while it mattered. The salt and the exact text are withheld until every game you picked has locked, so the receipt gives nothing away before kickoff.

What it doesn’t

  • It does not prove when you decided. The chat timestamp on the code is the witness for that; the fingerprint only proves the picks match.
  • It can't stop a commissioner from deleting an entry outright. That isn't hidden — it's visible on the roster — but it's a different problem than editing picks.
  • It covers picks, not squares. A squares board is claims on a grid, and it writes no receipt.

Run a pool where the picks prove themselves.

One link. No accounts. A receipt on every save.

Start a free pool →

Or see how that compares →