ML-Powered Search & RankingReal-time Search PersonalizationMedium⏱️ ~3 min

Dual Horizon Profiles: Short Term vs Long Term Personalization

Modern personalization systems maintain two separate user representations with different time scales to balance immediate intent with stable preferences. Short-term session profiles capture interactions within a rolling window, typically the last 15 to 30 minutes or the last N clicks, whichever comes first. Long-term profiles aggregate behavior over 30 to 90 days with exponential decay, storing durable preferences that persist across sessions. Short-term features encode current intent. If you clicked three budget hotels in the last 10 minutes, the system infers you are price sensitive right now, even if your historical bookings skew luxury. These features include recency weighted category intensity, last clicked brand or seller, price range histogram from the current session, and embedding centroids computed from the last 5 to 10 clicks. Airbnb computes EmbClickSim by taking the dot product between each candidate listing embedding and the centroid of the user's recent clicks, capturing attraction signals. They also compute EmbSkipSim from skipped listings to encode aversion, preventing the system from promoting items similar to what you explicitly ignored. Long-term features capture stable preferences. These include favorite categories over the past 60 days, average booking price, typical stay duration, geographic affinity, device type distribution, and lifecycle state such as new user or power user. These aggregates smooth out noise and provide a baseline when the session is cold. The combination prevents volatility. If you accidentally click a single luxury hotel while browsing budget options, the long-term profile anchors the ranking so one click does not flip the entire result set. The tradeoff is freshness versus stability. Aggressive short-term weighting adapts within seconds but can create filter bubbles and overreact to noisy or accidental clicks. Airbnb mitigates this by requiring multiple consistent interactions before strong boosts and using exponential decay with half lives of hours for session features and weeks for long-term features. Systems without short-term signals miss intent shifts and see lower conversion. Systems without long-term anchors suffer from volatility and poor cold start performance for new sessions.
💡 Key Takeaways
Short-term profiles use a 15 to 30 minute rolling window or last 5 to 10 clicks to capture immediate intent like current price sensitivity or category focus
Long-term profiles aggregate 30 to 90 days of behavior with exponential decay to encode stable preferences such as favorite categories and average booking price
Airbnb computes EmbClickSim from recent click centroids and EmbSkipSim from skipped items to separate attraction from aversion in sub millisecond dot product operations
Combining horizons prevents volatility where one accidental click flips rankings, while still adapting to intent shifts within seconds of interaction
Systems using only short-term signals create filter bubbles and overreact to noise, while systems using only long-term signals miss conversion opportunities from intent changes
📌 Examples
User searches for hotels, clicks three budget options in 8 minutes. Short-term profile boosts budget hotels in next query even though long-term profile shows luxury booking history
Airbnb Experiences moved from daily batch personalization to online scoring with millions of keys in the user feature store, achieving 5 to 8 percent booking lifts by capturing short-term intent
Google uses sessionization with 30 minute inactivity gap to delineate short-term contexts, resetting session state when user switches topics or takes a break
← Back to Real-time Search Personalization Overview