plainspoken
Fails the build when writing reads as machine-written. Catches AI phrases, vague tails and paired adjectives, and stays quiet on plain facts.
npm i -D @alokraj68/plainspoken Reads Markdown and plain text rather than a schema, so it works on docs, READMEs, release notes, landing copy and CVs alike.
Fails the build when writing reads as machine-written. Catches AI phrases, vague tails and paired adjectives, and stays quiet on plain facts.
npm i -D @alokraj68/plainspoken Most tools in this space fall into two camps. Word-list checkers flag leverage and stop there, which teaches you to write "utilise" instead. Catalogues tuned for essays flag everything, including facts.
That second failure is the interesting one. A published de-slop rule set of about 980 lines, run against a real corpus of technical writing, produced nine hits and eight were false positives. It read "ported from Java to C#" as a false range and "Australia, Europe and the US" as tricolon abuse. Both are just true things.
A checker that fires on facts trains you to ignore it, which is worse than no checker. So the rules were filtered the other way round: a pattern only ships if it fires on writing built to trip it and stays silent on writing that is merely factual. Both halves are asserted in the tests. Three of the rules come from sentences a real AI detector flagged, and became checks rather than notes.
The thing underneath is that detectors flag abstraction, not vocabulary. Managed 80+ Azure servers and the team of interns who kept them patched beats managed extensive cloud infrastructure - not because the words are plainer, but because only somebody who was there could have written it. When a sentence trips a rule, the fix is almost never a synonym.
Error. Fixed phrases with no defensible use: proven track record, well-versed in, at the forefront of.
Error. Two generic adjectives in a row, as in scalable, secure platforms - name the system instead.
Error. A sentence trailing off into a participial clause rather than landing on a result. A tail carrying a number is a fact, and passes.
Warning. Vocabulary that is often a tell but sometimes correct, with a plainer suggestion attached. Heuristics make bad gates, so these warn.
Run it on a directory
npx @alokraj68/plainspoken docs/ What a finding looks like
docs/architecture.md
error 14 ai-phrase "proven track record" has no defensible use
We have a proven track record and are well-versed in scalable systems.
error 14 adjective-pair "scalable, secure" - two generic adjectives in a row
error 31 vague-tail trails off into a vague clause instead of landing on a result
Built the reporting layer, enabling improved efficiency
warn 22 ai-word "leverage" - try: use, apply, draw on
1 file(s): 3 error(s), 1 warning(s) That is the failure it was built to avoid. Every rule has to pass two tests before it ships: it fires on writing built to trip it, and it stays silent on writing that is merely factual. Both are asserted in the test suite.
Yes. A config file takes an allow list, which is how a project keeps a word that is a product name rather than a tell - Realm is a mobile database, not a metaphor.
No. It looks for the specific patterns detectors react to, which are patterns of abstraction rather than of vocabulary. It tells you which sentence will read as machine-written and why, so you can name a system, a client or a number instead.