One platform from first enquiry to placement
A CRM and operations system for a training institute: website enquiries, lead pipeline, enrolment, batches, fees, placement, email automation and role-based access, all in one place.
- Client
- WezvaTech
- Industry
- EdTech & Training

What was the problem?
An institute that promises placement runs two long journeys per person: enquiry to enrolment, then enrolment to job offer. Run across spreadsheets, phone notes and WhatsApp threads, candidates go cold between stages and nobody can see where the pipeline is stuck.
What made it hard
Commercially
- Two long journeys per person — enquiry to enrolment, then enrolment to placement — tracked across spreadsheets, phone notes and message threads
- Candidates going cold between stages with no one able to see where the pipeline was stuck
Technically
- A public webhook that must accept real enquiries from the website and nothing else
- Lead data arriving from forms and bulk imports, so duplicates are inevitable
- Fees, batches and placements all hanging off one person record without losing history when they move
Operationally
- Different staff need different access to different parts of the system
- Automated emails must be switchable per type, and a campaign must never send the same email twice
Security
- Student and payment data must never be reachable directly from the browser
What we built
A CRM and operations platform covering lead capture, pipeline and follow-ups, lead-to-student conversion, batches, instalment fees, placement, email automation, role-based access and reporting.
What it does
Secured enquiry webhook
Website enquiries arrive in real time, authenticated by a shared-secret header and an approved-origin list, with every submission logged — including failures.
Drag-and-drop pipeline
Every lead's stage visible at a glance and changed by dragging a card.
Import with duplicate detection
CSV and Excel import that catches duplicates automatically, with admin merge.
Follow-ups and alerts
Scheduled follow-ups, overdue alerts and an in-app notification bell.
Lead-to-student wizard
A guided conversion from enquiry to enrolled student.
Batches and transfers
Capacity limits, lifecycle stages and batch transfers with history kept.
Instalment fees and receipts
Paid, partial and pending tracking, with receipts sent by email.
Placement tracking
Placement outcomes and campus-drive records per student.
Email automation and campaigns
Branded, editable templates; four switchable automated emails; bulk campaigns with duplicate-send protection.
Roles across 14 modules
No access, read-only or full access per module, with per-user exceptions.
Activity log
System-wide, filterable by user, action, record type and date.
Reports and export
Lead, conversion and revenue dashboards; PDF and Excel export; full data backup.
Engineering decisions
Choices that could have gone another way, and what each one bought.
A public webhook that only listens to the right callers
Website enquiries arrive in real time through a webhook that checks a shared-secret header and an approved-origin list, and logs every submission — accepted or rejected.
Why it matters. An open lead endpoint fills a CRM with junk. Logging rejections too means a broken form is visible the same day, not discovered weeks later.
The browser never touches the database
Firestore rules deny all direct client access. Every read and write goes through Server Actions, validated with Zod and authorised against the user's role.
Why it matters. Student, fee and placement data is only reachable through code that checks who is asking. There is no client-side rule to get wrong.
Access control a manager can run themselves
Admins create roles and give each one no access, read-only or full access to each of 14 modules, then grant individual users exceptions — all without a developer.
Why it matters. Counsellors, trainers and accounts staff need different views. The institute can change who sees what the day a job changes.
Campaigns that cannot double-send
Bulk email to a batch, course, leads, all students or a custom list is logged per recipient, and a repeat send of the same email is blocked.
Why it matters. A duplicate email to hundreds of students is a visible, embarrassing failure. It is prevented, not apologised for.
Technical detail
Collapsed by default. Open whichever part you are evaluating.
- Frontend
- Next.js 16 (App Router)
- React 19
- TypeScript
- Tailwind CSS and Radix UI
- Recharts dashboards
- Backend
- Next.js Server Actions
- Zod validation on every input
- Database
- Firebase Firestore via the Admin SDK, with all direct client access denied
- Authentication
- Custom token login with hashed passwords
- Authorization
- Custom roles with none / read / full access across 14 modules, plus per-user overrides, enforced on the server
- Messaging
- Nodemailer over admin-configured SMTP
- Monitoring
- System-wide activity log
- Webhook submission log, including rejected requests
- Frontend
- Next.js 16
- React 19
- TypeScript
- Tailwind CSS
- Radix UI
- Recharts
- Backend
- Next.js Server Actions
- Zod
- Nodemailer
- Database
- Firebase Firestore
- Integrations
- Website enquiry webhook
- SMTP email
- Authentication
- Custom token login with hashed passwords
- Authorization
- Role-based access across 14 modules with per-user exceptions, checked on the server
- Data protection
- Firestore denies all direct browser access; every read and write goes through the server
- Abuse prevention
- Webhook accepts only requests with the shared-secret header from approved origins
- Duplicate-send protection on bulk campaigns
- Automatic duplicate lead detection
- Auditability
- System-wide activity log filterable by user, action, record type and date
- Every webhook submission logged, including failures
- Every campaign email logged
Before and after
Before
- Enquiries scattered across web forms, WhatsApp and phone
- Lead status and follow-ups kept in spreadsheets and memory
- Fees, batches and placements tracked separately from the lead that started them
After
- Every enquiry in one pipeline, de-duplicated, with its full history
- Scheduled follow-ups with overdue alerts
- One record per person from enquiry through fees, batch and placement
- Automated receipts, welcomes and staff alerts
The build, by the numbers
What was built, at what scale. These describe the system's size, not its business results.
- access-controlled modules
- 14access-controlled modulesEach with no access, read-only or full access per role, plus per-user overrides
- automated email types
- 4automated email typesReceipts, welcomes, new-lead alerts and follow-up reminders, each switchable
- campaign audiences
- 5campaign audiencesA batch, a course, leads, all students or a custom list
- record per person
- 1record per personFrom website enquiry to placement, with batch history kept
What changed as a result?
The institute runs its whole student lifecycle in one platform instead of across spreadsheets and message threads.
- One platform from first enquiry to placement
- Website enquiries flow straight into the CRM through a secured webhook
- Custom roles across 14 modules, with every action logged
- Routine emails automated; campaigns protected against duplicate sends
Why does this matter in EdTech & training?
Training providers usually have the harder half solved already: an audience that trusts them. What leaks is the path from interested to enrolled. WezvaTech reaches over ten thousand learners; the work was making the site convert that reach rather than admire it.
A large audience and a thin enrolment path
Reach does not convert on its own. Course pages, a visible enrolment route and instant-response contact options are what turn followers into paying learners.
Placement claims nobody can verify
Every training provider claims placements. The ones that convert show named outcomes, real project work and reviews a prospect can check, rather than a percentage with no source.
Enquiries arriving where nobody is watching
Technical learners message on WhatsApp and expect a fast reply. An enquiry that waits overnight is usually an enrolment lost to whoever answered first.
No visible difference between courses
When a flagship bootcamp, an internship and a webinar all look alike, prospects default to the cheapest. Distinct pages with distinct outcomes let people self-select correctly.
Need something like this for EdTech & training?
Tell us what is slowing the business down and we will tell you whether software is the right fix. If it is not, we will say so.
Free 30 minutes · no obligation
Related work
- Education / Internal SaaS
Little Lumos School Management Portal
Custom-built school management SaaS that automates end-to-end school operations
- AI Workflow Platform
Little Lumos — AI Monthly Progress Reports
A preschool was hand-writing 70+ monthly progress reports, costing 3–4 working days every month. Softivum built the full workflow: teachers speak, AI drafts, admins approve, and branded letters reach both parents with per-recipient delivery tracking.
- Marketplace Platform
Helpora — Hyperlocal Neighbour-Help Marketplace
A marketplace where neighbours pay neighbours for everyday help. Softivum built the consumer app, the marketplace engine, the operations console and the brand site — verifying identity against government records, holding every payment in escrow until the job is done, and tracking helpers live on a map.