Why a JFK deal and an ORD deal to the same city never share a baseline

Sparkfare currently tracks 23 home airports. It would be tempting — and a lot less data to manage — to keep one price history per destination and compare every origin's fares against it. We don't, on purpose.

Every route is keyed by origin and destination together

A route in our system looks like JFK:Lisbon, Portugal or ORD:Lisbon, Portugal — never just Lisbon, Portugal. Multi-origin data is never pooled into one shared baseline. A JFK–Lisbon fare and an ORD–Lisbon fare can move in completely different directions in the same week — different airline capacity, different competition, different route economics — and blending them together would blur two real signals into one meaningless number. Comparing "today's Lisbon price" against a baseline that's secretly half-JFK, half-ORD history would tell you almost nothing about whether either fare is actually a deal.

What this actually looks like on the board

It's why switching the origin selector on the homepage doesn't just relabel the same cards with a different city name — it's a genuinely separate dataset underneath, with its own 30-day trailing median, its own minimum history requirement (10 days spanning at least 14), and its own deal/no-deal classification, all independent of what any other origin is doing for that same destination.

One honest caveat, today

JFK runs on its own dedicated daily pipeline. The other 22 origins are served from a combined feed compiled from an hourly pipeline. Until October 10, 2026 that feed was deliberately held back a day; it no longer is, so a non-JFK airport shows data from the latest run. Every price shows when we retrieved the data, and the fare itself can be older because it comes from a search cache. On the rare route where an origin genuinely has no data yet, the board says so plainly instead of quietly relabeling JFK's numbers under a different city's name.

See today's board