Worked examples craigslist.org
Is craigslist.org vibe coded?
A billion-dollar business that never redesigned. We fetched the homepage on 29 August 2026 and ran all 86 detectors over the raw HTML — the same scan you get from the box on the front page, frozen here so the numbers can be argued with.
www.craigslist.org
Hand-written
Somebody sat down and made decisions. Several of them were opinions.
- Vibe tells
- 3
- Craft tells
- 4
- Confidence
- medium
Enough signal to have an opinion.
Where the score came from
- Platform fingerprintsnone
Artefacts of the tool, not of taste
- Colour, type and surface2 hits
The visual defaults, applied unedited
- Layout and architecturenone
The shape a page takes when nobody asks what it needs to say
- Copy tellsnone
How the words were written
- Leftoversnone
Scaffolding never cleaned up
- Source and buildnone
What is visible in the shipped code
- How it behaves1 hit
Weight, mobile, accessibility, SEO — where the money leaks
- Human craft4 hits
Evidence of deliberate decisions
Evidence
7 findings- +14
Emoji used as an icon set
5 emoji in the visible copy, doing the job of an icon library.
- 🌎
- 🐮
- 🐷
- 🐔
- 🐟
- +10
Emoji doing the work of icons
5 emoji sitting in headings, navigation or list markers. A real icon set requires deciding what each glyph means; emoji let you skip that.
- 🌎
- 🐮
- 🐷
- 🐔
- 🐟
- +8
No social preview image
The link previews as a bare URL when somebody shares it.
- −7
No utility-class soup
Not one Tailwind utility class in the markup.
- −6
Structured data
JSON-LD is present — somebody thought about search.
- −6
Semantic landmarks
4 landmark elements instead of a pile of divs.
- <nav
- <footer
- <header
- <section
What we read
- title
- craigslist: kuwait jobs, apartments, for sale, services, community, and events
- generator
- —
- server
- unknown
- status
- 200
- html
- 51.4 KB
- words
- 552
- fetched in
- 2884 ms
Reading this score
craigslist.org landed on 14/100, which puts it in the hand-written band. That number is not a percentage and not a probability — it is strength of evidence: 20 points of tells, damped by craft, less 23 points of deliberate decisions, mapped through one logistic curve.
What pushed it up
- Emoji used as an icon set +14 — 5 emoji in the visible copy, doing the job of an icon library.
- Emoji doing the work of icons +10 — 5 emoji sitting in headings, navigation or list markers. A real icon set requires deciding what each glyph means; emoji let you skip that.
- No social preview image +8 — The link previews as a bare URL when somebody shares it.
What pulled it down
- No utility-class soup −7 — Not one Tailwind utility class in the markup.
- Structured data −6 — JSON-LD is present — somebody thought about search.
- Semantic landmarks −6 — 4 landmark elements instead of a pile of divs.
- Canonical URL −4 — Canonical link is set.
Craft we looked for and did not find
These are the actionable half of the report. None of them are hard, and every one of them would have moved the number.
- Deliberate social preview
- Skip-to-content link
- prefers-reduced-motion honoured
- Hand-written ARIA
- Self-hosted typography
- CSS custom property system
- Hand-authored stylesheet
What this scan cannot see
One request, no JavaScript executed. So everything below is invisible to us, and a page can be excellent or awful at all of it without moving the score:
- Domain registration age — needs WHOIS.
- Whether the nav's /about and /pricing actually resolve — needs a crawl, not one fetch.
- package.json dependency count, orphaned code, clashing abstractions, test coverage — needs the repo.
- Backend security shortcuts: string-built SQL, verify=False, missing auth on endpoints — needs the source.
- Whether row-level security or Firebase rules are actually switched on — needs the project.
- Console errors, hydration warnings and runtime 404s — needs a browser executing the page.
- Real Lighthouse numbers and horizontal scroll at 375px — needs a rendered viewport.
- Whether a JS-handled form posts anywhere — needs a submitted request.