Hackathon judging you can check.
Plumb is a self-hosted hackathon submission and judging portal. It corrects for harsh and generous judges, says how sure it is about every ranking, keeps a tamper-evident log of everything that happens, and signs its results so anyone can verify them offline.
Built for DOGFOOD 2026, "build the platform that will judge you". MIT licensed.
The demo, 4:03, captions on screen, no voiceover, in five chapters: a finished event and its signed records, an organizer mid-judging, the integrity checks, a judge scoring, and a participant submitting.
Run it
git clone https://github.com/nothans/plumb cd plumb docker compose up # then open http://localhost:8080
There is no hosted demo on purpose: Plumb is built to run on an organizer's own machine, and it needs no network once it is running. It boots seeded with the DOGFOOD fixture data, three events at different stages, and ready-made logins printed on startup. The five-minute tour walks through it.
Verified, not just claimed
| Tiers | Checked by | Result |
|---|---|---|
| T1, T2 | The official DOGFOOD checker, run.py, byte for byte | 7 of 7 pass |
| T3, T4 | An extended checker in the same style: plain HTTP against the running portal, trusting nothing the server says about itself, with the requests behind every verdict listed | 39 of 39 pass |
| All of it | 82 tests, and CI running both checkers against a real docker compose up on every push | CI |
What is different
Honest rankings
A mixed model removes each judge's lean, and every score gets a 90% interval and a calibrated chance of beating the next one. On the DOGFOOD fixtures, the honest answer is that projects are statistically tied, and Plumb says so instead of printing a confident 1 to 40.
A proof, not a paragraph
A simulation on the fixture's own judge graph shows the method beats raw averages and z-scores wherever judges differ, ties them when they do not, and that its probabilities come true as often as they claim. A regression test keeps it that way.
A vote nobody can steer
Ballots are shuffled per voter, counts stay hidden from everyone, organizers included, votes are sealed in the log until the vote closes, and an open vote cannot be cut short.
Results you can verify
Every change lands in a hash-chained audit log the database will not let anyone edit. Published results, judge records and team certificates are Ed25519-signed and check out offline.