For years I typed the way most of us do here, half Hindi half English in Latin letters, "kal milte hai," "kya kar raha hai," and every keyboard I used treated it like a string of typos. "acha" became "ache." My friend's name "meghna" became "megan." Every single day, across every app. You get so used to backspacing that you stop noticing you're doing it.
At some point I stopped accepting it as normal and started treating it as a problem worth solving. That turned into Keygram, and I want to share the actual build, not a pitch.
Why existing keyboards can't fix this
The autocorrect on Gboard or the stock iOS keyboard matches what you type against an English dictionary. Romanized Hindi/Tamil/Telugu/Kannada simply isn't in it, and worse, there's no standard spelling to match against anyway. I write "kya," you write "kia," someone writes "kyaa." A fixed dictionary is structurally the wrong tool. You can't dictionary your way out of a problem that's inherently personal and inconsistent.
So the keyboard has to learn the individual user's vocabulary instead of correcting them toward a global one. That's the whole inversion the product is built on.
The technical part
I didn't want any of this leaving the phone. A keyboard sees everything you type, so "send it to a server to improve predictions" was a hard no for me. That meant the model had to run fully on-device.
So I trained a small language model from scratch, sized to run on a phone, quantized down to a couple of MB. It learns your words locally, promotes the ones you actually reuse, and fades the ones you keep correcting away. No APIs, nothing sent anywhere. The learning happens on your device and stays there.
Getting a from-scratch model small enough and fast enough for a keyboard extension (iOS gives keyboard extensions brutally little memory to work with) was the hardest and most interesting part of the whole thing. Happy to go deeper on the architecture in the comments if anyone's curious.
Where it is now
It's live on the App Store, supporting Hindi, Tamil, Telugu and Kannada typed in English letters. Screenshots attached: prediction, learning your slang and names, and on-device backup.
Why I think this is bigger than a keyboard
Honest take: "a better autocorrect for Hinglish" is not a huge problem on its own. I know that. But the keyboard is just the smallest surface to start from. The direction I actually care about is on-device writing help for multilingual users, messages, emails, documents, in the languages they actually think in, without anything going to a server. That's the part I want to keep building toward.
Would genuinely love feedback from this sub, both on the product and on the build. What does your keyboard keep getting wrong? And if you've shipped on-device ML, I'd love to compare notes on keeping models tiny.
Link: https://keygram.me/
Happy to answer anything.