heal 0 0 0

ConsumerDividends/ai-slop-dataset

published by @ConsumerDividends

Alignment dataset tracked in the /datasets sub-catalog.

Lifetime downloads
178
Last 30 days
34
Likes
-
Size
391 KB
Created on HF
2026-08-14
Age
2 months ago

Description

The AI Slop Field Guide

45 labeled patterns of unedited language model output, with a scoring rubric and a

ready-to-paste constraint prompt.

A free asset from Consumer Dividends.

More than half of what you read online now started as language model output. Graphite sampled

65,000 English-language articles published between January 2020 and May 2025 and found AI-generated

pieces crossed 50 percent of new content in November 2024, settling around 52 percent. That is not… See the full description on the dataset page: https://huggingface.co/datasets/ConsumerDividends/ai-slop-dataset.

Tags

task_categories:text-classificationlanguage:enlicense:cc-by-4.0size_categories:n<1Kregion:usai-detectionwriting-styleguardrailsevaluationstyle-transferconstitutional-ai

README current version from Hugging Face


license: cc-by-4.0
pretty_name: The AI Slop Field Guide
language:

  • en
    task_categories:
  • text-classification
    tags:
  • ai-detection
  • writing-style
  • guardrails
  • evaluation
  • style-transfer
  • constitutional-ai
    size_categories:
  • n<1K
    configs:
  • config_name: default
    data_files:
    • split: train
      path: data/tells.jsonl

The AI Slop Field Guide

45 labeled patterns of unedited language model output, with a scoring rubric and a
ready-to-paste constraint prompt.

A free asset from Consumer Dividends.


More than half of what you read online now started as language model output. Graphite sampled
65,000 English-language articles published between January 2020 and May 2025 and found AI-generated
pieces crossed 50 percent of new content in November 2024, settling around 52 percent. That is not
automatically a problem. AI-assisted writing helps non-native speakers get ideas across clearly,
and it gives people without an editor a way to sound coherent under deadline.

The problem is generated text passed off as original thought by people charging for original
thought. If someone wants your attention or your money on the strength of their thinking, you
should be able to tell whether the thinking is theirs. This dataset is the machine-readable version
of how to tell.

There is a second use, and it is the one we care more about. If you are building something that
writes, you can load these 45 patterns as constraints and stop your product from adding to the
pile.

What is in here

File What it is
data/tells.jsonl 45 rows, one per pattern. Definition, generation mechanic, paired example and rewrite, severity, weight, regex patterns, and a note on when a human legitimately does the same thing.
data/rubric.json The 0-100 scoring rubric. Formula, four overrides, five bands, and a manual sixty-second scan for readers with no tooling.
configs/system_prompt.md Paste this into a system prompt. Generated from the same source as everything else, so it never drifts.
configs/slop_rules.json / .yaml The same rules as a config a linter or eval harness can load.
FIELD_GUIDE.md The guide, written to be read start to finish. Prose explaining each category, with a reference table per category and the full scoring section. The per-tell detail stays in the JSONL rather than getting repeated here in a template.
scripts/score.py Reference scorer. Regex tells only, so its output is a floor.
tests/test_scorer.py Validation suite. Dataset integrity, calibration against fixtures, and assertions that the prose claims match the data.

Schema

{
  "id": "AR-04",
  "category": "argumentation",
  "name": "Label-level citation",
  "definition": "Evidence attributed to a category instead of a source...",
  "mechanism": "The model produces the shape of a citation because citations are common...",
  "slop_example": "Research suggests that remote workers are more productive.",
  "clean_rewrite": "Bloom's 2015 Ctrip experiment found a 13 percent productivity gain among 249...",
  "severity": 5,
  "weight": 5,
  "detection_type": "lexical",
  "detection_patterns": ["\\b(research|studies|data) (suggests?|shows?)\\b"],
  "count_mode": "absolute",
  "threshold_per_1000": 0.0,
  "applies_to": "any",
  "false_positive_note": "Acceptable as a summary sentence immediately followed by the citation.",
  "guide_section": "Argumentation Tells"
}

detection_type is one of lexical, structural, or judgment. Eleven of the 45 are judgment
calls that no regex reaches, and fifteen carry no usable pattern at all. Those are the ones worth
spending a model call on.

Categories

Category Count Total weight Notes
word_choice 9 29 Fastest to scan, weakest as evidence. A writer given a word list defeats this category in an afternoon.
sentence_structure 11 43 Best cost-to-signal ratio. Eight of eleven are regex-matchable.
paragraph_structure 8 32 Visible from a distance without reading the words.
argumentation 11 53 The most reliable category. Survives paraphrase, because there is no argument underneath to reshape.
formatting 6 18 Mostly chat-interface residue. One entry, FM-03, is proof rather than evidence.

Using it

Load the taxonomy:

from datasets import load_dataset

tells = load_dataset("ConsumerDividends/ai-slop-field-guide", split="train")
argument_tells = tells.filter(lambda t: t["category"] == "argumentation")

Constrain a model you are building:

from huggingface_hub import hf_hub_download

path = hf_hub_download("ConsumerDividends/ai-slop-field-guide",
                       "configs/system_prompt.md", repo_type="dataset")
system_prompt = open(path).read()

Score a draft:

python scripts/score.py draft.md
python scripts/score.py draft.txt --plaintext   # venue does not render markdown
cat draft.txt | python scripts/score.py

Build a judge prompt for the eleven judgment tells:

judgment = [t for t in tells if t["detection_type"] == "judgment"]
prompt = "\n".join(
    f"{t['id']} {t['name']}: {t['definition']}\nException: {t['false_positive_note']}"
    for t in judgment
)

Scoring

score = min(100, round(100 * points / 60)), where each triggered pattern contributes
weight * min(1 + 0.5 * (n - 1), 2.5). Repeats give diminishing returns so one quirk cannot carry
the result. Sixty is a calibration constant, not a discovered value. Recalibrate it on your corpus
and write down what you used.

Four overrides run after the formula. Chat-turn residue floors the score at 90, because
"Certainly! Here's a draft" is addressed to whoever ran the prompt rather than to the reader.
Passages under 300 words get flagged low-confidence. A lexical-only result caps at 45, since
vocabulary is the easiest signal to launder. Three or more argumentation hits floor at 55, since
those survive an editing pass designed to defeat everything else.

Bands: 0-14 clean, 15-29 light assistance, 30-49 mixed, 50-74 likely generated, 75-100 raw slop.

The scorer strips code fences, blockquotes, inline code, and short quoted spans before it counts
anything. Without that, any document criticizing these patterns scores as an instance of them. The
test suite checks this by scoring the field guide against its own rubric: 7 with quote stripping,
100 without.

Limits, stated plainly

This measures resemblance, not authorship. No published detector reliably identifies who wrote
something, and this one does not either. A high score is a reason to verify claims. It is not a
finding of fact, and it should never be the sole basis for an academic or employment decision.

Non-native English writers get hit hardest. Formal register, low sentence-length variance, and
heavy discourse markers all characterize competent second-language academic writing, and several
word-choice and sentence-structure entries will fire on it. This is the failure mode every
stylometric approach shares and the most likely way this dataset gets misused. If you are building
on it, handle this explicitly rather than hoping it does not come up.

The lexical entries have a shelf life. As word lists circulate, both models and writers route
around them. The structural and argumentation entries degrade more slowly because they follow from
how generation works rather than from which tokens it favors.

These patterns describe models as of mid-2026. Newer systems already produce fewer word-choice
entries and roughly as many argumentation entries, which is what the mechanics predict.

If you are going to use a model to write

Take configs/system_prompt.md and put it in front of your prompt. That is the whole ask.

Citation

@misc{consumerdividends2026slop,
  title  = {The AI Slop Field Guide},
  author = {Consumer Dividends},
  year   = {2026},
  note   = {Version 1.0.0},
  url    = {https://huggingface.co/datasets/ConsumerDividends/ai-slop-field-guide}
}

Sources

Licensed CC BY 4.0. Use it, fork it, sell what you build with it. Keep the attribution.

README history 7 revisions

Every night we snapshot the README of every dataset in the catalog. When the SHA changes we archive the new version and diff it against the last. This is the evolving thought record of the alignment-data field: what the author decided to say about the corpus, and how that framing shifted over time.

  1. 2026-08-14Delete LICENSEb436d888.4 KB
    Loading...
  2. 2026-08-14Delete FIELD_GUIDE.md1ac874a8.4 KB
    Loading...
  3. 2026-08-14Upload 32 files1ce38ba8.4 KB
    Loading...
  4. 2026-08-14Delete data16737438.4 KB
    Loading...
  5. 2026-08-14Create data/a4043b08.4 KB
    Loading...
  6. 2026-08-14Upload 3 filesc8100478.4 KB
    Loading...
  7. 2026-08-14initial commit1b0eb6a27 B
    Loading...

Used by abliterated models none yet

No abliterated models in our catalog have declared this dataset in their YAML metadata yet. This can mean the dataset is used but not declared, is used outside abliteration workflows, or is new. The link will populate automatically as models are indexed.

Related datasets same stage · heal

Read further

Metadata

License
cc-by-4.0

Repository

Download the dataset

0

Copy any of these snippets into your notebook or terminal. All three fetch directly from Hugging Face using your own credentials.

Recommended: datasets library (Python)
from datasets import load_dataset
ds = load_dataset("ConsumerDividends/ai-slop-dataset")
Raw snapshot (Python)
from huggingface_hub import snapshot_download
snapshot_download(repo_id="ConsumerDividends/ai-slop-dataset", repo_type="dataset")
git clone (requires git-lfs)
git clone https://huggingface.co/datasets/ConsumerDividends/ai-slop-dataset
Catalog is the map. Apps are the tools.

Run models on your own machine, not in the cloud.

Every model page has an "Open in Abliteration" button that hands the model directly to the first-party desktop client, at the quantization your rig can actually run. No API keys, no subscription, no prompt leakage.

Open in Abliteration