# AI-Writing Tell Catalog Detection patterns for the F*ck Slop scan. Patterns are written for `grep -Ein` (extended regex, case-insensitive, line numbers) so they can be run literally against a file: ```bash grep -Ein -f /dev/stdin draft.txt <<'PATTERNS' PATTERNS ``` When the text only exists in conversation, apply each pattern by hand. A match is a *finding*, not an automatic deletion — every finding goes through the Phase 2 triage in SKILL.md. Density matters: one em dash is nothing; one em dash plus a negative parallelism plus "delve" in the same paragraph is a verdict. ## 1. Negative parallelism — the "not X but Y" family The highest-priority category. LLMs reach for the negation-then-assertion move roughly once a paragraph; humans use it occasionally and deliberately. It is an emergent generative habit, so expect it to reappear in paraphrased form after every rewrite pass — that is why the scan loops. ``` not (just|only|merely|simply|solely) [^.;]{2,80}(but|it'?s| — ) isn'?t (just|only|merely|simply|about) it'?s not (a|an|the|that|about|just) [^.;]{2,80}(it'?s|but) (is|was|are|were)n'?t about [^.;]{2,60}\. (it|this|that)'?s about less about [^.;]{2,60}(than|and more about) more than (just|a mere|simply) not because [^.;]{2,80}but because the (question|point|issue|problem|goal|real [a-z]+) is(n'?t| not) (whether|about|just|if) (doesn'?t|don'?t|didn'?t|won'?t) (just|merely|simply) [^.;]{2,80}(it|they|he|she|we) no [a-z]+, no [a-z]+(, no [a-z]+)?[,.]? just — not [^—.;]{2,60}, but not only [^.;]{2,80}but (also )? we'?re not (just )?(talking about|looking at|dealing with) gone are the days (here|this)'?s the (thing|kicker|catch|twist) ``` Rhetorical-question variant (regex-resistant; check by hand): a one-line question immediately answered by a one-word or one-clause sentence. *"The result? Chaos."* / *"Sound familiar?"* ## 2. Puffery and inflated vocabulary Single words that spike in LLM output. Each is fine in isolation; two or more per page is a finding. The fix is the plain word or the concrete fact the word was hiding. ``` \b(delve|delving)\b \btapestry\b \b(testament|stands as)\b \bseamless(ly)?\b \b(pivotal|paramount|crucial)\b \bunderscore(s|d)?\b \b(landscape|realm|sphere) of\b \bnavigat(e|ing) the\b \bfoster(s|ing)?\b \bleverage(s|d)?\b \bmeticulous(ly)?\b \bintricate\b \bboasts\b \bgame.?chang(er|ing)\b \b(seismic|monumental|transformative) (shift|change)\b \bunwavering\b \bcommendable\b \belevate(s|d)? (the|your)\b \bshowcas(e|es|ing)\b \bresonate(s|d)?\b \bcompelling\b \brich (cultural )?(heritage|history|tradition)\b \bvibrant\b \bplays? a (vital|key|crucial|pivotal) role\b \bdeep(er)? dive\b \bunlock(s|ing)? (the|your)\b \bharness(es|ing)? the\b \bembark(s|ed|ing)? on\b \bever.?(evolving|changing)\b \bfast.?paced (world|environment)\b \bin today'?s\b \bat the end of the day\b \bwhen it comes to\b \bcutting.?edge\b \brobust\b \bholistic\b \bsynergy\b \bempower(s|ing|ment)?\b ``` ## 3. Hedging, both-sidesing, throat-clearing The tell is reflexive balance: every claim gets a softener, every opinion gets a counterpoint. Commit or cut. ``` it'?s (worth|important) (to note|noting|to remember|to consider) (that|it) (being )?said, while (it'?s|this is) (true|important) arguably in many ways to some (extent|degree) on the other hand at its core in essence essentially, ultimately, in conclusion in summary to sum(marize| up) overall, in the end, needless to say as (we|you) (can see|know|all know) let'?s (dive|unpack|explore|take a (look|closer look)) whether you('re| are) [^.;]{2,60} or ``` ## 4. False ranges and rule-of-three **False range** — a "from X to Y" with no actual spectrum between X and Y: ``` from [^.;]{3,50} to [^.;]{3,50} ``` Triage by hand: if you can name a meaningful midpoint, it's a real range and stays. If X and Y are just two loosely related examples, name them plainly or cut one. **Rule of three** — LLMs default to triplets to make thin analysis look thorough. Regex only catches the simplest shape; check lists by hand too. ``` \b\w+, \w+, and \w+[.!?] \b(\w+ \w+), (\w+ \w+), and (\w+ \w+) ``` Triage: keep the strongest item, cut the rest — or keep all three only if each carries distinct information, and then break the rhythm. ## 5. Punctuation and formatting Em dash: not banned — humans use it. Findings are about **density** and the contrast move: - More than ~1 em dash per 150 words. - Two em dashes in one sentence. - `— not X, but Y` (already in section 1). - Em dash used for punchy emphasis where a comma works: `[a-z] — [a-z][^—]{1,25}\.$` Other formatting tells (check by hand; most regexes here are layout-dependent): - **Bold scattered through prose** like a textbook highlighting itself: `\*\*[^*]{2,40}\*\*` appearing more than ~once per 3 paragraphs of body prose. - **"Term: definition" bullets**: `^[-*] +\*\*[^*]+:?\*\*:? ` — the signature LLM list shape. - **Emoji headers/bullets** (🚀, ✅, 💡): needs PCRE, not `-E` — `LC_ALL=C.UTF-8 grep -Pn '^\s*[-*#]+\s.*[\x{1F300}-\x{1FAFF}\x{2600}-\x{27BF}]' draft.txt`. - **Headers on short texts** — section headers on anything under ~400 words. - **The tidy skeleton** — intro that previews three points, three matched sections, conclusion that restates them. Resolves too neatly; real writing has loose ends. - **Numbered lists where a paragraph would do.** - Curly quotes/apostrophes in a context where the author types straight ones (mixed within one text is the stronger tell). ## 6. Cadence and statistical shape No regex; measure or eyeball. - **Uniform sentence length** (the single strongest current tell): a run of 3+ consecutive sentences within ±4 words of each other, paragraph after paragraph of 18–24-word sentences. Quick measurement on a file: ```bash tr '\n' ' ' < draft.txt | sed 's/[.!?] /\n/g' | awk '{print NF}' ``` Human prose mixes 4-word sentences with 30-word sentences. Variance should be obvious at a glance. - **Uniform sentence shape**: every sentence opens subject-first; no fragments, no questions, no inversions. - **Uniform paragraph length**: every paragraph 3–4 sentences. - **Low specificity**: "many companies", "studies show", "experts agree", "recent research", "various factors" — generic where a human who knew the material would name names, numbers, dates. (Fix only with real specifics; never invented ones.) - **No friction**: nothing colloquial, no aside, no opinion held without a softener, nothing that risks being disagreed with. ## 7. Genre-specific instant tells Covered in detail in [voices.md](voices.md); the headline items: - **Reddit/forums**: bold mid-comment, bullet-pointed comments, "Hope this helps!", perfectly balanced takes. - **Tweets/X**: "🧵", "Let that sink in", line-broken one-clause-per-line cadence, ending on a question to drive engagement. - **LinkedIn**: one-sentence paragraphs stacked vertically, "Agree?", the not-X-but-Y move (its natural habitat). - **Academic**: "delve", "novel insights", puffed significance claims ("crucial implications for the field"), citation-free superlatives. - **Email**: "I hope this email finds you well", restating the recipient's question back at them, three-paragraph symmetry for a one-line answer.