Here's what nobody tells you when you volunteer to do the schedule. You aren't really building a schedule. You're deciding who gets let down, and by how much.
That sounds grim. It isn't, once you see it clearly. Every season has more wants than good time slots. Somebody plays at 10:15. Somebody plays twice in one week. Somebody's request doesn't get honoured. The real question is whether you decide those things on purpose or let them happen by accident.
I got into this running and supporting recreational hockey leagues, back when the schedule lived in spreadsheets, formulas and a lot of manual checking. As I write this, LeagueNav has scheduled 54,291 games since 2021, for leagues, tournaments and facilities. There's no trick that makes everyone happy. There is a way to make tradeoffs you can explain and defend, and that's most of the job.
What a tradeoff actually is
A tradeoff is what happens when two things you want can't both be true.
You want every team to get a fair share of the good times. You also want your top division in prime time, because they draw the most people or pay the most. You can't fully have both, because there are only so many 7:00 slots. Every yes you give one team is a no somewhere else.
That's the whole idea. The trouble is that a real season has dozens of these, and they're all tangled together.
Musts, shoulds and nice-to-haves
Before you can trade anything, you need to know what's negotiable. I sort every rule into three buckets.
Must. Break it and the schedule is wrong. The facility is closed that night. A team can't play on a religious holiday. A coach can't be in two places at once.
Should. You'll bend it if you have to, but you'll need a good reason. One game a week. No team gets three late starts in a row.
Nice to have. You honour it when it costs nothing. A team would rather play Tuesdays. A captain asked to avoid a wedding weekend.
The biggest mistake is treating everything as a must. Stack up enough musts and there is no schedule. The second biggest is treating everything as a nice-to-have, which is how the loudest team ends up with the best times.
Six tradeoffs that show up almost every season
These are the ones I'd want settled before anyone builds a single game. None of them has a right answer. Every one has a wrong way to handle it, which is not deciding.
1. Who gets prime time
When the good slots are scarce, you can spread the late starts evenly across everyone, top division included. Or you can give prime time to the divisions that draw or pay the most.
Spreading evenly is easier to defend. Protecting the top division is easier to sell. What doesn't work is a bit of both, depending on who emailed last. Pick one. Then when the first complaint about a 10:15 start shows up, you already have your answer.
2. Publish it all, or a few weeks at a time
Publishing the whole season up front gives teams certainty. They can book their lives around it. You'll also live with more reschedules, because things change and the schedule is already out there.
Publishing a few weeks at a time keeps you flexible, but teams can't plan ahead, and some will tell you about it.
If your facility time is locked in early, publish it all. If it trickles in or shifts a lot, publish in blocks and say so at the start.
3. Fill every slot, or keep a rhythm
You paid for the time. It's tempting to use every slot, even if a team plays twice one week and then sits for ten days.
The other option is one balanced game a week for everyone, even if some slots go unused.
This one is really money against experience. Empty ice, turf or gym time costs you right away. A lumpy schedule costs you more slowly, when players get tired of it. Neither is wrong. You should just know which one you picked.
4. Which promise breaks first
Sometimes promises collide. One team was promised a set number of home games at their home facility. Another promise says nobody plays back-to-back nights. Some weeks you can't keep both.
Decide ahead of time which one gives: home-site commitments first, or rest and travel first. Write it down. When it comes up mid-season, you're applying a rule, not making a call at 11 at night with everyone watching.
5. How long you keep taking requests
Honouring requests feels generous. Keep taking them all season, though, and the schedule becomes a negotiation that never ends. Every request you accommodate moves somebody else.
The alternative is one deadline. Requests before it get weighed. After it, the schedule is final, except for real emergencies.
My bias is to set the deadline. A schedule people stop lobbying against is worth more than one that's slightly more accommodating.
6. Who gets to say yes
Something changes mid-season. Who approves the fix? One person who makes the call and records why, or a committee?
A committee feels safer. It's also slow, and schedules don't wait. If a facility cancels on Monday for Thursday, there's no time for a board vote. My advice: one person with clear authority and the habit of writing down the reason, with the committee reviewing the pattern afterward.
Why the loudest request usually wins
If you don't decide these up front, they still get decided. They get decided by whoever emails most, whoever knows the scheduler, and whoever complains last before you hit publish.
That isn't a character flaw in schedulers. It's what happens when there's no rule to point to. Without one, the easiest move is keeping the angriest person quiet, and the quiet teams pay for it.
Deciding your tradeoffs on purpose is how you protect the teams that never complain.
How to make tradeoffs on purpose
This is the process I'd actually follow.
Rank your rules before you build. List the musts, shoulds and nice-to-haves. Then rank the shoulds against each other, so when two collide, the ranking decides and your mood doesn't.
Do the math first. Count your games and count your slots. If you need 90 games and you have 84 slots, no amount of cleverness fixes that. Better to find out now than in week seven.
Measure fairness with counts, not gut feel. Count late starts per team. Count back-to-backs per team. Count games at each facility. If one team sits way above average, fix it before somebody else finds it.
Hold a few slots back. Something will change. A few open slots late in the season turn a cancellation into a quick move instead of a rebuild.
Write down the why. One line for every hard call. "Division A kept prime time because they pay the most for it." Future you will be grateful, and so will whoever does the schedule after you.
When something changes, move as few games as you can. Teams have planned around what you published. A fix that moves three games beats a slightly better one that moves thirty.
How to explain a tradeoff to the team that lost it
Nobody trains you for this part. A captain emails: why do we have three 10:15 starts?
Here's roughly what I'd send back:
Fair question. We have four late slots a week and ten teams, so somebody plays late every night. This season we chose to spread late starts evenly across every division instead of protecting the top one. You're at three right now, and the league average is three. If you end up above average, I'll fix it.
You acknowledged them, named the constraint, named the rule, showed the number and made a promise you can keep. Most people are fine once they see the rule applies to everyone. Losing a tradeoff rarely makes people angry. Suspecting it was rigged does.
Where software helps, and where it doesn't
Good scheduling software won't make these calls for you, and it shouldn't. What it should do is show you what each choice costs. If the top division keeps prime time, how many extra late starts land on everyone else? If you honour this request, what moves?
That's how we built LeagueNav. The engine checks every rule and surfaces the tradeoffs. A person who knows the league makes the call. If you've wondered why a chatbot can't just do all this, I wrote about whether AI can build your sports schedule. And if you want to see the same tradeoffs at full size, I rebuilt the NHL's 1,344-game season and measured what each one costs, in Could you schedule the NHL?.
It's also why our free Preview starts with a few would-you-rather questions. Most organizations have already made these tradeoffs. They've just never written them down.
The short version
- Every schedule is a set of tradeoffs. Nobody gets everything.
- Sort your rules into musts, shoulds and nice-to-haves, then rank the shoulds.
- Settle the big six before you build: prime time, publishing, slot use, colliding promises, requests and approvals.
- Measure fairness with counts, not gut feel.
- Write down why, and move as few games as you can when things change.
If you want to see your own tradeoffs inside LeagueNav, ask for a free Preview. Tell us which way you lean on a few of these, and we'll build it around your setup within 2 business days.
Tyler Fitch is the founder of LeagueNav. Tyler got into scheduling by running and supporting recreational hockey leagues, built LeagueNav's first managed league schedule in 2021, and has led the scheduling operation ever since.