

AI slop comes from the input, and I tested it. I gave one model two prompts for the same LinkedIn post. The bare prompt, "Write me a LinkedIn post about leadership," came back with an invented mentor and one blocking finding from a slop-scoring script. A six-field brief came back as my own standup routine, with no blocking findings.
Slop is output where no human added an idea, no one supplied context and nobody reviewed it. The bare post fits that definition because the prompt carried none of the three.
TLDR
Slop is a property of the input and the review. No tool appears in the definition.
A bare prompt scored 16 with 1 blocking finding. A six-field brief scored 6 with none.
Fixing the blocking line took the bare post to 3, and the post still said nothing.
Across five more cases, the brief changed what a reader can check. Placeholders fell from 24 to 1, and a code check went from 18 of 20 to 20 of 20.
A score is a floor. The brief carries the idea.
The Same Model Writes Slop From an Empty Prompt and a Real Post From a Brief
Take a request you have typed before and run it twice on one model. I ran this one on Claude Sonnet, one call per arm, and kept the first output of each. The bare arm was not a raw API call: both arms carried one extra line telling the model to ignore any standing style rules. The bare arm lacked a story, a voice and facts, and it still held that one instruction.

The bare run returned a post with a mentor, a bottleneck year and five lessons. None of those facts came from me, so the model made them up. The brief run returned the five-part standup routine from my own published post, with no added fact.
Example. The bare post opens "Most people think leadership is about having the answers." The brief post opens "Our daily marketing standup runs 60 minutes, every day." Only one of them could come from someone who ran a standup.
Both posts are model-run examples. The script scored the bare post 16 and the brief post 6. Step 2 shows why a lower score does not prove quality.
Slop Is Output Where Nobody Added an Idea, Context or Review
Simon Willison's post dated 8 May 2024 is where the word spread. He applied it to AI content that is generated, unreviewed and sent to someone who did not ask for it.
Willison announced the post on X.
Four questions turn that definition into a test you can run on your own draft.

Question 2 needs only the prompt. If the whole prompt fits on one line, the answer is yes.
This post owns the argument. The remedy side, a gate that refuses a draft with a banned pattern, sits in The Ultimate AI Slop Word Blacklist. The build side, where vibes give way to tests, sits in Skills 2.0.
Step 1. Give the Model a Brief With Six Fields
A brief has six fields, and each one removes a guess the model would make.

Here is what each field held in the scored run:
Story. The five-part standup, the 60 minutes and the 3 days of rework prevented per week. True facts only.
Voice sample. One paragraph from a post I published.
Three references. Three of my published posts, for shape and not for words.
Dos and don'ts. Open on a number, number the steps, skip the stock opener, add no new fact.
Audience. Leads who run a daily meeting for 3 to 10 people and suspect it is theater.
Target feeling. "I can change my standup tomorrow."
Tip. Write the story field first, as true facts only. Whatever the story leaves out, the model fills with the average of everything it has read.
The full brief ran about 430 words. The don'ts field names openers I dislike, so it helps the score a little. The story field did the real work. The bare run invented its facts, and the brief run had none left to invent.
Step 2. Score the Draft Before You Ship It
A script that scores the draft finds cheap failures in seconds. Mine reads the file, matches patterns and prints each hit with its line number. Here is what it returned on the three leadership posts:
Bare post. Score 16, with 1 blocking finding on the closing line that denies a title before it names a daily choice.
Bare post after one rewrite. Score 3, with no blocking findings.
Brief post. Score 6, with no blocking findings and two advisories, one on similar sentence lengths.

Watch out. The fixed bare post passes the gate and still says nothing. A score of 0 means no cheap tells. It never means the draft has an idea.
The score also catches rhythm. The brief post flagged similar sentence lengths. I built Cadence, a free browser app that graphs the length of each sentence you paste in, to show that pattern.
Deslop Audit is the packaged version of this step. It scores a draft, then rewrites each hit in place, and it never invents a number to make a sentence sound better.

The Substack Writing Harness runs the same check inside a longer loop. It tests your idea against what you already published, pulls your opinion out before drafting, and reruns the scorers until every blocking finding clears.

A script that runs after every file save is a hook, which is a command Claude Code starts on its own at a set event. The Load Order post shows how one hook blocks a draft before you see it. For a reviewer that cannot write slop because it cannot write, read about Jev, a model that only judges.
I made the same point on X: people who run the same default prompt get the same generic output, then blame the model instead of the prompt.
Five Cases Show the Brief Changing What a Reader Can Check
Each case below runs one bare prompt against one brief on the same model. The measure fits the task. The cold email and the SEO intro scored no better with the brief, so the script cannot see their gain.

Cold Email
The inputs were a fictional product, ChangeLine, and a fictional recipient at Brightfold. The bare prompt, "Write a cold email to sell my SaaS product," returned a template. Its subject line reads "Cut [specific pain point] by [X%] at [Company Name]" and the body holds 24 empty placeholders.
The brief returned the subject "Brightfold's changelog, last touched 7 weeks ago" with one placeholder left, the sender's name. The script scored both emails 6.
Essay Opening
The bare prompt opened with "Last year, a friend sent me two paragraphs and asked which one a human had written." The friend is invented. The script scored it 13, with 1 blocking finding.
The brief held my notes, including one measured result, 21 LinkedIn comments that a hook blocked. It opened with "I believe a style rule in a CLAUDE.md file is only a request," and it kept the 21. Score 3.
SEO Page Intro
SheetBridge is a fictional tool that needed an intro for "Connect Slack to Google Sheets". The bare intro promised "Setup takes about 10 minutes and needs no code." No source supports that promise.
The brief intro told the reader to format column A as plain text. Slack returns timestamps as strings such as 1503435956.000247, and Sheets would read them as numbers. It also carried the 20 million cell limit that Google announced on 10 September 2026. At 500 pages, a template with a swapped keyword is spam. Each page needs one fact like these.
Code
The bare prompt asked for a Python function that validates an email address. Its function calls address.strip() first, so a leading space still passes. An 11-line spec said to strip nothing, and that version passed all 20 checks. I wrote the 20 checks from the spec, so they test whether the model followed the rules it was given. The bare function passed 18, and both misses were whitespace.
Rule of thumb. Review is the safety step, and a spec is what the review checks against.
GitHub's 2022 controlled study of 95 developers found the Copilot group wrote an HTTP server in 1 hour 11 minutes. The control group took 2 hours 41.
Personal Writing
The text was a paragraph I published. The prompt "Improve this paragraph" changed 17 of its 136 words, and "goes anywhere near a reader" became "reaches a reader." A copy-editor brief, "fix only what is broken and keep my rhythm," changed 0 words. Nothing was broken, and the constrained editor said so by leaving the paragraph alone.
Five Questions a Skeptic Asks About AI Slop
Is a score of 0 enough to call a draft good? No. The bare leadership post reached 3 after one fix and still had no idea in it. Use the score to clear cheap tells, then read for the idea.
Does a brief have to be long? The one here ran about 430 words, and the story field carried most of the value. A short brief with true facts beats a long one with none.
What if I have no story to give the model? Then the model will invent one. Record a voice memo of what you believe, transcribe it, and use that as the story.
Who named slop? Simon Willison's post of 8 May 2024 spread the term. His definition covers unreviewed AI output sent to people who did not ask for it.
Can AI-assisted writing pass the test? Yes. Question 3 asks for human review, and a human who adds an idea and reviews the draft answers zero yeses.
The Appendix Holds the Brief Template and the Method
The brief template, one field per line:
STORY: true facts only. Use these and invent nothing else.
VOICE SAMPLE: one paragraph you wrote.
THREE REFERENCES: three posts you admire. Match the shape, not the words.
DO: open on a concrete fact. One idea. Short paragraphs.
DON'T: stock openers, hashtags, a closing slogan, any fact not in the story.
AUDIENCE: one reader, and the doubt they hold.
TARGET FEELING: what they think when they finish.The scorer output for the bare post, trimmed to the findings, with the quoted line paraphrased:
ai_slop_score: 16 (CRIT 1 | MED 2 | LOW 0) [SLOP (blocks publish)]
CRIT [antithesis] isnt-x-its-y: (the closing line about a title)
MED [split-reveal] negate-then-reveal across two sentences
MED [readability-fragment] no finite verb: the hashtag lineHow the runs were made:
Each arm was one call to Claude Sonnet, and the first output was kept.
Both arms got a short instruction to ignore any standing style rules, so they started level.
Only the labeled rewrite in Step 2 edited an output.
The SEO brief arm ran twice. I corrected the cell limit in its inputs after checking Google's announcement, and kept the first output of the corrected run.
The cold email and SEO cases use fictional products. The leadership brief, the essay notes and the edited paragraph come from my own published posts.
The script finds patterns. It does not judge ideas, which is why Step 2 ends where it does.





