{
  "type": "excalidraw",
  "version": 2,
  "source": "claude",
  "elements": [
    {
      "type": "text",
      "id": "title",
      "x": 160,
      "y": 20,
      "width": 600,
      "height": 70,
      "text": "Multi-Agent Orchestration",
      "fontSize": 28,
      "fontFamily": 1,
      "strokeColor": "#000000",
      "textAlign": "left",
      "verticalAlign": "top"
    },
    {
      "type": "text",
      "id": "subtitle",
      "x": 160,
      "y": 88,
      "width": 600,
      "height": 35,
      "text": "LangGraph StateGraph · fan-out/fan-in · Pydantic state merging",
      "fontSize": 14,
      "fontFamily": 1,
      "strokeColor": "#000000",
      "textAlign": "left",
      "verticalAlign": "top"
    },
    {
      "type": "ellipse",
      "id": "orchestrator",
      "x": 360,
      "y": 140,
      "width": 200,
      "height": 70,
      "strokeColor": "#1864ab",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "hachure",
      "strokeWidth": 2,
      "boundElements": [{ "type": "text", "id": "orch-text" }]
    },
    {
      "type": "text",
      "id": "orch-text",
      "x": 360,
      "y": 140,
      "width": 200,
      "height": 70,
      "text": "Orchestrator Agent\n(StateGraph root)",
      "fontSize": 14,
      "fontFamily": 1,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "orchestrator"
    },
    {
      "type": "text",
      "id": "fanout-label",
      "x": 250,
      "y": 225,
      "width": 80,
      "height": 35,
      "text": "fan-out",
      "fontSize": 13,
      "fontFamily": 1,
      "strokeColor": "#495057",
      "textAlign": "center",
      "verticalAlign": "top"
    },
    {
      "type": "arrow",
      "id": "a-oa",
      "x": 400,
      "y": 210,
      "width": -200,
      "height": 80,
      "strokeColor": "#495057",
      "strokeWidth": 2,
      "points": [[0,0],[-200,80]]
    },
    {
      "type": "arrow",
      "id": "a-ob",
      "x": 460,
      "y": 210,
      "width": 0,
      "height": 80,
      "strokeColor": "#495057",
      "strokeWidth": 2,
      "points": [[0,0],[0,80]]
    },
    {
      "type": "arrow",
      "id": "a-oc",
      "x": 520,
      "y": 210,
      "width": 200,
      "height": 80,
      "strokeColor": "#495057",
      "strokeWidth": 2,
      "points": [[0,0],[200,80]]
    },
    {
      "type": "rectangle",
      "id": "agent-a",
      "x": 80,
      "y": 290,
      "width": 180,
      "height": 70,
      "strokeColor": "#2f9e44",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "hachure",
      "strokeWidth": 2,
      "roundness": { "type": 3 },
      "boundElements": [{ "type": "text", "id": "agent-a-text" }]
    },
    {
      "type": "text",
      "id": "agent-a-text",
      "x": 80,
      "y": 290,
      "width": 180,
      "height": 70,
      "text": "Agent A\n(e.g. security-analyst)",
      "fontSize": 13,
      "fontFamily": 1,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "agent-a"
    },
    {
      "type": "rectangle",
      "id": "agent-b",
      "x": 370,
      "y": 290,
      "width": 180,
      "height": 70,
      "strokeColor": "#e67700",
      "backgroundColor": "#fff3bf",
      "fillStyle": "hachure",
      "strokeWidth": 2,
      "roundness": { "type": 3 },
      "boundElements": [{ "type": "text", "id": "agent-b-text" }]
    },
    {
      "type": "text",
      "id": "agent-b-text",
      "x": 370,
      "y": 290,
      "width": 180,
      "height": 70,
      "text": "Agent B\n(e.g. code-review)",
      "fontSize": 13,
      "fontFamily": 1,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "agent-b"
    },
    {
      "type": "rectangle",
      "id": "agent-c",
      "x": 660,
      "y": 290,
      "width": 180,
      "height": 70,
      "strokeColor": "#862e9c",
      "backgroundColor": "#f3d9fa",
      "fillStyle": "hachure",
      "strokeWidth": 2,
      "roundness": { "type": 3 },
      "boundElements": [{ "type": "text", "id": "agent-c-text" }]
    },
    {
      "type": "text",
      "id": "agent-c-text",
      "x": 660,
      "y": 290,
      "width": 180,
      "height": 70,
      "text": "Agent C\n(e.g. release-impact)",
      "fontSize": 13,
      "fontFamily": 1,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "agent-c"
    },
    {
      "type": "arrow",
      "id": "a-ar",
      "x": 170,
      "y": 360,
      "width": 290,
      "height": 80,
      "strokeColor": "#495057",
      "strokeWidth": 2,
      "points": [[0,0],[290,80]]
    },
    {
      "type": "arrow",
      "id": "a-br",
      "x": 460,
      "y": 360,
      "width": 0,
      "height": 80,
      "strokeColor": "#495057",
      "strokeWidth": 2,
      "points": [[0,0],[0,80]]
    },
    {
      "type": "arrow",
      "id": "a-cr",
      "x": 750,
      "y": 360,
      "width": -290,
      "height": 80,
      "strokeColor": "#495057",
      "strokeWidth": 2,
      "points": [[0,0],[-290,80]]
    },
    {
      "type": "text",
      "id": "fanin-label",
      "x": 590,
      "y": 375,
      "width": 80,
      "height": 35,
      "text": "fan-in",
      "fontSize": 13,
      "fontFamily": 1,
      "strokeColor": "#495057",
      "textAlign": "center",
      "verticalAlign": "top"
    },
    {
      "type": "rectangle",
      "id": "reducer",
      "x": 310,
      "y": 440,
      "width": 300,
      "height": 70,
      "strokeColor": "#0c8599",
      "backgroundColor": "#99e9f2",
      "fillStyle": "hachure",
      "strokeWidth": 2,
      "roundness": { "type": 3 },
      "boundElements": [{ "type": "text", "id": "reducer-text" }]
    },
    {
      "type": "text",
      "id": "reducer-text",
      "x": 310,
      "y": 440,
      "width": 300,
      "height": 70,
      "text": "State Reducer\nAnnotated TypedDict merge · Pydantic validation",
      "fontSize": 13,
      "fontFamily": 1,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "reducer"
    },
    {
      "type": "arrow",
      "id": "a-red-out",
      "x": 460,
      "y": 510,
      "width": 0,
      "height": 40,
      "strokeColor": "#495057",
      "strokeWidth": 2,
      "points": [[0,0],[0,40]]
    },
    {
      "type": "rectangle",
      "id": "output",
      "x": 310,
      "y": 550,
      "width": 300,
      "height": 60,
      "strokeColor": "#1864ab",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "hachure",
      "strokeWidth": 2,
      "roundness": { "type": 3 },
      "boundElements": [{ "type": "text", "id": "output-text" }]
    },
    {
      "type": "text",
      "id": "output-text",
      "x": 310,
      "y": 550,
      "width": 300,
      "height": 60,
      "text": "Consolidated Output\n(PR comment / action)",
      "fontSize": 14,
      "fontFamily": 1,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": "output"
    },
    {
      "type": "text",
      "id": "parallel-note",
      "x": 80,
      "y": 630,
      "width": 760,
      "height": 35,
      "text": "Agents A, B, C execute in parallel — each produces a Pydantic model output — reducer merges deterministically",
      "fontSize": 13,
      "fontFamily": 1,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "top"
    }
  ],
  "appState": { "viewBackgroundColor": "#ffffff" }
}
