Client · Full-stackKlinn AI2025–26
Edmissions World CRM
A private staff CRM for an admissions floor that had no single answer to who owned a lead. This is the system that replaced the spreadsheets.
- Role
- Architecture, data model, delivery
- Type
- Private staff CRM — not a student portal
- Roles
- Admin, sales manager, telecaller, counselor, receptionist
- Live
- crm.edmissionsworld.com
01 / The problem
Edmissions World places students into medical and undergraduate programmes abroad. The floor is a chain: a sales manager imports and assigns leads, a telecaller works the queue, a counselor takes the qualified student through documents and applications, reception records walk-ins. Overnight, yesterday's no-contact leads have to come back.
None of that lived in one place. Telecallers worked spreadsheets. Counselors worked WhatsApp. Reception kept a notebook. Managers could not answer who owns this lead, or which follow-ups were missed this week, without someone spending an afternoon on it.
02 / Approach
I sat with the floor instead of a CRM template. The unit of work is the lead: assigned to a telecaller, optionally to a team, with an explicit status machine — new, in progress, no-contact, three follow-up stages, qualified, counselor-assigned.
Each staff role gets a different surface of the same records. Managers import and distribute (round-robin, capacity or performance) with daily caps. Telecallers call, note, schedule follow-ups, mark DNP, and qualify to a named counselor. Counselors work documents and application status on that same record. Reception creates walk-ins. A Cloud Function at 00:05 Asia/Kolkata moves yesterday's NoContact leads back into Follow-up 1 so DNP does not silently die.
- Roles before features. Five live roles — admin, sales manager, telemarketer, counselor, receptionist — each with path-level RBAC. A leftover student dashboard exists in code and is not shipped.
- The lead is the record. Owner, team, source, notes, follow-up date, counselor handoff and application progress live on one object, so 'where is this student' has one answer.
- Automate the babysitting. No-contact leads reopen overnight. WhatsApp templates cover the messages the floor already sent by hand: documents, fees, visa, confirmation.
03 / What shipped
Lead pipeline
CSV import and assignment with round-robin, capacity or performance distribution, daily caps and team quotas. Statuses run from new through follow-up, qualified and counselor-assigned. Managers get a DNP list they can search, export and delete.
Telecaller floor
Assigned queues, call notes, follow-up scheduling, missed-follow-up views, daily quota, and a qualify step that writes counselorId onto the lead. Attendance clock-in sits next to the queue.
Counselor book
Qualified and counselor-assigned leads, document upload to Firebase Storage, application status (draft → documents pending → under review → additional docs → completed), and meeting scheduling.
Reception and staff ops
Walk-in create and counselor assign on the receptionist dashboard. Leave with a manager → admin hierarchy and SMTP notifications. Admin reports, LiveKit screen share for the calling floor, and in-app help in English, Hindi and Telugu.
04 / Outcome
The consultancy now runs its admissions cycle out of crm.edmissionsworld.com rather than alongside it. Five roles share one pipeline. The two questions that used to take an afternoon — who owns this lead, which follow-ups were missed — have a screen.
I wrote about why the floor could not have a kanban in Why the CRM had to look like a spreadsheet.
05 / What I would change
Application progress still mutates the lead rather than sitting in a first-class collection. Leave is still two stacks. I would have split applications earlier and killed the legacy leave API before the second year of production — retrofitting both later costs more than building them would have.