Beauty is impulse-led, but impulse does not mean random. It converts when the prompt feels specific to the customer’s current context.
The homepage had to move beyond broad segments and campaign banners. Even good ecommerce personalization often works at the persona level: “acne-prone,” “premium shopper,” “lipstick buyer,” “deal seeker.” For beauty, that was still too blunt.
We wanted the first screen to respond to a more complete shopping state: skin concern, hair context, shade comfort, routine gaps, price sensitivity, city, weather, time of day, recent behavior, and what similar users were already buying or trusting.
The homepage had to balance launches, offers, priority brands, category discovery, replenishment, and newness — while still being useful to the individual user.
That made personalization harder than ranking products. A campaign could matter commercially but be wrong for the customer. A discount could be timely but still not relevant. A trending product could create confidence for one user and hesitation for another, depending on skin type, shade comfort, routine stage, price sensitivity, or trust.
The work was not to add another recommendation module. It was to decide what deserved the first screen for each user: a routine gap, a concern-led prompt, a replenishment nudge, a shade-safe product, a city or weather-led need, a relevant offer, a trusted brand, or proof from similar users.
For You replaced a single generic hero slot with a dynamic card system. Each card had a job: complete a routine, recover intent, explain a pairing, surface a shade or concern match, use weather context, show what skin/hair/tone twins were buying, or nudge a timely action like restock or price drop.
The card became the unit of personalization: one prompt with a specific reason to act, not a feed of loosely relevant products.
At any point, a user could have 30–40 eligible cards. The system had to collect profile and context, generate card candidates, and rank them in real time so only the strongest prompts reached the first screen.
Skin · hair · tone · undertone · preferences · shade comfort
Search · browse · wishlist · cart · purchase · replenishment
City · weather · humidity · season · time of day
Skin twins · hair twins · tone twins · similar intent cohorts
Persistent profile + recent intent + live context
~30–40 candidates/user: routine gap · concern kit · shade match · restock · offer · twin proof
Relevance · urgency · confidence · business priority · freshness · fatigue rules
First screen + personalized feed. A small number of cards win; the rest wait, rotate, or get suppressed.
For You needed profile depth to work well. Without skin, hair, tone, preference, or behavior signals, the app could not deliver a meaningfully different homepage.
So new and low-signal users saw lightweight prompts instead of weak recommendations: answer one skin question, choose a hair concern, confirm shade comfort, pick a routine goal, or share a category preference. Each input unlocked better cards over time.
The principle was simple: do not pretend to personalize without signal. Use the first screen to earn the next useful signal, then turn that signal into a more relevant experience.
We prioritized cards across five questions: is it relevant to the user, is the signal strong enough, is the timing important, does it support a business priority, and has the user already seen or acted on something similar?
Time-sensitive cards like price drops, back-in-stock alerts, cart recovery, and replenishment could win when the intent was clear. Routine gaps and concern-led prompts won when they solved a specific next step. Twin-backed cards only appeared when there was enough similar-user density.
We mapped common shopping states to card types. The copy came last. First came the signal, the product logic, and the reason the card deserved homepage priority.
Context was not decorative copy. It changed relevance. A humidity-led haircare prompt was stronger in Mumbai monsoon than as a generic anti-frizz campaign. A night recovery card made more sense in the evening than in the morning. A routine gap was more useful when it connected to what the user had already bought, browsed, or avoided.
For You turned the landing page from a campaign surface into a contextual shopping surface — one that could complete, recover, explain, match, remind, or discover based on what mattered for that user right now.