If you’ve played a serious airline simulator, you’ve probably hit the wall where a route you want to fly is blocked for reasons the game won’t fully explain. “Slot required at LHR.” “Route authority not granted.” “Frequency cap exceeded.” Different sims handle these differently, and most handle them shallowly.
Most airline sims treat a route as a single permission. The dropdown shows London, you click it, you’re flying to London. Done.
Real airlines need two. The first is a bilateral air services agreement: your country’s government and that country’s government have an agreement, negotiated decades ago and updated as politics shifts, that says airlines registered in one are allowed to fly to the other. The second is a slot: a specific 15-minute window at a specific airport, on specific days, granted by an airport coordinator under IATA’s Worldwide Slot Guidelines.
(New to airport slots? Start with the explainer →. This post is the build-narrative companion to it, how the system actually ships in SkylineSim.)
You can have one without the other and the route still doesn’t exist. A US carrier with all the open-skies authority in the world can’t operate JFK-Heathrow if it can’t bind a 07:30 arrival slot at LHR. Conversely, you can hold a beautiful peak-morning slot at Heathrow and still not be allowed to use it on a route to Country X if the bilateral with Country X is closed.
We built these as two separate systems because they actually are separate. Here’s the shape of both.
Slots are property
Every coordinated airport in the world has the same problem: more airlines want to land there than the runway can handle. Heathrow, JFK, Frankfurt, Haneda. The solution that the global industry settled on is that every arrival and every departure has to cost something. That something is a slot.
A slot has an owner, an airport, a direction (arrival or departure), a 15-minute window, a day-of-week pattern, and a season (2026S for summer, 2026W for winter, following the real IATA calendar). It can be historic (grandfather-protected) or fresh. It can be in use, frozen, leased out, or listed for sale. Below, the slot market view is shown in detail.
Each window has a hard cap. Arrivals per window, departures per window, sometimes a combined total. The coordinator can’t issue more than that.
When you start a scenario, the order book is already full of history. Legacy carriers hold the peak slots they’ve held for decades. Low-cost carriers hold the off-peak windows where space opened up. The secondary cities you might want to fly to have varying levels of pressure on them.
If your hub is Level 3 coordinated, and most major hubs are, every flight you operate consumes a slot at both ends. No slot, no rotation. The flight doesn’t fly. The aircraft sits.
80/20: the use-it-or-lose-it rule
Slots aren’t yours forever. They’re yours for a season, and if you don’t use them, the coordinator takes them back.
The real rule, applied at every Level 3 airport in the world, is the 80/20 rule. An airline that operates a slot at least 80% of its scheduled days keeps it historic for next season. Below 80%, the slot returns to the pool and gets reallocated. This is why you saw airlines flying half-empty “ghost flights” during COVID. They were maintaining slot retention.
We model exactly this. Every six months, at the rollover (April 1 for summer, November 1 for winter):
- ≥80% usage → kept historic, scheduled count resets, you carry it forward.
- 60-80% usage → a probabilistic draw, scaled linearly between the two thresholds. At 70% you have a 50/50 chance of keeping it.
- <60% usage → returned to the pool.
The roll is deterministic by seed (same replay produces the same outcome) but you don’t know the result until the rollover fires. Which means your slot portfolio is real work. Routes that look profitable on paper but only fly Tuesday-Thursday-Saturday can quietly bleed slot equity. When an AI carrier goes bankrupt, their slots get frozen, then dumped back to the pool.

The Coordination screen is where you live between auctions. It tells you four things at once: which slots you actually hold, how each is tracking against the 80% threshold (the bar is the truth, not the PROTECTED label, that just means you still own it), when the next allocation window opens, and one-click access to drafting requests, reviewing the last auction, and the secondary market. A slot tracking at 12% in August has plenty of season left to recover; the same slot tracking at 12% in late October is about to bleed equity. The bar lets you see the difference at a glance.
The auction
After 80/20 retention is settled, the coordinator releases a slice of fresh capacity: 10% of any headroom, with floors to make sure small airports still see some movement. That pool, plus whatever returned from low-usage holders, gets auctioned to anyone who wants it.
Before the rollover, you draft requests. You don’t bid on raw windows, you describe the routes you want to run.

You pick the route, the aircraft type, the cadence, and a target departure time. The system computes the slot windows that route actually needs at both ends (a 07:00 AMS departure to CDG needs an AMS DEP window centered on 07:00 plus a CDG ARR window centered on 08:30, plus the return), and labels the outlook per submission: FAIR POSITION if there’s headroom, CONTESTED if there isn’t. If a specific window at your hub has no free arrival capacity for the slice you’re asking for, the row says so directly (“No free ARR capacity at AMS window 48 (need 1, 0 free)”). If you want surgical control over a specific time, the Advanced toggle drops you into raw window editing.
AI airlines generate their own wishlists from their archetype. Legacies bid hard on morning and evening peak at their hubs, willing to spend up to 15% of their cash. Premium carriers go even harder (20% of cash, hub-multiplier 1.5x) because their business model lives on those windows. LCCs target midday and early morning, where slots are cheaper. ULCCs hunt night windows. Regionals and charters don’t show up at all.
When the rollover fires, the auction runs in one pass:
- Slots are grouped by airport × movement (arrivals or departures).
- 50% of every group is reserved for new entrants. This mirrors the WASG carve-out that keeps coordinated airports from being permanently locked up by incumbents.
- Each entry is scored on three factors: where it sits in your wishlist (rank 1 is worth more than rank 10), your prior-season usage at that airport (an airline that already operates there reliably gets weighted up), and your cash bid (on a log scale, so a $10M bid doesn’t crush a $1M bid by 10x).
- Foreign-carrier caps are enforced. If awarding a slot would push foreign-airline ownership past the airport’s cap, the slot is skipped and goes to the next candidate.
The winners pay, the slots stamp to their new owners, and the season opens with a fresh allocation.

The results screen is honest. Won, lost-because-outbid, lost-because-no-supply. And the part you actually need to see: a list of your existing routes that just dropped below full slot coverage. The engine knows which routes need which slots. When you lose one, it tells you which routes are now compromised, and gives you two paths forward: chase what you need on the secondary market, or close the route before next season starts.
The secondary market
Between auctions, slots trade.
A slot in the game can be:
- Listed for sale. You set a list price. Anyone with cash and capacity to hold it can buy.
- Bought. Pay the seller’s price, foreign-cap check runs, ownership transfers. If you’re buying from an AI carrier, their cash actually goes up.
- Swapped. Trade one of your slots for one of theirs, with optional cash to balance the deal. Useful for sliding a 22:00 slot you don’t want into the 07:30 slot you desperately need.
- Leased. The lessor keeps ownership, you get use of the slot for 1-12 months, monthly rent flows from your account to theirs. Leases auto-revert at month end if you don’t renew.
Pricing isn’t arbitrary. The fair-value formula is:
value = base × time-of-day × movement × historic × days-per-week
A peak-window departure at Heathrow with daily operation and historic protection sits at the top of the curve. Base $35M for LHR, peak multiplier 1.0, DEP multiplier 1.1, historic 1.2, daily 1.0. About $46M of fair value for a single 15-minute weekly slot.
A 23:00 weekends-only arrival at a tier-3 airport sits at the bottom. $4M base, night multiplier 0.25, ARR 1.0, non-historic 1.0, weekends 2/7. About $290k.
These numbers feed the AI’s bid behavior and the listing-price expectations on the market screen. They’re not what the market will actually pay (that depends on who else wants the slot) but they’re the gravitational center.
Slot pressure as a world event
One more dynamic worth mentioning. If you successfully corner the market at your hub (85% or more of the declared departure capacity belongs to you), the world reacts.
A slot pressure shock triggers. The airport’s effective capacity scales down for everyone, including you, as your share climbs from 85% to 100%. The multiplier ramps from 0.90 down to 0.75. Practically: less fresh capacity at the next auction, a lower allocator ceiling, scarcer slots overall. The pressure decays over about six months.
It’s self-reinforcing in the direction airlines push back against. Dominance at one hub makes it harder for anyone (including you) to grow there. The game is telling you: open a second hub. Don’t try to swallow the airport whole.
And now the other half: route authorities
Slots gate where you can land. Route authorities gate which country pairs you’re even allowed to fly.
Every route resolves through a classification:
- Unlimited. Domestic flights and open-skies bilaterals. Fly as much as you want.
- Capped. A bilateral with a weekly frequency cap. 14 frequencies per week to this country and not one more. New flight to that country? The engine sums your existing frequency, checks against the cap, rejects you if you’re over.
- Restricted. No agreement exists. You can’t fly here at all, unless you applied for a specific route authority grant and got approved (10-year fixed window).
- Forbidden. Suspended, embargoed, or otherwise off-limits.
At scenario start, the bilateral catalog loads from real historical data. US-UK open skies signs in 1992. EU internal market in 1993. The various Gulf negotiations across the 2000s. From there, the catalog is dynamic.
Every January, the engine rolls a treaty event check. Each (your-country, partner-country) pair has a 5% chance per year of something happening. An open-skies agreement gets signed. A cap gets expanded. A cap gets reduced. A route gets suspended over a diplomatic incident. A new bilateral comes into force somewhere there wasn’t one before. These are deterministic per seed, so the same scenario produces the same treaty history on replay. But you don’t see it coming the first time through.
When a cap reduces, the engine doesn’t just close the door on future flights. It checks your existing routes. If your operations now exceed the new cap, a capacity withdrawal notice fires with a wind-down deadline. At the deadline, the engine starts closing your lowest-frequency routes to that country until you’re back under the cap. Real airlines have lived through this (Russia-EU after sanctions, several US-Venezuela cycles, India’s bilateral disputes), and it lands with the same weight in-game.
You can also push back diplomatically. Apply for a route authority grant on a restricted country pair, pay the application fee, wait for the resolution date, roll for acceptance. If you get it, you have a 10-year exclusive grant on that pair that bypasses the bilateral entirely.
How they meet
Slots and authorities don’t share a validator. They never collapse into one check. They live in different parts of the engine, get touched by different player actions, and respond to different world events.
But they meet at one place: the route. A route needs authority to exist at all. A route needs slots at both ends to actually fly. Open a route without slots and you get an authority-valid, slot-unbound rotation that produces zero passenger revenue, because the slot binder gates the legs.
The honest version of “can I fly Tokyo to São Paulo?” is:
- Does Japan have a bilateral with Brazil that permits this? (Authority check.)
- Is the bilateral capped? If so, do I have weekly frequency headroom? (Frequency check.)
- Can I bind a departure slot at NRT in the window I want, on the days I want, for this whole season? (Slot check 1.)
- Can I bind an arrival slot at GRU in the matching window? (Slot check 2.)
Get all four green and you fly. Miss any one and you don’t. The system tells you which one.
What’s still in flight
The slots system is shipping in the next build. A few things are honest about not being there yet:
- Slot leasing negotiations are in but shallow compared to manufacturer negotiation. Flat rent, no counter-offer rounds. Likely a v0.4 polish target.
- Coordinator personalities are flat for now. LHR’s coordinator and JFK’s coordinator behave identically in edge cases. The model treats every Level 3 coordinator the same.
- Multi-party stub trading. The kind of complex “I’ll give you my Tuesday-only LHR slot if you give me your daily JFK slot plus $8M” three-way swap that happens in real life is single-counterparty in the build today.
These are tracked. None of them block the slots system from being real and playable in the next build.
What it adds up to
Over a 10-year campaign, slots compound. Your first hub is where you build slot equity. Your second hub is where you have to fight for it. Your international expansion runs into bilateral caps you didn’t know existed until your fifth Tokyo flight gets rejected by the validator. A competitor goes bankrupt and their slots flood back to the pool the same week you needed them.
The point isn’t to make the game harder. It’s to make the airline you’re running feel like an airline. Real route planners agonize over the same questions you’ll be asking. When to bid aggressively at the auction. Whether to lease or buy. Which hub to challenge incumbents at. When to apply for a restricted-country authority. Those choices belong to you now.
SkylineSim is in development. We’re aiming for early access in 2027.
If this is your kind of sim, the Discord is where the build lands first: discord.gg/HsqucsgsGd
Or sign up for the newsletter at skylinesim.app.
the skyline team