Case study

Slop Editorial

A satirical AI publication built like software: staged metrics, a taste update with no visible difference, and a gift shop for authenticity, backed by a spend-capped generation pipeline.

Proves Taste and editorial judgment

Live demoCode

Problem

Image models made pictures nearly free. Feeds fill with work nobody decided to make. Hands get six fingers, signs say Sunseet, and every comment says Amazing.

The hard part is not generating images. It is deciding which ones deserve to exist, and keeping a paid pipeline from spending money nobody approved.

I wanted to make that point with a publication that is funny on the surface and strict underneath. The thesis fits in one line: generation is cheap, taste is not.

Approach

The project has two halves. The site is an Astro build that hangs 9 generated works like a gallery and labels them like the platforms it mocks: a cookie sheet with two Accept buttons, ratings that always read 4.2, a taste update that installs with no visible difference, a gift shop in front of a Three.js certificate.

The pipeline is a Python tool called slopgen. It plans jobs from Markdown prompts and a YAML plan, prints a cost estimate, refuses paid runs without an approval, and logs every request. It runs offline by default against a free mock provider.

The same rule runs through both halves. Automation proposes, a named person decides, and the decision is written down. The site's approval queue makes the joke out loud: its Approve button refuses, because approval happens with a human, not a button.

Architecture

Slop Editorial architecture Pipeline: prompt pack and run plan feed a job planner with fingerprints and cache state, then an approval gate with an estimate, a spend cap and an approval reference, then a provider and the run store with its ledger, then human review. Changing a selection sends stale jobs back to the planner. Site: works and releases in MDX go through the Astro build, then build gates, then GitHub Pages. PIPELINE SITE Prompts + plan Markdown, YAML Job planner fingerprint, cache Approval gate estimate, cap, ref Provider → run store mock or paid; ledger Human review sheet, pick, deck Astro build works, releases MDX Build gates voice, links, budgets GitHub Pages
The two gates are the point: one stops unapproved spend, one stops a build that breaks the house voice or budget. The dashed line is a changed selection marking downstream jobs stale. Redrawn from the diagram in the project README.

Decisions

Results

  • 68 unit tests49 Python tests for the pipeline and 19 Node tests for the gate logic and helpers, all passing. One pipeline test asserts that no key or personal path reaches a run directory.
  • 146 build gatesnpm run check over the built site: brand, voice, links, leaks and budgets.
  • 143 browser checksnpm run verify drives headless Chrome through Playwright, with axe in light and dark: 20 runs over 10 page types, 0 violations.
  • 93 and 91Lighthouse mobile performance on the home page and the 3D page, with 100 for accessibility, best practices and SEO on both. Layout shift 0.002, blocking time 0 ms.
  • 81 KBShared JavaScript, gzipped. The 379 KB 3D chunk loads only on the certificate page.

A snapshot from one laptop with headless Chrome. The fal and Replicate adapters are tested against scripted fakes only, not the live services.

Screens

The release tracker headed Your November is 17 % approved, with six sample releases and their states.
The release tracker. Each sample release carries an estimate, a cap and an approval reference.
A printed gift-shop receipt itemizing appreciation, a prompt pack and an extra finger.
The gift shop receipt on the certificate page. The joke works because the arithmetic does.
The Works exhibition page with the first three framed generated pictures and their plate numbers.
The exhibition. Nine works hung in order, each labelled like the platforms it mocks.

What I'd do next