Design User Engagment platform.
MediumLow-Level Design: User Engagement Scoring Engine
Problem Statement
You are tasked with designing a flexible and thread-safe User Engagement Scoring Engine. Modern analytics platforms need to track user actions (events) in real-time to assign an "Engagement Score" to every user. This score determines how active a user is.
The system must ingest various types of user interaction events (like viewing a page or clicking a button), calculate a score based on a pluggable logic strategy, and maintain a history of these scores. Crucially, if a user's calculated score indicates a drop in activity (low engagement), the system must trigger alerts via multiple channels (like Email or Slack).
The design must emphasize extensibility (to easily add new event types or calculation logic without breaking code) and concurrency (handling multiple event streams simultaneously).
Requirements
Interview Simulation
Experience a realistic interview conversation. The interviewer will ask clarifying questions,and you'll reveal your understanding of the requirements.
Let's start by understanding the scope. What are the core functionalities this system needs to provide?
💡 Interview Tip
Identify the Actors (Who uses the system?) and their Use Cases (What are they trying to achieve?). Start with the 'Happy Path' scenarios.