Standard Tournament Generator¶
Used in: 2. Build the workbooks · 3. Draw and fill rosters
Builds one venue's scoring workbook for one day of a standard tournament — every category tab, ready to score — from the plan you exported from the Tournament Calculator. There is no venue spreadsheet to duplicate and no category key, court number or team code to find-replace by hand.
It runs in the SAGE Standard Tournament Master workbook: make a copy of it for each venue-day, then SAGE → Generate event tabs in the copy. The calculator's Copy plan & open generator button, with the format on Standard tournament, does both halves of the handoff at once: it copies the plan to your clipboard and opens the master's copy dialog.
Standard tournaments only. A dual-meet plan is rejected; that belongs in the Dual Meet Sheet Generator.
While it runs, a progress bar under Generate shows how far it has got, and the box under it lists what it is building, each line stamped with the time since the start. If a run stops partway, the bar turns red and the sidebar says why: make a fresh copy of the master and generate there, since a copy cannot be generated twice. The sidebar's foot shows the generator's version, and SAGE → Help lists the versions of every SAGE script in the workbook.
One workbook per venue per day¶
A dual meet is one workbook. A standard tournament is one workbook for each venue on each day — Pickle for Sight's single day at two venues is two workbooks. You run the generator once in each, and tell it three things the plan can't:
- Which categories this venue runs. Tick them in the sidebar. If you exported one plan per venue, Select all ticks the lot.
- The venue's court labels, in schedule order —
1,2,3,4at one venue,5,6,7,8,9at the next. Their number is the venue's court count, and they are the court numbers the website shows. - Waves. Each category gets a wave number; wave 2 plays after all of wave 1 is finished. Mixed doubles defaults to wave 2 so a player entered in both a same-gender and a mixed category is never due on two courts at once.
What it builds¶
For each ticked category, a tab with:
- Every pair in one list, with a bracket number beside the first pair of each bracket, and the win/loss/score/quotient formulas already wired up.
- A score grid per bracket. Bracket sizes can be uneven — 13 pairs in three brackets is 5-4-4 — and each grid is sized to its own bracket.
- The whole playoff ladder the calculator planned, including the byes it gives group winners, down to the bronze and final. Each match works out where its winner goes, so the ladder fills itself in as results come in.
- Two fill-in areas: the roster, which SAGE → Import bracket draws fills from the Bracket Generator's text files (see below), and the qualifier draw, where group-stage qualifiers are drawn by lot into playoff slots. The draw lists which finisher each row is waiting for, and the slot table beside it lists every slot the draw can land on. A category with two brackets has no draw: its semifinals are a crossover (Br 1 #1 v Br 2 #2, Br 2 #1 v Br 1 #2), so the slots come filled in and you only type the names.
Plus a MATCHES tab, laying out every category's matches side by side,
one row per round. Each block's header names the bracket whose matches it
holds (HIMD Br 1, HIMD Br 2, …), and the round robins run in the order
of SAGE's bracket guide. And an empty SCHEDULE grid sized for the day,
with court headings and start times but no matches in it.
It also fills in Variables, Title and Reference for Players, and builds
the readout tabs — Court Control, Timeline, and the CSV and
STANDINGSCSV tabs the live sync publishes — and an empty ATTENDANCE tab,
ready for event attendance to fill in.
When it finishes, it renames the workbook to the plan's date and title
followed by the facility label in capitals, e.g.
2026-09-27 Pickle For Sight Tournament - PCPH ANNEX. A run that fails
partway leaves the name as it was.
Packing the schedule¶
The generator doesn't place matches on courts; you do, by copying from
MATCHES into SCHEDULE. That keeps you in charge of which categories share
the courts when. The steps, in order, are in
Usage step 2. The rules:
- Select whole court blocks on
MATCHES(both rows of the slot, starting at a block's left edge) and paste them onto aSCHEDULEslot with Paste special → Formula only. The label beside each row (RR 1,SF,F + B) is to the left of the block, so it doesn't come with it. - Keep to the rules nothing checks for you: no pair twice in one slot; a playoff round only after the round before it has finished, with a free slot after the round robin for the qualifier draw; a final and its bronze in the same slot; mixed doubles after the same-gender categories.
- Leave unused courts blank or
-. - After SAGE → Fill match numbers, each
venue takes its own thousand: the first venue
1000(matches1001onward), the second2000, and so on. Nothing checks the venues against each other. - On
Timeline, the total should equal the match count onMATCHES, and no cell should show more than 1.
The generator's execution log carries a suggested layout that follows those rules, if you'd rather copy one than work one out.
Filling the rosters from the draw¶
Once the brackets are drawn (see Usage step 3),
SAGE → Import bracket draws fills the rosters from the Bracket Generator's text exports, so
no pair is typed in twice. Drop in every category's .txt file at once — they
are read in your browser and never uploaded anywhere.
Per category it writes three things and nothing else:
STEP 1 · NAMES— both players of every pair, in draw order: bracket A's pairs first, then bracket B's. That order is what puts each pair in the right bracket on the tab, in the standings and in its score grid.STEP 3 · RANDOMIZED CODES— that category's codes, in order. Unlike a hand-built roster, filling these in order is correct here: the draw has already done the randomising, and shuffling again would break the bracket assignment it made.- Three lines beside the roster recording the seed, the draw number and the filename, so a tab can be traced back to the draw it came from.
Each file is matched to a tab by its category line — the key (HIMD) or the
display name (High Intermediate Men's Doubles), either case. Anything it
can't place gets a dropdown to pick the tab yourself; a file left unassigned
is skipped rather than guessed.
Everything is checked before anything is written, and every problem is
reported at once: the wrong number of pairs, the wrong number of brackets,
bracket sizes that don't match how the tab was built (5-5-3, but tab "HIMD"
was built for 5-4-4), an empty bracket, the same pair twice, or two files
claiming one tab. A tab that already has names is refused unless you tick
Replace existing names, which is how a re-draw gets applied.
A pair line with no separator between the two players — a team name, say — lands whole on the pair's first row, leaves the second blank, and warns.
The item stays in the menu after a successful import, so it can be run again.
Where's the qualifier draw? Untouched. That is a second draw, made after the round robin from the standings, with no file to import — you still fill it in on the day. See Usage step 8.
If it refuses to run¶
It checks everything before writing anything, lists every problem at once, and leaves the workbook untouched. Common ones:
- The plan is a dual meet.
- A court label is missing or repeated.
- No category ticked.
- A playoff too deep — a ladder that would need a round before the Round of 32. The message names the category; switch it to wildcards, or use fewer brackets.
- A bracket of more than 13 pairs. Add brackets.
- The workbook has already been generated. Like the dual-meet generator, it builds several tabs in place, so it runs once per workbook. Start again from a fresh copy of the master.
Technical: how the generator is built