All work
11 · fintech · document ai
AI paystub screening before Plaid verification
Suspicious or unusable paystubs are flagged before they reach a human underwriter, and clean ones go to Plaid automatically.
- Client
- US consumer lender
- Role
- AI Engineer
- Period
- Devinware LLC · ongoing
Problem
Borrowers upload paystubs that are stale, incomplete or not payroll documents at all, and each upload needed manual checking before Plaid verification.
How it works
- 01UploadThe borrower uploads a paystub.
- 02ExtractA vision model fills a strict schema: employer, pay period, gross and net pay, deductions, garnishments.
- 03CheckDeterministic checks catch stale, incomplete or non-payroll documents.
- 04Cross-checkNet pay is compared with bank deposits.
- 05Send to PlaidClean documents are uploaded automatically.
- 06One fraud flagAll risk signals roll into one flag for underwriting.
What I built
- Vision-model extraction of employer, pay period, gross and net pay, deductions and garnishments into a strict schema.
- An automatic provider fallback on the Laravel side: when the primary Azure OpenAI call fails, the extraction is retried on OpenAI.
- Deterministic document checks that tell the borrower exactly what to re-upload instead of silently rejecting the file.
- A Node.js service that uploads clean documents to Plaid automatically by driving a headless browser with Playwright.
- A pluggable signal aggregator, so new fraud checks plug in without touching the core.
Guardrails
- Extraction is forced into a strict schema before any check runs.
- Borrowers get a specific re-upload request, not a silent rejection.
Result
Removed manual document checks from the operations team.
Suspicious documents are flagged before they reach a human underwriter.
media note
Client systems are under NDA, so this case study uses words and a diagram instead of screenshots.