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
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
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.
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.
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
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.
- 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.
| Signal | Why it matters |
|---|---|
| Route complexity | More complex routes mean more decision anxiety, and guidance is worth more |
| International vs. domestic | International travelers face visa, customs and transport unknowns |
| Destination airport count | Multi-airport cities need more orientation |
| Price volatility | High variance makes a flexible-date tip actionable rather than generic |
| Historical filter usage | Heavy existing filter use means the overview adds less marginal discovery |
| Conversion rate baseline | Low-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
- 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.
- 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.