Travel-Tech Practice · T3

Flight Delay Prediction Dashboard

Which routes delay the most, how delay patterns differ by airline, and how delays trend by season and time of day — analyzed from a modeled domestic flight dataset (8,000 flights).

Synthetic, modeled data — not a real airline's published performance. Airlines here are fictional labels (IndiFly, Metro Express, BlueSky Air, Skyline National, Coastal Wings) so no numbers are attributed to a real, identifiable carrier. Routes use real Indian city pairs, since hub congestion (Delhi/Mumbai/ Bengaluru) and seasonal effects (North Indian winter fog, western-coast monsoon) are well-documented public aviation-industry patterns, not a claim about any one company. Full generator + methodology in the repo (see footer link).

Which routes delay the most?

Average delay per flight (minutes), all 15 tracked routes, ranked highest to lowest.

View as table

Delay patterns by airline

Average delay (minutes) per flight, by airline. Hover or focus a bar for on-time and cancellation detail.

View as table

Delay trend by season

Average delay (minutes), Dec–Feb through Oct–Nov.

Delay trend by time of day

Average delay (minutes) — delays cascade later in the day.

Route × season — where the worst combinations are

Top 8 routes by average delay minutes, broken out by season. Darker = worse.

Reading it: Delhi-origin routes (DEL-GOI, DEL-BOM, DEL-BLR, DEL-CCU, DEL-PNQ, DEL-HYD) spike in Winter — the modeled North Indian fog effect. Coastal/monsoon-sensitive routes (BOM-COK, COK-BOM, DEL-GOI) spike separately in Monsoon.

Methodology — how these numbers were generated

Every number on this page is synthetic. Here's the calculation, and the reasoning behind each choice, in full.

Why a gamma distribution, not a normal one

Real flight delays are right-skewed with a hard floor at zero: most flights are on time or a few minutes late, and a smaller share run very late, with a long tail rather than a symmetric spread. A normal distribution doesn't fit that shape — it puts real probability mass on negative delays (meaningless) and doesn't produce the occasional very-late outlier a fleet actually sees. A gamma distribution has both properties by construction: it's bounded at zero, and its two parameters (shape k, scale θ) control how peaked vs. long-tailed the curve is — so it was the right family to draw from, not the default choice.

The calculation, step by step

For every one of the 8,000 simulated flights:

  • Draw a base delay from Gamma(shape=1.3, scale=3.2) — mean ≈ 4.2 minutes, right-skewed.
  • Multiply by that flight's airline reliability index (a single fixed number per airline, see table below) — the only airline-level effect in the model, kept deliberately simple so differences between the fictional carriers stay modest rather than dramatic.
  • Multiply by a time-of-day multiplier (0.90 Early Morning → 1.55 Night) — models how delays cascade later into an operating day.
  • Add a fixed route congestion term (see table below), scaled by 0.35 — a stand-in for how much busier Delhi/Mumbai/Bengaluru are than smaller airports.
  • If the route is monsoon-sensitive and the month falls in Jun–Sep, add an extra Gamma(1.6, 5.0) term (mean ≈ 8 min).
  • If the route is fog-sensitive and the month is Dec/Jan, add an extra Gamma(1.8, 6.0) term (mean ≈ 10.8 min), amplified 1.3× for Early Morning departures — fog is worst at dawn.
  • Cancellation is decided separately, as its own probability: a 0.6% base rate, +1.8pp if monsoon-exposed that month, +2.4pp if fog-exposed that month. If cancelled, delay is zeroed — a cancellation is a different outcome from "a very late flight," not the same thing at the extreme end.
  • A flight counts as delayed if its final delay exceeds 15 minutes (the standard on-time threshold) and it wasn't cancelled.

Parameters used

Airline (fictional)TypeReliability index
BlueSky AirFull-service0.75 (best)
IndiFlyLCC1.00
Skyline NationalFull-service1.15
Metro ExpressLCC1.25
Coastal WingsRegional/turboprop1.35 (worst)
RouteCongestion term (min)Monsoon-sensitiveFog-sensitive
DEL-BOM9—Yes
DEL-BLR7—Yes
DEL-GOI7YesYes
DEL-HYD7—Yes
DEL-CCU6—Yes
DEL-AMD6—Yes
DEL-PNQ6—Yes
BOM-BLR6——
BOM-COK5Yes—
COK-BOM5Yes—
BLR-HYD4——
MAA-CCU4——
BLR-COK4Yes—
HYD-MAA4——

Why these specific numbers

Not derived from any real source — chosen, then iterated. The first draft used larger gamma parameters and produced a 48.9% on-time rate, implausible for any real domestic operation (most real airlines worldwide cluster somewhere in a 70–85% range). I scaled the base gamma parameters and the congestion multiplier down until the fleet-wide on-time rate landed at 84.4% — inside a plausible range — while preserving the relative shape of every effect: which season is worst, which route is worst, that night departures run later than morning ones. The absolute numbers are calibrated to look plausible; the relative patterns are what the model was actually built to produce, and are the point of the exercise.

What this deliberately doesn't model

It doesn't fit real distributional parameters from any published dataset — there wasn't one available in this environment. It doesn't model flight-to-flight correlation (a delayed inbound aircraft delaying the same tail number's next outbound leg) — a real airline operations model would need that, and it's a materially harder problem. This generates each flight independently; it's built to produce the aggregate patterns a dashboarding exercise needs, not to be an operations simulator.

Full source: projects/flight-delay-dashboard/generate_dataset.py and analyze.py in the repo — every number above is reproducible from those two files.