Design a collaborative to-do list service (think "shared iPhone Reminders") that lets any user create a task list, invite an unlimited number of collaborators, and see all changes in real time. Every list item has only four mutable fields: title (string), completed (boolean), created_at, and updated_at. The product must work on web and mobile clients, support offline edits that sync later, and never lose user data. The interviewer is most interested in (1) the relational schema you pick for lists, tasks, and list_members and the indices you add, (2) how you prevent lost updates when two users change the same task at the same time (OCC with a per-task version column is expected; CRDTs are explicitly called over-engineering), and (3) what happens when one list suddenly has 5,000 active collaborators all typing at once—walk through WebSocket fan-out limits, sub-partitioning the Kafka topic by task_id instead of list_id, snapshot caching, and how you would still guarantee ordering and exactly-once delivery. You should also explain how a new device catches up (snapshot + incremental events), how you handle permissions and invites at scale, and what your read/write SLA is. The discussion should be backed by rough numbers: 1 M DAU, 10 M lists, median 20 tasks per list, 10:1 read/write ratio, peak 1 edit/sec per active list, and 5× traffic spikes.