Local model research · in active development

Autocorrect for the mistakes autocorrect can’t read.

TypoPilot uses sentence context to recover heavily mistyped English — locally, privately, and at useful laptop-CPU speed.

typopilot · llama-3.2-1b · q4_k_m Ready
Input

Output

0 words repaired 344 ms avg on CPU 0 bytes sent

exact spelling accuracy
83.23%
relative CER reduction
83.4%
average short-input CPU time
344ms
clean-text preservation
98.02%

650-example spelling subset · Ryzen 9 4900HS CPU · Methodology ↗

How it works

Reads the sentence, not the word.

Conventional checkers often solve one word at a time. TypoPilot reads the damage as a sentence, then makes the smallest correction it can justify.

  1. 01

    Read the whole line

    The full sentence goes in, typos and all. No word is judged alone.

  2. 02

    Infer the intent

    A fine-tuned 1B model uses the surrounding words to decide what you meant.

  3. 03

    Edit minimally

    Only damaged words change. Clean text — and your voice — stay put.

Heavy keyboard damagerepeats · doubled keys

inItt sounnds sounnds dangerous.

outIt sounds dangerous.

Doubled letters and a stuttered word, resolved in one pass.

Merged & split wordssegmentation

inI'll c to hte arrenemenst for tjhe pa rty.

outI'll see to the arrangements for the party.

Phonetic shorthand and a split word, rejoined by context.

Meaning from contextintent

inluck turNed inmytaVor.

outLuck turned in my favor.

Three words fused together, with stray capitals.

Restraint

99/ 101

already-correct examples left untouched in the 900-example suite.

Same model · same eight inputs · same CPU

The fastest variant kept every clean output.

Quantising to Q4_K_M cut sentence latency and model size without losing a correct output in the manual comparison.

#1

444ms

Fastest of the three fine-tuned variants tested — mean across seven sentences.

Model size 770.3 MB 67% smaller than F16
Clean outputs 8 / 8 sentences + paragraph
Peak memory 1.30 GB native working set

The complete 900-example suite

Not a highlight reel. Every output is inspectable.

The final model improved 687 inputs, exactly matched 629 references, and preserved 99 of 101 unchanged examples. The full report includes successes, misses, and overcorrections.

Inspect all 900 outputs

Local by design

Context without the cloud round-trip.

The final model runs through a native llama.cpp harness on an ordinary eight-core laptop CPU. Keeping the model loaded turns correction into a sub-second interaction for typical sentences.

Runtime
Native C++ · AVX2 · 16 threads
Format
GGUF · Q4_K_M
Median load
1.29 seconds

Research, designed to be read

Every model. Every trade-off. Every limitation.

Follow the project from rule-based baselines through ByT5 experiments to the final fine-tuned and quantised Llama model.

Open the research
  1. BaselineRules + SymSpell44% overcorrection exposed the gap.
  2. Byte-levelByT5-smallPromising spelling, inconsistent grammar.
  3. ContextualLlama 3.2 1B + LoRACorrection-only behaviour learned.
  4. Final runtimeQ4_K_MBest measured quality–speed balance.