Data & credits
Offpeak is a curated almanac, not a fare aggregator. Here's where the numbers come from and where the judgment calls are mine.
Domestic airfare patterns (chat)
The BTS chat answers quote real averages from the U.S. Bureau of Transportation Statistics Consumer Airfare Report — Table 1 (top 1,000 contiguous-state city-pair markets), updated quarterly. Every cited figure in the chat is grounded in that dataset via HydraDB retrieval.
Estimated prices on the map and cards
The dollar figures shown on map pins, route cards, and the 12-month fare curve are a heuristic, not live fares. We compute great-circle distance from your metro's nearest airport, apply a distance-tier per-kilometer rate, then scale by a season multiplier (peak × 1.5, shoulder × 1.0, off-peak × 0.78). A small per-route jitter produces realistic dispersion. Click through to Google Flights or Kayak to see real prices — the estimate is only meant to rank destinations by relative value.
Climate normals
Monthly averages of high/low temperature, rainy days, and precipitation are derived from 5 years of daily observations (2019–2023) via the Open-Meteo Archive API, aggregated offline by scripts/fetch-climate.mjs.
Seasonality (peak / shoulder / off-peak)
The peak / shoulder / off-peak month labels and holiday-window overrides are hand-curated from general tourism knowledge — school-break calendars, festival dates, rainy and dry seasons, ski seasons, monsoon patterns, Carnival, Lunar New Year, SXSW, and so on. No machine-learning, no scraping — just notes assembled from guidebooks, airline seasonal pricing, and traveler lore. Corrections welcome.
Base map
World map tiles are served by CARTO using OpenStreetMap data, included under their respective licenses.
Booking redirects
Booking links deep-link to Google Flights, Skyscanner, and Kayak search results — we don't transact anywhere. Multi-origin searches (e.g. SFO + OAK + SJC simultaneously) work on Google Flights and Kayak; Skyscanner falls back to the primary airport.
Next.js 16 · React 19 · Tailwind CSS · Leaflet · Vercel AI SDK v6 · OpenAI gpt-4o-mini · HydraDB · deployed on Cloudflare Workers via OpenNext.