AutomationFlowsAI & RAG › Indeed Job Scraper with AI Filtering & Company Research Using Apify and Tavily

Indeed Job Scraper with AI Filtering & Company Research Using Apify and Tavily

ByAdrian Bent @adrian-bent on n8n.io

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Webhook trigger★★★★☆ complexityAI-powered23 nodesOpenAIGoogle Sheets@Tavily/N8N Nodes Tavily@Apify/N8N Nodes Apify
AI & RAG Trigger: Webhook Nodes: 23 Complexity: ★★★★☆ AI nodes: yes Added:
Indeed Job Scraper with AI Filtering & Company Research Using Apify and Tavily — n8n workflow card showing OpenAI, Google Sheets, @Tavily/N8N Nodes Tavily integration

This workflow corresponds to n8n.io template #6076 — we link there as the canonical source.

This workflow follows the Apifyn8N Nodes Apify → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "PfHXlbmYsQxVXvIq",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "AHIJSfA",
  "tags": [
    {
      "id": "ja482qGm2qVdCtOo",
      "name": "Lead Gen",
      "createdAt": "2025-06-27T17:29:51.052Z",
      "updatedAt": "2025-06-27T17:29:51.052Z"
    }
  ],
  "nodes": [
    {
      "id": "d55ce612-7462-4329-b6b2-4785eb3401f6",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1140,
        -380
      ],
      "parameters": {
        "path": "8b86cbbd-8f0f-424d-86b8-5f2cdb3b28a6",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "ad3bbe0a-b708-41d7-b115-23415c9e525f",
      "name": "Job Filter",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "notes": "Filter needs tuning",
      "position": [
        -340,
        -120
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "GPT-4.1-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "=You are an helpful, intelligent job filter assistant working for an AI Automation Agency. Your task is to analyze job listings (from platforms like Indeed, LinkedIn, etc.) and **determine whether a job is a good fit for AI automation**.\n\nFocus on identifying **low-complexity roles** with tasks that can be automated, especially if the company is hiring urgently, high-volume or in bulk.\n\nOnly allow and tag the following/similar job types as **\"Relevant\"**:\n\n1. Virtual Assistant / Admin Assistant\n2. Appointment Setter / Sales Development Rep (SDR)\n3. Data Entry Clerk / Order Entry\n4. E-Commerce Customer Support / Order Processing\n5. Logistics Coordinator / Delivery Dispatcher\n6. Cleaning Services Coordinator / Scheduler\n7. **Remote** Customer Service Representative or Support Roles\n\nExclude roles that:\n* Are in **heavily regulated industries** (e.g., healthcare)\n* Require **certifications or technical degrees**\n### Bonus Filters to check:\n\n* Keywords: *\"hiring urgently\"*, *\"immediate start\"*, *\"remote admin\"*, *\"booking coordinator\"*, etc.\n* Look for industries like: ecom, trades, real estate, service-based businesses, construction, or local logistics.\n\n### Rules: ###\n- Allow jobs for lead generation, remote customer service and ones approved based on filter.\n- Disallow large directorial positions, \"head of\" positions, etc."
            },
            {
              "content": "=Your task is to take as input a job post from Indeed or LinkedIn containing the title, part of the description, and determine whether or not it is relevant to us.\n\nReturn your answer in JSON using this format:\n{\"verdict\":\"true or false\"\n\"jobUrl\":\"\"}\n\n"
            },
            {
              "content": "={\"jobUrl: \"{{ $json.jobUrl }}\",\n\"jobPost\":\"{{ $json.descriptionText.replaceAll('\\n', ' ').substring(0,1500) }}}"
            }
          ]
        },
        "simplify": false,
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "notesInFlow": true,
      "typeVersion": 1.8
    },
    {
      "id": "26b4bff3-7743-4987-aa0e-859ae1706ff2",
      "name": "Get row(s) in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "here",
      "position": [
        -780,
        -100
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "={{ $json.companyName}}",
              "lookupColumn": "companyName"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": 1282464007
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "1pQVwVFZ99hCjktMy-YDF3nYmZLL4yheF10OR5-7Apbw"
        },
        "combineFilters": "OR"
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "executeOnce": false,
      "notesInFlow": true,
      "typeVersion": 4.6,
      "alwaysOutputData": false
    },
    {
      "id": "3991abf7-87cd-4909-8ee3-5609a14cd751",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        20,
        -120
      ],
      "parameters": {
        "options": {
          "ignoreConversionErrors": true
        },
        "assignments": {
          "assignments": [
            {
              "id": "10458cd0-e255-4ed3-a386-91b63cbb3ea2",
              "name": "verdict",
              "type": "array",
              "value": "={{ $json.choices[0].message.content.verdict }}"
            },
            {
              "id": "ca66add5-bc6d-4130-8c7a-9f3167f76ff0",
              "name": "jobUrl",
              "type": "string",
              "value": "={{ $json.choices[0].message.content.jobUrl }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b4f55707-292c-4cb1-888c-e1dcd46a2361",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -820,
        -440
      ],
      "parameters": {
        "width": 1020,
        "height": 260,
        "content": "## Filter oncoming data "
      },
      "typeVersion": 1
    },
    {
      "id": "183c27ef-a321-4773-afee-c5108995136c",
      "name": "Filter Outlet",
      "type": "n8n-nodes-base.merge",
      "notes": "What do we not have in our DB?",
      "position": [
        -540,
        -120
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "joinMode": "keepNonMatches",
        "outputDataFrom": "input1",
        "fieldsToMatchString": "companyName"
      },
      "notesInFlow": true,
      "typeVersion": 3.2
    },
    {
      "id": "293562a2-3585-473a-8a99-df7aa90df9b8",
      "name": "Remove Duplicates",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        40,
        -360
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {},
        "fieldsToCompare": "companyName"
      },
      "typeVersion": 2
    },
    {
      "id": "3f489587-9149-416d-8e1c-c3b788403478",
      "name": "True Jobs",
      "type": "n8n-nodes-base.merge",
      "position": [
        -540,
        120
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "fieldsToMatchString": "jobUrl"
      },
      "typeVersion": 3.2,
      "alwaysOutputData": true
    },
    {
      "id": "5f87e904-42ba-4585-983f-d31150a1c6da",
      "name": "Append row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueRegularOutput",
      "position": [
        0,
        200
      ],
      "parameters": {
        "columns": {
          "value": {
            "email": "={{ $('True Jobs').item.json.emails }}",
            "title": "={{ $('True Jobs').item.json.title }}",
            "jobUrl": "={{ $('True Jobs').item.json.jobUrl }}",
            "isRemote": "={{ $('True Jobs').item.json.isRemote }}",
            "jobType/0": "={{ $('True Jobs').item.json.jobType[0] }}",
            "scrapedCeo": "={{ $('True Jobs').item.json.companyCeo.name }}",
            "companyName": "={{ $('True Jobs').item.json.companyName }}",
            "companyCeo/name": "={{ $json.answer.split(\":\").last().replaceAll(\"}\", \"\") }}",
            "descriptionText": "={{ $('True Jobs').item.json.descriptionText }}",
            "location/country": "={{ $('True Jobs').item.json.location.formattedAddressShort }} in {{ $('True Jobs').item.json.location.country }}",
            "salary/salaryText": "={{ $('True Jobs').item.json.salary.salaryText }} {{ $('True Jobs').item.json.salary.salaryCurrency }}",
            "companyDescription": "={{ $('True Jobs').item.json.companyDescription }}",
            "companyNumEmployees": "={{ $('True Jobs').item.json.companyNumEmployees }}",
            "hiringDemand/isUrgentHire": "={{ $('True Jobs').item.json.hiringDemand.isUrgentHire }}",
            "companyLinks/corporateWebsite": "={{ $('True Jobs').item.json.companyLinks.corporateWebsite }}",
            "hiringDemand/isHighVolumeHiring": "={{ $('True Jobs').item.json.hiringDemand.isHighVolumeHiring }}"
          },
          "schema": [
            {
              "id": "jobUrl",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "jobUrl",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "descriptionText",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "descriptionText",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "hiringDemand/isHighVolumeHiring",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "hiringDemand/isHighVolumeHiring",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "hiringDemand/isUrgentHire",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "hiringDemand/isUrgentHire",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "isRemote",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "isRemote",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "jobType/0",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "jobType/0",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "companyCeo/name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "companyCeo/name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "scrapedCeo",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "scrapedCeo",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "companyName",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "companyName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "companyDescription",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "companyDescription",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "companyLinks/corporateWebsite",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "companyLinks/corporateWebsite",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "companyNumEmployees",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "companyNumEmployees",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "location/country",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "location/country",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "salary/salaryText",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "salary/salaryText",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "useAppend": true,
          "cellFormat": "USER_ENTERED"
        },
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": 1282464007
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "1pQVwVFZ99hCjktMy-YDF3nYmZLL4yheF10OR5-7Apbw"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "27d36445-adb8-474a-93ca-2d91b5d69926",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -820,
        -180
      ],
      "parameters": {
        "color": 5,
        "width": 1020,
        "height": 260,
        "content": "## Filter job postings"
      },
      "typeVersion": 1
    },
    {
      "id": "2170a86b-f865-4dac-8187-5a0d9751f9f7",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -580,
        60
      ],
      "parameters": {
        "color": 4,
        "width": 900,
        "height": 240,
        "content": "## Update DataBase"
      },
      "typeVersion": 1
    },
    {
      "id": "99083968-06b6-4623-8763-ff0655666132",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "disabled": true,
      "position": [
        -1140,
        -220
      ],
      "parameters": {
        "color": 3,
        "width": 320,
        "height": 380,
        "content": "## Notes\n** When the actor runs, webhook gets activated, the dataset run gets queried to use as data to filter and update DB with non-existing, relevant jobs to hit up for AI Automaton.\n\n## To Add\n** For Update Database section, get decision maker, their email and some reseach on them. Use researched data to personalise a icebreaker.\n** Apps: Anymailfinder, Perplexity!!\n**Filter for exsisting job post url before gpt filter to avoid passing gpt a exsisting approved description!!\n"
      },
      "typeVersion": 1
    },
    {
      "id": "48bee7fe-2e01-440b-a00d-31c34da3caad",
      "name": "Find DM",
      "type": "@tavily/n8n-nodes-tavily.tavily",
      "onError": "continueRegularOutput",
      "position": [
        -160,
        100
      ],
      "parameters": {
        "query": "=From the website: {{ $json.companyLinks.corporateWebsite }}, find the company information about the company, including name and a decision maker (CEO/OWNER/PRESIDENT/FOUNDER/etc/) at the company (return 'null' if can't find), use accurate sources.\n\nPlease output the result using the following JSON format:\n\n{\n\"companyName\":\"\",\n\"companyWebsite\":\"\",\n\"decisionMaker\":\"\"\n}",
        "options": {
          "topic": "general",
          "max_results": 9,
          "search_depth": "advanced",
          "include_answer": "basic",
          "exclude_domains": [],
          "include_domains": [
            "={{ $json.companyLinks.corporateWebsite }}",
            "={{ $json.jobUrl }}"
          ],
          "chunks_per_source": 3
        }
      },
      "credentials": {
        "tavilyApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "1d67acb7-10c2-464f-a856-b90d13995245",
      "name": "Loop Over Items1",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -780,
        -380
      ],
      "parameters": {
        "options": {},
        "batchSize": 55
      },
      "typeVersion": 3
    },
    {
      "id": "3588567e-735d-4173-9c20-554d6b5fac5e",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        160,
        120
      ],
      "parameters": {
        "unit": "minutes",
        "amount": 1.5
      },
      "typeVersion": 1.1
    },
    {
      "id": "2949a5d3-337d-466b-b9d9-569caa820a11",
      "name": "Get dataset items",
      "type": "@apify/n8n-nodes-apify.apify",
      "notes": "Incorrect Datasetid (Static)",
      "position": [
        -940,
        -380
      ],
      "parameters": {
        "limit": 500,
        "resource": "Datasets",
        "datasetId": "={{ $json.body.resource.defaultDatasetId }}",
        "operation": "Get items"
      },
      "credentials": {
        "apifyApi": {
          "name": "<your credential>"
        }
      },
      "notesInFlow": true,
      "typeVersion": 1
    },
    {
      "id": "62f24a19-830b-45eb-a771-0417897d16f4",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -820,
        60
      ],
      "parameters": {
        "color": 5,
        "height": 240,
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "18692992-20d3-4d3d-bde8-c3e61058f78d",
      "name": "Edit Fields1",
      "type": "n8n-nodes-base.set",
      "position": [
        -460,
        -440
      ],
      "parameters": {
        "include": "except",
        "options": {
          "ignoreConversionErrors": true
        },
        "assignments": {
          "assignments": [
            {
              "id": "56bb2e1c-85b9-4991-b585-cb96e8de055b",
              "name": "companyNumEmployees",
              "type": "string",
              "value": "=50 to 100"
            }
          ]
        },
        "excludeFields": "descriptionHtml, benefits, occupation, attributes, shiftAndSchedule, applyUrl, requirements",
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "bffa0a7c-2915-4445-82c6-a870f7655f25",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        -300,
        -300
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "8d2a1626-f352-4a38-ac95-32d399192bc2",
      "name": "Filter 2",
      "type": "n8n-nodes-base.filter",
      "notes": "Website & Employees < 250?",
      "onError": "continueRegularOutput",
      "position": [
        -140,
        -440
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "f33b1588-35b5-4d2f-ad8b-30e6541e9c07",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.companyLinks.corporateWebsite }}",
              "rightValue": ""
            },
            {
              "id": "0eead757-d057-4a89-aacd-4506f311615d",
              "operator": {
                "type": "number",
                "operation": "lt"
              },
              "leftValue": "={{ $json.companyNumEmployees.split(\"to\").last().replaceAll(\"/[,+]\\g\",\"\").toNumber() }}",
              "rightValue": 250
            }
          ]
        },
        "looseTypeValidation": true
      },
      "notesInFlow": true,
      "typeVersion": 2.2
    },
    {
      "id": "cbc1eb75-402e-41f4-b555-be79c7be0513",
      "name": "Filter 1",
      "type": "n8n-nodes-base.if",
      "notes": "#Employees exist?",
      "position": [
        -620,
        -300
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "51a65163-dd31-465a-81a9-878255b4b280",
              "operator": {
                "type": "string",
                "operation": "notExists",
                "singleValue": true
              },
              "leftValue": "={{ $json.companyNumEmployees }}",
              "rightValue": ""
            }
          ]
        }
      },
      "notesInFlow": true,
      "typeVersion": 2.2
    },
    {
      "id": "f7e49141-f0f4-400f-8611-95418900d9d8",
      "name": "Relevant Job posting?",
      "type": "n8n-nodes-base.if",
      "notes": "Relevant Job posting?",
      "position": [
        -780,
        180
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "d70b210c-1226-4300-9c04-90beb8e1e9f3",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.verdict }}",
              "rightValue": "true"
            }
          ]
        }
      },
      "notesInFlow": false,
      "typeVersion": 2.2
    },
    {
      "id": "93054773-eae8-4459-a737-1eae8892fcee",
      "name": "Anything to add?",
      "type": "n8n-nodes-base.if",
      "position": [
        -360,
        100
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "f82f5b65-bf3a-46f9-830e-23f1a132031f",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{$json.jobUrl}}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    }
  ],
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c5d2a838-310b-4a2b-89e2-6cae8d87f4e0",
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Filter 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find DM": {
      "main": [
        [
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "Get dataset items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter 1": {
      "main": [
        [
          {
            "node": "Edit Fields1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Filter 2": {
      "main": [
        [
          {
            "node": "Remove Duplicates",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "True Jobs": {
      "main": [
        [
          {
            "node": "Anything to add?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Job Filter": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Relevant Job posting?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields1": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Outlet": {
      "main": [
        [
          {
            "node": "Job Filter",
            "type": "main",
            "index": 0
          },
          {
            "node": "True Jobs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Anything to add?": {
      "main": [
        [
          {
            "node": "Find DM",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items1": {
      "main": [
        [],
        [
          {
            "node": "Filter 1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get dataset items": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Remove Duplicates": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet",
            "type": "main",
            "index": 0
          },
          {
            "node": "Filter Outlet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append row in sheet": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet": {
      "main": [
        [
          {
            "node": "Filter Outlet",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Relevant Job posting?": {
      "main": [
        [
          {
            "node": "True Jobs",
            "type": "main",
            "index": 1
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Source: https://n8n.io/workflows/6076/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Who this is for

Gmail Trigger, Google Drive, Gmail +3
AI & RAG

All results are then saved automatically into Google Sheets, ready for lead generation, enrichment, or outreach.

@Apify/N8N Nodes Apify, OpenAI, Google Sheets
AI & RAG

A fully automated content engine that researches, writes, scores, and visualizes LinkedIn posts — built with n8n, OpenAI, Perplexity, and Replicate.

OpenAI, HTTP Request, Google Sheets +1
AI & RAG

Clone_Viral_TikToks_with_AI_Avatars___Auto_Post_to_9_Platforms_using_Perplexity___Blotato. Uses httpRequest, telegramTrigger, openAi, googleSheets. Event-driven trigger; 42 nodes.

HTTP Request, Telegram Trigger, OpenAI +2
AI & RAG

1-Clone_Viral_TikToks_with_AI_Avatars___Auto_Post_to_9_Platforms_using_Perplexity___Blotato. Uses httpRequest, telegramTrigger, openAi, googleSheets. Event-driven trigger; 42 nodes.

HTTP Request, Telegram Trigger, OpenAI +2