KAYAK · 2025–2026 · Embedded conversational search

Moving KAYAK's AI into the booking funnel

A standalone AI travel site nobody came back to, rebuilt as a conversational layer inside the core booking flow. +14% booking revenue. Now live on kayak.com.

Role
Product Designer · intent model, response system, widget architecture
Team
1 staff designer, 1 PM, front-end and back-end engineering
Timeline
April 2025–April 2026
Surfaces
kayak.com desktop and mobile web

What I owned: the intent taxonomy and behavior spec, the custom-GPT behavioral simulation, the response anatomy, the vertical widget system, and the comparative widget study.

What I shared: experiment design with the PM; panel architecture and visual direction with the staff designer; model and retrieval approach with back-end.

What I inherited: the existing Trips drawer pattern, which I extended rather than replaced.

One prompt, in plain language. A traveler types what they want and the chat turns it into a real KAYAK search, no forms or filters to learn first.

What the work returned

+14%
Booking revenue in the treatment cell, ads excluded
+2%
Lift in total conversion
+80%
Messages per user once chat shipped

Method: 50/50 randomized across desktop and mobile web, US traffic. Revenue excludes ads. Every core funnel metric stayed neutral. The de-risking held, and nothing we shipped cost anything.

At a glance

01Onboarding to AI Chat

Before: KAYAK.com's structured search form beside the separate KAYAK.ai page. After: the same KAYAK.com search with the Ask AI assistant embedded as a right-side drawer.

Standalone page embedded drawer, zero context switching.

02Multi-intent output

Before: AI results crammed into a narrow panel over the KAYAK homepage. After: a full flight results page with an Ask AI panel showing stacked flight and hotel widgets.

Single rich-text response simultaneous flight and hotel widgets with follow-ups.

03Responsive chat

Before: a congested mobile AI modal with a multi-line input. After: a streamlined mobile chat with a single-line input and curated prompt chips.

Congested mobile modal streamlined single-line input with curated prompts.

The stakes

Where the pressure was actually coming from

KAYAK is metasearch. The business runs on people arriving from Google and converting into bookings, and in 2025 that pipe started narrowing: AI Overviews and answer engines were absorbing the queries that used to become clicks. Two weeks after we shipped the first AI experiment into the core site, Booking Holdings took a $457M writedown on KAYAK, attributed directly to Google shifting free SEO traffic to paid.

The honest read, then and now: this was a traffic-acquisition and margin problem well before it was a booking-share one. Nobody was losing bookings to ChatGPT. They were losing the cheap top of the funnel, which is exactly where an AI-assisted entry point competes.

<1%

of Booking Holdings room nights come from LLM referrals, and flat

yet
$457M

written down on KAYAK, attributed to Google shifting free traffic to paid

The damage wasn't where everyone assumed. AI wasn't taking the bookings; it was taking the free traffic that used to produce them. Which is why the answer was an AI entry point at the top of the funnel, which is where the loss actually was.

That framing set the bar for everything below. The goal was never to ship a chatbot. It was to give travelers a reason to start their search on KAYAK.

The ghost town

A capable AI no one came back to

KAYAK launched KAYAK.ai in April 2025: a standalone, chat-first travel site, separate from the core booking platform. It could answer complex travel questions, match deals to niche preferences, and check live flight status, then hand users to KAYAK.com to book.

Publicly it was framed as a sandbox: "a creative sandbox for our tech teams to innovate." Internally, the sandbox had a retention problem. Despite significant marketing and infrastructure spend, organic traffic stayed thin and internal cohort data at 30 days showed almost no one coming back. Both things were true at once, and the second is what the referral analysis was responding to.

The standalone KAYAK.ai product: a full-page 'What's your trip plan?' prompt with a chat history sidebar, separate from KAYAK.com
A separate destination. KAYAK.ai lived on its own domain, a full-page chatbot users had to leave KAYAK.com to reach.

But the referral data told a different story. I dug into traffic between KAYAK.ai and the core platform, and the small group who did cross over behaved unlike anyone else: 5x the click-through of any other referral channel.

User volume & click-through · June 2025

User volume and click-through rate by product, June 2025
ProductTotal trafficClick-through rate
KAYAK.com~50%~10%
KAYAK.ai~7%~45%

A signal worth acting on, with a caveat. Tiny audience, outsized intent, but this population self-selected, so the gap can't carry the weight of a platform decision on its own.

What the 5x doesn't prove

The tempting read is that AI-assisted search creates intent. I don't think that's what the data said. Anyone who sought out a separate AI travel site in 2025 was already an unusually motivated traveler. The 5x was at least partly, maybe entirely, selection. The likelier direction is that intent caused the AI usage.

That mattered, because it determined what to do next. An observational signal from a self-selected population can't justify a platform rewrite. It can only justify an experiment designed to produce a number selection can't explain. So the finding wasn't "AI drives intent." It was narrower and more useful: KAYAK.ai's technology wasn't the problem. Asking users to go somewhere new for it was.

The bet

Test the thesis before the rebuild

If the barrier was the destination, the fix wasn't a better KAYAK.ai. It was removing the destination and reframing the goal around the traveler.

“How can we land more users on KAYAK.ai?”

“How can we integrate AI better into the KAYAK ecosystem?”

That reframe turned one vague question into two things we could actually measure.

Two testable hypotheses

  1. Users will adopt AI chat when it's embedded in KAYAK.com, not a standalone destination.

  2. Users who engage with AI chat will lift KAYAK's core metrics: conversion and revenue.

The full vision, persistent multi-turn chat, carried real dev cost and migration risk. So I pushed for the cheapest test of the thesis first. Freeform text in the existing form would have needed a new backend to constantly tell natural language apart from structured airport queries. A separate AI mode avoided that, and gave us two things: risk isolation (if the experiment broke, only the experiment broke) and clean data to attribute any lift to AI.

KAYAK search form with a new 'AI Mode' tab added alongside Flights, Stays, and Cars
One new mode, not a new backend. Adding AI as a parallel search mode isolated the experiment from the primary search funnel and kept its data clean.
NLP Search: the cheap test, in the live flow. Natural language typed straight into KAYAK's core search, routed to the same results page. One new input type, enough to measure real demand before committing to a full chat build.

What the test returned

+14%
Real booking revenue, excluding ads
+2%
Lift in total conversion
Neutral
Impact on core metrics, no downside

On the gap between the first two numbers: conversion moved 2% while revenue moved 14%, which means the lift came mostly from what people booked, not how many booked. AI-assisted sessions skewed toward longer and multi-vertical itineraries. Explaining that gap matters more than the number itself. A number you can't decompose reads as something handed to you; a number you can explain reads as something you understood.

The revenue confirmed the thesis: embedding AI in a familiar flow converts. And the ceiling showed up immediately. NLP Search was single-turn by design, so people submitted one query and stopped: no refinement, no follow-up, no cross-vertical exploration. Behavior matched the architecture exactly. The experiment had proven the thesis and simultaneously proven its own limits.

Intent taxonomy & behavior spec

Classify, or infer?

Before any visual design, the hardest problem was how the AI should decide. I explored two ways to turn a prompt into a response, and the choice shaped everything downstream.

Framework A · Parametric classifierDiscarded

Precise, but it assumed people think in search parameters. Add hotels, cars, activities and the grid multiplies, 3 × 3 × 3 × … exponential complexity.

Framework B · Intent inference engineAdopted

Infer intent, then resolve ambiguity. Sort a prompt into a rough bucket, then clarify within it in one step, so a vague prompt never dead-ends and new dimensions don't explode the model.

To align engineering and PM on that behavior before a mock existed, I mapped the intent logic as a jobs-to-be-done flow, then translated it into a runnable custom GPT. Stakeholders could type real prompts and watch the system respond, so we iterated the system prompt as a shared behavioral contract, not a static spec.

A dense jobs-to-be-done flow board mapping how the AI parses each prompt type into query categories and calendar states

The behavioral spec

A jobs-to-be-done flow mapping every input type to a query category and calendar state.

System prompt drafts beside a custom GPT that returns a structured, simulated response to a real travel prompt

Run it, don't read it

The same logic as a custom GPT, so the team could test prompts live instead of reviewing a doc.

Scaling up

From one input to a conversation

With the revenue signal in hand, we built what we'd envisioned from the start: an omnipresent chat. The Chat v1 drawer launched site-wide, reachable from the front door, results, and detail pages. For the first time, users could have a conversation with KAYAK, not just search it.

Chat v1, live across the site. Opening the drawer, asking in plain language, and routing to results without leaving the page.

Panel placement isn't cosmetic, it signals the AI's role. Left panels frame AI as a creative partner you co-create with; right panels frame it as a contextual assistant that stays out of the way. KAYAK Chat is the latter, so it belonged on the right.

Wireframe with the chat panel docked on the left and results filling the right

Left panel

Reads as a creative partner, co-create over many rounds (Lovable, ChatGPT Canvas).

Wireframe with results on the left and the chat panel docked on the right

Right panelChosen

Reads as a contextual assistant, users stay on results, chat assists on demand.

KAYAK already had a right-side drawer for Trips. Reusing it meant zero new interaction model and a natural handoff: plan in chat, save to Trips in one motion.

Built on what already existed. Chat shares the Trips drawer, so it inherits a familiar surface and a one-motion save.

The core craft

When the AI can say anything

Chat v1 was live. Then a single flight reply showed everything still wrong with it, three problems in one response.

An annotated mobile chat reply flagging three problems: the text response shifts after loading, saving is disconnected from the booking flow, and the hierarchy breaks under complex results
Three problems in one reply. The summary generated last but rendered on top, so the answer reflowed; results were crammed into the narrow column; and saving was orphaned from the Trips flow.

Saving was the easy call, handed back to the Trips drawer. The other two were real design problems. Multi-turn chat made output non-deterministic: one prompt could return a list, a comparison, a clarifying question, or a multi-vertical plan. So instead of designing one layout, I defined a fixed response anatomy, a constant order any answer pours into.

When the model is wrong

What the system does when it isn't sure

An intent inference model buys resilience by accepting it will sometimes guess wrong. That's a design surface in its own right, so I specified how the system behaves at each level of certainty rather than treating failure as an edge case.

The structural decision underneath all of it: prices never live in the chat. The chat produces a widget; the widget points at a results page; the results page renders live inventory in its production layout. The model doesn't state a fare, so it can't be wrong about one. Provenance and pricing stay with the system of record.

How the system responds at each level of confidence
System stateResponseStatus
High confidence, inventory foundWidget and summary, direct route to resultsShipped
Ambiguous parametersClarifying question before any widgetShipped
Over-constrained or thin inventoryWidget with an explicit caveat and a broaden-search affordanceSpecified
Out of scope or unanswerableGraceful decline, routed to conventional searchSpecified
Price drift between response and clickLive re-verification on the results page, never in chatBy architecture
Model or API failure mid-streamPartial-state recovery and retryKnown open

Confidence, mapped to response. The most reliable way to prevent a confident wrong answer is to architect the system so it never has to make the claim.

To decide how much of a result belongs in chat versus the page, I tested three widget patterns with nine users, unmoderated. Pattern B, a condensed summary with thumbnails, won. But the scorecard was the small result. The real finding was how differently people framed the panel.

The majority read chat as a wayfinder. Not a place to act, but the fastest route to the right page. That pointed the direction: chat orients and routes, it doesn't replace the results page.

What nine users can and can't decide

Nine unmoderated participants is discovery-grade evidence for a platform-grade decision, and it didn't settle the direction on its own. It agreed with two things we already had: the single-turn ceiling in the experiment usage data, and Fullstory replays showing users scrolling results out of view. Three independent signals pointing the same way is what made the call, rather than the sample of nine.

The fourth quadrant is a hypothesis rather than a finding. The "Reference Builder", someone who front-loads constraints into chat as a thinking aid, then hands that understanding to conventional search, kept suggesting itself in the data, but no participant cleanly fit it. It's on the list to test, well short of the list of things we know.

So each response generates a vertical widget: a compact anchor in the panel, linked to a full results page in KAYAK's production layout where people already know how to act. The relationship stays predictable, one widget, one page, one state: apply a filter, a new URL spins up a new widget.

A condensed flight widget inside the chat panel, showing three airlines with times and prices and a 'See all 879 flights' link
Pattern B: a scannable anchor, not a wall of text. Enough to orient, with a clear link out to the full results page.
Multi-query, without losing the thread. A mixed-intent prompt like “flights and hotels in Tokyo next week” stacks a widget per vertical, each with its own viewed state, so users move between result sets without losing context. The strongest delight signal in testing: “I don't think all chatbots would offer that.”
A component library behind the widgets. Each vertical shipped as one component with explicit state variants, so the system scaled to new verticals without fragmenting.

What almost shipped instead

The two calls I'd have to defend

The full chat drawer, first. The original plan was to build the persistent multi-turn experience up front. It was what everyone wanted and what the vision documents described. Arguing for a single-input experiment instead meant deliberately shipping something less ambitious than the team was ready to build, and being the person slowing it down. It bought a revenue number and a documented ceiling for a fraction of the cost, and the ceiling is what made the eventual architecture obvious rather than speculative.

The parametric classifier. Nine clean scenarios, fully specifiable, easy for engineering to estimate. It would have shipped faster and broken on the first prompt that didn't think in search parameters.

Collaboration & ownership

Owning behavior, not just screens

  • Product
  • Engineering
  • User research

The highest-leverage work lived upstream of the UI: the intent logic, the behavioral contract, and the research that engineering and PM aligned on before mocks existed. I owned the experience from de-risking the test scope through the shipped drawer and its measured impact.

  1. Reframe

    Turned "make KAYAK.ai better" into a testable thesis: AI embedded in the flow people already use.

  2. De-risk

    Shipped NLP Search as a single-turn tracer bullet, at +14% booking revenue with neutral impact on core metrics.

  3. Define

    Set the intent inference model and a fixed response anatomy, prototyped as a runnable custom GPT.

  4. Validate

    Tested widget patterns with nine users; the framing, not the scorecard, steered chat toward a wayfinding layer.

  5. Ship & measure

    Launched Chat v1 site-wide, lifting engagement +123% over NLP Search with about 80% more messages per user.

Where it landed

Chat now ships alongside search

kayak.ai now redirects to kayak.com/ai. The standalone site folded into the core platform, which was the thesis, and it's verifiable in one click. Go use it →

Chat v1 lifted engagement +123% over NLP Search, with 80% more messages per user. The honest caveat on the first number: comparing a multi-turn chat product to a single-turn search input is close to comparing a conversation to a sentence. The artifact was designed to produce more turns, so more turns is a weak claim. Messages per user is the number I'd defend. It says people who started a conversation kept going, which is the specific thing the single-turn ceiling said we couldn't do.

AI adoption, share of KAYAK users Single digit
0%all KAYAK users · 100%

Shown as a band rather than a point. The public figure is "single-digit percentage," and I'd rather draw the uncertainty than invent a decimal. The model works: over 100,000 conversations a month. Discovery doesn't. That gap is the honest limitation, and it's the thing I'd take on next.

We proved the model. We haven't proved people can find it.

What the outside data says that the inside data can't

The strongest evidence for the architecture is external: AI users are 10× more likely to start a search with no fixed destination or date. AI owns the top of the funnel; conventional search owns the decision. KAYAK's CPO put it the same way the work concluded internally: "the right model is not chat instead of search, but chat working alongside search."

  • Ask before answering

    One clarifying step costs seconds and saves users from dead-end sessions.

  • Classify intent, not query

    A deal-hunter and a trip-planner can type the same words and need completely different responses.

  • Replace recaps with actions

    7 of 9 users called text summaries "noise"; proactive follow-ups outperformed them every time.

  • Prototype with real data

    Static mocks can't test an intent-driven system. Design for unknown outputs, not known inputs.

  • The most valuable work wasn't the UI

    It was the behavioral specs, classifier logic, and research that made the UI possible. When those clicked, the pixels followed.