How it's made

Every dilemma runs through five stages.

DilemmaHack is written by an agentic AI pipeline and approved by a human editor. We tell you that here, in detail, because you should know — and because we think the rigor is worth showing.

The pipeline

Each pipeline run starts from one of two triggers — a daily schedule (6am local), or an editor seeding a one-line topic in the admin — and ends only after passing through five stages, in order. The pipeline is an agentic system; a LangGraph state machine where each stage can be inspected, paused, or resumed at any step.

Writer Critic forms a revision loop

  1. 01

    Ideation

    Picks one specific dilemma worth writing about — the topic, the angle (what makes it genuinely hard to decide), and which of seven categories it belongs to. Runs from a one-line editor seed or autonomously.

  2. 02

    Research

    Pulls sources from Google web search, Reddit, and Hacker News for the chosen topic. Condenses them into a structured brief: key tensions, what the data says, who's faced this, what the obvious take gets wrong, edge cases. Sources are saved alongside the draft so editors can audit them.

  3. 03

    Writer

    Turns the brief into the article you'd read: a punchy 6-10 word title, an italicized hook, two clearly-framed options, and a 600-1000 word body in clean HTML. The voice is enforced by a system prompt checked into our repo — never inlined, never improvised.

  4. 04

    Critic

    Scores the draft against a strict rubric: completeness, voice match, specificity, no fabricated facts, no filler, body length, options framed as real tradeoffs not strawmen. If anything fails, the critic returns specific notes and the writer rewrites — up to several revisions before the loop ends.

  5. 05

    Human gate

    An editor reads the entire draft in our admin. They publish, edit inline, or reject. Nothing reaches the public site without an explicit human approval — this is enforced at the database level, not just the UI.

Stages 03 ↔ 04 form a loop: when the critic finds a problem, the writer rewrites with the critic’s notes baked into its prompt. The loop ends when the critic passes the draft or when the revision budget runs out (the latter is rare).

What the critic rejects for

The critic is the inner gate — it’s why most of the weak drafts never reach an editor. These are the categories of problem it actively scores against, and the same tags an editor uses when they reject something at the human gate:

  • Off-voice / generic
  • Too vague
  • Made-up facts
  • Too much filler
  • Wrong category
  • Weak verdict
  • Bad option framing
  • Other editor flag

How we get better with every “no”

When an editor rejects a draft, they pick one of the tags above and write a one-line reason. Those rejections are stored, and the next time the writer runs, the most recent rejections are prepended to its system prompt as “patterns past editors have flagged — avoid these.” The system literally reads its own report card before each write.

Where humans decide

We do not publish anything an editor hasn’t read. The database column that controls visibility on the public site is a human-set field, not anything the AI can write to. Even if a draft is technically perfect by every automated metric, it sits in the admin queue until someone clicks Publish.

That gate is the line. Everything before it is a recommendation from the pipeline; everything after it is on the editor.

Why we tell you all this

Most AI-written sites bury the fact that they’re AI-written. We think that’s the wrong call. The interesting question isn’t whether AI is involved — it’s whether the editorial process around it is rigorous enough that you can trust the output. Showing you the pipeline is how we make that case.