Sync the LMS
A scheduled job pulls course assignments and status changes from Moko and Magnum Space, builds the events the platforms do not emit, and feeds them into the notifier.
Two notification streams on one backend. The first one is tied to the LMS — Moko and Magnum Space — so employees actually finish the training they have been assigned. The second one is a broadcast tool HR uses to talk to a specific branch, department or office instead of the whole company. What makes the project interesting is the LMS side. The platforms do not emit events, so all of the "you have a new course" / "your deadline is in three days" logic has to be reconstructed by the notification system itself.
The LMS could assign courses but it could not chase anyone. Employees would forget. Managers had no easy view of who was behind. Deadlines slipped, often quietly.
On top of that, the company had no clean way to send a message to "everyone at this branch" or "everyone in this department". HR had to coordinate that by hand across managers and chats.
We sync the LMS on a schedule, diff the state, and generate the events the platform never emitted. From there a reminder rules engine takes over: a message when a course is assigned, follow-ups every seven days while it is still open, a completion notice when it is done, and an escalation to the employee's manager when a deadline passes.
On the broadcast side, an admin panel lets HR pick the audience — a branch, a department, an office, a phone list — and ship a message to Telegram and WhatsApp at once.
A scheduled job pulls course assignments and status changes from Moko and Magnum Space, builds the events the platforms do not emit, and feeds them into the notifier.
Assignment notice on day one. Seven-day reminders while the course is open. A completion notice. A deadline-miss notice that also pings the manager.
Missed deadlines go to the employee and to the manager, so the conversation moves out of HR's inbox.
HR composes a message in the admin panel and picks the audience by branch, department, office or phone list. One step, two channels.
Same payload, both channels — pick whichever the employee already uses.
The LMS gave us status snapshots, not events. So the heavy lifting is on our side: pull frequently enough to be useful, diff cheaply, and treat the diff as the real source of truth for everything downstream. Once the events are clean, the reminder rules and the channel routing are straightforward.
The broadcast side reuses the same delivery layer. The admin panel turns "this department, this office" into a phone list that flows into the same Telegram + WhatsApp pipeline.
Employees get reminded at the right moments and managers see who is behind, so the deadline conversation happens before it is too late.
Targeted broadcasts replace the "forward this to your branch" chain. The message reaches the people it was meant for and skips the rest.
Telegram and WhatsApp run off the same backend, so a new template, audience or rule is set up once.
We reply within one business day. Then Azamat joins every first call personally, so you get an honest scope, budget, and fit from the person responsible for delivery.