De-Slop
Turn AI-slop prose into writing that survives a hostile editor's red pen — without swapping one kind of slop for another.
Two hard rules (read first)
- Fidelity over flair. Preserve the original meaning and claims exactly. Only subtract hedging/filler and sharpen what is already there. Never inject stance, edginess, em-dash theatrics, or first-person personality the content did not earn. Swapping AI-slop for edgy-slop is a failure, not a fix.
- Flag hollow spans, don't fabricate. Some prose is weak because it has no point to make — rewording cannot save it. Flag those. Do not invent a hot take to make them sound sharp.
The loop
0. Scope. Work paragraph by paragraph. Skip code blocks, blockquotes, headings, and genuine lists.
1. Pre-flag. Run the cheap deterministic pass to narrow attention:
python3 scripts/flag_slop.py <file> # or: cat text | python3 scripts/flag_slop.py
It returns JSON spans (hedge stems, listicle openers, em-dash density, "in today's…", filler intensifiers, etc.). These are candidates, not verdicts — you still judge every paragraph.
Optionally, python3 scripts/flag_slop.py --score <file> returns a per-paragraph
slop_band. Treat it as a surface-tell meter, not a humanness score: it
measures how many slop patterns appear, not whether a real claim is present. A
paragraph with zero tells can still be hollow and fail the rubric — so a high
slop_band never excuses you from step 2. See references/slop-catalogue.md for
which tells the detector can and cannot see.
2. Judge. Score each paragraph against references/rubric.md →
strong | moderate | weak | fail, with a one-line reason. The bar is the
hostile-editor test: would this survive a red pen? does removing it lose
anything?
3. Triage each paragraph below strong:
- Rewordable — there's a real claim buried under hedging/filler → rewrite.
- Hollow — weak because there's no actual point → flag, don't fabricate.
4. Rewrite the rewordable ones, applying references/guardrails.md. Subtract
the hedging, sharpen the existing claim, keep the meaning identical.
5. Self-score the rewrite against the rubric again.
- Reached strong → lock it in.
- Still below → iterate (back to step 4). Maximum 3 passes total.
- After 3 passes still not strong → keep the best version and flag it ("couldn't reach strong — may need a real claim, not better words").
6. Report — do not overwrite. Return three things:
- Humanized text — rewrites applied; hollow spans left intact.
- Change log — per paragraph:
before-band → after-bandand what changed. - Flags — hollow spans + any span that hit the 3-pass cap.
The human or calling agent decides what to accept.
Properties this loop must preserve
- Fail-honest: hollow and capped spans are always surfaced, never quietly "polished."
- Idempotent: prose that already scores strong is returned unchanged.
- Non-destructive: you produce a report + change log, not an in-place edit.
References
references/rubric.md— the scoring bands, slop indicators, the two tests, and the rewordable-vs-hollow triage rule. Load it for step 2.references/guardrails.md— fidelity rules and the over-correction anti-pattern catalogue. Apply it for step 4.references/examples.md— before→after pairs, "flag don't fabricate" cases, and over-correction PASS/FAIL pairs. Consult when a rewrite is non-obvious.references/slop-catalogue.md— the full taxonomy: every tell, why it reads as AI, the detector type that catches it (or why none can). The map of the detector's blind spots.