HomeResourcesCase study
Case study

Airbnb Learned Taste From Clicks, Not Descriptions

By The SDL team·4 min read·Updated Sep 16, 2026

The signal that drives bookings isn’t in the listing — it’s in how people browse. Treat sessions like sentences and embeddings emerge that capture taste itself.

Airbnb already knew everything describable about each listing — price, beds, location, photos. None of it captured the thing that actually drives a booking: whether a place feels right. So they stopped reading listings and started watching behavior.

Ranking by keywords and filters gets you the obvious matches and misses the magic. Two cabins can have identical specs and feel completely different; a traveler browsing one is often drawn to others that share an intangible quality no metadata field records. Airbnb's insight: that quality is already encoded — not in the listings, but in how guests browse them.

Plain English

The previous two teardowns built embeddings from content — a listing's text, a product's photo. Airbnb built them from behavior. The idea: treat a user's browsing session — the sequence of listings they clicked before booking — like a sentence, where each listing is a “word.” Listings that repeatedly appear together in sessions must be similar, the same way words appearing in similar sentences have related meanings.

This borrows directly from word2vec, the technique that learns word meanings from the company they keep. Swap words for listings and sentences for sessions, and you learn listing “meanings” from the company they keep — purely from collective clicking, with no one ever describing anything.

Meaning that nobody wrote down

Airbnb learned listing embeddings from user click sessions using a skip-gram (word2vec-style) model, with successful bookings weighted as an especially strong signal — a booking is the outcome that matters, not just a click. The resulting vectors place listings that travelers treat as interchangeable near each other, and these embeddings feed real-time personalization in search ranking.

Relevance isn’t in the listing’s text. It’s in what users DO. A browsing session is a “sentence” of listings. Listings clicked together must be similar. listing Aclicked listing Bclicked listing Cclicked listing DBOOKED word2vec-style skip-gram: train so listings appearing in the same session sit close in vector space. The booked listing gets extra weight — it’s the signal that actually mattered. learned listing space “cozy cabins” cluster (emergent) “city lofts” cluster Why this beats text/filters: · no one tagged these as “cozy cabins” — the cluster EMERGED · captures taste signals humans never wrote down · feeds real-time personalization in search ranking behavior > metadata for “what feels similar”
Sessions as sentences. Train so listings browsed together land close in vector space; clusters like “cozy cabins” emerge without anyone labeling them. Behavior captures taste that metadata can't.
Now the engineering

The profound part is what emerges. Clusters like “rustic cabins” or “design-forward city lofts” form on their own, because guests who like one tend to browse others — even though no human ever tagged them and no shared keyword links them. The embedding captures aesthetic and taste signals that exist only in aggregate behavior. This is the same embeddings-plus-similarity machinery as Spotify's and eBay's teardowns, but the training signal is the crucial twist: what people did, not what the item says.

Worth knowing

Across the last three teardowns, the encoder's input tells the story: Spotify embedded text (meaning of words), eBay embedded pixels (visual look), Airbnb embedded behavior (collective taste). Same destination — a vector space where “similar” means “close” — reached from three different signals. Choosing the right signal for what you actually want to capture is the real design decision; the ANN plumbing is shared.

The gap it reveals

The non-obvious leap is that the best relevance signal often isn't in your content at all — it's latent in user behavior, and you can extract it by borrowing a language-modeling technique (word2vec) and treating sessions as sentences. Engineers who only embed content will never surface taste-based similarity that no metadata describes. Knowing that behavior is an embeddable signal is the gap, and it's a deep one.

In the interview room

In a recommendations or ranking round, most candidates embed item content. The standout move: “I'd also learn embeddings from interaction sequences — treat each session like a sentence and train word2vec-style, weighting conversions — to capture similarity that content alone misses.” That demonstrates you understand embeddings as a general representation tool, not just a text/image gadget.

The reframe

We instinctively believe the truth about an item lives in its description. Often the more useful truth lives in the collective, wordless behavior of everyone who interacted with it — the patterns nobody articulated but everybody enacted. Airbnb's listing embeddings work because they trusted what users did over what listings claimed. The most valuable signal is frequently the one no one bothered to write down.

The listing tells you what it is. The clicks tell you what it's like.

Primary source →
Airbnb Engineering — Listing Embeddings in Search Ranking

Want feedback on your design?

The weekly teardown

One real-world architecture, every week.

How real companies actually built it: the design, the trade-offs, and what to say about it in an interview. Free, and one click to unsubscribe.

Related articles