On building a keyboard for how India actually types.

I want to start with a sentence you have probably typed, or received, a hundred times this week:
"kal office mein meeting hai."
Half Hindi, half English, all in the Latin alphabet. Nobody taught anyone to write this way. It just happened, quietly, across an entire subcontinent. And if you tried to type it on the keyboard shipped with your phone, there is a good chance it fought you the whole way.
That fight is the reason I have spent the last several months building a keyboard.
Here is a number that stopped me cold when I first went looking. In one analysis of Hindi-English social media content, 93% of native Hindi speakers' posts were written in Roman script. Only about 3% used Devanagari, the script Hindi is "supposed" to be written in. A separate study of Indian users found the share preferring romanized Hindi climbing from roughly 45% in 2014 to 56% after 2020, and still rising.
Read those again. The dominant way hundreds of millions of people write their own mother tongue is not in their language's own script. It is in ours, borrowed, reshaped, phonetic, inconsistent, and completely functional.
To be fair, the picture is not one-directional. The same body of research finds native-script usage climbing in some contexts too, as better Indic-script tools ship and some communities push back toward Devanagari. This is not a story of one script dying. It is a story of a massive, durable, romanized-typing population that has existed for years and is not going anywhere, and that almost no keyboard is actually built for.
This is not a Hindi story either. The same pattern holds for Tamil, Telugu, Kannada, Bangla, Marathi, and more. Thanglish, Tenglish, Banglish. Different languages, same move: type it in English letters, keep going, do not switch scripts, do not slow down.
For a product person, this should set off every alarm you have. When this many people converge on the same workaround without anyone designing it, they are not being lazy. They are routing around a tool that was built for someone else.
The autocorrect and prediction engine on a default keyboard is doing exactly what it was built to do: match what you type against a dictionary of "real" words and nudge you toward them.
The problem is that its dictionary is English. So when you type a word like "yenu," the keyboard does not see a word. It sees a near-miss for "menu" and helpfully corrects it. "Tussi" becomes "tissue." "Enna" becomes "Anna." "Korcho" becomes "church." Every one of these is the keyboard being confident and wrong about a word you spelled exactly right.
And you cannot fully fix this by bolting on a Hindi or Tamil dictionary, because romanized typing has no standard spelling. I might write "kya," you might write "kia," someone else "kyaa." There is no single correct form to match against. The whole category is inherently personal and inconsistent, which is precisely what a fixed dictionary is worst at.
The deeper issue is philosophical, not technical. A stock keyboard's model of you is a generic one. It assumes there is a right way to spell, and your job is to converge on it. But for this kind of writing, you are the authority on your own words. The tool's job should be to learn you, not to overrule you.
That inversion, from "correct the user toward the dictionary" to "learn the user's own vocabulary," is the entire product.
The premise of Keygram is almost stubbornly simple: learn the words you actually use, rank them first, and do it entirely on your phone.
A few decisions fell out of that premise, and they turned out to matter more than I expected.
It learns on-device, and only your device. A keyboard sees everything you type: your messages, your passwords, your half-written thoughts you decided not to send. The idea of that stream leaving the phone to "improve the model on a server somewhere" was a non-starter for me. So the learning, the prediction, the correction all run locally. Nothing you type is sent anywhere to make the keyboard smarter. This started as a privacy principle and quietly became the product's spine.
Your words earn their place, then keep it. New words start provisional. The ones you actually reuse get promoted and start surfacing first. The ones you keep correcting away fade out. Over a few days it stops feeling like a keyboard learning you and starts feeling like it already knew.
It does not make you pick a language. Real sentences mix. "kal office mein meeting hai" is not a Hindi sentence or an English sentence, it is one thought. So there is no globe button to hunt for, no mode to set before you start. The prediction runs across your languages at once, because that is how you think.
Building the on-device model was, technically, the hard and interesting part, and a story for another post. But none of the architecture is the point. The point is the inversion. Every choice traces back to a single idea: the person typing is not the problem to be corrected. They are the source of truth.
I think there is a whole category of problems that look like this. A huge number of people quietly adapt to a tool that was not built for them, the workaround becomes so normal it turns invisible, and everyone stops noticing there was ever a problem to solve.
Romanized typing is one of the largest examples I know of. Hundreds of millions of people, typing every day, in a form their own tools treat as a string of typos. It was hiding in plain sight because it works, sort of, if you are willing to backspace a lot.
The most interesting products are often not in the things people complain about loudly. They are in the workarounds people have stopped complaining about entirely.
That is the one I went after. If you have ever watched your keyboard "fix" a word that was never broken, Keygram is for you.
And if this problem is as familiar to you as it is to me, I would like to hear how you type, and what your keyboard keeps getting wrong.
0
1
0