Skip to main content
I got obsessed with exploring voice agents after making the same frustrating phone call over and over again. I thought making the agent smart would be the hard part. But I kept running into the less glamorous problems underneath it: latency, transcription errors, tool calls, and all the small things that make a conversation feel off. Premove is my effort to work on those problems in the open, one by one. The broader project is still under development. As parts become useful on their own, I’ll release them independently instead of waiting for the whole thing to be finished.

Premove ITN: Context-aware inverse text normalization

The first released piece is Premove ITN, an open-source, context-aware inverse text normalizer for English voice-agent transcripts. One of the first problems I hit was that an ASR transcript could look completely fine to me and still be wrong for the tool behind the agent.
If a normalizer always rewrites “two thirty” as 02:30, it sends the wrong value for the room-number request:
The same spoken words can need different written forms depending on context. That is why I built Premove ITN: to turn spoken values like IDs, phone numbers, dates, times, amounts, and emails into the structured forms downstream tools expect. Explore Premove ITN →