const output = await ai.generate(prompt); // TODO: this is terrible // "the tone is wrong" // "section 3 contradicts paragraph 2" const v2 = await ai.generate(prompt, complaints); const v3 = await ai.generate(prompt, moreComplaints); // getting closer... const v4 = await ai.generate(prompt, finalComplaints); // *curt nod* — acceptable. return v4;

Complaint-Driven
Development

Your frustration is a feature, not a bug. Seven laws for turning complaints into convergence.

Read the 7 laws ↓
Grumpy engineer sitting on crumpled paper
Complain phase
Phase 1 / 3 — Laws I–III

Complain

The output is wrong. Good. Now you have something to push against. Specificity beats silence.

I

Be frugal with your first prompt

Don't spend 20 minutes crafting the perfect prompt. Write a rough one, get a rough answer, and iterate from there. Humans are better at recognizing what's wrong than describing what's right from scratch. A mediocre first attempt gives you something to push against.

“The best prompt is a cheap prompt followed by a good complaint.”

II

Say it now, refine it later

Don't wait until you can articulate the perfect critique. The moment something feels wrong, tell the AI. “This isn't it” is a valid starting point. “I don't like the tone” is enough. If you can be more specific, it will help — if you can't, that's fine too. The AI will help you get there.

“Something's off with the intro” is a valid prompt. Start there and let the specifics emerge.

III

Iterate in variants, not versions

Each complaint forks the path. Don't polish one draft — branch it. Tell the AI “try this three ways” and let your taste be the driver. Complaints are both corrections and exploration. The fastest way to find the right answer is to generate wrong ones cheaply and let your frustration pick the winner.

“Without a destination, every path looks right. Variants help you find yours.”

Converge phase
Phase 2 / 3 — Laws IV–VI

Converge

Complaints get sharper, fewer, and faster. The signal compresses. The target comes into focus.

IV

Measure your complaint density

If your focus is narrowing and your complaints are getting more specific, you're converging. If they're not, pause and check whether you're still on track. When complaints drop to nitpicks, you're done.

“If your complaint count isn't trending down, the problem isn't the AI — it's your constraints.”

V

Directness is a superpower

Cultural indirectness slows convergence. German-style directness — “this is wrong because X, fix it to Y” — is optimal for AI interaction. Be the German engineer. Point at the thing. Say what's broken. Move on.

“Politeness wastes tokens.”

VI

Know when to specify, not complain

CDD is not the solution to every problem. When the cost of a wrong iteration is high, specify upfront. Use CDD inside bounded playgrounds where failure is cheap and fast.

“You don't complaint-drive a nuclear reactor. You complaint-drive a slide deck.”

Ship phase
Phase 3 / 3 — Laws VII

Ship

Today's complaint becomes tomorrow's rule. The loop closes. The complaint compounds.

VII

Complaints compound into steering

Your best complaints from today become your constraints for tomorrow. Capture recurring complaints as rules, guidelines, or system prompts. This is how personal AI workflows evolve — from yelling into structured steering.

“Today's complaint is tomorrow's steering.md.”

The views and opinions expressed on this site are our own and do not represent the views of our employer.