"When the model is cold and the network is gone, something still has to clean up your words. That something is code, not a prayer."
A Provider With No Brain
Beneath both Pippa-full and the local Mini Pippa model sits a third cleanup provider that uses no model at all: the deterministic provider. It's pure code, so it has zero cold-start and never times out. It can't rewrite tone or infer structure, but it can do the mechanical work that makes raw transcription usable: trim whitespace, apply dictionary replacements, expand snippets, strip filler tokens, normalize spacing and quotes, map spoken punctuation commands, and detect a trailing "press enter." When the LLM is unavailable, this is what keeps dictation working.
What Deterministic Cleanup Actually Does
"um send the report comma then call the bank period"
| strip filler ("um")
| map spoken punctuation ("comma" -> ",", "period" -> ".")
v
"Send the report, then call the bank."
# No model. Just rules: fillers, punctuation words, dictionary,
# snippets, whitespace, and the "press enter" trailing command.
The spoken-punctuation and press-enter handling work in both languages — Firekeeper maps English and Korean equally ("comma" and "쉼표", "period" and "마침표", "press enter" and "엔터 쳐"). This is the honest offline story: not a shrunken LLM pretending, but a real, fast, rules-based transform that does the 80% of cleanup that is mechanical.
The Korean Filler Trap
One subtlety worth its own warning: filler stripping must be conservative in Korean. English fillers like "um" and "uh" are safe to remove because they're rarely real words. But Korean fillers overlap with real vocabulary — 어 is a filler but also a real word, 그 is a hesitation but also "that." A naive strip-every-filler rule would delete meaning. So the deterministic Korean filler list is short and careful, erring toward keeping a word rather than eating a real one. Aggressive cleanup that corrupts meaning is worse than no cleanup.