KAYAK · 2025 · AI under a cost constraint

An AI overview on flight results, gated by cost

KAYAK's flight results overwhelmed travelers with options and no guidance. I designed an AI overview that orients them and routes them to the filters that convert, without burying results and without paying for a model call on every search. Inference cost was a design constraint here, treated like layout or latency.

Role
Product Designer · lead on the feature, framing through ship
Team
Product, engineering, customer insights
Timeline
2025
Scope
AI overview on flight results, cost-aware generation
Google's text-block AI Overview next to KAYAK's results page, where every visible result is a potential booking click
Why not just copy Google. A text block at the top of results would push flights below the fold, and generic tips ignore the user's actual search. KAYAK's page exists to compare and book, not to read.

Why it mattered

12%
Feature engagement on the flight results page
+7%
Filter usage from overview quick actions
3-state
Disclosure pattern that keeps users in control

The problem

Too many options, not enough clarity

Dense flight lists and deep filter menus made results hard to parse. "Difficult to make sense of" was the third most frequent negative theme in customer feedback, and users who could not decide confidently left for Google Flights. The opportunity was to surface AI guidance, but in a form that protects the primary task of comparing and booking.

The reframe

Guidance that drives the next action

Instead of a markdown summary, the overview renders as horizontal cards in three states: half-faded on load, expanded on opt-in, and collapsed once seen, so results stay in the viewport the whole time. Each insight is paired with a conversion-positive action wired to the highest-engagement filters already on the page.

Three states, results always in view. The overview loads half-faded, expands on opt-in, and collapses to a single row once seen. Cards scroll horizontally so flight results never get pushed below the fold.
Each AI overview card paired with a quick action that maps directly to an existing filter or control on the results page
Insight to action. "Nonstop flights available" applies the Stops filter; a packing tip nudges a checked bag. The AI surfaces existing functionality through a new entry point rather than inventing new behavior.
From tip to filter, in one tap. Acting on a card applies the matching filter in place and confirms the change on the results below, turning a passive summary into a conversion step.
The overview in use. Cards expand and collapse over live flight results, with quick actions triggering filters in place.

The core craft

Not every search is worth the tokens

Every overview is an LLM call, so showing one on each search would scale cost linearly with traffic. A traveler comparing a complex international route needs guidance; someone booking a familiar shuttle does not. I designed a two-step architecture: a lightweight scoring layer reads route metadata and predicts whether an overview earns its cost before any generation fires, so quality scales with value rather than volume.

Generation pipeline: user query and KAYAK data feed a model call that selects relevant themes, each mapped to a suggested action, then rendered on the results page
One system, many surfaces. Query and KAYAK data feed a model call that selects themes, each mapped to a suggested action and rendered inline. The same structure scales across routes without bespoke layouts.

How I worked

  • Protected the page's job: comparing and booking

    A three-state card pattern guides without pushing results below the fold, so the flights people came for stay in view.

  • Treated tokens as a design constraint

    A scoring gate fires the model only when an overview is likely worth it, so cost tracks value, not traffic volume.

  • Reused what already converts

    Quick actions map to the page's highest-engagement filters, turning a passive content layer into a conversion tool.

  • Built a reusable pattern

    The card model works for any supplementary content on a high-intent results page, not just this feature.

  • What I didn't build

    No new behaviors to learn: quick actions route to filters the page already had, rather than adding a parallel system.

Collaboration & ownership

From customer pain to measured conversion

  • Product
  • Engineering
  • Customer insights

I owned the feature from the framing of a recurring customer-feedback theme, through the interaction model and the cost-scoring architecture that made it viable to ship at traffic scale, to its measured impact on engagement and filter usage.

  1. Frame

    "Difficult to make sense of" ranked third among negative feedback themes; users were leaving for Google Flights.

  2. Reframe

    Designed a three-state card pattern that guides without burying results, each insight tied to a converting action.

  3. Make it viable

    Added a scoring gate so the model only generates when an overview earns its cost.

  4. Ship & measure

    12% feature engagement on the flight results page and +7% filter usage from quick actions.

Outcome

AI that earns its place on the page

Users engaged with the overview, scrolled the cards, and triggered filters they might not have found otherwise: 12% feature engagement on the flight results page and +7% filter usage. Tying AI insights to specific page actions turned a content layer into measurable conversion.