Design a system that handles mobile check deposits end-to-end: from a member capturing a check in the mobile app, through OCR and validation, to forwarding the deposit to the partner bank, and finally releasing or returning the funds.
The expected user flow:
Member takes a picture of the front and back of a check in the mobile app.
OCR extracts the Account #, Routing #, and Check # (the "Big 3").
Member manually enters the deposit amount.
Member submits the deposit. The app sends the Big 3, the amount, and the two check images to our backend.
Our backend forwards the deposit request to the partner bank, which accepts the Big 3 + images + amount and returns 201 Accepted (a generic ACK — no transaction body).
After acceptance, the partner bank only contacts us on errors (e.g. wrong account, duplicate check, NSF). Silence means success.
If we have not heard back within 4 days, we release the funds to the member.
Design the backend services, data model, OCR pipeline, deposit submission flow, the polling/timer mechanism for fund release, and the error-handling path for returns and reversals.