Travel Watch

Last run 2026-10-30 Mode live Outcome escalated · digest sent Rendered 30 Oct 2026 00:00 Manage requests →
Request

R-001 — Thanksgiving Caribbean, all-inclusive

ATL → CUN, MBJ, SJU, PUJ, AUA, NAS, SXM · depart between 2026-11-24 and 2026-12-02 · 3–5 nights, 4 ideal · must include a saturday · 2 adults, adults-only property · 3★ or better · target all-in $2,500 (soft) · ≤3 PTO days

You hear from it on: a new all-in low; anything ≥15% under baseline; a ≥10% drop on something already tracked; a scarcity signal; a sunday heartbeat regardless.

Score

Where this stands today

Best match right now

$2,162 Fri Nov 27 – Tue Dec 1 4 nights · 3 PTO days · score 91/100

Known $1,538 (airfare + room + taxes, quoted) · estimated $624 (ground, food, activities — from the atlas, not a quote). Delta nonstop at $381/person; Warwick Paradise Island (adults 16+) at $194/night.

dry season across most of the regiontail end of Atlantic hurricane season — verify ~Nov 1Thanksgiving week is peak US-outbound demand

Honest read

The top 4 options are within 0 points — the score has stopped discriminating. Break the tie on something it does not weigh: cheapest of them is D-1543 at $1,948, Sat Nov 28 – Tue Dec 1.

Diff

What changed since yesterday

No new or changed offers on the last run.

Straight from the last run's diff — new and price-changed offers only, and a soft drop that stays above baseline is not treated as news.

Window best & tracked itineraries · all-in, by day

No line yet — a price chart needs at least two distinct days of history. Each daily run adds one point.

The bold line is the window best — the cheapest trip anywhere in the window that day, answering "is this destination getting cheaper." Each thin line is one tracked itinerary (fixed dates and route), answering "should I book the trip I am watching." They move at different speeds, so they are charted together but kept distinct.

Market

Every option — for sale, and why it scores

69 distinct trips — 69 headline plus 0 near-identical date variants, all shown so you can sift them yourself. Each row is one trip = route + dates, priced at its best airline and best hotel today; the other airlines for that same trip are listed under "also on" when you expand it (so the board never churns as the cheapest carrier or hotel changes — those are attributes of the trip, not its identity). Use the filters (departure time, stops, max price, airline) to narrow, click any column header to sort, ★ a few to compare side by side, and click a row for its flight itinerary (times, layovers), hotel and full cost. Where a hotel wasn't quoted this run, the all-in uses an atlas estimate, labelled as such.

Enable JavaScript to sort, filter, compare and explore the 69 options.

Funnel on the last run: searched 0 fares, relevance gate removed 0, priced 0 across 0 distinct window(s), now showing 69 distinct options (69 headline + 0 variants) — new 0, price-dropped 0, unchanged 0, disappeared 0, suppressed after rejection 0.

Integrity

Can I trust this?

Last run 2026-10-30 (0d ago)This dashboard renders the state files in this folder. If the daily job runs in GitHub Actions, the cloud copy may be newer — pull before trusting an old date.
0 distinct day(s) of price historyDay-over-day comparison and every baseline percentile need history. With one day there is nothing to compare against, and any 'price dropped' claim is comparing runs inside a single day.
Baseline depth: 4 observation(s) at bestUnder 14 observations the architecture calls the baseline 'thin'. Percentages 'under baseline' should be read as directional only until roughly 45 observations exist.
19% of the typical all-in figure is estimated, not quotedGround transport, food, activities and parking come from the atlas, not from an API. Only the known half is bookable at the price shown.
profile.md has 23 unfilled TODOsHome airports, cabin thresholds, PTO ceiling, dealbreakers and passport validity are all unset. Scoring runs, but it is not calibrated to you until these are filled.
Provider quota exhausted — prices are frozenIgnav is refusing calls (HTTP 402). Every option below is carried forward from the last successful read, not re-priced. The run probes daily and resumes automatically when the quota resets (typically the 1st of the month).
R-001: Southwest invisible to all providers — check southwest.com for ['CUN', 'MBJ', 'SJU', 'PUJ', 'AUA', 'NAS', 'SXM']No provider in the stack can see this. It has to be checked by hand before any decision is final.
R-001: provider returned nothing this run — keeping the last-known options rather than dropping them.No provider in the stack can see this. It has to be checked by hand before any decision is final.
Ignav quota exhausted (HTTP 402) since 2026-10-01 — no new prices are being collected; every option shown is carried forward. Probing one window per run until the quota resets (typically the 1st).No provider in the stack can see this. It has to be checked by hand before any decision is final.
Scoring is uncalibrated: profile.md has 23 unfilled TODO(s) — fill them so fit and value reflect your real preferences.No provider in the stack can see this. It has to be checked by hand before any decision is final.
Run error: R-001: 2026-11-27→2026-12-01 fetch error: HTTPError 402
Run error: R-001: provider quota exhausted (402) — skipping the remaining windows this run.
API budget: 29 of 1500 live flight calls used this month ($0 billed) The first 1,000 calls each month are free. At 80% the system drops discovery sweeps first; at 100% it stops calling and says so.
Reference

What the numbers mean

Score (out of 100)
How well this trip matches what you asked for — nights, budget, vibe, hotel class, adults-only, flight quality, PTO. That's the whole number; expand any row to see it broken down factor by factor, weighted by what matters most to you. (Being cheaper helps the Score through the budget factor.)
Deal
A separate signal — is today's fare good vs this exact trip's own history? "12% off" = cheaper than it usually is (a good time to book); "+8%" = pricier than usual; "new" = we haven't watched it long enough to say. This is not part of the Score — it's just a heads-up on timing.
Known vs estimated
Known is quoted by a provider with a timestamp and a booking link. Estimated comes from the destination atlas (e.g. a hotel where no live rate came back). They are never merged silently — only the known half is what you pay at the click.
Liveness
live — priced just now. cached — a discovery-grade price trend, never to be quoted as bookable.
PTO days
Weekdays inside the trip, minus US federal holidays. Counted because a cheap trip that costs a week of leave is not cheap.