Design mobile check deposit system
Company: Chime
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design a mobile check deposit system for a consumer banking app. Specify functional requirements (capture front/back images, amount entry/validation, duplicate/limit checks, deposit status lifecycle, user notifications), non-functional requirements (availability, latency, durability, consistency, observability), and risk/compliance (fraud prevention, holds/funds availability, Reg CC/Check 21 considerations in the U.S., audit trails, PII protection). Propose an end-to-end architecture: on-device capture and guidance, image preprocessing (dewarp, glare/blur detection), MICR/OCR pipeline, endorsement verification, limits and risk scoring, duplicate detection across users/devices, idempotent submission API, asynchronous processing and reconciliation, core banking integration, ledgering, and error handling with retries and dead-letter queues. Discuss data models, APIs, storage choices, scaling, rate limiting, device fingerprinting, security (encryption in transit/at rest, access controls, key management), monitoring/alerting, and testing strategies (sandbox, golden datasets, canary releases).
Quick Answer: This question evaluates a candidate's ability to design end-to-end, production-grade mobile check deposit systems, assessing competencies in system architecture, distributed systems, security and fraud prevention, regulatory compliance (Reg CC, Check 21), data durability, and operational observability.