Playbooks · 5 min read
When Misspelling Is Normal: Triggers for Learner Inboxes
Most advice about keyword triggers quietly assumes the person typing knows how to spell the word you are watching for. For a language-learning audience that assumption is not slightly wrong, it is backwards. Errors are not the exception in your comments. They are the middle of the distribution.
That is not a problem with your students. It is a property of your inbox, and it has a specific effect on a specific mechanism, which is what this post is about. If you want the business version — pricing, placement, what to capture — that is the coaching post. This one is the machinery.
The structural fact everything follows from
Matching happens before generation. Always, and with no exceptions.
A comment arrives, the matcher compares it against your keyword list, and only if something matches does anything else happen — the checks, the reply, the model. The model is good at reading messy text. It never sees the message unless a literal string matched first.
An AI that could easily have understood "wat is the fees for begginer" is not consulted, because a string comparison already said no.
So the intelligence in this system is in your keyword list, not downstream of it. Time spent there is the highest-leverage hour in the whole setup.
What the matcher forgives
Three classes of error cost you nothing, and it is worth knowing them so you stop planning around them.
Capitalisation. FEES, Fees and fees are one string.
Punctuation around a word. fees?, fees!!! and fees all match a keyword of fees. Trailing emoji and stray invisible characters are stripped too.
Missing accents. This is the big one for European languages, because dropping accents is the single most common thing a learner does on a phone keyboard. Accents are folded away before comparison, so a keyword of debutant matches débutant, espanol matches español, and fur matches für. You do not need both spellings. You need one.
The exception worth knowing: characters that are not an accented form of another letter do not fold. straße and strasse are two different strings, so if you teach German, both go in the list.
What it does not forgive
Whole words only. A keyword of fee does not match fees. It is not a prefix search. Every ending you receive is its own entry.
Internal misspellings. beginner does not match begginer, beginer, or bigginer.
Apostrophes inside a word. An apostrophe is a boundary, so dont and don't are different strings. For learner audiences that drop apostrophes constantly, both go in.
None of this is fixable by being cleverer about one keyword. It is fixed by having more of them.

Harvest the misspellings, do not imagine them
The instinct is to sit down and brainstorm every way a word could be misspelled. This produces a long list of errors nobody makes and misses the two everybody does.
Read your own comments instead. Fifty is enough. Write down every variant that actually appeared. What you will find is that misspellings are not random — a given learner population makes the same handful of errors, shaped by their first language, and those handful are what you list.
Then paste the list into the builder and watch the preview replay your real comments against it. A variant you invented and never receive costs nothing. A variant you receive and did not list costs you the enquiry.
Choose trigger words learners get right
This is the technique that beats all the others, and it is one decision rather than an ongoing chore.
Some words are reliably typed correctly by beginners: short, high-frequency, phonetically plain. class, fee, time, book, join, price, level, start. Other words are the exact words learners cannot yet spell: pronunciation, vocabulary, conjugation, grammar, certificate, intermediate.
Both sets appear in enquiries. Only the first set belongs in a trigger.
Numbers and level codes are even better, because students copy them rather than spell them. a1, b2, n5, n4, ielts, 7.5 are typed correctly almost every time, and they carry more information than any adjective. Somebody who types n5 has told you their level without being asked.
The negatives fail the same way
Negative keywords are literal strings too, and they are checked with the same rules. A negative of not interested will not stop a reply to not intrested.
That is fine for tidiness and not fine for anything that matters. Do not lean on a negative keyword as your safety mechanism for something you must never reply to. Scope the automation to specific posts instead, so the thing you must not answer never reaches it in the first place.
When a reply does get written
Once something matches, the message the model sees is the raw one, errors and all. Two things follow.

First, ambiguity goes up. A short, misspelled message carries very little context, and a confident reply to a half-understood question is worse than no reply. Low-confidence replies going to a review queue rather than straight out is the setting that matters most for this audience.
Second: do not have your automation correct anybody's spelling. It reads as a teacher grading a stranger who was trying to buy something. Answer the question in plain, short sentences and leave the correction for the class they are paying for.
If your audience writes in more than one script rather than just imperfect spelling, the localization post is the one that covers that properly.


