AnalyticaContact
ESC

to move to open

← All work

Case study

Matching hotels to buyers, in a market where almost nobody rates anything

A hotel goes on the market. Somewhere in a book of two hundred thousand investors are the handful who would actually buy it, and finding them took a broker up to three months.

Client
Jones Lang LaSalle (JLL)
Sector
Commercial real estate · Hospitality
Role
Contract engagement
Period
2016, then multi-year
of the ratings matrix was empty
99.35%of the ratings matrix was empty
potential investors in scope
200,000potential investors in scope
increase in hotel sales, client-reported
$13.2Mincrease in hotel sales, client-reported

The problem

JLL is the second-largest commercial real-estate firm in the world. When a hotel came to market, matching it to the buyers most likely to want it was manual work done by expensive people, and it could take up to three months — during which the property sat.

The asset they had was history: tens of thousands of properties, roughly two hundred thousand potential investors, and twenty-five years of transactions. The question was whether that history could rank, for any newly listed property, the hundred buyers worth calling first.

Why this was harder than it sounds

Recommender systems are a solved problem when your users rate things. Commercial property buyers do not. On the modelling subset — 492 properties against 10,351 users — the ratings matrix was 99.35% empty. Sixty-five percent of users had rated one item or fewer. Ninety percent had rated six or fewer.

That is the whole engineering problem in one number. Almost every published collaborative-filtering result assumes a matrix an order of magnitude denser than this one, so the signal had to come from behaviour rather than from ratings: what buyers responded to, what they bid on, what they had said they were looking for.

Four input feeds
Property records, responses to marketing campaigns, bidding history, and each investor's stated investment preferences.
Two models
A buyer model built from investment criteria — 408 features across 10,351 users — and a property model over location, type, tenure, brand, room count and asking price.
Preprocessing that mattered
Z-score normalisation to remove per-user rating bias, and binarisation to stop heavily skewed behaviour from dominating the similarity measures.

492 properties × 10,351 users

a rating existsnothing at all

A ratings matrix that is 99.35 percent emptyA grid of 5,280 cells drawn at the real fill rate of the engagement's ratings matrix: 99.35 percent of it is empty, so only about34 cells carry a rating. The filled cells cluster into a few columns, because sixty-five percent of users rated one item or fewer and ninety percent rated six or fewer — a small number of active buyers carry almost all of the signal. This is a sample at the true density, not the matrix itself, which has more than five million cells.
Almost every published result in this field assumes a matrix an order of magnitude denser than this one.Sixty-five percent of buyers had rated a single item or fewer; ninety percent had rated six or fewer. That is why the signal had to come from behaviour — what they opened, what they bid on, what they had said they were looking for — rather than from ratings. The grid above is a 120 × 44 sample drawn at the true fill rate (0.64% filled), not the full 492 × 10,351 matrix, which has more than five million cells and would be a solid rectangle of nothing at this size.

The bake-off, including what lost

Several algorithm families were implemented and compared rather than one being assumed. User-based collaborative filtering outperformed everything else, and cosine distance beat the alternatives for both the user-based and item-based variants.

The result worth reporting is the unflattering one: a plain popular-items baseline outperformed item-based collaborative filtering. That is the kind of finding that quietly disappears from most write-ups, and it is precisely the finding that tells you whether the comparison was run honestly.

The nearest-neighbour tuning is the other detail worth keeping. The headline-optimal value was nn = 10. We shipped nn = 20, because nn = 10 gave a worse true-positive rate across the higher false-positive range — which is the range this system actually operates in, since a broker works down a shortlist rather than calling exactly one person. Taking the second-best number on purpose, for a stated reason, usually means somebody looked at the curve rather than at the summary statistic.

What was delivered

A hybrid framework that builds several candidate models — collaborative filtering, content-based, vector-space and nearest-neighbour — evaluates them against each other, and serves recommendations from whichever currently performs best, rather than hard-coding the winner of one bake-off forever.

The output is the hundred buyers most likely to want a given property, ranked, produced the moment it is listed. The process it replaced took up to three months.

Result

The recommendation list is generated instantly once a property goes to market, and the platform was adopted across JLL globally. The client reported an increase in hotel sales of over $13.2 million.

That figure is theirs, not a measurement of ours, and it is the only number from this engagement that appears anywhere on this site. Several others exist across old decks and they do not agree with each other, which is reason enough not to reach for the largest one.

Tell us what decision you are trying to get right.

Not a discovery call about our capabilities. A conversation about the specific thing you need to predict, and whether the data you have can support it.

Start a conversation