Most scheduling tools are a calendar with team names typed into it. This is a constraint engine: you tell it the rules, it finds a schedule that satisfies all of them at once, and it does it the same way every single time you ask.
Rules in
Schedule out
engine · 84 games · 0 clashes
01 · Determinism
Deterministic is a boring word and boring is the entire point. Feed the engine the same teams, the same venues, the same rules, and you get the same schedule back — this run, next run, and next Tuesday when a board member asks you to run it again in front of them.
That matters the first time a parent gets loud. When a coach asks why his U12s are playing at 8am on back-to-back Saturdays, you don't shrug and blame the software. You point at the rules that produced it: the field wasn't free at ten, the older division had it, and his team had already taken its share of the late slots. The schedule is defensible because it's reproducible.
It also means you can change one thing and see exactly what that one thing did. Nothing drifts underneath you while you're not looking.
02 · Formats
Single round-robin, double round-robin, and single-elimination playoff brackets. That covers the shape most leagues actually run: everybody plays everybody once or twice, the standings sort themselves out, and the top finishers go into a bracket at the end.
A season can be built out of more than one of those. A regular-season phase followed by a playoff phase is a normal setup here, not an advanced one — the bracket seeds off the standings the round-robin produced, and each phase carries its own dates, venues, and rules.
We're not going to claim formats we don't have. Swiss pairings, group pools, and double elimination aren't in the launch build. If that's your season, tell us and we'll be straight with you about where it sits.
03 · Rules
Rest days between games. Venue blackouts for the two weeks the field is being resodded. Maximum games per day and per week. Home and away balance. Coaches who run two teams and can't be in two places at once. Doubleheaders when you want them, and never when you don't. The engine holds every one of them at the same time, not in priority order, not best-two-out-of-three.
You author them with forms, not a config file. Every rule you've added sits in a list you can read, edit, and delete — one row per rule, no syntax to learn. Nothing is buried in a preferences pane you'll rediscover in March.
When a rule genuinely can't be satisfied — and sometimes one can't, because there are only so many Saturdays in October — the engine names the rule that blocked it. Then it's your call which one gives.
04 · The grid
The engine is very good and it is not the head of your league. When you want a game somewhere else, you put it somewhere else.
The grid lays the season out by day and venue. Pick a game up, drop it in another slot, and conflicts highlight as you go: field already taken, team playing twice in a day, a coach who would now be at two games at once. You aren't guessing whether the move was legal — the grid tells you before you let go.
And everything you do by hand is a change like any other change, which means it lands in the version history with your name on it and undo will take it straight back out.
Questions
Get started
Twenty-two teams on four fields is an ordinary season here. Bring yours and see what it does with them.
Start with 21 days of Plus, free. No card up front.