Automatic scheduling
Generating fixtures decides who plays whom. Scheduling decides when and where. FairGame does the second part with a constraint solver: you describe the tournament, it places every match.
What it guarantees
Whatever else it does, a produced schedule never contains:
- two matches on the same pitch at the same time;
- a team playing two matches at once;
- a match outside its pitch's availability;
- a violation of a scheduling rule you marked as required.
These are hard constraints. If they cannot all be satisfied, the solver tells you so instead of shipping a schedule that quietly breaks one.
What it optimises for
Within the schedules that are valid, it prefers ones that are better to play and better to run:
- Even rest. Teams get comparable gaps between their matches, rather than one team playing three in a row while another waits four hours.
- Compact days. Pitches stay busy and the day finishes as early as the constraints allow. Idle pitch time is what turns a seven-hour tournament into a ten-hour one.
- Predictable shape. Where a rule asks for it, a group's final round kicks off simultaneously so nothing is decided by knowing the other result.
Running it
Auto-scheduling runs per tournament day, in three stages you can see:
- Solve — the solver works on the day. Large tournaments take seconds to a couple of minutes; the run reports progress and can be cancelled.
- Review — you get a proposed schedule to look at before it replaces anything.
- Apply — the proposal becomes the tournament's schedule.
Nothing is applied without you accepting it, and clearing a day's schedule to start again is a single action.
When it cannot find a schedule
An unsolvable day is nearly always over-constrained rather than broken. In order of likelihood:
There are not enough pitch hours. Pitches × available hours ÷ match length is your ceiling. If the matches do not fit, no arrangement of them will. Add a pitch, extend the day, shorten matches, or reduce the field.
A rest requirement is too generous. A 120-minute rest for teams playing four matches needs a long day. Rest is the most common cause of an impossible schedule; lower it and see whether the day solves.
Availability is narrower than you meant. Check each pitch's windows — an availability set for Saturday and never adjusted for Sunday is easy to miss.
Rules conflict with each other. Two teams that must both finish by 14:00 and must both play four matches with 90 minutes rest may be jointly impossible. FairGame reports which constraints it could not satisfy together.
Partial and pinned schedules
You do not have to hand the whole day to the solver. Matches you have already placed by hand can be kept where they are and the rest solved around them — useful for a final with a fixed kick-off, an opening ceremony slot, or a fixture a club has already travelled for.
Re-solving during the tournament
A pitch closing at midday is a normal event. Mark it unavailable and re-solve the remaining day: played matches stay played, and the rest are re-placed around what has already happened. Review the proposal, then publish the change and announce it — the schedule people are looking at is on their phones, and it does not refresh itself in their heads.