Skip to content
Rathaworks

EngineeringScheduling dozens of live classes on a limited pool of Zoom licences

Each Zoom licence hosts one meeting at a time. Here's how I took the human out of live-class scheduling for a coaching institute — and caught clashes before students did.

3 min read

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:

ts
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.");
The whole clash rule in one line.

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.

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
Rasmiranjan Sahoo, freelance web and mobile app developer based in Bhubaneswar, India

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

Let's build the thing your business is missing.

Tell me what you need in two minutes. You'll hear back within 24 hours, and get a fixed-price proposal within 48 hours of our call.

  • Reply within 24 hours
  • Fixed quote in 48 hours
  • NDA on request