Work/Voice documentation
Evening paperwork became one spoken sentence
Staff say one sentence after the work, and the note is filed. In daily use at 15 sites.
- 15 sites
- 3,256 notes filed
- Works in 14 languages
- 15 sites in 5½ months
- Industry
- Education
- Size
- 15 sites, 28 staff accounts
- Time to 15 sites
- 5½ months
- Result
- 3,256 notes filed by voice
In one paragraph
This is a voice-first documentation product for education. A teacher says one sentence out loud about a student, and the system writes it down. It works out which of the 36 measures of the official assessment framework that sentence is evidence for, and then it proposes a level within that measure. It also produces a version the family can read in the language they speak at home. The teacher confirms or replaces every suggestion before anything is saved. The product is in daily use at 15 sites and holds 3,256 observations, and 98.7% of what it records is in Spanish.
I started it in April 2026 with a domain expert who had a business but no product. The first commit was on 7 April, and the first site went live in June.
The problem I started from
Teachers have to document each student's progress against an official assessment framework. The paperwork is done at night, by hand and in English, by staff who work mostly in Spanish. There is a free, publicly funded tool, but it covers a different framework, and teachers say it is too hard to use.
So the bottleneck was not a missing feature. It was that the documentation happens after the students go home, in a second language, when the person doing it is tired. Everything about the product follows from moving that work into the moment it describes.
I spent the first weeks with teachers rather than with a spec.
What I decided
This is the part of a project that is mine. AI agents I direct wrote the code, but they did not make the calls below.
The teacher is the authority, always. The model proposes, and a person confirms or replaces every suggestion. Nothing is recorded until they do, so all 3,256 rows in production carry that confirmation. It costs a step, and it is why a teacher will put her name on the output.
No AI on photographs of students. No training on student data. Ever. Both rules are written into every contract, not just the privacy policy.
Nothing may claim more than the evidence file supports. One file holds what teachers actually said and what was actually measured. The marketing copy, the website, the sales script and the pricing all get checked against it. That check has killed several good lines, including a claim about a competitor that turned out to be wrong.
Every irreversible action needs a person. That covers writes to production, deploys, key rotation and deletion. Every data backfill ran as a dry run first and showed its counts and a sample. Each one wrote a rollback file before its first write and went ahead only on an explicit yes.
What exists
| Records | 3,256 observations from 1,510 recordings, 30 June to 18 September |
|---|---|
| In production | 15 sites, 17 classrooms, 28 staff accounts |
| Language | 98.7% Spanish |
| Code | 33,701 lines plus 7,727 lines of tests, 29 tables, 82 routes, 722 commits |
| The framework | 36 measures, 9 domains, 796 level descriptors and 2,491 examples per language, in 4 languages |
| Interface | 14 locales, two of them right-to-left, with 695 keys each |
| Built in | 5½ months from first commit |
Around the product are a marketing site, two self-hosted CRMs behind single sign-on, monitoring that pages a phone, a signing kit, legal policies, and pricing that has survived contact with paying customers.
The outcome I care about most
A teacher compared a parent's screening answers with her own, alongside a student's record, and saw a communication delay. The student was referred to a specialist, whose reaction was that referrals like this one usually arrive a year later, when it is already too late.
That is what continuous documentation is for. It is not a binder that satisfies an inspection, but a record close enough to the student that somebody notices in time.
What broke
One outage, 17 August, 8 hours 42 minutes. The AI vendor retired the model the app called. The two models the account could still reach returned payment errors, so swapping models would not have restored service either. Not one observation was lost, and every draft reopened at the step where it had stopped. Service was restored 3 hours 27 minutes after the outage was reported.
Two things came out of it. First, the name of the model moved out of the code and into configuration, so the next retirement needs a setting change rather than a deploy. Second, the full-journey test, which found the fault when it was run by hand, now runs against production every 15 minutes and pages a phone. The first alert it ever fired was a real one.
The business side
The hardest commercial problem was not the product. A public body warned staff away from uncertified vendors, and on a supervisor's word, three sites stopped using a working product in one week. Nothing in the code fixes that. The answer had two parts. The first was an official vendor license that cost $1,000. It was found by reading the actual price list rather than accepting the $6,000 figure everyone was repeating. The second was a shift from selling software to running sessions that teach staff what the regulator actually requires.