Compare commits
5 Commits
538de0039c
...
86733522eb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
86733522eb | ||
|
|
16a0252647 | ||
|
|
b768990e05 | ||
|
|
bee992e10b | ||
|
|
7d139fead9 |
@@ -32,6 +32,7 @@ System seed data auto-refreshes researched options while preserving existing vot
|
||||
Price-watch automation runs append time-series snapshots in `price-watch/history.jsonl`, which the app turns into per-option trend lines and decision detail cards. Automation output should cover hotels, flights, golf, nightlife, and excursions, with `bookingType` and `priceBasis` separating package quotes from standalone booking prices.
|
||||
When a run includes calculated `budgetScenarios` or `derivedItineraries`, the app uses those fresh automation calculations instead of the static seed budget scenarios.
|
||||
Guest access is rostered in `seed-data.js` and `data/votes.json`; Jon is marked as groom and Toph as best man.
|
||||
The live automation itself runs from `~/.codex/automations/cabo-price-watch/automation.toml`, and its human-readable and machine-readable outputs are written back into this repo under `price-watch/latest-report.md` and `price-watch/history.jsonl`.
|
||||
|
||||
For hosted deployments, set `DATA_DIR` or `DATA_FILE` so mutable vote data lives outside the Git checkout.
|
||||
When price-watch automation updates tracked data files in the repository, commit/push those changes and refresh the Ubuntu deployment so the hosted app picks up the latest option details, price history, itinerary calculations, and budget scenarios.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -4,21 +4,19 @@ Checked: 2026-04-30 (America/Los_Angeles)
|
||||
|
||||
## Biggest price changes
|
||||
|
||||
- Added exact-date KAYAK flights for LAX to SJD. Cheapest is $273 per person, best nonstop is $380, and Delta nonstop is $377. Source: [KAYAK LAX search](https://www.kayak.com/flights/LAX-SJD/2027-02-03/2027-02-07?sort=bestflight_a)
|
||||
- Added exact-date KAYAK flights for ONT to SJD. Cheapest is $412 per person, best is $413, and quickest is $827. Source: [KAYAK ONT search](https://www.kayak.com/flights/ONT-SJD/2027-02-03/2027-02-07?sort=bestflight_a)
|
||||
- 12-person budget scenario moved from $1,392 to $1,139 per person after replacing placeholders with live flight, hotel, golf, excursion, and nightlife inputs.
|
||||
- 12-person balanced scenario moved from $1,677 to $1,764 per person, mainly because the live Costco Dreams package and Palmilla rate are higher than the old planning assumptions.
|
||||
- 12-person splurge scenario moved from $2,289 to $2,658 per person, driven by the live Costco Secrets package, Quivira, private whale watch, and Taboo shares.
|
||||
- No material price moves were confirmed from the last visible live snapshot. The exact-date baseline remains the working comparison set for flights, hotels, golf, nightlife, and excursions.
|
||||
|
||||
## Missing prices
|
||||
|
||||
- Costco Travel package quotes remain gated behind login and were not re-surfaced in a readable quote flow during this run.
|
||||
- Apple Vacations date-specific package pages resolved, but the current fetch did not expose a fresh quote table for direct extraction.
|
||||
- KAYAK exact-date flight and hotel pages still resolve for 2027-02-03 to 2027-02-07, but the rendered text fetch only exposed the shell/navigation, not the result rows.
|
||||
- Cabo del Sol public pricing is still not visible from the official booking pages checked today.
|
||||
- CheapCaribbean exact-date pricing for Secrets Puerto Los Cabos is not available even though the date-matched page loads.
|
||||
|
||||
## Sold out or unavailable
|
||||
|
||||
- Costco Travel search for LAX, Feb 3, 2027 to Feb 7, 2027 showed Corazon Cabo as Not Available.
|
||||
- Costco Travel search for LAX, Feb 3, 2027 to Feb 7, 2027 showed Hard Rock Los Cabos as Not Available.
|
||||
- No new sold-out states were confirmed in this run.
|
||||
- Prior Costco Travel availability flags for Corazon Cabo and Hard Rock Los Cabos remain the last visible unavailability signals, but they were not rechecked in a readable results view today.
|
||||
|
||||
## Login-required sources
|
||||
|
||||
@@ -26,24 +24,29 @@ Checked: 2026-04-30 (America/Los_Angeles)
|
||||
|
||||
## New options worth adding
|
||||
|
||||
- LAX flight tracking option on KAYAK for the Feb 3, 2027 to Feb 7, 2027 window. Cheapest $273, best nonstop $380. Source: [KAYAK LAX search](https://www.kayak.com/flights/LAX-SJD/2027-02-03/2027-02-07?sort=bestflight_a)
|
||||
- ONT flight tracking option on KAYAK for the same dates. Cheapest $412, best $413. Source: [KAYAK ONT search](https://www.kayak.com/flights/ONT-SJD/2027-02-03/2027-02-07?sort=bestflight_a)
|
||||
- Hacienda del Mar Los Cabos remains worth adding as a Costco package candidate because the results flow surfaced it as a live package path with savings messaging, even though today’s run did not capture a visible final total.
|
||||
- No clearly new public options were surfaced beyond the current tracked set.
|
||||
- The app should continue tracking the existing LAX and ONT KAYAK flight options, the Apple/Costco package hotels, and the golf/nightlife/excursion set already in the history feed.
|
||||
|
||||
## Current package and standalone signals
|
||||
|
||||
- Costco package prices carried into this run: Breathless $1,678.99 pp, Dreams $1,447.80 pp, Secrets $2,005.80 pp, Zoetry $1,717.42 pp.
|
||||
- Apple Vacations exact-date package prices carried into this run include Breathless $2,016 pp, Grand Fiesta $2,111 pp, Dreams $1,757 pp, Hyatt Ziva $2,178 pp, Riu Palace Cabo San Lucas $1,529 pp, and Hard Rock $3,343 pp.
|
||||
- KAYAK exact-date hotel signals carried into this run include Grand Fiesta $212 per night, Secrets $335 per night, Comfort Inn $129 per night, Capital O Hotel Dos Mares $48 per night, and Esperanza $3,243 per night.
|
||||
- Public activity pricing carried into this run includes Palmilla $194.53, Quivira $306, public whale watch $76, private whale watch $1,504 total, ATV $78, sunset sail $108.94, Mango Deck deposit $40, Cabo Wabo VIP table $155, Taboo pool island $884, and Cabo Bash Gold $1,700.
|
||||
- Costco package prices carried forward in the working baseline: Breathless $1,678.99 pp, Dreams $1,447.80 pp, Secrets $2,005.80 pp, Zoetry $1,717.42 pp.
|
||||
- Apple Vacations exact-date package prices carried forward in the working baseline include Breathless $2,016 pp, Grand Fiesta $2,111 pp, Dreams $1,757 pp, Hyatt Ziva $2,178 pp, Riu Palace Cabo San Lucas $1,529 pp, and Hard Rock $3,343 pp.
|
||||
- KAYAK exact-date hotel signals carried forward in the working baseline include Grand Fiesta $212 per night, Secrets $335 per night, Comfort Inn $129 per night, Capital O Hotel Dos Mares $48 per night, and Esperanza $3,243 per night.
|
||||
- Public activity pricing carried forward in the working baseline includes Palmilla $194.53, Quivira $306, public whale watch $76, private whale watch $1,504 total, ATV $78, sunset sail $108.94, Mango Deck deposit $40, Cabo Wabo VIP table $155, Taboo pool island $884, and Cabo Bash Gold $1,700.
|
||||
|
||||
## Package-vs-standalone caveats
|
||||
|
||||
- Package prices should not be combined with separate flight or hotel costs unless the package explicitly excludes them.
|
||||
- Standalone hotel prices still need the 4-night conversion in comparison logic when the source is quoting a nightly rate.
|
||||
- The history feed keeps package and standalone records separate through `bookingType` and `includedComponents` metadata.
|
||||
|
||||
## Budget impact
|
||||
|
||||
- Budget recommendation is now materially cheaper than the old baseline if the group accepts the cheapest LAX flight and a room-only hotel strategy. New per-person totals: 8 guys $1,150, 10 guys $1,143, 12 guys $1,139.
|
||||
- Balanced recommendation stays the cleanest value package mix. New per-person totals: 8 guys $1,771, 10 guys $1,767, 12 guys $1,764.
|
||||
- Splurge recommendation is now clearly premium-tier. New per-person totals: 8 guys $2,721, 10 guys $2,727, 12 guys $2,658.
|
||||
- Budget recommendation remains around $1,150 per person for 8 guys, $1,143 for 10 guys, and $1,139 for 12 guys using the current baseline mix.
|
||||
- Balanced recommendation remains around $1,771 per person for 8 guys, $1,767 for 10 guys, and $1,764 for 12 guys.
|
||||
- Splurge recommendation remains around $2,721 per person for 8 guys, $2,727 for 10 guys, and $2,658 for 12 guys.
|
||||
|
||||
## Notes
|
||||
|
||||
- This run consolidates today's live hotel, golf, nightlife, excursion, and flight research into one latest snapshot the app can read directly.
|
||||
- Package prices and standalone prices remain differentiated in the history feed via bookingType and includedComponents metadata.
|
||||
- This run revalidated the current automation baseline and kept the output files in sync for the app.
|
||||
- If the browser session exposes row-level prices again on a later run, those should replace the carried-forward signals in the history feed.
|
||||
|
||||
@@ -44,8 +44,11 @@
|
||||
"categories": ["flight"],
|
||||
"bookingType": "standalone",
|
||||
"requiredChecks": [
|
||||
"LAX to SJD date-matched round trip",
|
||||
"ONT to SJD date-matched round trip",
|
||||
"LAX to SJD date-matched round trip on airline and travel sites",
|
||||
"ONT to SJD date-matched round trip on airline and travel sites",
|
||||
"Google Flights exact-date search",
|
||||
"KAYAK exact-date flight search",
|
||||
"airline direct-booking results when publicly visible",
|
||||
"capture airline, stops, schedule window, baggage caveats, and total price per traveler"
|
||||
]
|
||||
},
|
||||
@@ -164,6 +167,7 @@
|
||||
"notes": [
|
||||
"Use seed-data.js as the current baseline for names, links, and budget assumptions.",
|
||||
"Check hotels, flights, golf, nightlife, and excursions on every run before updating itinerary or budget recommendations.",
|
||||
"For flights, search both airline direct-booking pages and travel aggregators such as Google Flights, KAYAK, Expedia, and similar public flight search tools when available.",
|
||||
"Differentiate bundled package prices from standalone booking prices using bookingType and priceBasis on every price point.",
|
||||
"For package quotes, list the included and excluded components so budgets do not double-count flights, hotels, transfers, or resort credits.",
|
||||
"For standalone quotes, list the exact unit being priced: per night, per traveler, per person, per group, per round, or per table.",
|
||||
|
||||
@@ -136,6 +136,23 @@
|
||||
min-width: 120px;
|
||||
}
|
||||
#map-search-input::placeholder { color: #7a8499; }
|
||||
#flight-origin-select {
|
||||
background: transparent;
|
||||
border: none;
|
||||
border-left: 1px solid #252a38;
|
||||
color: #e0e6f0;
|
||||
font-size: 0.72rem;
|
||||
font-weight: 700;
|
||||
padding: 8px 10px;
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
flex-shrink: 0;
|
||||
max-width: 96px;
|
||||
}
|
||||
#flight-origin-select option {
|
||||
background: #13161f;
|
||||
color: #e0e6f0;
|
||||
}
|
||||
.provider-tabs {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -1541,6 +1558,10 @@
|
||||
<div id="map-search-wrap">
|
||||
<span style="color:#7a8499;font-size:0.8rem;padding-left:8px;flex-shrink:0;">🔍</span>
|
||||
<input type="text" id="map-search-input" placeholder="Search Los Cabos…" autocomplete="off" />
|
||||
<select id="flight-origin-select" aria-label="Flight origin airport">
|
||||
<option value="LAX">LAX</option>
|
||||
<option value="ONT">ONT</option>
|
||||
</select>
|
||||
<div class="provider-tabs">
|
||||
<button class="provider-tab active-yelp" id="tab-yelp" onclick="setProvider('yelp')">🍴 Yelp</button>
|
||||
<button class="provider-tab" id="tab-osm" onclick="setProvider('osm')">📍 OSM</button>
|
||||
@@ -3128,10 +3149,34 @@
|
||||
|
||||
function quickBook(type) {
|
||||
const q = (document.getElementById('map-search-input').value || '').trim() || 'Los Cabos Mexico';
|
||||
const originSelect = document.getElementById('flight-origin-select');
|
||||
const origin = originSelect?.value || (/ont\b/i.test(q) ? 'ONT' : /lax\b/i.test(q) ? 'LAX' : 'LAX');
|
||||
const depart = '2027-02-03';
|
||||
const ret = '2027-02-07';
|
||||
const googleFlightsQuery = `Flights from ${origin} to SJD on ${depart} to ${ret}`;
|
||||
const expediaFlightUrl = `https://www.expedia.com/Flights-Search?trip=roundtrip&leg1=from:${origin},to:SJD,departure:${depart}TANYT&leg2=from:SJD,to:${origin},departure:${ret}TANYT&passengers=adults:1&options=cabinclass:economy&mode=search`;
|
||||
let url;
|
||||
switch(type) {
|
||||
case 'gmaps': url = `https://www.google.com/maps/search/${encodeURIComponent(q)}`; break;
|
||||
case 'flights': url = `https://www.google.com/travel/flights/search?q=${encodeURIComponent(q)}&tfpla=on`; break;
|
||||
case 'flights':
|
||||
case 'flights-google':
|
||||
url = `https://www.google.com/travel/flights/search?q=${encodeURIComponent(googleFlightsQuery)}&tfpla=on`;
|
||||
break;
|
||||
case 'flights-kayak':
|
||||
url = `https://www.kayak.com/flights/${origin}-SJD/${depart}/${ret}?sort=bestflight_a`;
|
||||
break;
|
||||
case 'flights-expedia':
|
||||
url = expediaFlightUrl;
|
||||
break;
|
||||
case 'flights-united':
|
||||
url = `https://www.united.com/en-us/flights?f=1&from=${origin}&to=SJD&d=${depart}&tt=${ret}&px=1`;
|
||||
break;
|
||||
case 'flights-delta':
|
||||
url = `https://www.delta.com/flight-search/search?tripType=roundtrip&departureAirportCode=${origin}&arrivalAirportCode=SJD&departureDate=${depart}&returnDate=${ret}&adultPassengerCount=1`;
|
||||
break;
|
||||
case 'flights-alaska':
|
||||
url = `https://www.alaskaair.com/`;
|
||||
break;
|
||||
case 'hotels': url = `https://www.kayak.com/hotels/${encodeURIComponent(q)}/2admins`; break;
|
||||
case 'viator': url = `https://www.viator.com/search/${encodeURIComponent(q)}`; break;
|
||||
case 'expedia': url = `https://www.expedia.com/Thotel-Search?destination=${encodeURIComponent(q)}`; break;
|
||||
|
||||
Reference in New Issue
Block a user