World 1-2
Class Insight + the AI-quota paywall
Teachers were generating mountains of quiz data that went nowhere. I turned it into a risk-aware class dashboard with AI analysis, and designed the free-to-premium paywall on top of it.
- My role
- Product Manager and PRD author. Analytics data-layer spec, risk model, AI analysis design, monetisation and paywall design.
- Team
- Frontend, backend and full-stack/AI engineers, QA, UI/UX designer, curriculum consultant
- Timeline
- Apr – Aug 2026 · v0.1 PRD → v0.2 handoff → launch
- Tools & stack
- Laravel
- Existing quiz data
- LLM + SSE streaming
- JSON-schema validation
- Metabase
01 · The problemData collected. Going nowhere.
Teachers on Pandai already created classes, assigned quizzes, and had students submit them. Every response, every per-question score, every submission timestamp was stored and never used. A teacher finished a quiz cycle with no structured view of who was struggling, on what, or why.
Meanwhile, Malaysian classroom-based assessment (PBD) asks teachers to judge each student’s mastery level, from TP1 to TP6, per learning standard. Most were doing it from memory and spreadsheets.
On the business side, the teacher premium plan needed a reason to exist that teachers would feel every week.
02 · StrategyAn intelligence layer on dormant data
Class Insight revamped the existing classroom into three layers, each built on the one below:
- 1 · Analytics data layerReads existing quiz submissions and computes scores, submission rate, trend, mastery band, risk and topic struggle. Refreshes within 5 minutes of a submission. No teacher input.
- 2 · Class dashboardKPI cards, class trend, the top 4 trouble-spot topics, the top 3 students at risk, and a student intelligence panel to sort by risk, band or submission rate.
- 3 · AI analysisPer student, three modes: Descriptive (what happened), Predictive (where they’re heading) and Remedial (what to do next).
- Free quota checkFree: data layers always, AI analysis 3 times a month. Premium: unlimited.
- Inline paywall at the moment of needShown when a teacher hits the quota mid-task, not as a banner on day one.
03 · The modelA risk score teachers can argue with
The at-risk model is deliberately simple and transparent: a weighted formula, not a black box.
Student risk score
- 40% submission rate
- 30% score trend
- 30% gap from the class average
Output: High, Medium or Low. A teacher can see exactly why a student is flagged.
Engagement override
A student is flagged regardless of score if any of these is true:
- submission rate below 80%
- inactive for more than 14 days
- 3 or more missed assessments
The thresholds are named constants, tunable without a redeploy.
Topic trouble spots use a separate class-level metric: of the students who answered questions on a topic, the share who scored below the class average on it. It’s used only to rank topics, never to judge an individual student.
04 · The hard partGetting the education rules right
The trickiest calls weren’t technical. They were about what the numbers are allowed to mean in a Malaysian classroom.
- “No data” is not “TP1”. TP1 means a student knows the basics. A student with zero submissions shows “—”, never TP1. Labelling an unassessed child as the lowest band is both wrong and harmful.
- Criterion-referenced, not class-relative. PBD judges each student against a standard, not against classmates. So a student’s topic status comes from their own average mapped to the national grade bands. How they compare to the class is kept as a separate, teacher-only signal, and the two are never merged.
- Flag what we inferred. Mapping the six published grade bands one-to-one onto TP1–TP6 was our inference, so the PRD marks it as needing sign-off from our education consultant before build. No false certainty in the spec.
05 · Build & shipAI that explains, code that decides
The biggest risk with AI analysis of children’s performance is an LLM confidently inventing things: a wrong mastery band, a number that doesn’t exist, another student’s name. So I split every AI response into two halves:
Computed (in code)
Scores, trend, TP band, risk, weak and strong topics, and the follow-up track (remediation, reinforcement or enrichment) routed from the TP band.
Renders instantly when the tab opens, with zero AI latency.
Generated (by the LLM)
Plain-language interpretation and exactly three concrete next actions, written for the track it’s given. It never chooses the track.
Streams into its slots as it arrives.
Every generated response passes validation in code before a teacher sees it:
- Every number in the generated text must exist in the computed data.
- No TP levels invented in predictive mode.
- Every recommended action must reference a real weak or strong topic, and match the computed track.
- If the engagement override is on, at least one action must be about engagement.
- No other student’s name, ever. That one is a hard fail, and it’s logged.
Fail twice and the teacher gets a template fallback with all the computed numbers still on screen. We never serve unvalidated LLM output, and never hide the whole card.
06 · Key decisionsThe calls I made
- D1
Paywall the AI, not the data.
Free teachers keep the dashboard, trouble spots and risk list. That proves the value every week. The quota converts at the exact moment a teacher wants more.
- D2
Rules in code, words from the model.
Risk, TP band and follow-up track are deterministic and testable. The LLM only explains them, so a bad generation can never change a child’s label.
- D3
Refresh within 5 minutes, not real-time sockets.
Teachers review after a quiz closes, not mid-question. Near-real-time was a fraction of the cost and complexity.
- D4
Stream computed first, AI second.
The numbers render immediately. AI latency or failure never blocks the teacher from the data.
- D5
Cut scope hard for v1.
No principal dashboard, no CSV import, no fine-tuning, and responsive web only. One teacher, one class, done well.
07 · ResultsWhat moved
- 12%free-to-premium conversion from the AI-quota paywall
- 47%weekly active use among paying teachers
- 2M+students on the platform
It needed zero new data collection: the whole feature runs on submissions students were already making.
08 · Lessons learnedWhat I’d tell the next player
- Monetise the moment of need. The best paywall is the one a teacher hits while doing the thing they came to do.
- In education, definitions are product decisions. “What does TP1 mean?” mattered more than any model choice.
- Next up: a school-level view for heads of department, a PBD auto-report with evidence trails, and confirming the grade-band mapping with curriculum experts.