KAYAK · 2025 · AI under a cost constraint

Turning AI summaries into booking decisions

A flight search returns hundreds of near-identical options and no opinion about any of them. I designed an AI overview that orients a traveler and routes them to the filters that convert, without burying the results and without paying for a model call on every search.

Role
Product designer. I led the feature from the first framing through to launch.
Team
Product, engineering, customer insights
Timeline
2025
Surfaces
kayak.com flight results, desktop and mobile web
Problem
Dense flight results with no guidance on what actually matters for the search a traveler is looking at.
Solution
Horizontal AI cards whose quick actions are wired to the highest-converting filters already on the page.
Impact
12% of people on the results page used it, and filter usage rose 7%.
  • 12% Of everyone on the flight results page engaged with the overview
  • +7% Filter usage, driven by the overview's quick actions
  • 3 states Disclosure pattern that keeps results in the viewport

Engagement is measured against all sessions reaching the flight results page. Filter usage is measured against the same page before the overview shipped.

At a glance

Insights alongside the results, not on top of them. The cards are horizontally scrollable, so the flights stay in the viewport while the overview generates.
Three interaction states. Half-faded on load, expanded on opt-in, collapsed to a single header row once seen. The traveler controls how much AI they get.
Every tip carries an action. Each card connects to a filter or a sort that already exists on the results page.

The problem

Too many options, not enough clarity

A flight search hands a traveler hundreds of near-identical options and an opinion about none of them.

KAYAK’s flight results pages open on a dense list and a deep filter menu. In customer satisfaction feedback, “difficult to make sense of” ranked as the third most frequent negative topic.

Travelers who could not reach a confident decision left for Google Flights, which is a slow way to lose market share and had been happening since 2019.

The reference

Shall we just copy Google?

Google had already proven travelers find AI summaries useful during search. It proved it on a page with a completely different job.

The obvious starting point was Google’s AI Overviews: expandable text and external links, sitting above the results. Google had validated the pattern at a scale nobody else has.

The reference, and why it doesn't transfer. Google's overview sits above a page built for reading. KAYAK's sits above a page where every visible row is a booking click.

Two things stopped it transferring. A text block at the top of results pushes flights below the fold, on a page where every visible result is a potential booking. And the overview was not connected to the search parameters, so its tips read as generic travel advice rather than guidance about the flights directly underneath it.

The primary task on this page is to compare and book, not to read.

The reframe

Optimize for usability and conversion

The overview stopped being a block of text and became a row of cards, each one wired to something the page could already do.

Horizontal layout to protect the main task

Instead of a markdown block, the overview renders as horizontally scrollable cards with three interaction states. Half-faded on load, so it is visible without being intrusive. Expanded when the traveler opts in. Collapsed to a single header row once they have seen it. Flight results stay in the viewport throughout.

Scroll, expand, collapse. The cards move sideways rather than pushing the page down, and collapse to a header once read.

Quick actions tied to search behavior

The first version surfaced useful information that connected to nothing on the page. Every tip is now paired with a conversion-positive action:

  • “Nonstop flights are available” carries Filter nonstop only
  • “Prices are higher on this day” carries Try flexible dates
  • “Consider nearby airports” carries Expand to nearby airports
Each tip resolves to a control that already exists. The action types were picked from the highest-engagement filters and sorts already on the results page.

The overview is a new entry point to existing functionality, and it invents no new behavior. That is why the filter number moved: people were reaching controls they had not been finding.

The cost constraint

Not every search is worth the tokens

Every overview costs a model call. At KAYAK's search volume that scales with traffic, so something has to decide which searches deserve one.

Someone searching Boston to Istanbul in July is weighing limited nonstop options, layover routing, visa requirements and airport-to-city transport. They are cautious, holding more variables than they can compare, and actively looking for guidance. An overview there is genuinely useful.

Boston to LaGuardia for a Friday shuttle is a different search. That traveler already knows what they are doing. The token cost is identical. The value is not.

So the feature runs in two steps. A lightweight scoring layer takes the search parameters and route metadata and predicts whether an overview would earn back its cost. No model call at that stage. Only when the score clears the threshold does the generation call fire, and only then does the search cost anything.

Two steps, and only one of them costs money
Search queryScoring layerWorth it?One model call
  • Nonstop availability Filter
  • Flight schedule Sort
  • Airport advice New search
  • Airline insights Highlight
  • Weather and packing Filter

The generation call reads the search query, KAYAK's own cached rates and price models, KAYAK's city and best-time-to-book content, and external travel knowledge. It returns a set of themes, and every theme resolves to a control that already exists on the results page.

What the scoring layer reads before deciding to generate
SignalWhy it matters
Route complexityMore complex routes mean more decision anxiety, and guidance is worth more
International vs. domesticInternational travelers face visa, customs and transport unknowns
Destination airport countMulti-airport cities need more orientation
Price volatilityHigh variance makes a flexible-date tip actionable rather than generic
Historical filter usageHeavy existing filter use means the overview adds less marginal discovery
Conversion rate baselineLow-converting routes leave the most room for the overview to move something

Inference cost is a design constraint on this feature in the same way layout and latency are. Treating it as an engineering problem to be solved later would have meant designing something that could not ship at KAYAK’s volume.

What it returned

Design outcome

12% of everyone on the flight results page used the overview, and filter usage rose 7%.

Measured on the flight results page

  • 12% Of all results-page sessions engaged with the overview
  • +7% Filter usage, driven by the quick actions

Travelers scrolled the cards and used the quick actions to reach filters they would not otherwise have found.

The two parts worth reusing

  1. 01 Horizontal cards keep results visible The three-state pattern gives a traveler control over how much AI they consume without costing them the primary task. It transfers to any supplementary content on a high-intent results page.
  2. 02 Quick actions are a new door to old features Tying a generated insight to a specific control on the page turns a passive content layer into something that converts, and makes high-value filters discoverable at the same time.

What's next

Where it goes from here

The interaction model holds. What it needs next is cheaper repeat generation and a sharper sense of which action to lead with.

Two things would scale it across KAYAK’s full search volume: prioritising actions so the highest-converting one leads each card, and caching generated overviews for repeated route queries so the same search does not pay twice.

Niran

Open to senior and staff product design roles on AI products and the systems underneath them.

Let's Get in Touch