Repo of the Day
vibecoded-design-tells/unslop-ai-text at main · JCarterJohnson/vibecoded-design-tells
Published: Aug 30, 2026
Open repository ↗Reddit-mined data ranking the visual tells of vibe-coded (AI-built) sites: 3.2M posts scanned across 47 subreddits, with scripts, raw data, and charts. - JCarterJohnson/vibecoded-design-tells
Summary
The repo packages a Reddit-mined study of what people flag as "AI slop" visual cues in websites, plus three Claude skills (unslop-ui, unslop-text, unslop-code) that strip those tells. It scanned 3,214,533 posts across 47 subreddits, found 46,971 on-topic ones, and tabulated which design features get named most often. The headline finding is that the complaint is recognition itself: "they all look the same" appears in about 13% of on-topic posts, with shadcn/Tailwind defaults and "AI purple" gradients leading specific complaints.
What it is useful for
Engineers shipping AI-generated or template-driven UIs who want their sites to read as deliberate rather than defaulted. The unslop-ui skill runs in build or audit mode and ships a standalone scanner (skill/scripts/devibe_scan.py) that greps a codebase, prints findings with a vibe score, and gates CI on its exit code. Two companion skills cover AI tells in prose (em-dash overuse, sycophantic openers, "delve" diction) and source code (leftover chat artifacts, swallowed errors, narrating comments, hallucinated APIs). Researchers can use the scripts and shipped data to reproduce the ranking or extend the method, since everything runs on Python plus matplotlib against the free Arctic Shift Reddit archive (no API key, no auth).
How engineers can use it
Quickest path: install the UI skill with unzip skill/unslop-ui.skill -d ~/.claude/skills/ (or upload skill/unslop-ui.skill in the claude.ai skills UI), then ask Claude to build or audit a site. For non-Claude use, run devibe_scan.py against a checkout and wire its exit code into CI. To reproduce the study end-to-end, the README documents this sequence:
pip install -r requirements.txt
cd unslop-ai-ui
python3 collect.py
python3 harvest.py 3000
python3 harvest_comments.py
python3 analyze.py
python3 analyze_comments.py
python3 make_charts.py
python3 make_charts2.py
The committed corpus.jsonl.gz is a snapshot you can gunzip and analyze without re-harvesting; harvesters are checkpointed and dedupe by id.
Documented limitations to keep in mind: keyword matching can miss sarcasm or catch the wrong sense of a word, comment-level numbers are treated as the primary ranking because those threads are 100% on-topic, small subreddits are noisy, and one of the original 12 candidate tells (mesh/blob/aurora backgrounds) was rejected as a keyword artifact during adversarial verification. On licensing, the README states the code is MIT under LICENSE, but the repository's own license field is NOASSERTION, and harvested Reddit text is governed by unslop-ai-ui/DATA_NOTE.md rather than MIT, so read both files before redistributing any data.