# We audited 134,522 posts to see why AI writing still sounds fake (and open-sourced a deterministic syntactic gate)

> Source: <https://dev.to/adrian_m_peticila/we-audited-134522-posts-to-see-why-ai-writing-still-sounds-fake-and-open-sourced-a-deterministic-3k8h>
> Published: 2026-10-23 09:30:30+00:00

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)
