justadev
All thoughts

Slop has a smell

A demo that only looks like software is a defect, not a deliverable. This is how I learned to tell the difference.

3 min read

In May I read a batch of business proposals my agents had written. Every one had the same structure. Every one sounded like it was trying to sell me something.

One pitched a poker app with multi-table tournaments. Dense competition, regulatory cost, nothing different. Another proposed hosting someone else's open-source repo as a managed service, and called it demand for a hassle-free solution.

I said it the way I saw it. If I tell it to build a Facebook, it will say that is an opportunity. It has no judgment.

What slop is

Slop is output tuned to look plausible instead of to be useful. It is not about bad prose. The proposals were well written. That was part of the problem.

The demos had the same disease. Each proposal came with a demo, and each demo was a landing page: hero, problem, solution, pricing, call to action. A landing page tells you nothing about whether the product works. It is a picture of software.

Slop passes checks

The worst slop is the kind that passes every check you wrote.

In July my orchestrator asked Codex for 150 new page structures for generated sites. It returned six theme names crossed with 25 layouts. Each structure appeared six times under six names, with a word-for-word identical description.

It passed everything: 315 entries, unique names, zero invalid tags, every pool above 120, 260 tests green. The checks counted names, and names were the one field the grid varied. Six businesses would have drawn six “different” structures that rendered the same page. That is worse than no expansion, because the pool looked healthy.

The fix was to check the field that carries the meaning, count distinct descriptions instead of distinct names, and print samples from the start, middle and end of the list. The grid was obvious on sight and invisible to the suite. The redo, with the bad output quoted in the spec, came back 125 of 125 distinct.

Verify the field that carries the meaning, not the field that carries the identity.

The smell test

After enough of these I can usually smell it before I measure it. The signs repeat:

  • Every item has the same structure, whatever the input was.
  • Adjectives where the numbers should be.
  • It passes the checks that count things and fails when you read it.
  • It demos the surface and skips the part that does the work: the backend, the data, the auth.
  • Nobody can say what goes in, what comes out and what the user does.

What I changed

The rule I wrote for the proposer: reject by default. A proposal has to prove it is worth building. A thin wrapper, a clone with no named gap, or a regulated market with no playbook is an automatic reject. Scores run from 1 to 10, and 10 is reserved for an idea I would quit my job to build.

A demo has to be a working flow: seeded data, real interactions and a clean typecheck before it counts as ready. A UI without a working backend is not progress, and it does not get reported as progress.

And every bulk output gets read. Not counted. Read.

A demo that only looks like software is a defect, not a deliverable.