A recorded lesson that loads slowly is an annoyance. A live class that fails to start is a crisis — it happens to hundreds of students at the same moment, and they all know immediately. At the Bidyasagar Classes platform, the most common cause wasn't Zoom. It was scheduling.
The constraint nobody wrote down
A licensed Zoom host can run one meeting at a time. With three classes a day that's invisible. With thirty, it's the central operational problem: someone has to remember which licence is free at which hour, and two classes accidentally given the same host means one of them simply won't start. The team finds out when students start messaging that they can't get in.
Let the system pick the licence
Teachers and admins now schedule a class by describing it — subject, teacher, time, duration and who it's for. The platform looks at every class already scheduled, works out which hosts are busy in that window, and assigns the first free one. Two time ranges overlap when each starts before the other ends:
const overlaps = (aStart: Date, aEnd: Date, bStart: Date, bEnd: Date) =>
aStart < bEnd && bStart < aEnd;
const busy = new Set(
scheduled
.filter((c) => overlaps(start, end, c.start, c.end))
.map((c) => c.hostEmail),
);
const host = pool.find((h) => !busy.has(h));
if (!host) throw new Error("Every licence is booked in this slot — pick another time.");If every licence is genuinely occupied, the person scheduling is told at the moment of scheduling, while it's still a calendar question — not after it has become a room full of students who can't join.
One session, several audiences
Institutes often teach one session to more than one group — two courses covering the same chapter, or a revision class for several batches. Creating the class once and sharing it across courses and batches beats running it twice. The part to get right is access: anyone enrolled through any of the sharing courses must be able to join without friction.
Keep links personal
A single meeting link gets forwarded to friends. Per-student registration links, approved automatically for enrolled students and limited to one device each, keep paid classes for paying students — and tell the institute exactly who attended.
Close the loop after class
- Publish the recording to the right batch as soon as Zoom reports it's ready — nobody should have to upload it by hand.
- Auto-complete sessions that are still marked live hours after they ended, so schedules and attendance stay truthful.
- Open classes inside the platform rather than sending students to another app — their notes, tests and progress stay one tap away.
The trade-off
Automatic allocation gives up some manual control: staff can't insist a particular licence be used on a hunch. That's the point. The manual control being surrendered was precisely what caused the failures — and the institute now has a factual basis for deciding when to buy another licence.
- EdTech
- Zoom API
- Scheduling
- Node.js

Written by Rasmiranjan Sahoo
Full-stack and React Native developer. I design and build websites, apps and business software end to end — and write about what I learn shipping them. More about me

