Whiteout Buff Scheduler
SvS ministry appointment optimizer — Construction · Research · Troop Training

Turn a pile of sign-ups into the highest-scoring buff schedule — automatically.

Every SvS cycle your state runs three buff days and everyone wants a slot. Drop in the responses your members submit through Microsoft Forms and this tool builds the arrangement that earns the most total prep points — while never placing anyone outside a time they said they were free.

Free, no sign-up, no installs. The page runs entirely in your browser — the survey file never leaves your computer.

  1. 1
    Collect sign-upsMembers fill your Microsoft Forms survey: which buff days, when they're free, what speedups & crystals they'll bring.
  2. 2
    Drop in the exportDownload the Forms responses spreadsheet and drag it onto the scheduler. Everything is parsed locally.
  3. 3
    Download the scheduleGet an .xlsx with one sheet per buff day, a summary, and a notes page flagging anything to check by hand.

How it decides — in one line

It's a plumbing puzzle. One drop of water equals one booked appointment, the shape of the pipes encodes all the rules, the value stamped on each pipe encodes our priorities, and the water automatically finds the highest-scoring way through.

The tempting approach — hand the best slot to the biggest spender, then the next, and so on — looks reasonable but gets stuck. If two whales are both only free at 08:00, giving it to the slightly bigger one leaves the other scoring nothing, when a smarter swap would have scored both. Simple sorting can't see trades like that. So the whole board is modeled as one flow network:

                     pipe carries the
                     appointment's points
                            │
   ┌─────┐   ┌──────────────▼──────────┐   ┌───────────┐   ┌───────┐
   │ TAP │──►│         PLAYER          │──►│ TIME SLOT │──►│ DRAIN │
   └─────┘   │   (at most 3 drops)     │   │ (1 drop)  │   └───────┘
             └─────────────────────────┘   └───────────┘

        one drop that reaches the drain  =  one booked appointment

Pipes only exist between a player and the slots they actually said they're free for — so an illegal appointment isn't penalized, it's simply impossible. Availability, chosen days, one-player-per-slot, and the per-player cap are all built into the plumbing.

Three goals, in strict priority order

Priority 1
Most total pointsSpeedups score 30 pts/minute; Fire Crystals 2,000; Refined 30,000; Shards 1,000. A player's shared general speedups are counted once across the whole event.
Priority 2
Fill the most slotsAmong arrangements that tie on points, prefer the one that seats more people.
Priority 3
Be fairFavor players with barely any free time, and among equals, whoever signed up earlier. The web app can also honor specific times people request in the comments — when it costs nothing.

All three are baked into a single number stamped on each pipe — like place-value columns in one multi-digit total — so the optimizer settles points first, then fills, then fairness, in one solve.

Why it's provably the best, not just good

Every pipe has a hidden reverse pipe, so when a new drop reveals an earlier choice was a mistake, water re-routes backward — that backtracking is exactly what lets it discover the whale-swap on its own. And networks shaped like this carry a mathematical guarantee (total unimodularity): the best possible flow always lands on whole drops, never "half a player" in a slot. So the best water routing is the best real schedule — an exact optimum, not an approximation.

Verified. The solver was checked against exhaustive brute-force enumeration on 400 randomized instances and matched the true optimum every time. On a real state's July sign-ups, the in-browser engine and the Python pipeline produced identical column mapping, identical per-player records, and the identical optimum. Every generated workbook is re-opened and each assignment re-checked before a run reports success.

Two ways to run it

Easiest
In your browserLaunch the scheduler above (or download the single HTML file and double-click it). No Python, no terminal, nothing to install. Ideal for whoever runs your ministry.
Power user
Python pipelineSortingAlgorithm_v3.py runs the same exact solver from the command line, can fill an existing shared workbook in place, and exposes every option. See the README.