Now on the App Store

Грамота — Russian proofreading, on your device

Check and correct Russian text right on your phone. Completely offline. Nothing is sent to a server, everything stays on your device.

Works offline Nothing sent to a server iOS, iPadOS, macOS
WHO IT'S FOR

Three ways to lose confidence in written Russian — and one way to get it back

01

If you grew up speaking Russian at home

You speak fluently, but cases and one-word-vs-two-word spelling trip you up, because you never studied the language in school. Gramota surfaces exactly the rules that everyday conversation leaves out.

02

If you write in Russian professionally

Emails, documents, posts: where a typo or a misplaced comma costs you credibility. A fast check without sending your text anywhere.

03

If you're learning Russian

You see not just the fix, but which rule was broken, so you actually remember it, instead of just accepting the answer.

HOW IT WORKS

Simple to type in, clear to read back

Deep check

A separate, more powerful model reads your text sentence by sentence and catches what the regular check misses: badly garbled words, rare punctuation, unusual phrasing. One-time download, then it runs offline like everything else.

Check and correct

Paste or type your text: Gramota finds spelling, punctuation, and grammar mistakes and shows the corrected version right away.

See exactly what changed

Every fix is shown as a “before → after,” not just rewritten text, so you can see what changed and why.

Text score

Every check gets a score from 0 to 100 and a short verdict — “Excellent,” “Good,” “Room to improve” — so you know how ready your text is before you send it.

History and progress

Every check is saved so you can spot recurring mistakes and watch your writing grow more confident over time. History syncs across iPhone, iPad, and Mac via iCloud.

Correct from other apps

With the system “Share → Gramota” shortcut, send text from Notes, Mail, or a messenger straight into a check, no copying, no switching apps.

Offline and private

The model runs directly on your device. Your text never leaves the phone, is never sent to a server, and works without internet — on a plane, on the subway, anywhere.

UNDER THE HOOD

Why on-device Russian proofreading is hard, and how it got built anyway

Gramota was built by one person: Andrey Troegubov, a product manager without a formal engineering background, working with AI coding agents. The idea showed up when Apple Intelligence shipped without Russian in late 2024; the serious build ran through 2026, and the app reached the App Store that summer. This is the engineering part of the story, with the real numbers, including the embarrassing ones.

~130×
faster after the architecture pivot
99.7%
of model operations resident on the Apple Neural Engine
17 ms
to proofread a sentence
2.1M
synthetic training pairs manufactured on one Mac

What makes it hard

The language fights the ear

Russian spelling deliberately ignores pronunciation. Unstressed «о» sounds like «а» («молоко» is heard as «малако»), voiced consonants go quiet at the ends of words, and «-тся»/«-ться» are exact homophones told apart only by grammar. A proofreader has to recover the written form from what the writer heard, which is precisely the direction the ear can't check.

One letter breaks the model's eyes

Neural models read text as subword chunks, not words. Change a single letter by ear and the whole word re-splits into different chunks: the model doesn't see the same word with one mistake, it sees an unfamiliar word. Russian makes it worse, because meaning sits in the endings, exactly where compression and small models lose precision first.

"Correct" is genuinely ambiguous

On real-world text, professional annotators don't agree with each other at anywhere near 99%: many sentences have several defensible corrections. A quality target above that noise floor isn't ambitious, it's undefined. The number that can and must approach 99% is a different one: never damaging text that was already correct.

And it must fit in a phone

No servers means the model lives inside a phone's memory and thermal envelope. The first attempt, an 8-billion-parameter model, ran but never left RAM: iPadOS simply wouldn't release it. Every architecture decision since was made against that wall.

It took four models

The 8-billion-parameter model died on memory. A Russian-adapted 3B model died on quality. An 82-million-parameter model designed from scratch died on capacity: it worked up to a ceiling, then hallucinated on rare word forms. The hard call was to gamble on a pretrained 820M Russian model that scored 0% out of the box. That sounds disqualifying until you understand why: it had been trained to reconstruct masked text, and nobody had ever asked it to fix a sentence. Under the noise, it clearly knew correct Russian. Fine-tuned, it became the first working engine, at 85% on the product benchmark. With one catch.

From 2,160 milliseconds to 17

The catch: the generative engine took about 2,160 ms per sentence, because generating text means one full decoder pass per output token. The fix was architectural. Instead of rewriting the sentence, the model classifies every word into an edit (keep it, delete it, change its case, fix a specific letter) and deterministic code applies the edits. That shape of network is exactly what Apple's Neural Engine runs natively: 246 million parameters, 99.7% of operations on the ANE, about 17 ms per sentence, roughly 130× faster.

It also structurally can't paraphrase you: edits come from a fixed menu, and rewriting isn't on it. The new engine had already pulled ahead on the benchmarks; the final check was a head-to-head on a fresh 212-word text neither engine had seen. It made 13 corrections, all 13 good. The generative one made 21, three of them bad, including one that changed a sentence's meaning. That confirmed the pick, and the old engine's 800 MB left the app.

The eval was lying, and everything followed from fixing it

The most valuable fix in the project wasn't a model change. The evaluation set steering the training loop was periodically rebuilt from the same data the model trained on, so its scores measured memorization, not skill: one category read 22.6% when the honest number was 4.4%. The cure was boring: a frozen benchmark that is never trained on, plus a quarantined slice of every round's fresh data.

The same discipline kept paying. Computing the theoretical ceiling (46.2% for that architecture) exposed a bug nobody suspected: 38.9% of correct answers couldn't be reproduced by the code that reassembles text from edits. And multiplying probabilities along the "self-improving" loop showed the model was seeing about 16 of the 1,400 targeted examples generated each round. The loop was decorative, and nobody had done the multiplication. All of it is now automated checks that run after every training round, because two regressions once rode along for 49 rounds while I watched a dashboard.

Never damage correct text

Honest measurement delivered its first insult quickly: the model was editing 41% of sentences that had no errors at all, because every training sentence contained mistakes and the model had learned that text is always broken. About a third of training became clean-to-clean pairs: if a model must sometimes do nothing, doing nothing has to be a trained skill.

Everything downstream is built around precision, because a wrong correction damages your text while a missed one just leaves it as you wrote it. The spelling layer acts only when three conditions line up at once: the word is unknown to a 422,000-form dictionary, the repair matches a mechanism real typos actually have (a by-ear substitution or an adjacent-key slip), and the fix is at least 10× more frequent than the runner-up. False fires on live informal text went from 16.7% to 0.5%.

I'm a product manager. AI wrote the code.

I don't have an engineering degree, and I've never held an engineering title. The code was written with AI coding agents, and I'd rather say that plainly than let this page imply otherwise. The interesting question is what's left for the human once the typing is free.

Agents produce real fixes and convincing nonsense at the same speed and with the same confidence. One AI-generated test report arrived with tables, counts, and specific "missed corrections": replayed against the actual pipeline, some of its corrections appear in no version of the test text at all. So the human job was to pick the quality bar, design evaluations that can't be cheated, gate the entire Swift rewrite behind byte-exact reference checks (tokenizer 199/199, full pipeline 149/150), and make the calls: pivot the architecture, kill three models, delete the fallback, say no to 99%. That's a product manager's job, executed at engineering depth.

Where this goes next

The roadmap is platform-honest: each platform gets what its hardware and habits actually support, not a copy of the other one's app.

The tagging engine stays: on a phone, 17 ms and near-zero false fires beat any amount of extra capability. What's coming on top of it is the Tutor. The app already knows which rules you personally break, so it can turn your own corrected sentences into exercises and space the repetition until the rule sticks. The engine is built and verified (1,120 of 1,120 generated exercises agree with the corrector); what remains is product polish, and it ships on its own timeline.

The privacy rule doesn't move: the Tutor learns from when you accept or undo corrections, never by sending your text anywhere.

Tutorcoming
Find the mistake:
Он хочет научится плавать.
научится научиться ✓

Mac apps that grow out of iOS are usually afterthoughts: the same screens on a bigger monitor. That wastes the one thing the Mac actually offers, which is headroom. It has several times a phone's memory and no battery anxiety at a desk, so it can hold a class of model the phone never will.

That's the current research track: a much larger model for the Mac, still running entirely on-device, that goes beyond a fixed menu of edits, toward explaining corrections and rewriting for tone. The tagger keeps the precision work it's structurally best at. The rule stays the same as day one: everything runs on the machine, and nothing leaves it.

Gramota for Macresearch
Он хочет научится плавать.
Он хочет научиться плавать.
Tone: Neutral Friendly Formal
Why

«Научиться» answers the question «что сделать?», so it takes the soft sign.

If this section reads like a portfolio piece, that's because it is one. More about me, other work, and how to reach me: troegubov.co.

Now on the App Store

Gramota is available for iPhone, iPad, and Mac. Download the app and start checking Russian text right on your device — free and offline.