Learning, where life already happens

Take your course on WhatsApp.

Lessons arrive one bite-size step at a time. Read, listen, watch, and sit your exam - right inside the chat. Every action syncs to the Academy, so your progress and certificate are always in both places. Try the live demo below. 👇

Synced to the Academy0%

This is real data. Every step in the chat updates Grace Francis’ record in the LMS - open the web Academy and you’ll see it there too.

🗓️ Drip delivery

Lessons release one per day. In this demo you can skip the wait - fast-forward to the next lesson or simulate the marker grading your exam.

Verify the syncOpen the web Academy → My Learning (log in as the student)

👤 Demo learner

Grace Francis · student@tgc.org
Course: Growth Systems: Foundations

How it works

From “hi” to certificate - without leaving the chat.

01

Opt in

A learner messages the Academy number (or taps a link) and is enrolled instantly.

02

Drip lessons

One micro-lesson arrives per day - short text, a voice note, or a video - paced so it sticks.

03

Exam in chat

Reply with a number for multiple-choice; type written answers. Markers review and finalize.

04

Certificate

Pass and the certificate is delivered as a document - and saved to the web Academy.

For your developer

Making it live: the real WhatsApp build.

This page simulates the experience and shares the Academy’s data so you can demo it today. To run on real phones, a developer connects the WhatsApp Business Cloud API to the same course database. Here’s the shape of that build.

Architecture

WhatsApp Business Cloud API

Meta-hosted. Sends & receives messages via a verified business number and approved templates.

↕
API
Your webhook server

Receives inbound replies, runs the drip + exam state machine, calls the Cloud API to send the next message.

↕
DB
Shared course database

The same source of truth the web LMS reads - enrollments, progress, submissions, certificates.

webhook.js - send next lesson
// Inbound reply hits your webhook → advance the learner
app.post('/webhook', async (req, res) => {
  const msg = req.body.entry[0].changes[0].value.messages[0];
  const learner = await findByPhone(msg.from);

  if (msg.text.body.trim() === 'DONE') {
    await completeLesson(learner, learner.currentLesson);  // → same DB as LMS
    const next = await nextLesson(learner);
    await sendWhatsApp(msg.from, {
      type: 'interactive',
      body: next.title,
      buttons: [{ id: 'done', title: 'Done âś…' }]
    });
  }
  res.sendStatus(200);
});

What maps to what

In this simulationIn the live WhatsApp build
Quick-reply chipsInteractive reply buttons & list messages (Cloud API)
Bot messages with typing delayOutbound message templates (pre-approved for drip/notifications)
Voice note & video bubblesAudio & video media messages (uploaded media IDs)
“Simulate next day”A scheduler (cron) that releases one lesson per day per learner
localStorage progressYour shared database - the web LMS reads the very same records
Certificate document bubbleGenerated PDF sent as a document message + stored on the profile
“Simulate marking”Marker grades in the LMS → webhook pushes the result to WhatsApp

Two front doors, one Academy.

Learners choose WhatsApp or the web - progress, exams, and certificates stay perfectly in sync.