System Design: Feedback + Feature Rollout Platform
Context
Build a multi-tenant platform that lets product teams:
-
Collect end-user feedback from applications.
-
Control feature rollout to targeted cohorts via feature flags.
Assume web/mobile SDKs, admin console, and public APIs. The platform should serve multiple tenants (organizations) and environments (dev/stage/prod).
Requirements
Functional
-
Feedback
-
Submit end-user feedback (text, screenshots, metadata).
-
List/search/filter feedback by tenant, app, environment, tags, status.
-
Moderation workflow (auto + human review).
-
Analytics aggregation (trends, NPS/CSAT, tags/topics).
-
Feature Flags
-
Create/update/delete flags with variants and targeting rules.
-
Evaluate flags in real time with caching for low latency.
-
Gradual rollouts (percentage-based, rule/segment-based).
-
Kill switches and safe defaults.
-
APIs and SDKs
-
Endpoints such as submitFeedback, listFeedback, createFlag, evaluateFlag.
-
Admin console for configuration and moderation.
Non-Functional
-
Multi-tenancy isolation, authn/z (RBAC), rate limiting.
-
Privacy/PII handling, data residency, encryption.
-
Audit logs, safety/observability, SLOs.
-
Scalability, cost efficiency, DR/BCP.
-
Consistency expectations and propagation SLAs.
Deliverables
-
Service boundaries and data flows.
-
Core classes/objects and database schemas.
-
API endpoints (with request/response fields).
-
Handling of multi-tenancy, authn/z, rate limiting, moderation, analytics, PII, caching, rollout strategies, kill switches, audit logs, safety/observability.
-
Scaling estimates and consistency considerations.