Profiling & discovery

A profiling system that's useful before it's complete.

The more Kult knew about someone's hair, the better it could recommend. The problem was getting there. The old quiz asked for everything before giving anything back — twelve questions up front — so most people abandoned it, and the ones who didn't still waited until the end to see any value.

3 + 11asked up front, then in context Usefulfrom the first three answers Liveacross feed, search, listing, PDP
The reframe

Design the partial profile, not the complete one.

The strategy wasn't to ask less. It was to make the product genuinely useful on incomplete information, then collect the rest where each answer could immediately change what the user saw. That meant designing the degraded state deliberately — what good looks like at three answers, at seven, at all fourteen — instead of treating an incomplete profile as a dead end.

Three critical answers — hair type, main concern, goal — created a starter profile strong enough to personalize from. The other eleven left the quiz entirely and moved into the journey.

The breakthrough was making the product useful before the profile was complete.
The model

One loop: ask in context, pay off visibly, deepen, repeat.

Three answers create a starter profile that activates personalization immediately. From there the system never blocks — it asks for the next signal only where the answer can improve the moment in front of the user, returns visible value, deepens the profile, and comes back for more.

Starter profile 3 answers in activate Contextual triggers — ask where the answer pays off Hair hub Completion prompt → next phase unlocks Search Ask missing concern → results get sharper Listing Refine browse order → ranked to your hair Product page Unlock Hair Kult Score → higher confidence Every answer updates the hair profile match score · ranking · "for you because" all improve deepens, then repeats

The design constraint that held it together: a partial profile had to produce partial value, never a dead end.

The starter profile

Three questions, in haircare's own voice.

The first questions were chosen by dependency — only what the product needed to personalize right away. They were also written to feel like the category, not a form: a hair character that complains about frizz, tangles and scalp; a question about how long the hair story has been going.

q complain
The starter profile opens with concern — in the brand's own voice, not a form.
q age
A second core question. Three answers in, personalization can begin.
feed hook
And the entry point lived where people already were — a nudge inside the shopping feed, not behind a gate.
The engine · the centerpiece

The same ask, surfaced where the answer pays off — and pays off visibly.

This is what made progressive profiling work rather than just sound good. Each remaining question appeared at a moment of intent — browsing a category, searching, reading a product page — and every answer returned something the user could see: a higher match, a sharper result, a profile that visibly got smarter. The ask was never "finish your profile." It was "add one detail, watch this improve."

Under it sat the deterministic match score from Kult's personalization layer — the same scoring system used in skincare, here fed by LLM-enriched haircare attributes rather than hand-tagged ones. That's what let a partial profile produce a real, improving number instead of a vague nudge.

The nudge, across surfaces — each with a visible payoff
nudge scalp
The clearest expression of the idea: current match 65%, add one detail to boost it. The cost of answering is one tap; the payoff is named before you tap.
nudge search
In search — answering refines results, and the profile visibly 'got smarter'.
nudge listing
On a listing — the result set updates to the user's hair, with an open invitation to fine-tune further.
hub
A persistent hub held the longer arc — each phase unlocking deeper care — without ever blocking value.
The depth system

Each phase unlocked a deeper layer of value.

A starter profile drove lightweight personalization — filtered carousels, best and good-for-you, basic fit text. More context introduced the real match score and stronger sorting. Granular signals — scalp, climate, styling, behaviour — refined ranking, confidence and the explanations on the product page. The rule held throughout: partial profiles produced partial value, never a dead end, and completing a phase visibly unlocked the next.

The payoff

At the decision, the profile became the reason to buy.

The strongest proof that a quiz had become a system was the product page. A "will it suit me?" module turned the user's own profile into reasoning — why this product works for their hair — and the locked Hair Kult Score gave a concrete reason to add the one missing detail. The profile stopped being hidden data and became a visible explanation inside the buying decision.

Product page For You Because — profile returned as reasoning
The product page asks 'will it suit me?', offers a Kult Score to unlock, then answers with 'For You Because' — the profile returned as reasoning, why this works for damaged, frizzy, weak hair, right at the decision.
What changed

More context, less friction, a category that grew.

The outcome wasn't only higher completion. We collected a richer profile, made it useful across the app, and made haircare easier to shop with confidence — and the category grew because of it.

37 → 52%
profile completion after the redesign
+74%
quiz intake vs. the earlier upfront flow
9 → 16%
haircare's share of shopping activity

Better personalization isn't asking everything. It's knowing what to ask now, what to ask later, and making every answer feel useful.

Case study · Kult
Selected work
← All work