%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FFF1E6','primaryTextColor':'#1a1a1a','primaryBorderColor':'#F77020','lineColor':'#F77020','secondaryColor':'#FFE4D1','tertiaryColor':'#ffffff','clusterBkg':'#FFF8F2','clusterBorder':'#F77020','fontFamily':'Inter','fontSize':'14px'},'flowchart':{'curve':'basis','htmlLabels':true}}}%%
flowchart TD
classDef trust fill:#F77020,stroke:#c4541a,stroke-width:2px,color:#ffffff
classDef action fill:#FFF1E6,stroke:#F77020,stroke-width:2px,color:#1a1a1a
classDef ai fill:#FFE4D1,stroke:#F77020,stroke-width:2px,color:#7a3a10
classDef user fill:#ffffff,stroke:#F77020,stroke-width:2px,color:#1a1a1a
classDef success fill:#F77020,stroke:#9c4214,stroke-width:3px,color:#ffffff
classDef decision fill:#ffffff,stroke:#F77020,stroke-width:2px,stroke-dasharray:4 2,color:#1a1a1a
Start([Candidate Clicks Apply Now]) --> InitSession[Initialise Application Session]
InitSession --> ProgressBar[Render 6-Step Progress Bar]
ProgressBar --> Step1[STEP 1: Basic Details]
Step1 --> S1Fields[Name, Email, Phone, Address]
S1Fields --> S1Optional[Optional: LinkedIn, Portfolio URL]
S1Optional --> S1Validate{Fields Valid?}
S1Validate -- No --> S1Error[Show Inline Errors]
S1Error --> S1Fields
S1Validate -- Yes --> Save1[Auto-Save Step 1]
Save1 --> Step2[STEP 2: Email OTP Verification]
Step2 --> SendOTP[Send 6-Digit OTP to Email]
SendOTP --> EnterOTP[Candidate Enters OTP]
EnterOTP --> OTPValid{OTP Valid?}
OTPValid -- No --> OTPRetry[Show Error & Allow Resend]
OTPRetry --> EnterOTP
OTPValid -- Yes --> LookupProfile[Lookup Email in Candidate DB]
LookupProfile --> ProfileExists{Saved Profile Exists?}
ProfileExists -- Yes --> PullSaved[Pull Saved Resume, Answers & Self-ID]
PullSaved --> ConfirmReuse[Candidate Confirms / Updates]
ConfirmReuse --> Step3
ProfileExists -- No --> NewCandidate[Mark as New Candidate]
NewCandidate --> Step3[STEP 3: Resume Upload]
Step3 --> Drop[Drag & Drop or Browse]
Drop --> FileType{File Type?}
FileType -- PDF --> Parse[AI Resume Parser]
FileType -- DOCX --> Parse
FileType -- Scanned PDF --> OCR[OCR Engine]
OCR --> Parse
FileType -- Other --> Reject1[Reject & Prompt Re-upload]
Reject1 --> Drop
Parse --> Extract[Extract Skills, Experience, Education]
Extract --> AutoFill[Auto-Fill Profile Fields]
AutoFill --> Confirm[Candidate Confirms Extracted Data]
Confirm --> Save3[Auto-Save Step 3]
Save3 --> Step4[STEP 4: Screening Questions]
Step4 --> LoadQ[Load Configured Questionnaire]
LoadQ --> QGen[General Questions]
QGen --> QJob[Job-Specific Questions]
QJob --> Visa[Visa Status]
Visa --> Salary[Salary Expectations]
Salary --> Notice[Notice Period]
Notice --> KO[Knockout Questions]
KO --> KOEval{Pass Knockout?}
KOEval -- No --> AutoRej[Auto-Reject & Notify]
AutoRej --> RejEnd([End: Polite Rejection])
KOEval -- Yes --> Save4[Auto-Save Step 4]
Save4 --> Step5[STEP 5: Voluntary Self-ID]
Step5 --> ComplianceNotice[Compliance Notice — All Optional]
ComplianceNotice --> Gender[Gender Optional]
Gender --> Ethnicity[Ethnicity Optional]
Ethnicity --> Disability[Disability Status Optional]
Disability --> Veteran[Veteran Status Optional]
Veteran --> Save5[Auto-Save Step 5]
Save5 --> Step6[STEP 6: Review & Submission]
Step6 --> Preview[Application Preview Panel]
Preview --> EditCheck{Edit Required?}
EditCheck -- Yes --> JumpStep[Jump to Specific Step]
JumpStep --> Step1
EditCheck -- No --> ESign[Electronic Signature]
ESign --> Consent[Consent Checkbox]
Consent --> ValidateAll{All Valid?}
ValidateAll -- No --> ShowGaps[Highlight Missing Fields]
ShowGaps --> Step6
ValidateAll -- Yes --> SubmitFinal([Submit Application])
SubmitFinal --> Confirmation[Confirmation Screen + Email]
Confirmation --> ATSEntry[Create Candidate in ATS — Stage: Applied]
class Start,Step1,S1Fields,S1Optional,S1Error,Step2,EnterOTP,OTPRetry,ConfirmReuse,NewCandidate,Step3,Drop,Reject1,Confirm,Step4,LoadQ,QGen,QJob,Visa,Salary,Notice,KO,Step5,ComplianceNotice,Gender,Ethnicity,Disability,Veteran,Step6,Preview,JumpStep,ESign,Consent,ShowGaps,Confirmation user
class InitSession,ProgressBar,Save1,Save3,Save4,Save5,ATSEntry,SendOTP,LookupProfile action
class Parse,OCR,Extract,AutoFill,PullSaved ai
class S1Validate,OTPValid,ProfileExists,FileType,KOEval,EditCheck,ValidateAll decision
class AutoRej,RejEnd trust
class SubmitFinal success