{
  "name": "🎓 Optimize Speed-Critical Workflows Using Parallel Processing (Fan-Out/Fan-In)",
  "nodes": [
    {
      "id": "4874de87-f4b3-4dcb-be6a-ec0ea173556e",
      "name": "Start Project",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -32,
        336
      ]
    },
    {
      "id": "ead45d6b-0a3a-403a-b296-c79919b2d0e6",
      "name": "The Dispatcher",
      "type": "n8n-nodes-base.switch",
      "position": [
        768,
        1136
      ]
    },
    {
      "id": "5d94fef2-21a8-43a2-bacc-68bc91b3abfa",
      "name": "Split Out Tasks",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        528,
        336
      ]
    },
    {
      "id": "7d3bd8e3-f08d-4b36-8ff6-91c87ec038cf",
      "name": "The Project Brief",
      "type": "n8n-nodes-base.set",
      "position": [
        304,
        336
      ]
    },
    {
      "id": "60c585a9-e57d-44e0-af5b-44462258cfd5",
      "name": "Wait for All Teams to Finish",
      "type": "n8n-nodes-base.wait",
      "position": [
        1344,
        336
      ]
    },
    {
      "id": "50394806-0236-4496-87ff-1837e3962a52",
      "name": "Assign Tasks to Teams",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        880,
        336
      ]
    },
    {
      "id": "054e1859-19d7-4a19-aa2f-1fc90d0f3645",
      "name": "Receive Work Order",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        320,
        1344
      ]
    },
    {
      "id": "7e67a781-3112-47b7-b86d-f1400c51578e",
      "name": "The AI Specialist",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1168,
        1520
      ]
    },
    {
      "id": "f1d64426-b1d7-47b7-91ae-e9e69a15b468",
      "name": "Description Team",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1072,
        960
      ]
    },
    {
      "id": "037ec2b0-0375-46da-b2b1-d24be3255909",
      "name": "Ad Copy Team",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1072,
        1152
      ]
    },
    {
      "id": "a1e5689a-92c6-41eb-9bf6-ac660bb51155",
      "name": "Email Team",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1072,
        1344
      ]
    },
    {
      "id": "a2c93cb6-a9cd-4757-b07c-8b9f7dfcd762",
      "name": "Report Back to Manager",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        1536,
        1152
      ]
    },
    {
      "id": "253832f6-85b3-40c5-96fc-0c31aacd884d",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        0
      ],
      "parameters": {
        "width": 1904,
        "height": 544,
        "content": "## The Main Workflow (The Project Manager)\n\nThis top flow is the **Project Manager**. Its only job is to start the project, assign the tasks, and wait for all the teams to report back that their work "
      }
    },
    {
      "id": "d36d7175-3f68-4c29-857a-1cfebb38905c",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        576
      ],
      "parameters": {
        "width": 1600,
        "height": 1680,
        "content": "## The Sub-Workflow (The Specialist Teams)\n\nThis bottom flow represents the **Specialist Teams**. It receives a single work order, does the job, and reports its status back to the Project Dashboard."
      }
    },
    {
      "id": "d253701b-c094-419b-995f-fc6db53082dd",
      "name": "The Project Dashboard (Code)",
      "type": "n8n-nodes-base.code",
      "position": [
        768,
        1872
      ]
    },
    {
      "id": "07e02a44-b6fb-4ef4-8e6b-8824d52a644f",
      "name": "Start Process",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        1568,
        2048
      ]
    },
    {
      "id": "835d363e-ea52-4ecd-9117-b0f43b1efade",
      "name": "Check Work Order Status",
      "type": "n8n-nodes-base.if",
      "position": [
        544,
        1344
      ]
    },
    {
      "id": "04ce6cc3-614c-4f96-96a6-785de4e6dd48",
      "name": "Is Project Complete?",
      "type": "n8n-nodes-base.if",
      "position": [
        1168,
        1872
      ]
    },
    {
      "id": "ff3cdc85-021a-45df-9648-96d504990abd",
      "name": "Resume Parent Workflow",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1568,
        1664
      ]
    },
    {
      "id": "5969807b-cf5b-46bd-8b43-25f819f4b844",
      "name": "Project Complete!",
      "type": "n8n-nodes-base.set",
      "position": [
        1808,
        336
      ]
    },
    {
      "id": "26a55dde-97c5-4015-83f7-052f1367349a",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        112
      ],
      "parameters": {
        "width": 448,
        "height": 400,
        "content": "### The Project Brief\n\nThis node defines all the independent tasks we need to accomplish for this project. Each task has a `process` name and the `data` it needs."
      }
    },
    {
      "id": "2e491b78-18ca-48df-adde-a95ae396a580",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        112
      ],
      "parameters": {
        "width": 448,
        "height": 400,
        "content": "### Assign Tasks (Fan-Out)\n\nThis is the **Fan-Out** moment. This node calls our sub-workflow for each task.\n\n**Crucial Setting:** `Wait for Sub-Workflow` is **OFF**. This means the main workflow doesn"
      }
    },
    {
      "id": "aa86ef59-70f4-46be-8a04-689cff0dbf15",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1168,
        112
      ],
      "parameters": {
        "width": 448,
        "height": 400,
        "content": "### Wait for Completion (Pause)\n\nThis node **pauses** the main workflow indefinitely. It's the Project Manager waiting in their office.\n\nIt will only resume when another node (in our case, the `Resume"
      }
    },
    {
      "id": "8a7ca4a6-c96a-4dbb-93fd-ee880b2fb69c",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1632,
        112
      ],
      "parameters": {
        "width": 448,
        "height": 400,
        "content": "### Project Complete! (Fan-In)\n\nThis is the **Fan-In** moment. This node only runs *after* the `Wait` node has been resumed.\n\nIt receives the final, aggregated data from all the parallel tasks and can"
      }
    },
    {
      "id": "d0300f28-73e8-4cae-a330-6f3c7bf99012",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        1184
      ],
      "parameters": {
        "width": null,
        "height": 336,
        "content": "### Receive Work Order\n\nThis is the entry point for the Specialist Teams. It receives a single task from the main workflow."
      }
    },
    {
      "id": "b81022c1-7aa2-4f85-b179-ec4d042eab70",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        672,
        992
      ],
      "parameters": {
        "width": 288,
        "height": 336,
        "content": "### The Dispatcher\n\nThis Switch node acts as a dispatcher, sending the work order to the correct Specialist Team based on the `process` name."
      }
    },
    {
      "id": "389ca11b-3bd4-4ec2-aa2d-3e6be5862697",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1008,
        800
      ],
      "parameters": {
        "width": 416,
        "height": 848,
        "content": "### The Specialist Teams\n\nThese three Agent nodes represent the different teams doing the actual work. In a real-world scenario, these could be complex sub-workflows themselves."
      }
    },
    {
      "id": "26073c89-a928-4a4e-a132-24fa0972255a",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1440,
        944
      ],
      "parameters": {
        "width": 288,
        "height": 384,
        "content": "### Report Back to Manager\n\nThis node doesn't talk to the main workflow directly. Instead, it calls the sub-workflow *again*, but this time with a `status` of `completed`. This is the signal for the P"
      }
    },
    {
      "id": "b115e3a8-d0b5-496d-ba05-738796debf06",
      "name": "Sticky Note14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        1552
      ],
      "parameters": {
        "width": 480,
        "height": 512,
        "content": "### The Project Dashboard (Code)\n\nThis is the most important node. It acts as the central brain and state manager for the entire operation, using **Static Data** as a shared whiteboard.\n\nIt handles tw"
      }
    },
    {
      "id": "fdaa6663-f551-444d-9c87-d6bc0ac1e518",
      "name": "Sticky Note15",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1456,
        1456
      ],
      "parameters": {
        "width": 320,
        "height": 368,
        "content": "### Resume Parent Workflow\n\nThis node is only triggered when the Project Dashboard confirms all tasks are complete. It makes a `POST` request to the `Wait` node's unique URL, sending the final results"
      }
    },
    {
      "id": "7b904616-c328-4381-9d9a-17708af4f1cd",
      "name": "Sticky Note16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        704
      ],
      "parameters": {
        "width": 496,
        "height": 816,
        "content": "### Alternative Architecture\n\nFor even more complex projects, you could replace this Switch node with a more modular design:\n\n- Each \"Team\" (Description, Ad Copy, etc.) could be its own separate, dedi"
      }
    },
    {
      "id": "530e4eb9-af73-46f1-af63-7332d1442b94",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1456,
        1840
      ],
      "parameters": {
        "width": 320,
        "height": 384,
        "content": "### Start Specialit Teams\n\nThis node doesn't talk to the main workflow directly. Instead, it calls the sub-workflow *again*, but this time with a `status` of `pending`. This is the signal for the Team"
      }
    },
    {
      "id": "c5b7742a-f636-484c-ac43-2d878a7cd21d",
      "name": "Sticky Note17",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -496,
        -256
      ],
      "parameters": {
        "width": 576,
        "height": 728,
        "content": "## ⚡️ Optimize Speed-Critical Workflows Using Parallel Processing (Fan-Out/Fan-In)\n\nStop letting sequential bottlenecks slow you down. This advanced template implements the architectural \"Fan-Out/Fan-"
      }
    },
    {
      "id": "fa065582-9815-4895-8d8e-f53bb8e708bb",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1840,
        1216
      ],
      "parameters": {
        "width": 416,
        "height": 1040,
        "content": "## Was this helpful? Let me know!\n[![clic](https://supastudio.ia2s.app/storage/v1/object/public/assets/n8n/clic_down_lucas.gif)](https://workflows.ac/form)\n\nI really hope this template helped you. You"
      }
    }
  ],
  "connections": {
    "Email Team": {
      "main": [
        [
          {
            "node": "Report Back to Manager",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Ad Copy Team": {
      "main": [
        [
          {
            "node": "Report Back to Manager",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start Project": {
      "main": [
        [
          {
            "node": "The Project Brief",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "The Dispatcher": {
      "main": [
        [
          {
            "node": "Description Team",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Ad Copy Team",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Email Team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out Tasks": {
      "main": [
        [
          {
            "node": "Assign Tasks to Teams",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Description Team": {
      "main": [
        [
          {
            "node": "Report Back to Manager",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "The AI Specialist": {
      "ai_languageModel": [
        [
          {
            "node": "Description Team",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Ad Copy Team",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Email Team",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "The Project Brief": {
      "main": [
        [
          {
            "node": "Split Out Tasks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Receive Work Order": {
      "main": [
        [
          {
            "node": "Check Work Order Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Project Complete?": {
      "main": [
        [
          {
            "node": "Resume Parent Workflow",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Start Process",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Assign Tasks to Teams": {
      "main": [
        [
          {
            "node": "Wait for All Teams to Finish",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Work Order Status": {
      "main": [
        [
          {
            "node": "The Dispatcher",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "The Project Dashboard (Code)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "The Project Dashboard (Code)": {
      "main": [
        [
          {
            "node": "Is Project Complete?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for All Teams to Finish": {
      "main": [
        [
          {
            "node": "Project Complete!",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}