AI Tools 6 min read

Deslop Model: Training AI Tics Out of Qwen3-4B

The deslop model, qwen3-4b-deslop, is a free Apache-2.0 fine-tune that drops em dashes and "not X, but Y". How it was built and what its score hides.

Abstract editorial illustration of a row of amber text lines with a few teal marks being erased while a single green line stays on a navy ground.

The deslop model is qwen3-4b-deslop, a free fine-tune of Alibaba’s Qwen3-4B-Instruct-2507 that an independent developer, Erik Markus Kannike, put on Hugging Face on October 19 under the Apache-2.0 licence. It was trained to write without the habits people now spot in AI text: em dashes, “it’s not X, it’s Y”, lists of three, “here’s the thing”. The 2.5 GB quantised file runs on a laptop with Ollama.

In this post I go over how the deslop model was built, why its best training round was also its worst one, and how you can run a ten-minute test on your own prompts. My verdict: copy the recipe and the lesson, do not trust the headline number. Every figure below comes from the author’s own write-up, no outsider has repeated it, and no readers have blind-tested the output yet.

Here is what I did. I read the write-up in full and opened both Hugging Face repos, the GGUF build and the full weights. I did not run the model. I only ran the counting script further down, on a made-up sentence, to check it counts what it says.

Why do I care? English is my second language and my drafts start with an LLM’s help. I know the feeling of rereading my own paragraph and thinking “that sounds like a chatbot”. At Trellis we also generate Amazon listing copy, so I want to know if slop can be measured, and not only felt.

How was the deslop model built?

The recipe is small, which is the reason I am writing about it. Kannike wrote a style guide of AI writing habits, turned it into a detector made of regular expressions, and gave each habit a weight. The score is a weighted count per 1,000 words. He calls the original Qwen3-4B average of 121 “slop” and says careful human prose lands near zero.

Then he used distillation. A “teacher” (the best version he had so far, plus a prompt asking for plain style) answered 288 training prompts. He kept only the answers that passed his checks, and a small LoRA adapter learned to produce them from the bare prompt. It is rank 16, applied to all attention and MLP projections, trained for two epochs. One round took one to three hours on an M2 MacBook Air. The adapter is 126 MB.

There is also a stranger part: four neurons with their sign flipped, stored in a 175-byte file. In an earlier experiment of his, that edit removed about 70% of “not X, but Y” at almost no cost.

The released model, on 40 prompts it never saw in training, went from 121 to 12.5 per 1,000 words. Em dashes fell from 20.5 to zero. It still answered 30 of 30 factual questions, and it did what the prompt asked 80% of the time against 78% for the original. These are the author’s numbers, from one sampled answer per prompt.

Why did a better score give a worse model?

This part is the reason to read the write-up. Round two produced a model that scored 9.9, better than the final 12.5, with 80% of answers inside the “human range”. Then Kannike read the answers.

The opinion piece about a company’s new CRM never took a position and read like an incident report. A blog post about moving to a new city turned into a third-person story about a family with a leaking apartment. A houseplant article cited “a study from the University of Technology Sydney”, and it did not exist. Nearly every sentence was glued to the next with “, which” or “, so”, 28 times more often than in the original model.

The cause was his own teacher prompt, which told the model to join sentences “with because, so, but, which”. Two rounds of imitation amplified that line, and his detector had no rule against it.

Mettons you are the author. You have a number that goes down, a model that obeys it, and a human who finds the output unreadable. Bon. That is Goodhart’s law in one afternoon of laptop time.

His fix was a second filter that checks the answer does what the prompt asked: an opinion piece takes a side early, a personal piece is in the first person, an email opens with a greeting, length is roughly right. Only about 30% of teacher answers passed, 161 of 288 prompts. The score went back up from 9.9 to 12.5, on purpose, and the “, which” joins dropped from 1.4 to 0.3 per 100 words.

What does the 12.5 hide?

Three things, and the author lists most of them himself. First, the score is his style guide written as regular expressions, and the training data was filtered with the same checks. So 121 to 12.5 says the output matches his list. It does not say a reader likes it, and he writes that no blind test has been done.

Second, the sample is tiny: ten topics, four genres, 40 prompts, one answer each, short English prose only. No code, no tool use, no long chats, no French. The same model scored 10.2 as an adapter and 12.5 as merged weights, from sampling noise alone.

Third, the new habits. His limitations list says the voice is flat, runs of short declarative sentences, and that invented names and places are common: a coffee shop on Maple Street run by a woman named Maria.

Is anyone using it? Early days: the GGUF repo showed under a thousand downloads on October 21. A Gemma-based humanizer rewriter was past 115,000 the same day, so people clearly want “sound less like AI”.

Can you run a ten-minute deslop test on your own prompts?

Yes, and you do not need Kannike’s model to learn something. You need your own prompts and a counter.

  1. Pick five real prompts from your product: a product description, a support reply, a changelog entry.
  2. Run each through the original Qwen3-4B-Instruct-2507 and through the deslop build. With Ollama the second one is ollama run hf.co/erikkannike/qwen3-4b-deslop-v4-GGUF:Q4_K_M. Save each output to a text file.
  3. Save this as tics.py and run python3 tics.py output.txt. First the patterns:
import re, sys
TICS = {
    "em dash": r"—",
    "not X, but Y": r"\b(?:not|isn't|wasn't|aren't)\b[^.?!]{1,60}[,;—]\s*(?:but|it's|they're|that's)\b",
    ", which / , so": r",\s+(?:which|so)\b",
    "stock words": r"\b(?:delve|seamless\w*|tapestry|testament|elevate|unlock|game-changer)\b",
    "invented study": r"\b(?:a study (?:from|by)|researchers at|according to a \d{4})\b",
}

Then the loop that counts them, below the dictionary in the same file:

text = open(sys.argv[1]).read()
words = max(len(text.split()), 1)
for name, pat in TICS.items():
    n = len(re.findall(pat, text, flags=re.I))
    print(f"{name:16} {n:3}  ({n * 1000 / words:.1f} per 1000 words)")
  1. Then the step the score cannot do. Read both outputs out loud and underline every fact: a number, a name, a place, a study. Is each one true, and would it make someone buy?

My regexes are crude and will miss things, which is the point: a home-made metric is easy to satisfy and hard to trust. If your deslop output has zero em dashes and one invented 30-metre waterproof rating, you have learned what Kannike learned in round two.

What does this mean for Trellis and for you?

For Trellis the order matters. An Amazon listing that sounds human but promises something the product does not do is worse than a robotic one that is correct. So we check “true” first, “sells” second, “sounds human” a distant third. A deslop pass goes after the fact check, never before.

Who should use the model? Do not put a 4B model in front of customers on the strength of a self-reported score. It invents names, and it was only tested on short English prose. Try it as a draft helper a person edits, on your own five prompts.

Who should copy the recipe? Anyone with a house style and a pile of reference text. It costs one laptop and a weekend, and if you add the task-fit filter from the start you skip his round two.

What I am watching is the blind test Kannike says is next, along with 7B to 8B and 30B versions. If readers pick the deslop output over the original, I will believe the 12.5 a lot more. Until then it is a number that goes down.

The Hacker News thread has the sceptics’ version. For another number that looked fine over a broken setup, see my LiteLLM budget post.

Abstract editorial illustration of a row of amber text lines with a few teal marks being erased while a single green line stays on a navy ground.
A score that counts what you erase does not tell you what you kept.

Dominic Plouffe

CTO of Trellis, with exits at FuseTalk, 360pi and DeadHeat. I write about making agents and big data work together safely, and I'm building yaaf, an open-source platform for running teams of AI agents that actually finish the job: yaaf.dplouffe.ca