---
name: live-travel-offer-research
description: "Use when verifying live bookable travel offers and totals."
version: 1.0.0
author: Hermes Agent
license: MIT
metadata:
  hermes:
    tags: [travel, packages, booking, pricing, verification]
---

# Live Travel Offer Research

## When to Use

Use for package holidays and other live travel comparisons where the user needs exact dates, party pricing, transport, accommodation, extras, and direct booking links. The goal is a reproducible, currently bookable configuration—not a marketing page or indicative headline.

## Core workflow

1. Translate the request into hard constraints, preferences, and required fields. Represent flight-time preferences per leg (`outbound` and `return`) rather than as one itinerary-wide flag; a morning outbound does not imply a morning return. When the user changes the budget, hotel scope, dates, party, airlines, provider list, or one leg's timing preference, replace the prior baseline and recalculate every compliance decision; do not carry forward rankings made under superseded constraints.
2. Enter the complete party in each provider's live booking flow. Disclose any placeholder child birth dates used to represent ages; exact repricing requires real birth dates.
3. Set the exact travel window, duration, and origin. Verify the search summary before trusting results.
4. Open candidate offer/detail pages; listing cards rarely contain enough evidence.
5. Capture exact flights, hotel, provider category, room label, board, transfer, per-person price, total, supplements, and a state-bearing URL.
6. Compute the requested configuration only from displayed components. Separate provider total, supplements, verified transfers, unpriced extras, known minimum, and budget delta.
7. Distinguish fully compliant offers from near-misses. State every failed criterion explicitly.
8. Record retrieval time and availability volatility.
9. For Swiss package-holiday comparisons, create a provider-coverage ledger before ranking: TUI Suisse, Migros Ferien, Hotelplan, Helvetic Tours, ITS Coop Travel, Kuoni/DERTOUR, relevant metasearch portals, and any airline-branded package shop explicitly requested. Mark each `live completed`, `searched but not completed`, `blocked`, `retired/redirect-only`, or `not accessed`. Do not call a result the market-wide best unless the requested high-priority providers are live-completed; otherwise say `best verified so far`.
10. Search the complete permitted date window rather than relying on a general weekday heuristic. Explicitly compare Tuesday/Wednesday departures when requested, but rank by the exact all-in family total: a Thursday package can still be cheaper after room inventory, child pricing, return flight, baggage, and transfer are included.
11. For hotel-only comparisons across global portals, complete one provider at a time and immediately preserve the final state-bearing URL plus rendered search summary. Require visible confirmation of dates, full party including child ages, one shared unit, board, taxes/fees, and cancellation before calling an offer verified. A CAPTCHA, rate limit, transport error, reverted default search, or unpriced hotel page is `searched but not completed`; an exact configured page that explicitly reports sold out is `live completed: no inventory`.

## Evidence rules

- Search snippets and generic hotel pages do not prove bookability.
- Use the provider's exact room name. Occupancy for four does not make an apartment a `family room`.
- Do not infer an airline from an unexplained logo filename or code (for example `WK_2x.png` or `LX_2x.png`). Treat it only as a lead; open flight details and require the displayed carrier name or flight number before claiming SWISS/Edelweiss.
- Do not call a generic or shared transfer private.
- `from` and per-person prices are not family totals. Prefer the provider's displayed total.
- Keep the provider package total separate from the all-in minimum. A package below budget is not compliant when required transfer, taxes, baggage, or board supplements push the known total over budget.
- If a required extra is not priced, report the all-in total as unknown and provide only the known minimum.
- Mark each provider as `live completed`, `searched but not completed`, or `not accessed`; never imply exhaustive checking.
- When brands share inventory or ownership, identify the actual organizer and deduplicate identical flight/room/rate combinations rather than presenting them as independent finds.
- A campaign headline such as `up to 50%` is not offer-level evidence. Require the exact configured offer card or checkout to show the campaign label, strike-through/reference price, reduced family total, and applicable dates.
- Do not subtract `coupon up to ...` language. Count a coupon only after the wallet or checkout confirms the exact code, eligibility for that itinerary, and revised family total.

## Dynamic portal technique

Read-only date fields often require opening the date picker and clicking accessible calendar cells; direct value assignment may not change React state. In reactive forms, choose both dates first, then set duration, then activate the date modal's specific apply control: selecting a date can rerender the duration selector and silently restore its default. Verify the collapsed search summary contains the destination, exact date window, duration, and party before submitting, and verify the same criteria again in the results summary or state-bearing URL. Do not extract offers when the results have fallen back to default dates.

When browser automation cannot reliably select a native `<select>`, use its native value setter and dispatch a bubbling `change` event, then verify the visible selected label. Prefer a stable semantic selector such as a `data-id` or accessible name for the modal apply button instead of the first generic `Apply`/`Übernehmen` control; date, traveler, and cookie controls may share text.

Remove unwanted origin-airport pills one at a time, submit, and confirm the resulting search summary or URL state. On the detail page, extract DOM/accessibility text for offer cards, room/board alternatives, flight sections, and totals rather than relying on visual inference.

### Direct-hotel booking engines

For split-booking research, do not stop at a hotel's promotional landing page. Configure the exact family in the embedded engine, including each child age, and continue to the room/rate results. Treat calendar `from` prices as navigation aids only. On the result card, verify the exact room, cancellation terms, selected board, board supplement, activated member/customer discount, and taxes excluded from the headline total. If selecting half board leaves the headline price visually unchanged, preserve both the displayed base total and the radio-label supplement, then add them explicitly; do not assume the supplement is already included. A customer rate that the live engine activates automatically and describes as account creation during checkout is valid offer-level evidence; a generic rewards banner is not.

When no complete flight+hotel+extras total can be verified, report a clearly labelled verified subtotal and calculate the maximum remaining flight budget needed to beat the benchmark. Never describe that subtotal as an all-in result.

### Split-booking synchronization and decision rule

For a separate flight-plus-hotel comparison, lock every component to the same exact stay before ranking it. Test each permitted seven-night start independently, then pair only the flight and hotel prices for that identical check-in/check-out pair; never combine the cheapest flight week with the cheapest hotel week. The all-in split total must include the full-party airfare, the selected checked-baggage configuration, the exact shared room with required board, mandatory hotel charges, local tax, and airport transfers in both directions. State whether the hotel rate is refundable or prepaid.

Treat an official direct-booking headline such as `exclusive web discount up to 25%` as discovery evidence only. Do not call the split option attractive, discounted, or better value until the exact room/rate result shows the activated reduction and the synchronized all-in total is compared with the package benchmark. If totals are similar, explicitly weigh package-travel protection and included disruption support against the legally separate flight and hotel contracts.

## Retired or migrated package portals

When a named package portal appears unavailable, distinguish a retired product from a temporary browser block before searching for offers:

1. Probe the official landing page plus at least one state-bearing search URL and one known hotel/detail route with redirects disabled.
2. Repeat the state-bearing probe for every requested departure date. Record HTTP status, redirect target, response size, and retrieval time.
3. If every route uniformly redirects to a generic airline homepage without preserving search state or exposing a booking engine, classify the provider as `live completed: no active package portal`, not as `searched but not completed` and not as “no matching hotel”.
4. Use an archived page only to verify that the hostname and route belonged to the named product (title, operator, historic URL schema). Never use archived inventory, prices, or availability as current evidence.
5. Do not substitute a sister-brand portal or presumed successor unless the user permits another provider. Report that exact room, flight, extras, total, deep link, and budget delta are unavailable rather than fabricating near-miss data.
6. Disclose any placeholder adult ages encoded in test URLs. Child ages must remain exact.

A redirect observed only in an automated client is not enough by itself if a working interactive booking flow is accessible elsewhere; check both the canonical hostname and the airline’s current product entry point where possible.

## Output format

Lead with whether any option meets every hard requirement. Use one row per verified configuration with dates, flights/airline status, accommodation/category, room, board, transfer type, package total, extras, known all-in minimum, budget delta, booking URL, and retrieval time. Put near-misses and provider-access gaps in separate sections.

## Supporting references

- See `references/global-hotel-portal-live-verification.md` for Agoda detail-page repricing URLs, duplicate-slug handling, Booking property-state checks, Expedia/Hotels.com access classification, and iteration-budget discipline.
- See `references/dynamic-package-portals.md` for the portal workflow, calculation checklist, shadow-DOM offer extraction, campaign-label verification, and coupon safeguards.
- See `references/swiss-dynamic-package-portals.md` for verified TUI Suisse, Hotelplan, and Migros Ferien extraction and deduplication techniques.
- See `references/ab-ins-blaue-dynamic-packages.md` for exact GET-state configuration, Zürich airport selection, organizer availability repricing, passenger-total extraction, and explicit flight/baggage verification on ab-ins-blaue.ch.
- See `references/tui-suisse-shadow-filtering.md` for recursively reaching nested filter controls, verifying serialized SWISS/Edelweiss state, extracting hydrated `tui-offer-list` records and flight dialogs, guarding against stale/mis-routed destinations, and keeping checked baggage unverified until an explicit allowance appears.
- See `references/swiss-deal-club-portals.md` for editorial-deal rejection rules and verified Holidayguru/Lidl Schweiz traveller and date-selection techniques.
- See `references/swiss-promotions-and-loyalty.md` for validating official coupon terms, stale campaign pages, account-bound codes, loyalty points, gift vouchers, and sports-baggage claims without overstating savings.
- See `references/direct-hotel-engines.md` for exact-family Hotetec extraction, board-supplement accounting, activated customer-rate evidence, transfer checks, split-booking thresholds, and Google Flights full-party/baggage verification.
- See `references/google-flights-airline-deeplinks.md` for deterministic fixed-duration date-window enumeration via reusable `tfs` payloads, final-itinerary repricing, airline partner/deeplink field extraction, and strict limits when checked-baggage or fare-family totals are not exposed.
- See `references/direct-airline-live-verification.md` for exact-party airline-direct searches, both-leg nonstop validation, checked-baggage family totals, official-component API calculations, aircraft-type non-inference, and Chair/GO7 and Vueling booking-flow techniques.
- See `references/google-flights-nonstop-aircraft-audits.md` for two-leg nonstop enumeration, one-way cross-checks, bulk flight-detail expansion, exact scheduled-aircraft evidence, codeshare deduplication, and baggage-safe price comparisons.
