A screen in the venue shows a code. Scanning it puts you in the queue, and each round pairs everyone waiting in one pass. You give your criteria rather than your name, and who you were matched with appears only after both of you accept.
The code is proof of presence. Scanning the code on the venue screen shows you are in the room now, which an app that only knows your location cannot establish.
The hard part of pairing people in a room is not the algorithm. It is that the moment you ask for a name, most of the room is already gone, and that the system cannot see most of what happens in that room.
The code on the venue screen rotates on a timer, so it proves both the place and the time. A returning visitor is recognized for the rest of the session and skips straight back to the queue.
Scanning again is not required to play again. A venue session lasts hours; after a game, one button puts you back in the queue. The system never asks whether the game is over, because it has no way to know.
Pairing on arrival sounds faster and is worse: whoever is already waiting wins by default, and a stated preference never gets a chance to apply. Collecting for a minute and pairing the whole queue at once costs a short wait and buys a better set of pairs.
A name is not something you can judge on (it reveals neither skill nor acquaintance), but it is enough to work out who turned you down. The criteria are the opposite: they are the one thing worth judging, and several people in the room share them.
| Stage | Criteria | Name | What you are answering |
|---|---|---|---|
| Waiting | — | — | Nothing. The screen shows only how many are waiting and your position |
| Paired | Shown | Hidden | Whether you can play now, not whether you want this particular person |
| Both accepted | Shown | Shown | Nothing. Both names are on your phone and on the venue screen |
Hiding the name removes the act of declining. You cannot turn down someone you have not been shown, and asking for another opponent stops meaning a judgment about a person. Names are generated, never collected: no real name, phone number or email is asked for at any point.
Billiards is the first place this runs, not what it is for. What changes between activities is the size of a group and what counts as a good pair; what stays is everything else: the code on the screen, the round, the queue, the two-stage reveal. Pairing algorithms are the library, and a use case is a set of parameters chosen from it.
| Activity | What a pairing is | Algorithm | What it asks for |
|---|---|---|---|
| Billiards, table tennis, go | One opponent | Two-person pairing | Handicap or rating |
| Board-game cafe | The headcount the game requires | Groups of N | Preferred length or complexity |
| Climbing gym | A belay partner, required for safety | Two-person pairing | Grade and certification |
| Badminton, tennis courts | Four for doubles | Groups of N | Level |
| A queue for one table | Whose turn it is | Rotation by arrival | None |
The venue is not the unit of expansion; the activity is. One venue can run several: three-cushion and four-ball as separate queues, doubles alongside singles, a bracket on a quiet evening. Each is a set of parameters, and the same room supplies all of them.
Stating what is out of scope is more useful than stating features, because most of these are deliberate omissions rather than unfinished work.