The problem
Web forms assume two things about you: that you can type quickly, and that you can parse a dense label at a glance. Plenty of people can do neither, and the form is the last thing standing between them and whatever they came to do.
Dyslexia is the clearest case. The barrier there is usually not the typing, it is the wording. Labels written for the person who built the form rather than the person filling it in, unexplained jargon, and instructions that take three readings.
The constraint
On-device AI you cannot rely on being there
Chrome's built-in Gemini Nano is the right model for this job. It runs locally, so nothing typed into a form ever leaves the machine, and there is no per-request cost to worry about as usage grows.
It is also not guaranteed to be present. Availability depends on the user's Chrome build, their platform and their free disk space, and even where it is supported the model may still be downloading the first time the extension runs.
So the extension could not be written as though the model were always there. Every AI-backed feature needed a second path that works without it, and the interface had to look identical either way, because a feature that silently disappears is worse than one that was never offered.
What I built
- 01
On-device first, hosted fallback second
Every model call goes through one interface. It tries Gemini Nano, and falls through to a Firebase-hosted model when the local one is unavailable or still downloading.
Keeping the branch behind a single boundary meant the UI never had to know which path served a request, and the privacy story stays honest: on-device whenever the platform allows it.
- 02
Voice as an input method, not a mode
Speech writes into whichever field has focus, rather than launching a separate voice flow that owns the whole form. You can dictate one awkward field and type the rest, which is how people actually fill forms.
- 03
Rewriting happens at the field
Rewrite controls are injected inline next to each input instead of living in a popup. The text you are changing stays on screen while you change it, and there is no context to rebuild after each edit.
- 04
Simplify Mode
A page-level toggle that rewrites labels and instructions into plainer language, built with dyslexia in mind. It changes the form's copy, not its structure, the fields, order and validation stay exactly where the site put them.