← stubhub Interview Insights

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

SeniorPrefer not to say
Jun 2026Remote

Summary

StubHub system design round, OOD flavor. The prompt was about building an event recommendation system for a ticketing platform and the whole thing was really about whether you could design something flexible enough to compose behaviors without hardcoding campaign logic.

Questions Asked (4)

Q1

Design and implement an Event Recommendation System for a ticketing platform. The core constraint is that campaign logic must not be hardcoded. Different campaigns should be able to compose filtering and scoring behaviors (by distance, price, time window, etc.) flexibly.

System DesignTechnical Trade-offsData Modeling
Author's notes

This is the whole interview basically.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then propose a modular architecture where campaigns are defined as composable pipelines of filters and scorers. Emphasize extensibility by using interfaces and a registry, and discuss trade-offs between flexibility, performance, and complexity.

Pro tip: Mention that you would version campaign configurations and use feature flags to safely roll out changes, showing awareness of production risks and iterative development.

1. Clarify Requirements and Constraints

Ask about scale (events, users, QPS), latency requirements, and how campaigns are created (by whom, how often). Clarify what 'flexible composition' means: dynamic configuration vs. code changes.

2. Design Core Abstractions

Define interfaces for Filter and Scorer, and a Campaign as a pipeline of these components. Use a registry to map campaign IDs to configurations, enabling dynamic composition without hardcoding.

3. Data Modeling and Storage

Model events with attributes (location, price, time, category) and user profiles. Store campaign definitions in a database or config service, and consider caching for performance.

4. Execution Engine and Optimization

Design an engine that applies filters and scorers in order, possibly parallelizing independent steps. Discuss indexing, precomputation, and approximate algorithms for distance and ranking at scale.

5. Trade-offs and Extensibility

Discuss trade-offs: flexibility vs. performance, dynamic vs. static composition, and how to handle failures. Mention monitoring, A/B testing, and versioning for safe evolution.

Key Points to Mention

  • Strategy pattern and pipeline architecture for composable filters/scorers
  • Configuration-driven campaigns (e.g., JSON/YAML) with a registry and dynamic loading
  • Data model for events and users, including geospatial indexing for distance
  • Caching and precomputation to meet latency requirements
  • Trade-offs between flexibility, performance, and complexity
  • Versioning, feature flags, and A/B testing for safe deployment

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

Q2

How would you add a brand new campaign type using only existing building blocks, without modifying any core classes?

System DesignTechnical Trade-offs
Author's notes

Follow-up to the main design.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the existing architecture and extension points, then propose a composition-based solution using interfaces, dependency injection, and configuration. Emphasize that the new campaign type is implemented as a plugin or strategy that adheres to existing abstractions, avoiding any core modifications.

Pro tip: Mention that you would first write a failing test for the new campaign type to validate the extension points, then implement it, ensuring the design is testable and backward-compatible.

1. Clarify the current architecture

Ask about the existing campaign types, core classes, and extension mechanisms (e.g., interfaces, abstract classes, factories, DI containers).

2. Identify extension points

Determine which interfaces or base classes can be implemented or extended without modifying core code, such as a Campaign interface or a strategy pattern.

3. Design the new campaign type

Create a new class that implements the required interface(s), encapsulating the unique behavior of the new campaign type.

4. Wire it up via configuration or DI

Register the new class in the dependency injection container or configuration file so it can be discovered and used at runtime.

5. Validate and test

Write unit and integration tests to ensure the new campaign type works correctly and doesn't break existing functionality.

Key Points to Mention

  • Open/Closed Principle: open for extension, closed for modification
  • Strategy pattern or plugin architecture
  • Dependency injection and inversion of control
  • Interface-based programming and polymorphism
  • Configuration-driven behavior (e.g., YAML, JSON, or database-driven)
  • Backward compatibility and regression testing

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

Q3

The product team has identified several signals (hometown artist affinity, seasonal patterns, deduplication of recurring event names) that are not yet validated. How would you incorporate these into the system design without committing to them permanently?

A/B Testing & ExperimentationAdaptability & AmbiguitySystem Design
Author's notes

Blanked for a second here.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Frame the answer around building an extensible experimentation platform that treats unvalidated signals as pluggable, configurable modules behind feature flags. Emphasize a data-driven, iterative approach: start with A/B tests, measure impact, and only promote winning signals to permanent system components. Show how this balances innovation with system stability and avoids technical debt.

Pro tip: Mention that you would design the system to support 'kill switches' and automated rollback based on experiment metrics, and that you'd document assumptions and success criteria upfront to avoid analysis paralysis.

1. Abstract signals as pluggable modules

Design each signal (hometown artist affinity, seasonal patterns, deduplication) as an independent, configurable module that can be enabled or disabled via feature flags. This isolates their impact and allows easy removal without affecting core functionality.

2. Implement a feature flag and experimentation layer

Use a feature flag system (e.g., LaunchDarkly) to control module activation per user segment. Integrate with an A/B testing framework to randomly assign users to control or treatment groups and collect metrics on signal effectiveness.

3. Define success metrics and guardrails

Establish clear, measurable goals for each signal (e.g., conversion rate, click-through) and guardrail metrics (e.g., latency, error rates) to detect negative impacts. Set thresholds for promotion or rollback.

4. Run iterative experiments and analyze results

Launch experiments for each signal, monitor performance in real-time, and use statistical analysis to determine significance. Iterate on signal logic based on findings, and only promote signals that consistently meet success criteria.

5. Promote or retire signals with minimal disruption

For validated signals, gradually roll out to 100% of users and refactor into core system if needed. For invalidated signals, disable via flags and remove code, ensuring no residual dependencies.

Key Points to Mention

  • Feature flags for toggling signals on/off without deployment
  • A/B testing framework with control groups and statistical significance
  • Modular architecture (e.g., microservices or plugin patterns) for isolation
  • Success metrics and guardrails (e.g., conversion, latency, error rates)
  • Automated rollback and kill switches based on real-time monitoring
  • Documentation of assumptions and experiment outcomes for knowledge sharing

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

Q4

Users should always receive at least one event recommendation even when signal is weak. How does your design handle the fallback case?

Product Sense & IdeationSystem Design
Author's notes

As mentioned, I came to this late.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by acknowledging that fallback is essential for user trust and engagement, then describe a tiered fallback strategy that degrades gracefully from personalized to popular to trending recommendations. Emphasize how you would monitor and iterate on the fallback to ensure it remains effective and doesn't harm the user experience.

Pro tip: Proactively discuss how you would measure the success of the fallback (e.g., click-through rate, user retention) and set up alerts for when fallback is triggered frequently, showing you think about long-term health, not just the immediate fix.

1. Define fallback triggers

Specify the conditions that trigger fallback, such as low confidence scores, insufficient user history, or missing data. This shows you understand when the system needs to switch strategies.

2. Design tiered fallback strategies

Outline a hierarchy of fallbacks: first, use broader personalization (e.g., category-level preferences); then, fall back to popular items in the user's region; finally, use globally trending events. This ensures a smooth degradation.

3. Ensure diversity and relevance

Explain how you would avoid always showing the same fallback items by incorporating diversity (e.g., random selection from popular events) and contextual signals (e.g., time of day, location) to maintain relevance.

4. Monitor and iterate

Describe how you would track fallback frequency and performance metrics (CTR, conversion) to identify when the fallback is overused and needs improvement, and to refine the fallback logic over time.

5. Communicate trade-offs

Acknowledge potential downsides, such as reduced personalization or increased load on popular items, and explain how you would mitigate them (e.g., caching, load balancing).

Key Points to Mention

  • Tiered fallback approach: personalized -> category popular -> regional popular -> global trending
  • Use of confidence thresholds and heuristics to trigger fallback
  • Importance of diversity in fallback to avoid monotony
  • Monitoring and alerting for fallback frequency and performance
  • Trade-offs between personalization and reliability
  • Potential use of A/B testing to validate fallback effectiveness

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