Side quest · In development · Working name

One argument a week, settled by bracket.

Bracket takes one question, like “What’s the greatest Taylor Swift song?”, and settles it with a seeded, 64-entry knockout bracket. One round a day, one vote per matchup, and an argument under every pairing.

Bracket logo: a bracket of dots whose winning path is picked out in terracotta

The idea

Fandoms love to argue about rankings. Bracket gives that argument a shape: each week, one question and 64 contenders, knocked out head to head over six rounds until one is left.

It’s about fandom, not forecasting. You back your favourite and make the case for it: the best burger place in your hometown should beat the chain down the road, and you’re the one who has to say so.

Tools for making brackets already exist, but they’re widgets you embed for your own audience. This is meant to be a destination: one carefully seeded bracket a week, with a debate under every matchup. The bracket is the argument engine. The daily rounds are the reason to come back.

It starts with music, and the working launch bracket is the greatest Taylor Swift song.

What makes it different

Seeded, not random. Entries are seeded from public signals like streams and chart history, in the standard 1-versus-16 layout, so an upset actually reads as an upset.
Votes are final. Pick a side, then lock it in. No take-backs. Everyone sees how many votes are in, but the split only shows once you’ve voted.
Vote first, then argue. Every matchup gets its own debate the moment the pairing is set. Posting needs a vote in that matchup: no arguing from the fence.
Built for brigades. One vote per person per matchup, rate limits, device checks and flags for suspicious voting, so cheating is expensive and easy to spot. Flagged votes are reviewed before any are thrown out.

How a week works

Sixty-four entries, six rounds, one champion. Browsing is open to anyone; signing in with Google or Apple lets you vote and post, under a display name you choose.

01 The reveal The week’s question and its 64 entries go up: four regions, seeded 1 to 16 from a public signal, so an upset reads as an upset.
02 Pick a side Vote in any matchup you care about. One vote each, and votes are final: pick, then lock it in.
03 See where you stand Once you’ve voted you see the split (“You’re with the 61%”). Everyone else just sees how many votes are in.
04 Make the case Every matchup has its own debate, and you have to vote before you can post. No arguing from the fence.
05 Come back tomorrow Winners move on and the next round opens, one round a day. Your picks page shows everyone you’re backing: leading, trailing, through or knocked out.
06 Crowned At the end of the week there’s a champion, and then a new question.

In use

From the current build, running a practice bracket, the best food name for a dog, so the vote counts are still at zero.

Bracket home page: the week's question on a dark panel, a countdown to the end of the round, and the round's matchup tiles
The home page. This week’s question, the countdown to the end of the round, and every open matchup. The vote split stays hidden until you’ve voted.
The full bracket as a two-sided tree: four regions of seeded matchups, the Final Four and a champion circle in the middle
The full bracket. Four themed regions, seeded 1 to 16, meeting in the Final Four. The champion is crowned at the end of the week.
A voting window over the bracket: 1 Biscuit against 16 Gravy
Voting without leaving the bracket. Open a matchup, pick a side, lock it in, and go straight to the next one until the round is done.
A matchup page: Maple against Truffle with a one-line take on each, the lock-in bar and the debate, which asks you to vote first
A matchup and its debate. A one-line take on each side, then the argument, which opens once you’ve voted.
Voting on a phone: 6 Peaches against 11 Bao
On a phone. Voting is a sheet that slides up over the bracket.
The bracket on a phone, with a tab for each round and the matchups listed by region
The bracket on a phone. A tab for each round, with matchups listed by region.

Run with Claude

Like Kantan, Bracket is built to be run by talking to Claude. Each week Claude drafts the 64 entries, with seeds and a one-line reason for each; I approve, swap and reseed.

There are two ways to run it, on one API: an admin screen, and an MCP server that gives Claude the same controls. Setting up a bracket, scheduling its rounds, reviewing suspicious votes and moderating comments can all happen in conversation.

The code is written with Claude Code, and the whole project is planned and tracked in Kantan.

What it runs on

Front end React, served as a static site from Amazon S3 through CloudFront.
API Serverless: API Gateway and Lambda, so it costs next to nothing until people show up.
Data DynamoDB for votes and comments, with live totals kept up to date from a stream.
Sign-in Google or Apple. Your real name never appears; you pick a display name.
Sharing Share cards for each bracket and matchup, drawn on the fly for X, Facebook and the rest.
Language TypeScript end to end, including the infrastructure, which is defined in code.

Where it is

The first version is built and running on a test site, with automated tests and a practice bracket for trying out every screen. Next comes the first real bracket.

Planned A real name “Bracket” is a working name. A proper name and its own domain come before launch.
Planned The first live bracket The greatest Taylor Swift song, curated by Claude and me.
Planned More categories Film, food, sports and more, once the weekly music brackets have a regular crowd.
Planned An app A phone app later. Apple sign-in from day one keeps that door open.

Got an argument that needs settling?

Bracket is still in development. If there’s a question you’d want settled by 64 entries and a week of voting, tell me.

Suggest a bracket