Five fields on every enquiry
- Course of interest
- Intake
- Parent / guardian
- Parent phone
- Previous qualification
The two parent fields are text on the enquiry rather than a second person record, which is worth knowing before you plan around it.
Every enquiry with a counsellor against it, every callback with a date, and the fees on a schedule that raises its own instalments. The admissions pack renames the most of the four: your navigation reads Enquiries, Students and Fee receipts.
No per-counsellor fee, unlimited users, self-hosted. The pack applies from Settings in a click.
One record the whole way. The person who walked in is the student on the admission and the family on the fee receipt, rather than three rows in three registers.
A walk-in, a phone call, a referral, a campaign or the form on your own website lands as an enquiry with its source recorded against it, and the list filters by that source.
Assign it to a counsellor, who sees the enquiries assigned to them or that they created rather than the whole institute. The rule is enforced in the API.
Book the callback as a task with an owner and a due date, in a list, on a board or on a calendar. You go to it: nothing chases you.
Record what was discussed on the enquiry, capture the course of interest, the intake and the parent, and move its status along.
Convert the enquiry and it creates the institute record, the student as a contact and the admission itself in one action, with the enquiry marked converted.
Raise the fee receipt, record part payments as they come in, and put the balance on a monthly or quarterly schedule that raises the next instalment overnight.
The admissions pack is a file in the repository, so this list is exactly what you get. Every item is an ordinary record you can rename, reprice or delete afterwards.
The two parent fields are text on the enquiry rather than a second person record, which is worth knowing before you plan around it.
Enough to tell a walk-in from a referral and a scholarship case from a returning family, without inventing a taxonomy in week one.
Test prep, bootcamps, professional papers, a language batch and the registration fee, each with a code and a price. Change them to your prospectus before you quote one.
Optionally the pack also seeds sample enquiries, students and fee receipts so you can see the shape of it. Every seeded row is tagged, so you can delete the lot in one action when you are done.
Each one is checked against the source rather than written from a feature list, and where a capability is on one client and not the other, it says so. The next section is the other half of that promise.
This pack renames the most of the four, and your navigation reads your words rather than a vendor’s. The Enquiries pages carry the word throughout. Other page headings keep the stock label, and the phone app does not read the map, so it still says Leads.
Course of interest, intake, parent or guardian, parent phone and previous qualification, on every enquiry. They render on the web form and the phone form, filter in list views, and come back through the API.
Walk-in, referral, campaign or existing family, recorded against the enquiry and filterable on the list, so you can see where a season’s admissions actually came from.
Not the whole institute. A counsellor works the enquiries assigned to them or that they created, administrators see everything, and the rule lives in the API rather than in the interface.
A follow-up is a task on the enquiry, in a list sorted by what is owed, on a board, or on a calendar. The same task in all three views.
Each course defined with a code and a fee, then dropped onto a quotation or a receipt rather than retyped. The pack seeds eight to start you off.
An itemised quotation on a private tokenised link, accepted with no signup, and the acceptance records who accepted and when. Convert it and the fee receipt comes out with the same lines.
Record money against the same receipt as often as it arrives. Overdue is marked by a nightly check rather than by somebody going through the register.
A monthly or quarterly schedule with an end date, generating the next instalment on a nightly job. Switch the schedule off to stop it.
Files attach to the enquiry from the web app and the phone, and to the student contact from the web app, rather than sitting in an inbox nobody else can search.
A first-response target and a resolution target on each one, counted against your working week and your holidays, and paused while you are waiting on the family.
Admissions season doubles your counsellor count for two months. There is no seat cap and no per-user fee, so the peak costs you nothing extra.
This is an admissions CRM, not a school management system. If what you need is the classroom rather than the enquiry, that line is where it stops, and knowing it now beats finding out in the middle of a season.
The pack defines a seven-stage admissions pipeline, from New enquiry through Demo class to Admitted, and those rows really are created and served by the API. Neither the web app nor the phone has a screen that draws them, so an enquiry carries a status rather than sitting in a column you drag.
The parent is two text fields on the enquiry, a name and a phone number. Not a person record of their own, not linked to the student, and not searchable the way a contact is. Enough to call them; not a family history.
Nothing models a batch, a schedule or how many seats are left in one. You track the enquiry and the admission, which is the demand side of the institute, not the timetable.
No per-session attendance against a batch, and no register. Once a student is admitted, what happens in the classroom is outside what this holds.
No conversion rate per counsellor and no enquiry-to-admission time. Deals carry stage aging; enquiries carry none of it. The one report that ships is fee receivables in aging buckets.
A callback has an owner and a due date and the list sorts by it. Nothing emails or notifies anyone when it falls due, and nothing repeats a follow-up on a schedule. You go to the list.
No messaging integration pulls enquiries in. A web form you build in Settings and embed on your site does bring them in without anyone retyping them, but a message thread is not a channel this reads.
The importer is written and tested on the backend, with per-row error reporting, and neither client can reach it. Last season’s list comes in through the API, not through a file upload in the interface.
The enquiry model, the visibility rules and the admissions pack are all in the open repository.
Nothing. The core CRM is open source with no per-user fee and no seat cap, which is the point in a trade where you take on counsellors for admission season and let them go afterwards.
Yes. It is a Django and PostgreSQL application you deploy yourself, so student and parent details stay on infrastructure you control. Tenant isolation is enforced by row-level security in the database.
Yes. A fee balance goes on a recurring schedule that raises the next instalment on a monthly or quarterly cycle, generated by a nightly job rather than by someone remembering. It stops on its end date or when you switch it off.
No. A counsellor sees the enquiries assigned to them or that they created, and administrators see everything. The check is in the API, so it holds for the phone and for anything you build against the API too.
Not through the interface yet. The importer exists on the backend, with per-row validation and error reporting, and no screen in either client calls it. Today last season’s list would come in through the API. We would rather say that than let you find out in the middle of admissions.
They exist as configuration and the API serves them, and no screen draws them yet. What works today is the enquiry status, the five fields the pack adds and the tags, all of which show up on the web app and the phone.
Apply the admissions pack, put every counsellor on it, and pay nothing per head. Self-host it and student records never leave your server.