System Design: Online Bank Account Opening Workflow
Context
You are designing a high-scale online bank account opening workflow for web and mobile clients. The system must operate in a regulated environment, integrate with external KYC/AML and sanctions providers, and provide a secure, resilient, and auditable experience across multiple regions.
Requirements
Design the following:
-
APIs
-
Start a new application, save partial progress, submit, and resume an application.
-
Upload documents and verify them.
-
Provide real-time application status.
-
Workflow orchestration
-
Which steps are synchronous vs. asynchronous, and why.
-
How to model long-running tasks, callbacks, and manual review.
-
Correctness and safety
-
Idempotency and deduplication to prevent duplicate accounts.
-
Failure handling, retries, and exactly-once or at-least-once guarantees where appropriate.
-
Audit trails sufficient for regulatory compliance.
-
Data and security
-
Data model for Applicants, Applications, Documents, and related entities.
-
PII security: encryption, key management, access control, and safe logging.
-
Rate limiting and abuse controls.
-
Risk and compliance
-
KYC/AML and sanctions checks (and re-checks as needed).
-
Fraud/risk scoring and decisioning (auto-approve, reject, manual review).
-
Scale and reliability
-
Scale to millions of applications per day.
-
Multi-region architecture and data residency.
State any minimal assumptions you make.