Large-Scale Personalization System Using LLMs for Buyer Profile Generation

etsy · E-commerce · year n/a · source Agentic: no · promotional bias: low · source-backed · extracted with prompt 0.5.6 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: E-commerce personalization and buyer-profile generation

Etsy needed to personalize search and discovery for a marketplace with nearly 90 million buyers and more than 100 million listings. Traditional search and recommendation systems could not fully capture nuanced buyer tastes, shopping missions, seasonal behavior, and aesthetic preferences, so Etsy explored LLM-generated buyer profiles from browsing and purchasing behavior while keeping cost, privacy, refresh cadence, and downstream business measurement under control.

Constraints:

Architecture

Etsy built an offline LLM personalization pipeline that retrieves buyer session and listing data from internal feature-store and BigQuery sources, prompts an LLM to generate structured buyer profiles, and uses those profiles for personalized query rewriting and refinement pills. The production architecture was made viable through data-source migration to clustered and partitioned BigQuery tables, token reduction from two years to nine months of sessions, larger batch sizes, managed concurrency, smaller-model prompt tuning, and Airflow DAG orchestration with staggered user-id batches.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  activity["Buyer activity sources"] --> prompt["Prompt assembly pipeline"]
  prompt --> llm["LLM profile generator"]
  cost["Cost optimization controls"] --> prompt
  cost --> llm
  airflow["Airflow profile DAG"] --> activity
  airflow --> llm
  llm --> store["Buyer profile store"]
  store --> rewrite["Query rewriting service"]
  store --> pills["Refinement pill service"]
  store --> refresh["Profile refresh monitor"]
  refresh --> airflow
  rewrite --> search["Search experience"]
  pills --> search
  search --> measure["Measurement framework"]
  measure --> refresh
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
Buyer activity sources Feature-store and BigQuery data containing searches, views, purchases, favorites, and listing information. Prompt assembly pipeline, Airflow profile DAG
Prompt assembly pipeline Transforms recent buyer interactions and listing context into the LLM input used for profile generation. Buyer activity sources, LLM profile generator, Cost optimization controls
LLM profile generator Interprets buyer behavior and emits structured interests, confidence values, explanations, and observed interests. Prompt assembly pipeline, Buyer profile store, Cost optimization controls
Cost optimization controls Data-source, token, batching, model-selection, and concurrency changes that make profile generation economical at Etsy scale. Buyer activity sources, LLM profile generator, Airflow profile DAG
Airflow profile DAG Schedules profile refreshes through staggered batches and managed concurrency across BigQuery and OpenAI APIs. Buyer activity sources, LLM profile generator, Profile refresh monitor
Buyer profile store Stores generated profile interests, confidence values, explanations, and observed behaviors for downstream personalization. LLM profile generator, Query rewriting service, Refinement pill service, Profile refresh monitor
Query rewriting service Uses profile interests to enrich backend search queries with likely style or category intent. Buyer profile store, Search experience
Refinement pill service Turns high-confidence profile interests into clickable filters that reformulate searches. Buyer profile store, Search experience
Profile refresh monitor Tracks activity, drift, seasonality, and engagement degradation to decide when profiles should refresh. Buyer profile store, Airflow profile DAG, Measurement framework
Measurement framework Measures CTR, conversion, refinement-pill engagement, and query-reformulation success for profile-based personalization. Search experience, Profile refresh monitor
Search experience Consumer-facing search results and refinement interactions affected by profile-informed personalization. Query rewriting service, Refinement pill service, Measurement framework

Data flow

The pipeline gathers recent buyer searches, item views, purchases, favorites, and listing information from Etsy internal data sources. That activity data is formatted into an LLM prompt, which produces a structured buyer profile containing inferred categorical interests, confidence values, explanations, and observed behaviors. Downstream search systems use the profile to rewrite queries with predicted style or category interests, and the web interface exposes high-confidence interests as refinement pills. Profile-refresh logic monitors engagement, drift, seasonality, and degradation signals so profiles can be updated without blindly regenerating every buyer at the same cadence.

4 supporting quotes
“Our process begins by retrieving user activity data and listing information from internal sources like our feature store and BigQuery.”article, stated
“Once we have the users’ session data with interactions, we then prompt the LLM to interpret this data and generate structured buyer profiles.”article, stated
“we explored enriching search queries with predicted interests from buyer profiles.”article, stated
“Dynamically refreshing timing based on user activity levels. These include the number and frequency of recent interactions.”article, stated

Why this architecture

Etsy chose an offline profile-generation architecture because personalization needed rich behavior context and could be batch-refreshed rather than generated synchronously for every search. BigQuery-backed data access, token-window reduction, larger batches, and Airflow concurrency let the team convert an impractical weeks-long LLM workload into a scheduled production pipeline. Structured profiles also gave downstream systems a reusable personalization artifact for query rewriting, refinement pills, and future cold-start inheritance experiments.

4 supporting quotes
“Initially, using this method to generate profiles for our roughly 90 million buyers would have been exceedingly costly and taken weeks to update.”article, stated
“Shifting our listings data source from API endpoints to BigQuery tables that are clustered and partitioned for efficient querying.”article, stated
“Additionally, to scale and schedule buyer profile refreshes, we used Airflow as an orchestration tool.”article, stated
“With buyer profiles, we can present high-confidence buyer interests as clickable filters or refinement pills in the search interface”article, stated

Models used: large language models · smaller LLM for cost-optimized profile generation · collaborative filtering for inheritance profiles

Scale

Alternatives considered (roads not taken)

Use listing API endpoints as the main data source

Rejected because: Etsy moved to clustered and partitioned BigQuery tables to make large-scale profile generation efficient.

“Shifting our listings data source from API endpoints to BigQuery tables that are clustered and partitioned for efficient querying.”article, stated

Feed about two years of session data into each prompt

Rejected because: The larger window inflated tokens and holiday-shopping corrections, so Etsy reduced context to nine months.

“Initially, we were including about 2 years of session data. Now, we’ve reduced this to just the last 9 months.”article, stated
“The 9 month timeframe also allowed us to lighten the prompt corrections (and cached input tokens) by reducing the weight of holiday shopping.”article, stated

Use a larger or more expensive model for profile generation

Rejected because: Prompt adjustments let Etsy keep high quality while moving to a smaller model and reducing cost.

“By adjusting the prompt to get high quality results with a smaller model, we significantly lowered the cost”article, stated

Regenerate every buyer profile with a fixed cadence

Rejected because: Etsy instead describes dynamic refresh timing based on activity, drift, seasonality, and degradation signals.

“Dynamically refreshing timing based on user activity levels. These include the number and frequency of recent interactions.”article, stated
“Detecting interest drift when search patterns change significantly”article, stated

Leave new users without profiles until enough history accumulates

Rejected because: Etsy explored inherited profiles through collaborative filtering for users with minimal behavior.

“To extend this personalized experience to new users who lack extensive session data, we experimented with "inheritance profiles" using collaborative filtering.”article, stated

Patterns

batch-offline-processing (workflow)

Etsy generates buyer profiles through scheduled offline batches rather than per-request LLM calls, using Airflow, larger batch sizes, and managed concurrency.

“Increasing LLM and BigQuery batch sizes for data processing.”article, stated
“By batching and staggering tasks by user_id, we parallelize some tasks while avoiding too many concurrent requests on BigQuery & OpenAI APIs”article, stated

cost-aware-routing (operations)

Etsy redesigned data access, prompt context, model selection, batching, and compute allocation to reduce the cost of LLM profile generation at marketplace scale.

“Cost management was also crucial. By adjusting the prompt to get high quality results with a smaller model, we significantly lowered the cost”article, stated
“Through these various cost management techniques, we were able to reduce the estimated cost by 94% per million users.”article, stated

query-rewriting (retrieval)

Buyer profiles personalize backend search by enriching underspecified queries with predicted style and product-interest terms.

“Query rewriting is the process of transforming a user’s submitted search query on the backend to better represent their intent to the underlying search systems.”article, stated
“For instance, a simple query like "cool posters" becomes "cool posters + hippie|boho|vintage|nature," significantly boosting relevance.”article, stated

eval-driven-development (evaluation)

Etsy measures profile-based personalization through CTR, conversion, refinement-pill engagement, query-reformulation success, and degradation signals.

“Through systematic experimentation, we're working to establish how well our LLM-generated profiles reflect actual user interests and shopping behaviors.”article, stated
“Click-through Rate (CTR) Lift: Comparing CTR on personalized search results versus baseline helps us quantify immediate engagement improvements”article, stated

privacy-preserving-processing (governance)

The buyer-profile work is framed around anonymous profiles, privacy-by-design, and buyer privacy considerations for behavioral data.

“Buyer profiles anonymously capture nuanced interests for each user, like preferred styles and product categories.”article, stated
“We strive towards privacy by design and build these exploratory models with buyer privacy in mind.”article, stated

Tradeoffs

Profile generation cadence

Chose offline Airflow-based batching and staggered user-id processing over synchronous or unrestricted generation across the full buyer base.

Rationale: Batch orchestration enables large-scale profile refreshes while managing BigQuery and OpenAI rate limits.

“By batching and staggering tasks by user_id, we parallelize some tasks”article, stated
“while avoiding too many concurrent requests on BigQuery & OpenAI APIs”article, stated

Behavior-history window

Chose nine months of session data over about two years of session history.

Rationale: The shorter window lowers token volume and prompt-correction burden while retaining enough recent behavior for personalization.

“Initially, we were including about 2 years of session data. Now, we’ve reduced this to just the last 9 months.”article, stated
“The 9 month timeframe also allowed us to lighten the prompt corrections (and cached input tokens)”article, stated

Profile confidence behavior

Chose empty interest/confidence fields when evidence is insufficient over forcing the LLM to produce categorical interests for every buyer.

Rationale: Etsy explicitly constrains the structured profile so weak behavioral evidence does not become overconfident personalization data.

“In the case that the LLM does not have enough supporting data to infer a user's categorical interests”article, stated
“these fields and the confidence hashmap can be empty”article, stated

Cold-start strategy

Chose experimenting with inheritance profiles via collaborative filtering over waiting for every new user to accumulate extensive session history.

Rationale: Matching sparse early behavior to similar existing profiles could provide personalization before enough direct history exists.

“To extend this personalized experience to new users who lack extensive session data, we experimented with "inheritance profiles" using collaborative filtering.”article, stated
“By matching early interaction signals (like brief session data or initial search terms) to existing profiles of similar users”article, stated

Gotchas (what bit them)

Naive LLM personalization was operationally infeasible at Etsy scale.

Root cause: Generating profiles for roughly 90 million buyers would have taken weeks and cost too much before data, token, model, and batching optimizations.

Resolution: Move listing data to efficient BigQuery tables, reduce prompt tokens, increase batch sizes, manage concurrency, and use smaller models where quality holds.

“Initially, using this method to generate profiles for our roughly 90 million buyers would have been exceedingly costly and taken weeks to update.”article, stated
“Shifting our listings data source from API endpoints to BigQuery tables that are clustered and partitioned for efficient querying.”article, stated

Too much session history made prompts heavier and introduced seasonal bias.

Root cause: Two years of behavior inflated token volume and required more correction for holiday shopping effects.

Resolution: Reduce the input window to nine months, which lowered tokens and reduced holiday-shopping prompt corrections.

“Decreasing the volume of input tokens. Initially, we were including about 2 years of session data. Now, we’ve reduced this to just the last 9 months.”article, stated
“The 9 month timeframe also allowed us to lighten the prompt corrections (and cached input tokens) by reducing the weight of holiday shopping.”article, stated

Buyer profiles should not invent categorical interests from weak behavior.

Root cause: Some users do not have enough supporting interaction data for confident categorical inferences.

Resolution: Allow categorical-interest and confidence fields to be empty while still recording explanations and observed interests.

“In the case that the LLM does not have enough supporting data to infer a user's categorical interests”article, stated
“these fields and the confidence hashmap can be empty. The LLM will always include an explanation and any observed interests”article, stated

Freshness and cost are in tension for profile maintenance.

Root cause: Profiles need to track changing interests, seasonal effects, and performance degradation, but regenerating profiles has nontrivial cost.

Resolution: Use dynamic refresh timing based on user activity, drift detection, seasonal considerations, and engagement degradation signals.

“Dynamically refreshing timing based on user activity levels. These include the number and frequency of recent interactions.”article, stated
“Monitoring performance degradation signals when personalization effectiveness drops below thresholds of engagement listed above”article, stated

Evaluation

Etsy frames evaluation around systematic experimentation and production business metrics: profile accuracy, CTR lift, conversion impact, refinement-pill engagement, search-query reformulation success, and degradation thresholds for profile refresh.

Metrics: profile accuracy against actual user interests and shopping behaviors · click-through-rate lift · conversion-rate impact · refinement-pill engagement · search-query reformulation success · personalization degradation below engagement thresholds

3 supporting quotes
“Through systematic experimentation, we're working to establish how well our LLM-generated profiles reflect actual user interests and shopping behaviors.”article, stated
“Conversion Rate Impact: Tracking purchase rates from personalized searches reveals whether we're surfacing items users actually want to buy”article, stated
“Search Query Reformulation Success: Analyzing subsequent user actions after query rewriting indicates whether our enrichments align with user intent”article, stated

Outcomes

The system targets Etsy-scale personalization across nearly 90 million buyers and more than 100 million listings, with a measured 10-million-user processing benchmark.

3 supporting quotes
“These improvements reduced buyer profile generation time dramatically — from 21 days down to 3 days for 10 million users.”article, stated
“Through these various cost management techniques, we were able to reduce the estimated cost by 94% per million users.”article, stated
“we’ve started to explore several key applications of buyer profiles that would make the Etsy search experience feel unique to each shopper.”article, stated