Case study · School admissions CRM

Wanguza: a WhatsApp-first admissions CRM for schools in Uganda

Private secondary schools in Uganda have to fill a Senior One class every year, and much of the interest they get from parents is lost between notebooks, staff phones and TikTok comments. Wanguza captures each enquiry with consent, follows up with parents on WhatsApp in English or Luganda, and shows the school which families are ready to enrol.

Product
Enrollment CRM and marketing automation
Who it serves
School owners and admissions teams
Business model
Free plan, then monthly plans in UGX
Status
Live, with the first partner schools
Core stack
Next.js, Vercel, NextAuth, WhatsApp, SMS, mobile money

For everyone

The short version

A school's next intake is usually already interested. Parents comment on a TikTok, call a teacher or turn up at an open day. Without a system, most of those contacts end up in notebooks and never get a follow-up.

Wanguza gives each school a small website and QR codes that capture parent details with consent and record where each one came from. It then follows up on WhatsApp, or SMS for feature phones, in English or Luganda. It books school visits, takes applications and can collect seat deposits by mobile money.

The school sees one funnel, from first contact to registered student, plus which posts and open days actually filled seats. The first partner schools are already running their intake on it.

  1. Interest from anywhere

    TikTok, open days, referrals and the school's own microsite.

  2. Follow-up on WhatsApp

    Automatic journeys in English or Luganda, with SMS as backup.

  3. Seats filled

    Visits booked, applications tracked, students registered.

For founders and CEOs

The business case

The problem schools described, why the product looks the way it does, and how it pays for itself.

The problem

Leads live in notebooks

Parent numbers end up on receipts, in exercise books and across three staff phones. Nobody owns the follow-up, so interested families go cold.

Viral posts that fill no seats

A school video can get 31,000 views and hundreds of comments, and none of it reaches a system that books a visit.

No idea what worked

Without tracking, a school can't tell which open day, post or referral brought students in, so each term's marketing spend is a guess.

Why we built it

Wanguza was designed with Ugandan school owners around how schools there actually recruit: WhatsApp, word of mouth and open days, with parents on low-cost phones and patchy data.

Most CRMs assume email, desktop users and card payments. Wanguza assumes WhatsApp, Luganda and mobile money, and it was built around Uganda's Data Protection and Privacy Act 2019 from the first version.

The product follows one funnel in five stages: capture the contact, nurture on WhatsApp, book the visit, turn the application into a registered student, then reach siblings and referrals.

Wanguza how it works: one funnel in five stages (capture, nurture, convert, enroll, expand)

How it makes money

A school can start free with up to 250 contacts. Paid plans add WhatsApp and SMS journeys, source tracking, AI Studio, mobile-money deposits and multi-campus tools. Founding schools keep founder pricing for 24 months.

The pitch to a school owner is simple arithmetic. Wanguza quotes fees of UGX 1M to 2.7M a term for one student, which comes to UGX 3M to 8.1M over a three-term year, against UGX 3.5M for a year of the Growth plan. An S1 student also usually stays four years.

One extra student against a year of Wanguza

Plan price and fee range from wanguza.com (founder pricing, excluding VAT). Three terms a year.

Where it is now

Wanguza is live. Schools can sign up and publish a microsite the same day, and the first partner schools are running their intake through it.

The funnel below is the demo school shown on wanguza.com. It shows how a school reads its intake at a glance: how many contacts came in, how many are talking, how many applied and how many enrolled.

Enrollment funnel

Demo school, S1 2027 intake, as shown on wanguza.com. Sample data, not a client result.

For engineers and technical leads

How it's built

A multi-tenant SaaS for many schools, a messaging engine for WhatsApp and SMS, and payments through mobile money, all built for cheap phones and patchy connections.

How a parent becomes a studentTikTok, open days,referralsscan · tapSchool microsite+ QR codesevery link taggedVercel: edge pages,serverless API on AWS us-east-1Wanguza app (Next.js)NextAuth · lockout · audit logconsented lead + sourceisolated per schoolPer-school tenantsconsent records · encryptedJourneysscheduled · EN + Lugandastart a journeyParent's phoneno app to installWhatsApp BusinessSMS for feature phonesrepliesSchool dashboardhot leads · pipeline · sourcesranked hot leadsseat depositMobile money processorMTN MoMo · Airtel · cardsno payment data storedSchool's accountsettles directlyAI Studioposts and replies inthe school's voiceConsent first.Every lead keeps its sourceand its opt-ins.
How a parent becomes a student
  1. Parents meet the school on its Wanguza microsite or by scanning a QR code. Every link carries a source tag, so each lead arrives already labelled with where it came from.

  2. The web app and the school dashboards run on Next.js, deployed on Vercel: pages from the edge, API routes as serverless functions in Vercel's us-east-1 region on AWS.

  3. Consent is recorded per purpose with the lead. Each school's data sits in its own tenant, encrypted in transit, access-controlled and audit-logged.

  4. Journeys send scheduled messages over WhatsApp Business, fall back to SMS for feature phones, and speak English or Luganda.

  5. Replies and activity feed the hot-leads board, which ranks parents by how ready they look, so staff call the right family first.

  6. Seat deposits go through a licensed processor for MTN MoMo, Airtel Money and cards. The money settles to the school, and Wanguza stores no payment credentials.

The stack

Front end

  • Next.js (React)
  • School microsites and QR links
  • Pages light enough for slow mobile data

Back end

  • Next.js API routes on Vercel
  • Serverless functions, AWS us-east-1
  • NextAuth sign-in with lockout protection

Messaging

  • WhatsApp Business journeys
  • SMS fallback for feature phones
  • English and Luganda templates

Payments

  • MTN MoMo and Airtel Money
  • Cards through the same processor
  • Settles directly to the school

Data and trust

  • Per-school tenant isolation
  • Consent records per purpose (DPPA 2019)
  • Audit logs and self-service data rights

Problems we had to solve

Parents who won't install an app

Parents never install anything. Everything reaches them on WhatsApp, with SMS for feature phones, and the public pages stay small enough to load on slow mobile data.

Two languages in every journey

Journeys, templates and replies come in English and Luganda, so a reminder reaches each parent in the language they think in. Every new message is written twice.

Consent the law can check

Uganda's Data Protection and Privacy Act 2019 shaped the data model. Opt-ins are separate for each purpose and stored with the lead. Messages a parent started, like an application receipt, are service messages; marketing needs its own consent. Parents can see and delete their own data without calling the school.

Many schools on one platform

Each school's data is isolated in its own tenant, access-controlled and audit-logged. Passwords are hashed and accounts lock after repeated failed sign-ins. The Network plan puts several campuses under one command centre.

Money that never passes through Wanguza

Deposits run through a licensed processor for MTN MoMo, Airtel Money and cards. The money settles straight to the school and Wanguza never holds card or mobile-money credentials, which keeps the platform out of the money flow.

Proving which post filled a seat

Every microsite link and QR code carries its own source tag. When a student registers, the school can trace them back to the TikTok, open day or referral that started it.

Shipping changes safely

From a pull request to every schoolGitHubpull requestVercel previewa staging copy per PRtest schools + messagesChecksbuild · lint · try itMerge to mainProductionedge + AWS us-east-1status page keepsschools informedinstant rollback to the last deploymentEvery change gets itsown preview first.
From a pull request to every school
  1. Every pull request gets its own preview deployment on Vercel, which works as a staging copy of the app.

  2. Checks run on the preview, and the change is tried there with test schools and test messages.

  3. Merging to main deploys to production on the edge, with the API on serverless functions.

  4. If something goes wrong, the previous deployment comes back in one step, and the status page tells schools what is happening.

From the live product

More from Wanguza

Screenshots from wanguza.com, October 2026.

Keep reading

Next case study

Internal product · Agency operations

Aslam HQ: the system that runs my own agency

One login for LinkedIn outreach, email from your own domain, scheduled posts, clients and staff. Clients and employees get a portal that shows only their own part.

workspaces, one login
5
kinds of login
4
  • Next.js
  • Supabase
  • Claude
Read the case study