Attendance software knows three things about you: on time, late, absent. That is the entire vocabulary.
Watch what that does in a real classroom. A student who has been rolling in twenty minutes late all term gets themselves down to five minutes late. Anyone who has ever tried to change a habit knows what that took. And the system says: late. Same word, same colour, same as every other day. It has nothing to say to them.
Meanwhile the student who has never once been late collects a green tick every morning for continuing to be exactly who they already were.
Binary systems only reward arrival. They are completely silent on direction, which is the only part a student actually controls on any given Tuesday.
Rewarding the gradient
When we built Arc, this is the thing I most wanted to fix. If the goal is to build a habit, then improvement has to be the achievement, and the software has to be able to see it and say something about it.
You do have to be careful, though. The moment you reward improvement, you have created an incentive to be terrible first so you have somewhere to improve from. Kids are not stupid, and any teenager will find that hole in about a week.
The way through it is that improvement is worth something, but sustained consistency is worth more over time, and the goals are set by the student and then reviewed by a teacher who knows them well enough to notice a sandbagged target.
Why the goal setting is the graded part
There is a curriculum constraint sitting underneath all of this: a teacher cannot grade punctuality directly. It is not a learning outcome.
But a teacher can absolutely assess whether a student set a sensible goal, tracked it honestly, and reflected on what happened. So that is the graded work. The attendance data stops being a stick and becomes evidence the student uses to argue their own case. That inversion is most of the design.
It had to be fun
Every paper goal sheet ever handed out gets filled in twice and then lost in a binder. If the thing is a chore, no amount of good intention survives week three. That constraint drove more decisions than anything else on the list.
The serious constraints were design features
Everything is anonymous. Nothing links back to a named student. Who can see which goal is enforced down at the database level rather than trusted to application code, because application code changes every week and the rule cannot. It is hosted in Canada, with a self-hosted option for districts that need the data to stay on their own network.
There was never a moment when that data was at risk. We built to that bar anyway. The users are kids, and that is simply where the bar is.
One consequence I will happily live with: there is no analytics in the product at all, so I genuinely cannot tell you how much it gets used. Some trades are worth making.