We audited 134,522 posts to see why AI writing still sounds fake (and open-sourced a deterministic syntactic gate) Adrian Peticila audited 134,522 organic LinkedIn posts from 1,499 founder profiles spanning January 2023 to September 2026 and found that while mocked AI verbs fell 88.1%, syntactic tells surged: "here's why" openers rose 7.4x, "it's not X, it's Y" constructions 4.9x, and arrow/emoji bullet lists 20.5x. Average sentence burstiness (coefficient of variation) dropped 52.1%, from 0.48 in human text to 0.23, which Peticila attributes to RLHF models converging on a 14-18 word sentence mean. He open-sourced grai, a deterministic vanilla-JS preflight gate that rejects drafts with CV below 0.32, including a pure-JS FIPS 180-4 SHA-256 implementation to work around WebKit/Chromium blocking crypto.subtle.digest on file:// origins. in 2025/2026, everyone removed the obviously AI keywords from their prompts. but even non-dev/tech-minded readers can detect an LLM post in the first 3 sentences. why? because they removed the words that people made fun of, but not the syntactic patterns that betray RLHF models. to quantify the change, we audited 134,522 random organic linkedin posts on 1,499 founder profiles, over jan'23 to sep'26 timeframe LigoSocial dataset . | SYNTACTIC PATTERN | JAN'23 | SEP'26 | RELATIVE CHANGE | |---|---|---|---| | mocked ai verbs | 4.2% | 0.5% | -88.1% | | "here's why" epiphany onset | 1.3% | 9.6% | +7.4x | | "it's not X, it's Y" negate | 1.2% | 5.9% | +4.9x | | arrow & emoji bullets waterfall | 0.6% | 12.3% | +20.5x | | avg. sent burstiness CV=$\sigma$/$\mu$ | 0.48 | 0.23 | -52.1% | most indicative is burstiness CV=$\sigma$/$\mu$ - std.dev. of sentence word count over avg. sentence word count normal human, non-assisted text: CV=0.48. you may see sharp jumps of 4-word observation. and then next to it, 32-word breakdown of architecture. default GPT4o/claude 3.5 sonnet. tightly cluster around 14-18 words/sentence. CV=0.21-0.23 . if you ask llm "vary sentence length. don't use contrastive negatives" . the model takes it as a soft weighting in attention. but then, in 3rd paragraph it tries to converge back to a safe, well-mannered 15-word mean rlhf . you can't use a prob. generator as deterministic linter. we designed grai to be two layers: The model will not self-censor: deterministic external non-LLM vanilla JS preflight engine is applied to each draft: HARD BURSTINESS FLOOR $CV 0.32 . Computes sentence wordcount variance. Preserves decimal "3.14", abbreviations "U.S.", "Dr." etc. Any draft that does not have $CV 0.32, is rejected. Engineering quirk. FIPS 180-4 SHA256 on "file://" We made the workbench grai.html to be 100% offline from disk. Use the file:// protocol and strict Content-Security-Policy connect-src 'none' by default . Here's where we ran into some problems testing on WebKit/Chromium. They block window.crypto.subtle.digest "SHA-256" on file:// local files are not Secure Context . We need SHA256 fingerprint of author's voice profile to be deterministic for our printable A4 Voice DNA Dossier. So we created a pure JS FIPS 180-4 SHA256 workaround. To have the same hash whether we load it from disk or over HTTPS. Try the Scorer, or the MIT Harness • Live Cadence Gate Scorer free - no signup required https://grai.page/ test https://grai.page/ test • Full 134522-post Methodology Report https://grai.page/methodology https://grai.page/methodology • Github repo MIT skill & instructions https://github.com/adrianpeticila/grai https://github.com/adrianpeticila/grai