← Ancestry Interview Insights

Ancestry·Software Engineer·Onsite - System Design / Architecture·Senior

Senior
Jun 2026

Summary

Ancestry system design round for a software engineer role. The main focus was on feature engineering for similarity, which sounds straightforward until you're actually in it trying to remember every encoding option you've ever read about.

Questions Asked (1)

Q1

How would you define features to find similar users or similar products? Walk through your feature choices, how you'd encode them, and how you'd measure whether your similarity approach actually works.

System DesignTechnical Trade-offsProduct Analytics & Metrics
Author's notes

This one sprawled in a way I didn't expect.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the problem: what 'similar' means for users or products in Ancestry's context (e.g., similar genealogical interests or record types). Then describe feature engineering from raw data (e.g., user behavior, product attributes), encoding methods (e.g., embeddings, one-hot), and similarity metrics (e.g., cosine, Jaccard). Finally, explain how you'd evaluate the approach offline (e.g., precision@k, recall) and online (e.g., A/B tests on engagement metrics).

Pro tip: Emphasize that similarity is domain-specific: for Ancestry, features like family tree overlap, record search patterns, and DNA connections are more meaningful than generic clicks. Also, mention the cold-start problem and how you'd handle new users/products with content-based features.

1. Clarify the goal and data

Ask clarifying questions to understand what 'similar' means for the business (e.g., similar users for recommendations or similar products for search). Identify available data sources: user profiles, behavior logs, product metadata.

2. Design features

List candidate features for users (e.g., demographics, tree size, search queries, record views) and products (e.g., record type, time period, location, popularity). Consider both explicit (e.g., ratings) and implicit (e.g., clicks) signals.

3. Encode and compute similarity

Choose encoding: one-hot for categorical, embeddings for text/images, or aggregated vectors for behavior. Select a similarity metric (cosine, Euclidean, Jaccard) based on feature types and sparsity. Discuss dimensionality reduction if needed.

4. Evaluate offline

Define ground truth (e.g., known similar pairs from expert labeling or co-occurrence). Use metrics like precision@k, recall@k, mean average precision, or AUC. Perform cross-validation and compare against baselines.

5. Validate online and iterate

Run A/B tests measuring business metrics (e.g., click-through rate, conversion, user retention). Monitor for biases and scalability. Iterate on features and similarity thresholds based on results.

Key Points to Mention

  • Domain-specific features: For Ancestry, leverage genealogical data like family tree overlap, DNA matches, and record search history.
  • Feature encoding: Use embeddings for high-cardinality categorical data (e.g., surnames, locations) and TF-IDF for text.
  • Similarity metrics: Cosine similarity for dense embeddings, Jaccard for sets, and consider approximate nearest neighbor (ANN) for scalability.
  • Cold-start problem: Use content-based features for new users/products and fall back to popularity or demographic similarity.
  • Evaluation metrics: Offline: precision@k, recall@k, NDCG; Online: CTR, conversion, session length.
  • Trade-offs: Balance between model complexity, interpretability, and computational cost; consider privacy and ethical implications.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.