Personalised recommendations across content & creators
Cross-system signal blending — viewing history, social graph, content metadata — into a single relevance score the product can trust.
The challenge
WOW Club's community had outgrown its search bar. Members were describing what they wanted in plain language — "a quiet 4-day trip with women my age, somewhere cool in May" — and getting brittle keyword matches in return.
Our approach
We replaced the search bar with a discovery surface that interprets intent, surfaces inferred filters the user can correct, and ranks candidate trips, hosts, and conversations against a single relevance score. The interpretive layer is exposed — members see what the AI thinks they meant, and edit it.
01 — The shape of the problem
Search was treated as a utility; discovery was a missing feature. We mapped twelve recurring member intents and found that nine of them had no good answer in the existing UI — the right trip existed in the database, but the path from intent to it was indirect.
02 — Where AI earns its place
Three places, deliberately chosen. (1) Interpreting freeform queries into structured intent. (2) Ranking candidates across heterogeneous types — trips, hosts, threads. (3) Surfacing what the user didn't ask for but probably wants. Everywhere else, the existing UI stayed.
03 — Surfacing the AI's reasoning
The interpretive layer is visible. Members see the structured tags the AI extracted from their query and can correct them inline. Trust comes from legibility, not magic — every match shows a confidence score and a reason.
04 — Engineering for production
Hybrid retrieval (semantic + keyword) backed by a curated content index. No free-form generation in the ranking path — only in the explanation layer, gated by the structured retrieval result. Hallucinations were architected out, not patched after.
The craft is in choosing the right architecture for the conditions — not reaching for the most powerful model.
Outcome
Daily search → discovery sessions tripled in week three. Null-result queries fell 61%. Community hosts started seeing matches they'd have missed manually.