Tailor: Size Recommendations at Farfetch Scale
- Provenance
- Published collaboration · Farfetch
- Status
- Completed
- Artifacts
- Paper · FashionXRecSys @ ACM RecSys 2023
Sequence classification models for personalized size prediction in luxury fashion — LSTMs, attention mechanisms, and a paper at the FashionXRecSys workshop (ACM RecSys 2023).
Public industry research at Farfetch. Co-authored with Alexandre Candeias, Ivo Silva, and José Marcelino; the paper reports the team’s results.
Team project. The paper is co-authored with Alexandre Candeias (first author), Ivo Silva, and José Marcelino; my part is described under My role.
At a glance. Publication: Candeias, A., Silva, I., Sousa, V., & Marcelino, J. (2023). Tailor: Size Recommendations for High-End Fashion Marketplaces. Accepted at the FashionXRecSys 2023 workshop (Recommender Systems in Fashion and Retail), held with the 17th ACM Conference on Recommender Systems (RecSys 2023). arXiv:2401.01978. Reported in the paper: +45.7% top-1 accuracy over SFNet and +24.5% user coverage from Add2Bag signals. Not claimed here: a production return-rate effect for Tailor. The return-rate reductions on this page belong to the separate Tailor Fit Advice project.
The problem
High-end fashion has a return rate problem that generic sizing can’t solve. At Farfetch — a marketplace connecting 4M+ active customers across 190 countries with 1,200+ luxury brands — every brand has its own sizing standards, and every customer has their own fit preferences. A Gucci 42 is not a Balenciaga 42. A customer who buys “true to size” in sneakers might size up in boots.
The existing approach (SFNet) treated size prediction as a static classification problem. It worked, but left significant accuracy and coverage on the table. The business impact was direct: inaccurate size recommendations drove returns, which drove logistics costs, which drove customer churn.
What we built
Tailor was a sequence classification system that reframed size recommendation as a sequential learning problem. Instead of treating each purchase in isolation, we modeled the full history of a customer’s interactions — purchases, Add2Bag events, return reasons — as a temporal sequence that encodes evolving size preferences.
Two model variants:
SSP-LSTM — a Long Short-Term Memory encoder that processes the user-event sequence (product characteristics, size chosen, outcome) and projects it into a shared embedding space with the target product. The LSTM captures how a customer’s sizing decisions evolve over time — a returned item teaches the model something different than a kept item.
SSP-Attention — replaces the LSTM with a self-attention mechanism over the event sequence. More expressive for capturing long-range dependencies (a return from 6 months ago is still informative), and parallelizable during training. Higher accuracy, slightly higher inference cost.
Both models predict a size position rather than an absolute size label (S/M/L/38/40/42). This was a key design decision: it reduces high-cardinality classification to a tractable problem and generalizes across brand-specific sizing systems. A “size position” represents where a customer sits on a brand’s size spectrum, decoupled from the label itself.
The signals that made it work
The biggest technical insight was integrating Add2Bag interactions as implicit signals alongside explicit purchase and return data. Add2Bag events capture a customer’s size intent even when they don’t complete a purchase — massively expanding the signal surface.
This single change increased user coverage by 24.5% compared to using order data alone. More users with enough signal to generate a recommendation means fewer cold-start failures.
Return reasons provided explicit negative signal. When a customer returns an item because it “runs small,” that’s direct supervision for the model. We encoded return reasons as structured features in the event sequence, giving the model explicit fit-direction feedback.
Feature engineering and ablation studies
We ran ablation studies to isolate the impact of each signal type:
- Add2Bag integration: +24.5% user coverage
- Return reason encoding: measurable accuracy lift on repeat customers
- Temporal ordering vs bag-of-events: sequential models consistently outperformed unordered baselines, confirming that the order of sizing decisions carries information
Feature engineering included product-level embeddings (brand, category, material), user-level aggregates (historical size distribution, return rate), and interaction-level features (time since last purchase, event type).
Results (reported in the paper)
These are offline results from the paper’s evaluation, not production measurements.
- Top-1 accuracy: the best model (SSP-Attention) outperformed SFNet by 45.7%. Top-1 accuracy is the share of cases where the model’s first recommendation is the correct size.
- User coverage: adding Add2Bag events increased coverage by 24.5% over using orders alone.
- Latency: both variants were evaluated against real-time serving constraints (next section).
The paper does not report a return-rate effect for Tailor, and neither does this page. The 7% and 3.6% return reductions quoted for Farfetch come from Tailor Fit Advice, a different model with its own A/B test, described below.
Real-time serving
A size recommendation is useless if it arrives after the customer has already added an item to cart. We evaluated inference latency rigorously:
- SSP-LSTM: well under the 15ms production threshold
- SSP-Attention: slightly higher compute cost due to the attention mechanism, but still within real-time constraints through careful optimization (batch inference, model quantization, serving on Vespa.ai)
The system supported both batch predictions (pre-computing recommendations for known user-product pairs) and real-time inference (generating recommendations on-the-fly for new browsing sessions).
My role
Tailor was a four-person effort, and the paper is the team’s. Alexandre Candeias is first author. SFNet, the baseline, was Farfetch’s existing size model. My part:
- Sequence models. I developed LSTM/GRU models with attention for size recommendation, the model family behind SSP-LSTM and SSP-Attention.
- Signal design. I integrated behavioural signals into the event sequence. Add2Bag events are the change behind the 24.5% coverage gain.
- Online validation. I ran A/B tests and causal-impact analyses to validate feature performance in production.
- Production pipelines. I maintained the production ETL pipelines on Azure and Databricks that fed and refreshed the models.
Links
- Paper: Tailor — Size Recommendations for High-End Fashion Marketplaces (arXiv:2401.01978). Candeias, Silva, Sousa & Marcelino. FashionXRecSys 2023 workshop at the 17th ACM Conference on Recommender Systems (RecSys 2023).
- Vespa.ai case study on Farfetch recommendations
Tailor Fit Advice
A separate project, which I led alone from proof of concept to production. It is not part of the paper. Tailor predicts which size a customer should buy. Fit Advice predicts whether a product runs small or large (“this runs small, consider sizing up”), using Bayesian models on transactional data across 25K+ items.
It was deployed on Databricks with Airflow-orchestrated pipelines, with continuous model updates from real-time feedback. The advice appeared directly on product pages, before the customer adds an item to the bag.
Results (A/B test with causal-impact analysis): return rates fell 7% for men’s shoes and 3.6% for women’s shoes. These are the only production return-rate figures on this page, and they belong to Fit Advice, not to the Tailor models.
What this taught me
Farfetch was where I learned what production ML actually demands. Three lessons that shaped everything I’ve built since:
Signal design matters more than model architecture. The jump from SFNet to SSP wasn’t primarily about LSTMs vs simpler models. It came from incorporating Add2Bag signals and return reasons. The 24.5% coverage increase came from better data, not a bigger model.
Latency is a feature constraint, not an afterthought. A model that’s 2% more accurate but 10x slower is worse in production. We spent as much time on serving optimization as on model development.
Offline metrics and production effects are different claims. Tailor’s 45.7% is an offline accuracy result. Fit Advice’s return reductions are a measured production effect from an A/B test. Both are real, but they answer different questions, and I keep them apart, here and in my own work.
Tech stack
Python · PyTorch · PySpark · SQL · Databricks · Apache Airflow · Google BigQuery · Vespa.ai · Docker · Terraform