Start / End
Process
Decision
Input / Data
Error State
Success / End
Role exists → Upload resumes Single upload or bulk? Single Upload file PDF or DOCX Bulk (50+) Upload batch Progress: "23/57 processed" ↓ Loop through each resume ↓ Valid format? PDF / DOCX? Invalid Reject file Clear error message → Next file Valid Duplicate candidate? Yes Skip or replace? Skip Skipped → Next file Replace No Store file + create record 1 resume → 1 candidate record Associate with role(s) Candidate ↔ Role (many-to-many) Partial failure: if 3/50 fail, 47 proceed. Failures → error summary. More files in batch? Next file No → All ingested · Ready for Parsing (§3)