Huginara Huginara
Back to the journal
May 19, 2026

What we chose not to tell you

Three small rules inside SprechGo decide which pronunciation corrections you see and which the app stays quiet about. They are the most opinionated part of the product.

The most opinionated part of SprechGo is not what it tells you. It is what it has decided not to tell you.

Every time you finish a sentence, the recognizer hands the app a list of phonemes with a score attached to each one. A typical English sentence runs to thirty or forty sounds. After a serious attempt at, say, Through the thick fog, three thieves thoroughly threatened the throne, that list might contain a dozen sounds the recognizer is not entirely sure landed.

A naïve product would show you all twelve. Color-code them. Bold the worst ones. Ship.

We do not ship that. Three small rules in the code, written down in a file called PhonemeDiagnosis.vue, throw most of that list away before it reaches your screen.

Rule one: anything scoring above 70 is silently ignored

Each sound comes back with an accuracyScore between 0 and 100. We drop everything at or above 70. A sound that lands at 72 is not perfect — but it is good enough that an adult learner who tries to fix it this round will be paying attention to the wrong thing.

The 70 line is not a brag. It is a quiet admission: in the time it takes you to read one piece of feedback, think about it, and try the sentence again, you can change one sound, maybe two. Telling you about the eleventh-best one does not help you — it just makes you feel further behind than you are.

Rule two: top five, no exceptions

After we filter out the passable ones, there might still be eight phonemes left worth looking at. We sort them, take the worst five, and discard the rest.

const TOP_N = 5;

That line is the entire policy. The number is not derived. It is the largest list we believed an attentive adult could read once, hold in their mouth, and act on in the next attempt. Six was too many. Three felt like withholding. Five was the place where the page looked quiet and the work looked possible.

Rule three: if we don’t have specific advice, we say nothing

For every phoneme we know about, the app carries a small dictionary entry: what the sound is, how to make it, the most common ways non-native speakers miss it, and a piece of advice keyed by your native language. (If you set Mandarin as your native language, you get Mandarin-shaped advice. Otherwise you get English.)

If the recognizer flags a sound that is not in the dictionary, we have no specific, mouth-actionable thing to say about it. The decision in that case is to say nothing. We do not pad it out with you missed this or a generic try again. We silently skip it.

A specific suggestion you can act on is a gift. A generic suggestion you cannot act on is noise that costs the reader trust.

What is left over

After the three rules run, what reaches your screen is at most five phonemes, each one a chip showing the IPA symbol, the sound the app heard instead, and one short sentence in your language telling you what to try. Often it is two phonemes. Sometimes one. Sometimes — when the sentence really landed — the section just is not there.

The blankness is not a bug. It is the loudest compliment the app knows how to give.

Why it took us a while to get here

The first version of this screen showed everything. It was honest in the wrong way — here is all the data we have — and it felt, when you used it, like being graded by an unkind teacher. You finished a sentence proud of yourself, and the app handed you a list of twelve disappointments.

We took it apart and rebuilt it around a different question: if we had only one minute of this person’s attention before they tried again, what is the smallest thing we could say that would move their mouth the most?

That question is what the three rules are really for. They are not heuristics. They are the answer.


This is what we mean, in practice, when we talk about making slow software. Slowness is not the speed at which the page loads. It is a willingness to take things out of the page until what is left is small enough to be useful.

The work in SprechGo is not the data the app shows you. It is the much larger pile of data the app chose to keep to itself.