Design Personalized Promotion Recommendations
CreditkarmaMachine Learning Engineer · Technical ScreenLast updated
This question tests the ability to design an end-to-end recommendation system for personalized financial promotions, focusing on handling sparse conversion data, real-time feature requirements, and feedback loops.
Design a Personalized Promotion Recommendation System
Design a system for a financial platform that recommends credit products (e.g., credit cards, personal loans) to users. The objective is to maximize the click-through rate (CTR) and the conversion rate (application completion) for these promotions.
Requirements
- Scale: The system must support 50 million daily active users with sub-200ms latency for recommendations.
- Data: User profiles, historical credit application data, credit score snapshots, and interaction logs (impressions, clicks, dismissals).
- Feedback: Conversion data (loan approval/disbursement) is often sparse and delayed, occurring days or weeks after the initial recommendation.
Your design should address:
- Candidate Generation & Ranking: How to select a small subset of relevant offers from a catalog of thousands and how to rank them effectively.
- Feature Engineering: What features are most predictive for financial product propensity, and how to handle real-time vs. batch feature updates.
- Labeling Strategy: How to handle the "delayed feedback" problem where a user might apply for a product long after the recommendation.
- System Architecture: High-level components (API, Feature Store, Model Service, Data Pipeline).
- Evaluation: How to validate the model offline and perform A/B testing in production.
Hints
Hint 1
Consider using a two-stage architecture with a light retrieval layer (like collaborative filtering or embedding-based lookup) followed by a heavy deep learning ranking model.
Hint 2
Address the sparsity of conversions by using intermediate signals like 'clicks' or 'application start' as proxy labels during training.
Hint 3
To handle delayed feedback, explore techniques like building a time-weighted loss function or implementing a waiting period for positive labeling.
Follow-up questions
- How would you ensure that the system does not recommend credit products for which the user is highly likely to be rejected?
- How would you implement an exploration strategy to show new or less popular products without significantly hurting user experience?
- What monitoring metrics would you track to detect data drift, given that financial market conditions can change rapidly?
Solution walkthrough is for members
Get the full walkthrough with reference code and complexity analysis, plus Kitty Coach at 300 messages a day. Hints, the code runner and community answers stay free.