Zero-GPU, zero-API heuristic AI-writing detector
Project description
.--""--.
/ o o \ "I sniff. I score. I judge your prose."
| ^^ |
\ ------ / +---------------------------+
'.____.' | S L O P C H E C K |
/| |\ +---------------------------+
^ | | ^
Meet Sniffy, SlopCheck's official mascot and resident AI-prose bloodhound 🐾
SlopCheck
Zero GPU. Zero API keys. Zero mercy for "delving into a multifaceted journey."
What is this thing?
Your writing sounds like it was "delving" into a "tapestry" of "multifaceted" ideas and "testament"-ing its way to a conclusion? SlopCheck knows.
It's a fully offline, zero-dependency AI-prose detector that reads your text the way a tired English teacher reads a suspicious essay, then hands back a cold, hard score.
No GPU. No API key. No cloud. No excuses.
Why developers actually like it
| The Old Way | The SlopCheck Way |
|---|---|
| Pay for a cloud "AI detector" | Runs 100% on your CPU, offline |
| Wait on network round-trips | Instant, local, stdlib-only |
| Black-box "trust me" score | 5 transparent heuristic signals |
| Manual review before merge | Drop it in your CI, block the slop |
Get it running (30 seconds, we timed it)
pip install slopcheck
Point it at a file:
slopcheck doc.txt --explain
Or pipe anything into its mouth:
echo "delving into multifaceted layers" | slopcheck -
Sample verdict
slopcheck: stdin
Score: 45/100 (medium AI-signal density)
Phrase matches 5/40
Sentence rhythm 15/20
Punctuation 10/15
Paragraph uniformity 10/15
Lexical diversity 5/10
Flagged spans:
L1: "...delving into this multifaceted ecosystem..."
Heuristic estimate, not proof. False positives happen
on formal/corporate writing and non-native English styles.
How Sniffy actually smells the slop
Five independent signals, no ML, no black box:
- 📖 Phrase matcher: greedy scan against a weighted bank of known AI clichés
- 🎵 Sentence rhythm: flags suspiciously uniform sentence lengths (real humans ramble)
- ✒️ Punctuation signature: em-dash, colon, and parenthesis frequency checked against a bot-like baseline
- 📐 Paragraph uniformity: every paragraph exactly the same size? Suspicious.
- 🔤 Lexical diversity: Type-Token Ratio checks if your vocabulary is actually alive
CLI cheat sheet
slopcheck <file|-> # target file, or "-" for stdin
--json # machine-readable output
--explain # show flagged spans + context
--no-color # for your soulless CI logs
Use it as a library too
from slopcheck import scorer
result = scorer.score("Text to evaluate")
print(result.score, result.signals)
CI gatekeeper mode
SlopCheck exits with code 1 on high-risk documents, so wire it straight into pre-commit or CI and let Sniffy guard the gate.
- name: Block the slop
run: slopcheck docs/*.md --no-color
Under the hood
slopcheck/
├── cli.py → argument parsing & runner
├── scorer.py → orchestrates all 5 signals
├── render.py → console + JSON formatting
├── signals/
│ ├── phrases.py → AI-cliché matcher
│ ├── rhythm.py → sentence-length variance
│ ├── punctuation.py → em-dash / colon frequency
│ ├── structure.py → paragraph uniformity
│ └── lexical.py → TTR vocabulary scorer
└── data/phrase_bank.json → the naughty-phrase database
Contributing
Found new slop in the wild? Sniffy accepts submissions. See CONTRIBUTING.md.
License
MIT: free as in "delving into the multifaceted world of open source."
SlopCheck · sniffing out the tapestry, one testament at a time 🐾
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file slopcheck_cli-0.1.3.tar.gz.
File metadata
- Download URL: slopcheck_cli-0.1.3.tar.gz
- Upload date:
- Size: 23.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe810727d46211c946689185ae90bf3c5d4afe2b77c5444e927495abd7fa74d9
|
|
| MD5 |
ad4e8ae2d58fc9aa679c4288ffd35e3e
|
|
| BLAKE2b-256 |
cfd6525e4f56662e7d4ee3e6a34df932400278457aa56cf64bd5156e2ef90bd0
|
File details
Details for the file slopcheck_cli-0.1.3-py3-none-any.whl.
File metadata
- Download URL: slopcheck_cli-0.1.3-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10c147bebef404ef70f235738ed949fb61a9b1650656723a77e95db1434081be
|
|
| MD5 |
0e702eda62eccc05ae3ef53f70c0e6ce
|
|
| BLAKE2b-256 |
d6acc846f91fc2c0a53c3e064c5158b94cfb2def76fca0d19d30492445b30960
|