Data entry mistakes are cheap when they are made and expensive when they are found. A mark typed as 8 instead of 80 costs nothing at the moment it is typed. Found at the end of term, after it has dragged down an average and shaped a report comment, it costs an afternoon and an awkward conversation.
Bhala is a markbook we built for primary school classes in South Africa. It is finished and working, and not yet in use at a school. A lot of its design comes down to one idea: show the mistake while the person who made it is still looking at the screen.
Put the last answer next to the new one
Mark entry takes one assessment at a time. Each pupil gets a box, and beside it three things: the mark as a percentage, that pupil's own previous result, and the difference between the two.
That is all it takes. Say a child who usually scores in the seventies has just been given 8%: it stands out on the line, not in a report three months later. The teacher doesn't need a warning dialog or a rule that guesses what a sensible mark looks like. They need context at the moment they type, and they will see the slip themselves.
It is the pupil's own previous result, not the class average, because an average hides individuals. Against the class, a strong pupil having a bad day and a typo look much the same. Against the child's own history, the typo is obvious.
Don't make people do sums the screen can do
Every hand calculation is another place for a slip. In Bhala the term mark is worked out from weights that sit on the screen rather than being typed in. The markbook has pupils down the left and assessments across the top, each headed with its date, its kind and what it was out of. The weight on every assessment can be edited in place, the total of the weights sits beside them, and the term mark on the right follows from them.
If the weights add up wrong, you can see it. If a term mark looks odd, you can see exactly where it came from.
An absence isn't a zero
The most damaging error in a school spreadsheet often isn't a typo. It is an absence typed in as a zero, because the cell needed something in it. One zero can pull a term mark down a long way, and nothing in a spreadsheet tells it apart from a real result.
Bhala records each mark in one of four states: recorded, absent and owed, caught up, or not yet taught. An absence is never stored or shown as a zero, so it never reaches an average.
Corrections that leave a trail
Catching a slip early only helps if fixing it is safe. Marks in Bhala are append-only, and the database itself enforces it. A correction is added as a new entry rather than written over the old one, so the history is intact after every edit and nobody can quietly change a figure after the fact.
Patterns, not diagnoses
The same thinking carries into how Bhala reads the class. Room to improve looks at the marks already entered and says two things: which strands the class as a whole is weakest in, lowest first, and which children have fallen by six points or more between their last two assessments, shown against the class average.
It surfaces patterns. It doesn't diagnose a child or suggest a cause. A drop might be a hard week, a missed lesson or a slip that got through. What to do next is the teacher's call, and the screen is built to leave it there.
Where this applies
Anywhere people type numbers that matter: stock counts, timesheets, meter readings, expenses. The cheapest check is usually the last value next to the new one, shown at the moment of entry. It costs one column and saves the hunt later.
Bhala is one of our own apps and products. The case study shows the markbook, the report drafting and the class builder.