Your Coaching Business Runs on WhatsApp and a Spreadsheet. Here’s What Broke.
Six things that break as a coaching business grows past forty students — the meeting link nobody can revoke, attendance evidence in a spreadsheet cell, the forty-minute class that bills like an hour — and what we built to fix them.
It works, right up until it doesn’t.
You started with four students. A WhatsApp group for the parents, a Zoom or Meet link you paste before each class, a spreadsheet with names down the side and dates across the top. Green fill for present, red for absent, a column at the end for what each family owes. It cost nothing, you set it up in an afternoon, and for a year it was genuinely the right tool.
Then you had forty students and six tutors, and the same system started quietly losing you money.
This is what actually breaks, in the order it usually breaks. It’s based on a real coaching business we spent the last few months moving off exactly this setup — so the examples are specific, and so are the things that didn’t work.
Break 1: The meeting link outlives the class
You paste the meeting link into the course, or into the group. It sits there.
A link has no memory of who it was for. The student who left in March still has it. So does their cousin. So does the parent who screenshotted it into another group of parents, meaning well, because someone asked about your classes.
Nobody did anything wrong. But you are now running a class with a door that does not lock, and the only way to close it is to create a new meeting every single time and hope you pasted the right one.
The tell: someone joins a session you did not expect them in, and you find out afterwards.
Break 2: The recording goes somewhere the class isn’t
The class ends. Your assistant uploads the recording to an unlisted YouTube playlist and sends the URL to the group.
Two weeks later a student asks for “the one about quadratic equations.” Nobody knows which link that is. The playlist has forty videos named Recording 12, Recording 13, zoom_0.mp4. There is no connection between a video and the class it came from, because that connection only ever existed in your assistant’s head.
The tell: you spend ten minutes finding a recording that took thirty seconds to upload.
Break 3: Attendance is evidence, and it lives in a cell
Attendance is not admin. It is the thing that decides whether a family owes you money this month. In a spreadsheet, that evidence is one keystroke from being wrong, and nothing tells you when it is.
The tutor marks it after class. Sometimes that evening. Sometimes on Sunday for the whole week, from memory. The cell says present. The parent says their child had a fever that Tuesday. Nobody can prove anything, so you write it off, because arguing costs more than the class was worth.
Put a number on that. If you write off two classes a month at ₹500 each, across a year that’s ₹12,000 — not because anyone cheated, but because your record of what happened wasn’t good enough to have a conversation about.
The tell: you have written off fees rather than have a conversation about a spreadsheet cell.
Break 4: The class that ran forty minutes
A network problem, or a test on Thursday and the student needs longer. The class was booked for an hour. It ran forty minutes, or ninety.
Your spreadsheet has one column: attended, yes or no. So the forty-minute class bills exactly the same as the ninety-minute one. One of those is unfair to the family. The other is unfair to you, and to the tutor who stayed late.
Most coaching businesses solve this by ignoring it, which works until a parent notices — and parents do notice, because their child told them the class ended early.
The tell: a parent asks why a short class cost the same, and you don’t have a good answer.
Break 5: Chasing money is now a part-time job
Nobody self-serves. To find out their balance, a parent asks you. To pay, they send a screenshot of a UPI transfer at 11pm, and someone has to open the spreadsheet and find the row.
Your assistant is now doing accounts receivable. That is a real job, and you are paying someone to do it by hand, on top of the collection you are personally doing over WhatsApp, in the evening, to people you would rather have a good relationship with.
The tell: you dread the first week of the month.
Break 6: You have no idea how the teaching is going
This is the one nobody puts on the list, and it is the one that decides whether the business grows.
You have six tutors. You have sat in on maybe three classes this year. You know which tutors parents praise and which ones quietly get requests to change — but you find out months later, when a family leaves.
The recordings exist. Forty of them. Nobody has time to watch forty hours of video to answer “is this going well?”
The tell: you learn a tutor was struggling when a student leaves, not before.
What these six have in common
Every one is the same failure: the thing that decides money is stored somewhere it cannot be checked.
A link nobody can revoke. A recording nobody can find. A cell nobody can verify. A duration nobody recorded. A balance only you can see. A class nobody watched.
The spreadsheet is not the problem — spreadsheets are excellent. The problem is that a spreadsheet has no opinion about what is true. It will hold a wrong number as confidently as a right one, forever, and it cannot tell you which it is holding.
At four students you are the check. You remember. At forty you are not, and nothing has replaced you.
What we built instead
We moved that coaching business onto Moodle. Not because Moodle is fashionable, but because most of the pieces already existed and needed connecting — the course, the enrolments, the attendance register, the payment handling. What was missing was the layer that ties a class to what it costs.
So we built it, as a set of Moodle plugins. Here is the shape of the answer, break by break.
The link that outlives the class → a Join button that appears a few minutes before the class and never shows the URL at all. Students click a button; the server checks who they are and whether the window is open, then redirects. The meeting URL is never sent to the browser. There is nothing to screenshot, and nothing to revoke.
The recording nobody can find → the recording attaches to the class it came from, and lands in the course automatically. “The one about quadratic equations” is the class on that date, and the video is on it.
Attendance in a cell → attendance is marked on the class page, by the person who taught it, and it is what triggers billing. One record, one place, with a history you can read.
The forty-minute class → the tutor records how long it actually ran, in five-minute steps. The student’s wallet is charged pro-rata and the tutor is paid pro-rata, from the same number. An admin can override it. Everyone is looking at the same figure, which is what ends the argument.
Chasing money → prepaid wallets. Families buy a package — one class, five, ten, or the whole course — and pay online or by UPI with proof. The balance is on their screen, not in your spreadsheet, and attendance draws it down automatically. Nothing is credited until someone who can see the bank account confirms the money arrived.
Not knowing how teaching is going → upload the class transcript and it comes back with what was covered, where the class went quiet and whether that silence was a student working or nothing happening at all, plus draft homework and quiz questions from what was actually taught.
We’ve packaged all of this as ClassLedger, and it runs on our managed Moodle hosting.
The part where I tell you what doesn’t work yet
Every post like this ends with a product that solves everything. This one won’t.
Transcription quality is the ceiling. We tested on a real class taught in Tamil with English technical terms — normal Indian classroom teaching. The auto-captions rendered “EMF cell” as emசெல் and mangled most of the numbers. The summary was still useful; the auto-generated quiz questions needed a teacher’s eye on every value before use. If your classes run in a mix of languages, expect to check the output rather than trust it.
Non-English classes cost more to analyse. Tamil is roughly three times the tokens of the same class in English, because of how the text is counted. Still fractions of a rupee per class — but it is not zero, and it is not equal.
Analysing your tutors is a decision, not a feature. We built the contact-sharing and conduct detection deliberately switched off, and it stays off until an administrator turns it on. Reading what your staff said at work is something you should tell them about first — in their contract, not in a settings page — and you need to decide who reviews a flag before you generate any. A flag with no process behind it is just a list nobody reads.
A transcript cannot see the whiteboard. It cannot see a camera, a phone, or whether the written work was correct. Any tool that scores those from a text file is making it up. Ours refuses to, which means the report is shorter and duller than a form full of numbers — and worth more.
And it does not chase anyone. There is no automatic dunning, and nobody is locked out for a zero balance. A family whose balance runs out is a conversation, not an automated lockout. The plugins remove the need to chase by making balances visible and self-serve, which is a different thing from automating the chasing.
Where to start, if this is you
You do not need all of it. In order of what buys you the most relief:
1. Stop pasting meeting links. Anything that gates the join is better than a link in a group chat. This is the fastest fix and the most immediate.
2. Move the balance out of the spreadsheet. Prepaid packages that families can see and top up themselves remove the single most miserable job in your week.
3. Record the actual duration. Once money follows the real number, the arguments stop, because everyone is looking at the same figure.
4. Only then look at analysis. It is the most interesting piece and the least urgent. It is also the one with real caveats, and it is worth trusting the pipeline on a few classes before you rely on it.
The spreadsheet got you here. It genuinely did — starting simple was correct, and building infrastructure for four students would have been a waste of the year you spent teaching instead.
It just doesn’t scale past the point where you personally stop being the system of record. If you have crossed that line — and you will know, because you are reading a post about spreadsheets breaking — the fix is not a better spreadsheet.
Quick answer (TL;DR)
• Six things break as a coaching business grows: the meeting link outlives the class, recordings get separated from classes, attendance evidence sits in an unverifiable cell, the forty-minute class bills like an hour, chasing fees becomes a part-time job, and nobody knows how the teaching is actually going.
• They’re all the same failure: the thing that decides money is stored somewhere it cannot be checked.
• The fix isn’t a better spreadsheet. It’s making the class itself the record — gated join, attendance that triggers billing, real duration driving both the charge and the tutor’s pay, and a balance families can see themselves.
• We built this as Moodle plugins (ClassLedger), running on managed Moodle hosting.
• Start with the meeting link. It’s the fastest fix. Leave transcript analysis for last — it’s the most interesting and the least urgent.
Related reading: what Moodle actually needs to run well, what Moodle hosting really costs in 2026, and why your Moodle isn’t sending emails.

