# LLM-native surfaces for the inspiration page

> Companion to [`scratchpad.md`](scratchpad.md), [`axes.options.md`](axes.options.md),
> [`round-1.goals.md`](round-1.goals.md), and [`scenarios.evals.md`](scenarios.evals.md).
>
> Assumes Wanderu is operating in the realm of LLM integrations — both as a
> place where LLMs power Wanderu-owned surfaces, and as an entity that exposes
> capabilities to external LLM clients (ChatGPT, Claude, Gemini, Perplexity,
> Copilot) via MCP.

## Premise

The three axes from [`axes.options.md`](axes.options.md) still describe what
the user means. Under LLM assumptions the axes stop being form fields the user
fills in and become dimensions an LLM extracts from natural-language input.

This reshapes the surface set, the economics, and — most importantly — the
strategic question of *where* Wanderu's inspiration moment should live.

---

## The four LLM-native surfaces

| Surface | What it is | Best fit | Strategic role |
|---|---|---|---|
| **In-product conversational search** | Chat box on `/inspiration/` (or anywhere on Wanderu) | Compound + curated-pick scenarios; multi-turn refinement; proxy bookers; users who would rather describe than configure | Owned experience; supports persona-specific UX; retains brand |
| **LLM-augmented structured search** | Form stays primary; LLM parses underspecified inputs, suggests anchors, autofills, recovers from "no results" | Pinhole and wide-axis scenarios; users who want control; existing Wanderu search session salvage | Incremental over today's UI; lowest-risk path to ship |
| **Agent / MCP entry from external LLMs** | Wanderu MCP server consumed by ChatGPT, Claude, Gemini, Copilot, Perplexity | Open-ended exploratory queries that originate outside Wanderu; users who don't know Wanderu exists | Strategic distribution; presence-or-absent decision |
| **LLM-as-curator** | Dynamically generated editorial — "10 places to go from Boston this weekend under $80" — refreshed at scale | SEO surface; wide-axis + budget anchor; pre-emptive landing pages by city | SEO defense + scalable content |

These four absorb the older UI-native surface list (compare widgets, faceted
catalogs, recommendations) by folding them into LLM-mediated interaction.

---

## How the axes map under LLM

| Axis | UI-native interpretation | LLM-native interpretation |
|---|---|---|
| **Breadth** | How many search fields the user fills in | How much the user underspecifies in their prompt |
| **Resolution** | UI component shown (chart, list, map, compare widget) | Response shape the LLM is instructed to produce |
| **Anchor** | Which entry-point widget surfaces the constraint | Intent classification — what the LLM extracts as the locked dimension |

Anchor detection becomes the hardest of the three. The LLM has to recognize
anchors from prose ("for my mom in a wheelchair," "cash only," "anywhere
Vonlane goes") and route the search through the correct constraint path. The
[`scenarios.evals.md`](scenarios.evals.md) eval set exists specifically to
score this.

---

## Economic constraints

LLM-native surfaces introduce per-query costs and per-query risks the static
UI didn't have.

| Constraint | Implication |
|---|---|
| **Per-query token cost** | At scale, $0.001–$0.05 per query × N queries per session × N sessions per day. Must compare to current SEM CAC and to per-booking margin. |
| **Latency budget** | Users tolerate ~2–5s for a chat response; ~500ms for a structured-search assist. Streaming + caching help; cold model calls hurt. |
| **Hallucination risk** | Made-up prices, fabricated carriers, wrong accessibility claims, invented routes. Mitigation: require tool calls (the LLM must call Wanderu search, not generate fares from training data). |
| **Semantic caching** | Identical or near-identical inspiration queries should share a response. Embedding-based cache can drop cost by 60–80% on the wide-axis + budget anchor surface. |
| **Trust calibration** | Users need to know when the LLM is recommending vs. surfacing real fares vs. guessing. Citations and "estimated" labels required. |
| **Attribution loss** | Bookings that start in ChatGPT and finish on Wanderu currently break standard attribution. Need conversation-ID propagation. |

---

## The strategic ordering question

Under LLM assumptions, the inspiration-page decision blurs with a larger one:

> **Is Wanderu's primary inspiration surface the website, or the MCP server
> consumed by external LLMs?**

Two scenarios:

- **Website-primary.** Most open-ended travel queries still originate on
  search engines or Wanderu directly. `/inspiration/` is the main build; MCP
  is secondary distribution.
- **Agent-primary.** Open-ended queries increasingly originate inside
  ChatGPT, Claude, Perplexity. Wanderu is either present in the MCP layer or
  absent from the inspiration moment entirely. `/inspiration/` becomes a
  fallback for direct visitors; the MCP server becomes the strategic build.

Round 1 must produce a defensible estimate of which world we're in *now* and
which we're trending toward over 12–24 months. See known unknown #13 in
[`round-1.goals.md`](round-1.goals.md).

---

## Surface re-ranking under the LLM lens

| Old surface (UI-native) | New status (LLM-native) | Why the shift |
|---|---|---|
| Cheapest-day price chart | Folded into structured-search assist (LLM parses window from prose; Explore serves the answer) | Smaller incremental build; unified front-end |
| Map view of destinations | Still useful as a *rendering* of LLM results, not a separate surface | LLM picks results; map just displays them |
| "Plan it for me" curated pick | **First-class, defensible** | LLMs make this cheap; ChatGPT will offer it for free if Wanderu doesn't |
| Compare widget for 2–3 candidates | LLM-generated comparison with rationale | Lower build, higher trust if grounded |
| Anchor: mode/access entry | LLM intent classifier with tool-routing | Lower friction for users who never found the filter |
| External-LLM entry (MCP) | **Wasn't on the original list; now potentially highest leverage** | Where the inspiration moment is migrating |
| LLM-as-curator (dynamic SEO) | New surface | Cheap to generate at scale; future-proofs SEO against generative-search erosion |

---

## Risk register

Risks that didn't exist for static UI surfaces but matter under LLM:

| Risk | Severity | Mitigation |
|---|---|---|
| Hallucinated accessibility claims for wheelchair users | **Critical** | Mandatory tool calls; refuse to answer accessibility questions without verified carrier data; manual review of accessibility-related responses pre-launch |
| Fabricated prices that change at checkout | High | All price quotes via Wanderu search tool; show "estimate" labels when search hasn't been called; never quote prices from training data |
| Spanish-language LLM quality below English on Wanderu corridors | High | Separate eval set in Spanish; benchmark per model; require Spanish-native eval reviewers; do not ship Spanish surface without per-corridor verification |
| Voice transcription errors on station/city names | Medium | Fuzzy match before search; expose ambiguity to user before booking |
| Attribution loss for booking happens after multi-step chat | Medium | Conversation-ID propagation; new attribution model for LLM-mediated sessions |
| Regulatory: incorrect accessibility/refund claims as legal exposure | High | Constrained generation patterns; legal review of generated copy templates; logging of all customer-facing LLM outputs |
| Cost runaway from agentic loops or tool-call retries | Medium | Per-session and per-IP token caps; tool-call timeout and retry limits |
| Refusal patterns blocking legitimate searches (e.g. cross-border, immigration-adjacent contexts) | Medium | Eval set must include the proxy-booker scenarios that touch these patterns; tune prompts to avoid spurious refusals |
| External LLM clients quoting *competitor* prices for Wanderu corridors | Strategic | Ensure Wanderu MCP is registered with major clients; track competitor MCP presence |

---

## Open questions

- **Which models?** Single model per surface, or routed (cheap model for
  parsing, expensive for synthesis)?
- **Build vs. buy on the MCP server?** Wanderu has one already (per existing
  tool registry: `mcp__claude_ai_Wanderu_Booking__search-trips`) — what's the
  gap between that and what external LLMs actually need to serve the 100
  scenarios? See [`scenarios.evals.md`](scenarios.evals.md).
- **Public vs partner-gated MCP?** Expose Wanderu MCP publicly (anyone can
  connect) or partner-gated (revenue share with chosen LLM vendors)?
- **In-product chat scope.** Keep it on `/inspiration/` only, or make it a
  global widget on every page?
- **Voice surface.** Mobile-heavy personas (Jake, family connector) may
  prefer voice. Is voice a Round 2 deliverable or a Round 3+ deferral?
- **Cost cap.** What per-session LLM cost is acceptable as a function of
  expected booking value per persona? Premium-seeker session economics are
  very different from student session economics.

---

## Related work

- [`scratchpad.md`](scratchpad.md) — the base page premise + 100 scenarios
- [`axes.options.md`](axes.options.md) — three axes of openness
- [`round-1.goals.md`](round-1.goals.md) — data we need before building, updated for LLM lens
- [`scenarios.evals.md`](scenarios.evals.md) — eval set derived from the 100 scenarios
