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

Sparkfare currently tracks 13 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 average. 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 averaging 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 average, its own 7-day minimum history requirement, 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, always-fresh daily pipeline. The other 12 origins are currently served from a single, real, 24-hour-delayed combined feed, compiled from an hourly pipeline that genuinely fetches all 13 origins — it just hasn't yet been wired to serve every origin at JFK's same freshness. 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