Skip to content

Tutoring Platform

KAISAN

An exam platform for a tutoring centre with around 500 students: questions are generated by AI, but never published without a teacher's review.

Peran
Freelance, fixed-scope handoff
Periode
2025
Status
Delivered to client

Problem

A tutoring centre with around 500 students needed a question bank far larger than its teachers could write. Repeating the same questions defeats the point of practice: students memorise the answer instead of understanding the material.

Constraint

This was freelance work with a fixed scope, ending in a handoff. That means the code has to be continued by someone else without me, and no part of it may only work when I am the one running it.

The people using it every day are teachers, not technical operators. Everything has to be manageable through an interface, not through commands on a server.

AI-generated questions are not always correct, and a wrong question on a graded exam damages a student's trust while burying teachers in disputes. So automation must not reach the point of publishing.

There was also a limit I set myself: adaptive difficulty needs a numeric rating, but a visible number immediately becomes something students compare with each other.

Decision

I chose Laravel 12 with Livewire 3 and Filament 4. Filament gives a mature admin panel without building management screens from scratch, and that matters on fixed-scope work — the time goes into business rules, not CRUD tables.

Teacher review is a required step before a question can go live. AI output enters as a draft, and there is no path that skips this stage. Automation stops exactly before the point where a student bears the consequence.

Adaptive difficulty uses Elo ratings, but the raw rating is never shown to students. They see a band label only: Pemula, Berkembang, Mahir, Ahli. The system keeps a number to select questions; students get no number to rank each other by.

Scheduled exams and a seasonal leaderboard give the term a rhythm. The leaderboard resets each season, so a student who starts late is not chasing an impossible gap.

PostgreSQL was chosen so the client can run it with any provider after the handoff.

Outcome

Completed within scope and handed over. Teachers manage the question bank, schedule and participants through the panel without technical help.

TODO — confirm with Sigit: whether the system is still in use, and whether the tutoring centre may be named.

Laravel 12Livewire 3Filament 4PostgreSQL

LET’S TALK

Got a system that needs fixing or a product that needs building? Tell me about it.