Admissions CRM & Enrollment
The end-to-end admissions engine of NexusOne — an 11-stage pipeline from first inquiry through enrollment, covering lead management, follow-ups, public application forms, document verification, admission tests, interviews, offer letters, waitlisting, scholarships, WhatsApp integration, and real-time admissions analytics. Every feature in this chapter is available on the Basic tier.
Admissions Pipeline
Leads can also branch to Rejected, Lost, or be placed on the Waitlist at any stage before enrollment.
Basic Tier Features
Basic11-Stage Admissions Pipeline
- Pipeline: new → contacted → qualified → application_submitted → test_scheduled → test_completed → interview_scheduled → interview_completed → offer_made → enrolled / rejected / lost
- Drag-and-drop Kanban board to move leads across stages
- GET /api/admission-leads/analytics/pipeline — funnel counts per stage
- Admin UI: /dashboard/admin/admission-analytics (Kanban board)
Lead Management & CRM
- AdmissionLead model: student, parent/guardian, contact, source, score, priority, status
- Lead sources: website, phone_inquiry, walk_in, referral, social_media, advertisement, whatsapp
- Auto lead scoring on creation; notes/activity timeline per lead
- Full CRUD, search, filters (status/priority/source), CSV bulk-import of new leads
- Admin UI: /dashboard/admin/admission-leads (list, filters, stats)
Follow-ups & Communication
- Structured follow-up entries: call, whatsapp, email, visit, meeting — each with due date, status, outcome
- POST/GET /api/admission-leads/:id/followups — create & list follow-up history
- PUT /api/admission-leads/followups/:id/complete — mark complete with outcome notes
- Automated email drip sequence (Day 1/3/7 nurture, application, test, and final-enrollment reminders) runs every 6 hours via cron — New
- Legacy single next-follow-up date/notes retained alongside the new history list
- Gmail-compose email action and click-to-call parent action
Public Application Forms
- Token-based public application form — no login required
- Multi-step form: student details, academic history, parent details, documents
- Public inquiry form: /admission-inquiry/[schoolId]
- Public application form: /application/[token]
- POST /api/admission-leads/:id/send-application-link — emails a secure token link
Document Verification — New
- Per-document verification status: pending, verified, rejected, needs_resubmission
- Verification notes and verifier tracked on each document
- PUT /api/admission-leads/:id/documents/:docId/verify
- Admin UI: verification controls embedded in lead detail page's Documents card
Admission Tests — New
- Track test scheduling, date, score, and status (not_scheduled/scheduled/completed/passed/failed)
- PUT /api/admission-leads/:id/test
- Admin UI: Admission Test card on lead detail page
Interviews — New
- Track interview scheduling, date, and notes
- PUT /api/admission-leads/:id/interview
- Admin UI: Interview card on lead detail page
Offer Letters — New
- Auto-generated offer letter PDF, emailed and sent via WhatsApp on generation
- Acceptance deadline tracking with parent-facing countdown
- Stale pending offers past their acceptance deadline are auto-expired every 6 hours via cron — New
- POST /api/admission-leads/:id/offer — generate & send
- PUT /api/admission-leads/:id/offer/respond — admin records phone/verbal response
- PUT /api/applications/:token/offer/respond — parent accepts/rejects via public link
- Public offer page: /application/[token]/offer — accept/reject + PDF download
Waitlist Management — New
- AdmissionWaitlist model with queue position per grade/academic year
- POST /api/admission-leads/:id/waitlist — add lead to waitlist with priority
- GET /api/admission-leads/waitlist — list ordered by queue position, filterable by grade/year
- PUT /api/admission-leads/waitlist/:id/promote — promote a waitlisted lead when a seat opens
- A cron job auto-promotes top-of-queue leads every 6 hours whenever enrolled count drops below grade capacity — New
- Admin UI: /dashboard/admin/admission-leads/waitlist
Scholarships — New
- Scholarship types: merit, need_based, sibling, staff, other — amount or percentage based
- POST /api/admission-leads/:id/scholarships
- Admin UI: Scholarships card on lead detail page with add-form and status list
WhatsApp Integration
- leadSource now supports "whatsapp" as a distinct inbound channel
- Offer letters automatically sent via WhatsApp alongside email
- Consistent with school-wide WhatsApp communication channel (Ch. 15)
Real Admissions Analytics — New
- Pipeline funnel: lead counts per stage in pipeline order
- Source attribution: leads, enrollments, and conversion rate per lead source
- Stage-by-stage conversion rates
- Counselor performance: lead count, enrolled count, conversion rate, avg response time
- Seat capacity per grade/academic year: capacity, enrolled, waitlisted, seats remaining
- Admin UI: /dashboard/admin/admission-leads/analytics — funnel bars, tables, no chart library (pure Tailwind)
API Reference — Chapter 13
Leads (Core)
/api/admission-leadsCreate a new lead (authenticated)
/api/admission-leads/publicCreate a new lead (public inquiry form)
/api/admission-leadsList leads with filters, search, pagination
/api/admission-leads/:idGet single lead by ID
/api/admission-leads/:idUpdate lead
/api/admission-leads/:idDelete lead
/api/admission-leads/:id/notesAdd a note/activity to a lead
/api/admission-leads/:id/statusUpdate lead status
/api/admission-leads/:id/assignAssign lead to a counselor
/api/admission-leads/:id/schedule-followupSchedule the legacy single next follow-up
/api/admission-leads/:id/send-followupSend a one-off legacy follow-up email
/api/admission-leads/statsLead statistics overview
/api/admission-leads/:id/convert-to-studentConvert enrolled lead to a student account
/api/admission-leads/follow-upsGet leads requiring follow-up
/api/admission-leads/bulk-send-application-linksBulk send application form links via CSV
/api/admission-leads/bulk-importBulk create new leads via CSV (New)
/api/admission-leads/:id/send-application-linkSend a single application form link
Document Verification (New)
/api/admission-leads/:id/documents/:docId/verifyVerify, reject, or request resubmission of a document
Tests & Interviews (New)
/api/admission-leads/:id/testUpdate admission test schedule, score, and status
/api/admission-leads/:id/interviewUpdate interview schedule and notes
Offers (New)
/api/admission-leads/:id/offerGenerate offer letter PDF, email + WhatsApp it, set status to offer_made
/api/admission-leads/:id/offer/respondAdmin records phone/verbal offer response
/api/applications/:token/offer/respondParent accepts/rejects offer via public token link (no auth)
Follow-ups (New)
/api/admission-leads/:id/followupsAdd a structured follow-up entry
/api/admission-leads/:id/followupsGet follow-up history for a lead, sorted by due date
/api/admission-leads/followups/:id/completeMark a follow-up complete with an outcome
Scholarships (New)
/api/admission-leads/:id/scholarshipsAdd a scholarship to a lead
Waitlist (New)
/api/admission-leads/:id/waitlistAdd a lead to the waitlist with priority
/api/admission-leads/waitlistList waitlist entries, filterable by grade/academic year
/api/admission-leads/waitlist/:id/promotePromote a waitlisted lead when a seat opens
Analytics (New)
/api/admission-leads/analytics/pipelineLead counts per pipeline stage
/api/admission-leads/analytics/sourcesLeads, enrollments, and conversion rate per source
/api/admission-leads/analytics/conversionStage-by-stage conversion rates
/api/admission-leads/analytics/counselorsCounselor performance metrics
/api/admission-leads/analytics/capacitySeat capacity per grade/academic year
Public Application (Token-based)
/api/applications/:tokenGet application/lead data by token (no auth)
/api/applications/:token/upload-documentUpload a supporting document
/api/applications/:token/documents/:documentIdDelete an uploaded document
/api/applications/:token/submitSubmit the completed application form
Frontend Pages
| Path | Role | Description | Tier |
|---|---|---|---|
| /dashboard/admin/admission-leads | Admin | Lead list — filters, search, stats, CSV bulk-send & bulk-import | Basic |
| /dashboard/admin/admission-leads/[id] | Admin | Lead detail — status, tests, interviews, documents, offer, scholarships, waitlist, follow-ups | Basic |
| /dashboard/admin/admission-leads/create | Admin | Create a new lead | Basic |
| /dashboard/admin/admission-leads/applications | Admin | Review submitted applications | Basic |
| /dashboard/admin/admission-leads/analytics | Admin | Real admissions analytics — funnel, sources, conversion, counselors, capacity | Basic |
| /dashboard/admin/admission-leads/waitlist | Admin | Waitlist management — queue order, promote | Basic |
| /dashboard/admin/admission-analytics | Admin | Drag-and-drop Kanban lead board | Basic |
| /admission-inquiry/[schoolId] | Public | Public admission inquiry form | Basic |
| /application/[token] | Public | Public token-based application form | Basic |
| /application/[token]/offer | Public | Public offer letter view — accept/reject, PDF download | Basic |
Mobile Screens
admissions-leadsadmission-lead-detailadmission-followupsadmission-application-progressadmission-offer-preview