{
  "name": "Discover & enrich decision-makers with Apollo and human verification",
  "nodes": [
    {
      "id": "ea812abb-5f9c-45d9-9cca-c82cd100fa94",
      "name": "Google Sheets Trigger",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        -2000,
        800
      ]
    },
    {
      "id": "8ac2066b-c84f-4556-a700-d95f015e6869",
      "name": "Apollo Organization Enrichment",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -460,
        800
      ]
    },
    {
      "id": "e38bf663-9d25-4fec-8900-605fd4f41f7b",
      "name": "Create Apollo People Search URL",
      "type": "n8n-nodes-base.code",
      "position": [
        580,
        720
      ]
    },
    {
      "id": "1f0d2075-e48f-4ddb-9de5-7f4c93df01a4",
      "name": "Loop Over Items (1000 per Batch)",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        360,
        800
      ]
    },
    {
      "id": "9bf3e9f1-e52f-4067-be7e-607c7178b0ca",
      "name": "Apollo Find Decision Makers",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        880,
        880
      ]
    },
    {
      "id": "9f92040a-2117-4710-8047-eddf7f299f3e",
      "name": "Add Contacts",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1180,
        520
      ]
    },
    {
      "id": "9a00bdf2-ef63-4119-8730-f84fa5a26224",
      "name": "Apollo Enrich Decision Makers",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1840,
        700
      ]
    },
    {
      "id": "b37bf514-8ab8-4f33-87da-0313ea48d95b",
      "name": "Create Apollo People Enrichment Payload",
      "type": "n8n-nodes-base.code",
      "position": [
        1620,
        620
      ]
    },
    {
      "id": "3d9c30f1-8b06-4b38-9d79-295d84bf150e",
      "name": "Enrich Contacts",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1840,
        420
      ]
    },
    {
      "id": "cb216a07-a75b-46a5-83b7-57c850a1dc69",
      "name": "Loop Over Items For Bulk Enrichment (10 per batch)",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1400,
        520
      ]
    },
    {
      "id": "1472e5a7-22d1-4a04-ab17-4a7dad6d0679",
      "name": "Determine Contact's Department",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        800,
        520
      ]
    },
    {
      "id": "5ae52935-7e99-4903-addd-a7e5acbba513",
      "name": "Apollo Organization Search",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1340,
        640
      ]
    },
    {
      "id": "2afafc0c-b991-4f1c-869b-294dae2b41e5",
      "name": "Add Company Website",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1120,
        640
      ]
    },
    {
      "id": "b56cb966-8a67-433a-aea7-1e338fede0c1",
      "name": "Approve Company Website",
      "type": "n8n-nodes-base.slack",
      "position": [
        -800,
        600
      ]
    },
    {
      "id": "1cc56d46-ae09-4f6a-97c7-da53acce7cb4",
      "name": "Add Company Details",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        140,
        800
      ]
    },
    {
      "id": "3def61fc-c321-45cd-9df4-4e2a1280f9ef",
      "name": "Select Unprocessed Companies",
      "type": "n8n-nodes-base.filter",
      "position": [
        -1780,
        800
      ]
    },
    {
      "id": "7c82c118-cd68-4f3e-ade1-1a048ea20152",
      "name": "Is Domain Already Provided?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1560,
        800
      ]
    },
    {
      "id": "56860bd2-8eb6-4db0-9f99-0aaa343b28bc",
      "name": "Summarize Core Business",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -240,
        800
      ]
    },
    {
      "id": "eb8ff4a6-caf6-4422-a757-c13937f5072e",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -280,
        -20
      ],
      "parameters": {
        "width": 700,
        "height": 240,
        "content": "# 🏢 Company Decision Maker Discovery\nThis workflow processes a list of companies (optionally with their websites to improve search accuracy) and outputs a curated list of decision-makers (e.g., CEO, C"
      }
    },
    {
      "id": "27d62622-cffa-482b-a093-2d11d83fd2a4",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1920,
        280
      ],
      "parameters": {
        "width": 380,
        "height": 400,
        "content": "## ⚙️ Workflow Trigger 👇\nThe main workflow is triggered by adding or updating a row in the Companies tab of a Google Sheet. You can provide the company's name and website (the domain will be extracted"
      }
    },
    {
      "id": "508dd949-43b0-4844-832f-99cfc7ffed82",
      "name": "Split Out Batched Decision Maker Response",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        580,
        520
      ]
    },
    {
      "id": "fb97afb4-2e84-4ac3-b3e9-5754ff87c28d",
      "name": "Split Out Batched Enrichment Response",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1620,
        420
      ]
    },
    {
      "id": "f62844c7-6c37-47df-9646-48ec0dfeb73e",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1800,
        980
      ],
      "parameters": {
        "width": 280,
        "height": 240,
        "content": "### 🔄 Status Management ☝️\nTo avoid unintentional duplicate lead extraction from companies, we use a filter to retrieve only companies where the value of the Status column isn't \"Processed\". Note that"
      }
    },
    {
      "id": "5c688ca9-eea6-4322-9ed2-a8caeb7f3ac1",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -480,
        1000
      ],
      "parameters": {
        "width": 400,
        "height": 180,
        "content": "### 🏢 Company Enrichment ☝️\nWith company domains present in the spreadsheet, we utilize the Apollo Organization Enrichment endpoint to extract details about the companies. Subsequently, we generate a "
      }
    },
    {
      "id": "1ab9bcc2-de96-42ba-a4d7-c08fbbe6f5d6",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        340,
        1100
      ],
      "parameters": {
        "width": 420,
        "height": 220,
        "content": "### 👥 Decision Maker Discovery ☝️\nWe employ the Apollo People Search endpoint to find decision-makers at the companies. A crucial query parameter is q_organization_domains_list[], which accepts up to "
      }
    },
    {
      "id": "c841dc57-39b6-450c-8852-5391585b94df",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        540,
        360
      ],
      "parameters": {
        "width": 440,
        "height": 140,
        "content": "### 🧠 Data Processing and Upsertion 👇\nA Split Out node enables handling the batched API response. We generate each decision maker's department based on their job title using an LLM call and upsert the"
      }
    },
    {
      "id": "d04f3f78-2023-4e13-935f-b799e5d9e884",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1340,
        940
      ],
      "parameters": {
        "width": 440,
        "height": 200,
        "content": "### 📧 Contact Enrichment ☝️\nSince the Apollo People Search endpoint doesn't retrieve email addresses and phone numbers, we make additional calls to the Bulk People Enrichment endpoint to enrich data f"
      }
    },
    {
      "id": "5d4c88b5-9102-44c3-b0a9-59c18e744417",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2020,
        320
      ],
      "parameters": {
        "width": 280,
        "height": 260,
        "content": "### ✅ Verified Contacts Filtering\nAt this stage, the Contacts tab may contain both verified and unverified email addresses. We filter and select only contacts with verified email addresses using the f"
      }
    },
    {
      "id": "a9ff1d43-7eb8-4bad-87b5-bff8d1e7df99",
      "name": "Send Weekly Report",
      "type": "n8n-nodes-base.slack",
      "position": [
        -1360,
        1420
      ]
    },
    {
      "id": "ebe891a3-c999-4fdf-923e-4cbcdd73c17e",
      "name": "Retrieve Verified Leads",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1800,
        1420
      ]
    },
    {
      "id": "80b3eb7e-a895-4a65-b63d-9834374cf49a",
      "name": "Derive Past Week's Lead Gen. Metrics",
      "type": "n8n-nodes-base.code",
      "position": [
        -1580,
        1420
      ]
    },
    {
      "id": "617f0387-eec0-4695-a0b1-79a33ce6c6d5",
      "name": "Weekly Report Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -2020,
        1420
      ]
    },
    {
      "id": "60bed78a-8236-4193-904e-b5daa51763fa",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1820,
        1620
      ],
      "parameters": {
        "width": 560,
        "height": 260,
        "content": "### 📊 Weekly Report ☝️\nThis step is configured to automatically send out a summary message every week, reporting the number of new verified leads discovered over the past 7 days.\n![weekly-report.png]("
      }
    },
    {
      "id": "d68afbc7-1a31-4da4-a074-464ab90a6596",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -960,
        200
      ],
      "parameters": {
        "width": 340,
        "height": 380,
        "content": "### 🧑‍💼 Human-in-the-Loop Verification 👇\nSince the retrieved website may not always be accurate, a human-in-the-loop step (via Slack) is required to verify the returned websites in the spreadsheet, ma"
      }
    },
    {
      "id": "cfed40fb-42bf-4d8b-a4d2-c161aeebacd3",
      "name": "Merge Rows Which Now All Contain Domains",
      "type": "n8n-nodes-base.merge",
      "position": [
        -680,
        800
      ]
    }
  ],
  "connections": {
    "Add Contacts": {
      "main": [
        [
          {
            "node": "Loop Over Items For Bulk Enrichment (10 per batch)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Company Details": {
      "main": [
        [
          {
            "node": "Loop Over Items (1000 per Batch)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Company Website": {
      "main": [
        [
          {
            "node": "Approve Company Website",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge Rows Which Now All Contain Domains",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets Trigger": {
      "main": [
        [
          {
            "node": "Select Unprocessed Companies",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Weekly Report Trigger": {
      "main": [
        [
          {
            "node": "Retrieve Verified Leads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Retrieve Verified Leads": {
      "main": [
        [
          {
            "node": "Derive Past Week's Lead Gen. Metrics",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Summarize Core Business": {
      "main": [
        [
          {
            "node": "Add Company Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Apollo Organization Search": {
      "main": [
        [
          {
            "node": "Add Company Website",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Apollo Find Decision Makers": {
      "main": [
        [
          {
            "node": "Loop Over Items (1000 per Batch)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Domain Already Provided?": {
      "main": [
        [
          {
            "node": "Merge Rows Which Now All Contain Domains",
            "type": "main",
            "index": 1
          }
        ],
        [
          {
            "node": "Apollo Organization Search",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Select Unprocessed Companies": {
      "main": [
        [
          {
            "node": "Is Domain Already Provided?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Apollo Enrich Decision Makers": {
      "main": [
        [
          {
            "node": "Loop Over Items For Bulk Enrichment (10 per batch)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Apollo Organization Enrichment": {
      "main": [
        [
          {
            "node": "Summarize Core Business",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Determine Contact's Department": {
      "main": [
        [
          {
            "node": "Add Contacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Apollo People Search URL": {
      "main": [
        [
          {
            "node": "Apollo Find Decision Makers",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items (1000 per Batch)": {
      "main": [
        [
          {
            "node": "Split Out Batched Decision Maker Response",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create Apollo People Search URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Derive Past Week's Lead Gen. Metrics": {
      "main": [
        [
          {
            "node": "Send Weekly Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out Batched Enrichment Response": {
      "main": [
        [
          {
            "node": "Enrich Contacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Apollo People Enrichment Payload": {
      "main": [
        [
          {
            "node": "Apollo Enrich Decision Makers",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Rows Which Now All Contain Domains": {
      "main": [
        [
          {
            "node": "Apollo Organization Enrichment",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out Batched Decision Maker Response": {
      "main": [
        [
          {
            "node": "Determine Contact's Department",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items For Bulk Enrichment (10 per batch)": {
      "main": [
        [
          {
            "node": "Split Out Batched Enrichment Response",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create Apollo People Enrichment Payload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}