{
  "v": 1,
  "nodes": [
    {
      "id": "c-intent",
      "type": "comment",
      "x": 40,
      "y": 20,
      "w": 520,
      "name": "How it works",
      "fields": {
        "text": "Paste a messy coding dump. Choice picks the output shape; Claude Fable 5.1 (anthropic/claude-fable-5.1) plans it. One LLM call, reasoning low, ~$0.02. Swap the dump.",
        "color": "yellow"
      }
    },
    {
      "id": "n1",
      "type": "text",
      "x": 40,
      "y": 220,
      "w": 440,
      "name": "Messy dump",
      "fields": {
        "text": "ok so invoices in the next.js app-router dashboard is a crime scene. the table renders rows. csv export returns 200 OK of the PAGE html because /invoices/export is still a page.tsx, not a route handler. the date range lives in useState so the server pager has never heard of it and we keep fetching page 3 of the unfiltered universe. PM wants the last filter saved in localStorage like a tarot reading. empty state is the word \"no data\" floating in a void. export button does not disable in flight so finance double-clicks and we email them two html files named invoices.csv. do NOT rewrite billing. a test would be a kindness. also i keep pasting this into the custom-endpoints ticket — those are different files. i am begging you."
      }
    },
    {
      "id": "n2",
      "type": "choice",
      "x": 40,
      "y": 560,
      "w": 400,
      "name": "Shape",
      "fields": {
        "options": "exactly five numbered steps\none GitHub PR body (title + bullets)\nfailing-test first (name + assertion sketch)",
        "selected": "exactly five numbered steps"
      }
    },
    {
      "id": "n3",
      "type": "join",
      "x": 540,
      "y": 360,
      "w": 260,
      "name": "Dump + shape",
      "fields": {
        "sep": "\n\n=== OUTPUT SHAPE ===\n"
      }
    },
    {
      "id": "n4",
      "type": "llm",
      "x": 860,
      "y": 280,
      "w": 440,
      "name": "Plan",
      "fields": {
        "model": "anthropic/claude-fable-5.1",
        "system": "You turn a messy, half-formed coding or workflow dump into the output shape requested after === OUTPUT SHAPE ===.\nFollow that shape exactly. Be concrete: prefer verbs and file/function names over slogans.\nNo preamble, no recap, no extra sections.\nIf the dump is ambiguous, pick the simplest interpretation that ships something useful and note the assumption in one short opening clause.\nKeep the whole answer under 180 words.",
        "maxTokens": "512",
        "reasoningEffort": "low"
      },
      "sizes": {
        "system": 180
      }
    }
  ],
  "links": [
    {
      "id": "l1",
      "from": {
        "node": "n1",
        "port": "text"
      },
      "to": {
        "node": "n3",
        "port": "a"
      }
    },
    {
      "id": "l2",
      "from": {
        "node": "n2",
        "port": "text"
      },
      "to": {
        "node": "n3",
        "port": "b"
      }
    },
    {
      "id": "l3",
      "from": {
        "node": "n3",
        "port": "text"
      },
      "to": {
        "node": "n4",
        "port": "prompt"
      }
    }
  ],
  "nid": 5,
  "lid": 4,
  "view": {
    "panX": 20,
    "panY": 40,
    "scale": 0.8
  }
}
