# Onboarding — what uses SLA vs applicant reminders SRS §9.4 SLA applies to **internal role turnaround** (ASM, RBM, FDD, Finance, etc.). It does **not** apply to steps the **prospect/dealer** performs on the public portal. ## Do not configure internal SLA | Pipeline step | Why | What to use instead | |---------------|-----|---------------------| | **Submitted** | Application is already submitted; no internal approver waiting. | None (audit only). | | **Questionnaire** | **Prospect** fills the questionnaire, not ASM/RBM. | **Scheduled BullMQ job** + manual bulk: `QUESTIONNAIRE_REMINDER` to applicant (`QuestionnaireReminderService`, requires `ENABLE_REDIS=true`). | Runtime: `shouldTrackOnboardingSla()` skips these in `WorkflowService`. Re-seed sets `isActive: false` on old config rows. ## Internal SLA (configured) | Step | Owner (internal) | Real scenario | |------|------------------|---------------| | Shortlist | DD Admin | Admin reviews leads and shortlists (§6.6). | | 1st / 2nd / 3rd Level Interview | RBM+DD-ZM, DD Lead+ZBH, NBH+DD Head | Panel feedback TAT after interviews are scheduled. | | FDD | FDD | External agency report upload/review. | | LOI Approval | NBH | Internal LOI approval gate. | | Security Deposit | Finance | Finance verifies payment proof uploaded by applicant. | | LOI Issue | DD Admin | LOI issuance processing. | | Dealer Code Generation | DD Admin | Code generation task. | | Architecture / Statutory Work | Architecture Team / DD Admin+Legal | Parallel compliance tracks. | | LOA | NBH | LOA approval. | | EOR Complete | DD Admin | EOR milestone. | | Inauguration | ASM | Post-EOR inauguration coordination. | ## Applicant-facing communications (not SLA matrix) | Template | Audience | Trigger | |----------|----------|---------| | `OPPORTUNITY` / portal link | Applicant | Opportunity conversion | | `QUESTIONNAIRE_REMINDER` | Applicant | DD Admin bulk reminder (pending questionnaire) | | `QUESTIONNAIRE_SUBMITTED` | Applicant | On questionnaire submit | | `ONBOARDING_STATUS_UPDATE` | Applicant | Status changes | ## Scheduled prospect reminders (not SLA Configuration UI) | Env variable | Default | Meaning | |--------------|---------|---------| | `ENABLE_REDIS` | `false` | Must be `true` for scheduler | | `QUESTIONNAIRE_REMINDER_SCHEDULER_ENABLED` | `true` | Master switch | | `QUESTIONNAIRE_REMINDER_FIRST_AFTER_DAYS` | `1` | Wait after entering Questionnaire Pending | | `QUESTIONNAIRE_REMINDER_INTERVAL_DAYS` | `2` | Min days between repeat emails | | `QUESTIONNAIRE_REMINDER_MAX_COUNT` | `5` | Max auto reminders per application | | `DEBUG_QUESTIONNAIRE_REMINDER_FAST_MODE` | off | Sweep every 15 min (dev) | **Cron:** daily 09:00 (same pattern as LWD admin sweep). **Code:** `questionnaire-reminder.queue.ts` → `QuestionnaireReminderService.processScheduledReminders()`. Internal **SLA worker** (`sla.worker.ts`) only processes `sla_tracking` rows for **internal roles** — it does not email prospects.