Quick update on pslepractice.com. Back in July, I shared that I hit 3,000 tests generated for my daughter's exam prep.
The national exams (PSLE) took place two weeks ago. The traffic during "Comprehension Week" was vertical. We crossed 11,500 tests generated.
Here is the retrospective now that the dust has settled:
The "Success Disaster" is real: My hosting bill skyrocketed. I was sending uncompressed WAV files from the browser to the Gemini API. Success can be expensive! I had to implement strict IP-based daily limits (2 tests per student) to keep the project free and sustainable.
Agility in "Beta": During the rush, users asked for Mother Tongue support. I added Chinese and Tamil in days. Gemini Pro handled it flawlessly, listening to non-English audio and providing feedback in English for parents.
Multimodal is the game-changer: I moved beyond text to SBC - Stimulus Based Conversation. The AI now generates a unique realistic b&w image and 3 related questions in one turn. It sees the image and hears the student.
The "Post-Exam" Reality: Usage has stabilised now that the exams are over, but the site has matured from a simple tool into a full Oral/Listening comprehension practice platform.
The biggest lesson? Building in public and listening to user feedback (including the occasional angry email about strict scoring!) helped me refine the AI examiner persona to be more "human" and encouraging.
Still 100% free, no sign-ups, and ready for the next cohort.
Congrats on getting through the spike without the hosting bill sinking you. One thing worth thinking about now while it's quiet: PSLE is annual, so you got 11,500 people with strong intent in a short window and then it goes cold until next year's cohort. That's a real asset if you capture it, even just an email opt-in during the rush ("get a reminder before next year's exam period") turns a one-time spike into a list you can re-activate every cycle instead of starting from zero traffic again. Might also be worth checking whether the same audience needs anything in the 11 months before the next exam, since a tool that's only useful for two months a year has an unusually hard monetization problem otherwise.
That’s a fair point on building an asset, but this niche is a bit unique. Once a student finishes the PSLE, they move on and never look back, so a mailing list of this year’s parents essentially becomes irrelevant every November.
Instead of a list, I’m leaning into the SEO I have built. The site stays ranked even during the quiet months, so next year’s Primary 5 and 6 students will naturally discover it when they start their own prep.
I am also keeping the "no sign-up" model on purpose. That lack of friction is the main reason it goes viral in parent WhatsApp groups and classrooms in the first place. I'd rather have the organic word-of-mouth than a list of expired emails.
The most interesting measurement in this story is hidden: what happened to error rates between 3k and 11.5k tests in 8 weeks? Volume spikes expose measurement degradation. When you're at 3k tests, "the system works" might be true. At 11.5k, a 0.5% error rate that was invisible becomes 57 broken test experiences, and your measurement system (assuming error rates stay constant under load) now lies.
Most teams optimize for throughput (tests completed) and miss the measurement collapse: p95 latency, error rates by student cohort, retry frequency. Those don't scale linearly. The "survived the rush" angle matters because you had to know which measurements actually changed vs. which stayed predictable. If 95% of students completed successfully at 3k and 11.5k, that's a real signal. If success rate stayed constant but error reasons shifted (network timeouts vs. parsing errors), that's a different story about what will break next.
What measurement surprised you most between 3k and 11.5k?
That is a very sharp observation. You're right, at 11.5k, those 'invisible' errors became very loud.
The measurement that surprised me most was not actually an AI logic failure, but a measurement collapse of my own rate-limiting logic when I scaled the infra.
When traffic started spiking, I enabled Cloudflare’s proxy to shield the server. Immediately, my 'real' error rate for students skyrocketed because my backend saw every single request as the same Cloudflare IP. My rate-limiter thought one user was spamming the site and started blocking legitimate students. I had to pivot to trust proxy settings and header-based IP extraction just to see my 'real' user behavior again.
The other measurement that kept me up at night was the Gemini API’s 'Resource Exhausted' (429) error.
As volume went vertical, I didn't just hit rpm limits, I hit Monthly spending caps. At 3k tests, I never even thought about spend caps. At 11.5k, the success rate was no longer just about code quality, it was a constant battle against tiered quotas and real-time billing limits.
In short, at 3k, the metric was: 'Is my prompt/flow right?' At 11.5k, the metric became: 'are my pipes and my wallet big enough to handle the flow?'
11,500 tests is a strong signal.
Do you expect usage to hold outside exam season, or is the product becoming mainly a seasonal business?
Its a free app for students and during exam season the demands spikes and other times it steady!
That seasonality makes sense. Outside exam periods, what keeps students coming back — regular study habits, practice volume, or something else?
Study habits!
That makes sense. What’s the strongest observable behavior outside exam season that tells you those study habits are actually bringing students back?