{
  "id": "jWtAzmLnP037vKY3",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Scrape Upwork Job Listings & Generate Daily Email Report with Apify and Google Sheets",
  "tags": [],
  "nodes": [
    {
      "id": "6d9a33ff-82da-4139-a749-bac62bc01ecf",
      "name": "Delete rows or columns from sheet",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueRegularOutput",
      "position": [
        580,
        420
      ],
      "parameters": {
        "operation": "delete",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 526241451,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit#gid=526241451",
          "cachedResultName": "15 July 2025"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit?usp=drivesdk",
          "cachedResultName": "apify upwork scraped data"
        },
        "authentication": "serviceAccount",
        "numberToDelete": "={{ $('Load Today\u2019s Daily Jobs\t').all().length}}"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.6,
      "alwaysOutputData": true
    },
    {
      "id": "55a3d757-0537-4ec6-b27d-e3c30f953a41",
      "name": "Loop Through Keywords\t",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -300,
        620
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "12267de9-f78a-446e-9c94-19a95d859edc",
      "name": "Trigger Manual Run\t",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -740,
        620
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "8f332163-712f-4cbf-bb2d-fb8b189e81e2",
      "name": "Fetch Keywords from Google Sheet\t",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -520,
        620
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 602446703,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit#gid=602446703",
          "cachedResultName": "All Keywords combined"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit?usp=drivesdk",
          "cachedResultName": "apify upwork scraped data"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "7d5e9736-8457-4548-a8ba-78d72fff7ced",
      "name": "Trigger Apify Scraper\t",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -80,
        620
      ],
      "parameters": {
        "url": "https://api.apify.com/v2/acts/XYTgO05GT5qAoSlxy/runs",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n    \"clientHistory\": [\n        \"noHires\",\n        \"1to9Hires\",\n        \"10+Hires\"\n    ],\n    \"experienceLevel\": [\n        \"entry\",\n        \"intermediate\",\n        \"expert\"\n    ],\n     \"maxJobAge\": {\n        \"value\": 23,\n        \"unit\": \"hours\"\n    },\n    \"paymentVerified\": false,\n    \"query\": \"{{ $json.Keywords }}\",\n    \"page\": 1,\n    \"perPage\": 100,\n    \"sort\": \"newest\"\n} ",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "b0e3b87d-b88e-4960-86f7-a4d408114e1d",
      "name": "Wait for Apify Completion\t",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        140,
        620
      ],
      "parameters": {
        "url": "=https://api.apify.com/v2/actor-runs/{{ $json.data.id }}",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "waitForFinish",
              "value": "150"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "cc44ba4d-e04e-43b7-a2e9-3bb01aea0572",
      "name": "Delay Before Dataset Read\t",
      "type": "n8n-nodes-base.wait",
      "position": [
        360,
        620
      ],
      "parameters": {
        "amount": 20
      },
      "typeVersion": 1.1
    },
    {
      "id": "0b738f7e-2ba4-4963-9ad4-631b80e1be7e",
      "name": "Fetch Scraped Job Dataset\t",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        580,
        620
      ],
      "parameters": {
        "url": "=https://api.apify.com/v2/datasets/{{ $json.data.defaultDatasetId }}/items",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2,
      "alwaysOutputData": true
    },
    {
      "id": "b033a7cd-e23c-4e80-8f24-baa2a4b5983b",
      "name": "Process Raw Job Data\t",
      "type": "n8n-nodes-base.code",
      "onError": "continueRegularOutput",
      "position": [
        800,
        620
      ],
      "parameters": {
        "jsCode": "const now = new Date();\nconst hoursThreshold = 23;\nconst thresholdTime = new Date(now.getTime() - hoursThreshold * 60 * 60 * 1000);\n\nconst filteredJobs = $input.all().filter(item => {\n  const jobDate = new Date(item.json.absoluteDate);\n  return jobDate > thresholdTime;\n});\n\nreturn filteredJobs;\n"
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "8f9d5563-0edc-445d-ba03-ec392fded600",
      "name": "Save Jobs to Daily Sheet\t",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueRegularOutput",
      "position": [
        1020,
        620
      ],
      "parameters": {
        "columns": {
          "value": {
            "url": "={{ $json.url  == undefined ? \"--\" : $json.url}}",
            "tags": "={{ $json.tags  == undefined ? \"--\" : $json.tags}}",
            "title": "={{ $json.title == undefined ? \"No records found in last 24 hours\": $json.title }}",
            "budget": "={{ $json.budget  == undefined ? \"--\" : $json.budget}}",
            "jobType": "={{ $json.jobType  == undefined ? \"--\" : $json.jobType}}",
            "description": "={{ $json.description  == undefined ? \"--\" : $json.description}}",
            "absoluteDate": "={{ $json.absoluteDate  == undefined ? \"--\" : $json.absoluteDate}}",
            "relativeDate": "={{ $json.relativeDate  == undefined ? \"--\" : $json.relativeDate}}",
            "Keyword Title": "={{ $('Loop Through Keywords\t').item.json.Keywords }}",
            "clientLocation": "={{ $json.clientLocation  == undefined ? \"Not Found\" : $json.clientLocation}}",
            "experienceLevel": "={{ $json.experienceLevel  == undefined ? \"--\" : $json.experienceLevel}}",
            "paymentVerified": "={{ $json.paymentVerified  == undefined ? \"--\" : $json.paymentVerified}}",
            "allowedApplicantCountries": "={{ $json.allowedApplicantCountries  == undefined ? \"Not Found\" : $json.allowedApplicantCountries}}"
          },
          "schema": [
            {
              "id": "title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "budget",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "budget",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "relativeDate",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "relativeDate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "absoluteDate",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "absoluteDate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "jobType",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "jobType",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "experienceLevel",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "experienceLevel",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "paymentVerified",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "paymentVerified",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tags",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "clientLocation",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "clientLocation",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "allowedApplicantCountries",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "allowedApplicantCountries",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Keyword Title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Keyword Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Done by",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Done by",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Client details found",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Client details found",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Client name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Client name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Company name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email ID",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Email ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Phone Number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Phone Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LinkedIn",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "LinkedIn",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Website URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Website URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Follow up status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Follow up status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "1st Email sent date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "1st Email sent date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 526241451,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit#gid=526241451",
          "cachedResultName": "15 July 2025"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit?usp=drivesdk",
          "cachedResultName": "apify upwork scraped data"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "6a3c8073-7559-4552-82f2-29ff50d6e069",
      "name": "Update Keyword Job Count\t",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueRegularOutput",
      "position": [
        1240,
        695
      ],
      "parameters": {
        "columns": {
          "value": {
            "Keywords": "={{ $('Loop Through Keywords\t').item.json.Keywords }}",
            "Total Count 15-07-2025": "={{ $('Process Raw Job Data\t').first().json.title == undefined ? \"0\" : $('Process Raw Job Data\t').all().length}}"
          },
          "schema": [
            {
              "id": "Keywords",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Keywords",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Keyword Type",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Keyword Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 15-07-2025",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Total Count 15-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 14-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 14-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 11-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 11-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 10-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 10-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 09-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 09-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 08-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 08-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 07-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 07-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 04-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 04-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 03-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 03-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 02-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 02-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 01-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 01-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 30-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 30-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 27-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 27-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 26-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 26-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 25-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 25-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 24-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 24-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 23-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 23-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 20-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 20-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 19-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 19-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 18-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 18-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 17-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 17-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 16-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 16-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 13-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 13-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 12-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 12-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 11-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 11-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 10-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 10-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 09-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 09-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 06-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 06-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 05-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 05-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 04-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 04-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 03-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 03-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Keywords"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 602446703,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit#gid=602446703",
          "cachedResultName": "All Keywords combined"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit?usp=drivesdk",
          "cachedResultName": "apify upwork scraped data"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6,
      "alwaysOutputData": true
    },
    {
      "id": "beada4c6-c622-4c44-ac14-4d3273b89db4",
      "name": "Load Today\u2019s Daily Jobs\t",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueRegularOutput",
      "position": [
        -80,
        420
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 526241451,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit#gid=526241451",
          "cachedResultName": "15 July 2025"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit?usp=drivesdk",
          "cachedResultName": "apify upwork scraped data"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.6
    },
    {
      "id": "772ba1be-e39a-4393-a411-ea0570fc049e",
      "name": "Remove Duplicates by Title/Desc\t",
      "type": "n8n-nodes-base.code",
      "position": [
        140,
        420
      ],
      "parameters": {
        "jsCode": "\n// Initialize a Set to track seen combinations\nconst seen = new Set();\nconst uniqueItems = [];\n\nfor (const item of  $input.all()) {\n  const title = item.json.title?.trim().toLowerCase() || '';\n  const description = item.json.description?.trim().toLowerCase() || '';\n  const key = `${title}|||${description}`;\nif(title != \"No records found in last 24 hours\".trim().toLowerCase()){\n  if (!seen.has(key)) {\n    seen.add(key);\n    uniqueItems.push(item);\n  }\n}\n}\n\nreturn uniqueItems;\n\n\n\nreturn $input.all();"
      },
      "typeVersion": 2
    },
    {
      "id": "2b4782b2-6388-4414-a537-28d45b5b751c",
      "name": "Save Clean Job Data\t",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueRegularOutput",
      "position": [
        360,
        420
      ],
      "parameters": {
        "columns": {
          "value": {
            "url": "={{ $json.url }}",
            "tags": "={{ $json.tags }}",
            "title": "={{ $json.title }}",
            "budget": "={{ $json.budget }}",
            "jobType": "={{ $json.jobType }}",
            "description": "={{ $json.description }}",
            "absoluteDate": "={{ $json.absoluteDate }}",
            "relativeDate": "={{ $json.relativeDate }}",
            "Keyword Title": "={{ $json['Keyword Title'] }}",
            "clientLocation": "={{ $json.clientLocation }}",
            "experienceLevel": "={{ $json.experienceLevel }}",
            "paymentVerified": "={{ $json.paymentVerified }}",
            "allowedApplicantCountries": "={{ $json.allowedApplicantCountries }}"
          },
          "schema": [
            {
              "id": "title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "budget",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "budget",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "relativeDate",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "relativeDate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "absoluteDate",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "absoluteDate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "jobType",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "jobType",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "experienceLevel",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "experienceLevel",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "paymentVerified",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "paymentVerified",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tags",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "clientLocation",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "clientLocation",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "allowedApplicantCountries",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "allowedApplicantCountries",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Keyword Title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Keyword Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Done by",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Done by",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Client details found",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Client details found",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Client name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Client name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Company name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email ID",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Email ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Phone Number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Phone Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LinkedIn",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "LinkedIn",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Website URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Website URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Follow up status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Follow up status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "1st Email sent date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "1st Email sent date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 526241451,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit#gid=526241451",
          "cachedResultName": "15 July 2025"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit?usp=drivesdk",
          "cachedResultName": "apify upwork scraped data"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": false,
      "typeVersion": 4.6
    },
    {
      "id": "6403bebf-0937-405d-9f29-536aaff298bb",
      "name": "Reload Clean Job Data\t",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        800,
        420
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 602446703,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit#gid=602446703",
          "cachedResultName": "All Keywords combined"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit?usp=drivesdk",
          "cachedResultName": "apify upwork scraped data"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "1a9524a6-53c0-4db2-802a-deb418e46255",
      "name": "Generate Keyword Summary Stats\t",
      "type": "n8n-nodes-base.code",
      "position": [
        1020,
        420
      ],
      "parameters": {
        "jsCode": "// Get keyword rows\nconst keywordsInput = $('Reload Clean Job Data\t').all().map(item => item.json.Keywords);\n\n// Initialize keyword count map\nconst counts = [];\n\n// Go through each keyword\nfor (const keyword of keywordsInput) {\n\tlet count = 0;\n\n\tfor (const job of $('Save Clean Job Data\t').all()) {\n\t\tconst content = job.json['Keyword Title'];\n\t\tif (content.includes(keyword)) {\n            if(job.json[\"title\"] != \"No records found in last 24 hours\"){\n\t\t\tcount++;\n            }\n\t\t}\n\t}\n\n\tcounts.push({\n\t\tjson: {\n\t\t\tkeyword: keyword,\n\t\t\tcount: count,\n\t\t\tdate: '15-07-2025' // optional for context\n\t\t}\n\t});\n}\n\nreturn counts;\n"
      },
      "typeVersion": 2
    },
    {
      "id": "ea4b198a-1a29-4e34-b6a0-3ca8ef86c1ba",
      "name": "Update Summary Sheet\t",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1240,
        420
      ],
      "parameters": {
        "columns": {
          "value": {
            "Keywords": "={{ $json.keyword }}",
            "Total Count 15-07-2025": "={{ $json.count }}"
          },
          "schema": [
            {
              "id": "Keywords",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Keywords",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Keyword Type",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Keyword Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 15-07-2025",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Total Count 15-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 14-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 14-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 11-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 11-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 10-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 10-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 09-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 09-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 08-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 08-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 07-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 07-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 04-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 04-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 03-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 03-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 02-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 02-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 01-07-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 01-07-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 30-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 30-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 27-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 27-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 26-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 26-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 25-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 25-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 24-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 24-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 23-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 23-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 20-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 20-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 19-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 19-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 18-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 18-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 17-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 17-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 16-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 16-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 13-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 13-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 12-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 12-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 11-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 11-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 10-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 10-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 09-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 09-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 06-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 06-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 05-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 05-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 04-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 04-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Count 03-06-2025",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total Count 03-06-2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Keywords"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 602446703,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit#gid=602446703",
          "cachedResultName": "All Keywords combined"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit?usp=drivesdk",
          "cachedResultName": "apify upwork scraped data"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "fefc7df7-b21d-4b6a-98c9-aaa1d1cb22d2",
      "name": "Fetch Final Summary Data\t",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1460,
        420
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 602446703,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit#gid=602446703",
          "cachedResultName": "All Keywords combined"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit?usp=drivesdk",
          "cachedResultName": "apify upwork scraped data"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.6
    },
    {
      "id": "2919b71f-c8c2-48da-b2eb-3119c86bd3e4",
      "name": "Build Email Body\t",
      "type": "n8n-nodes-base.code",
      "position": [
        1680,
        420
      ],
      "parameters": {
        "jsCode": "const rows = $input.all();\nconst totals = {};\n\nfor (const row of rows) {\n  const type = row.json[\"Keyword Type\"];\n  const count = parseInt(row.json[\"Total Count 15-07-2025\"]) || 0;\n\n  totals[type] = (totals[type] || 0) + count;\n}\n\nreturn [\n  {\n    json: {\n      date: \"15-07-2025\",\n      counts_by_type: totals\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "982c3239-093e-44d4-b791-4ee50aae4110",
      "name": "Send Daily Report Email\t",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1900,
        420
      ],
      "parameters": {
        "sendTo": "=bd@itoneclick.com,james@itoneclick.com,nikunj@itoneclick.com,drashti@itoneclick.com,sahil@itoneclick.com ",
        "message": "=Hello Team,<br><br>\u00a0 \nPlease find the details for the Apify scraped data below.<br><br>\u00a0 \n\n\n\n<b>Scraping Date:</b>{{ $json.date }}<br> \n<b>Total Scraped Data:</b> {{ $('Remove Duplicates by Title/Desc\t').all().length }} Records<br> \n<b>Travel-related Data Scraped Count:</b> {{ $json.counts_by_type.Web }} Records<br> \n<b>Mobile App-related Data Scraped Count:</b> {{ $json.counts_by_type.Mobile }} Records<br><br>\u00a0 \n\n\n\n<b>Sheet link with all data:</b><br> \n<a href=\"https://docs.google.com/spreadsheets/d/15VOzDUfPIKy3TcFEYEEwXfeYrF2LtAkhkm5ba9gNERI/edit?usp=sharing\">Click here to view the data</a><br>\n\n\n\n<br>\u00a0 Thanks,<br> Ajay Mishra",
        "options": {
          "appendAttribution": true
        },
        "subject": "Apify data details - 15 July 2025"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 2.1
    },
    {
      "id": "844bd1ab-cbc9-4c81-b4eb-3871162fdfc1",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -860,
        80
      ],
      "parameters": {
        "width": 700,
        "height": 520,
        "content": "## Job Scraping & Initial Processing\nScrapes job data using Apify and stores it in the daily sheet.\n\n\ud83d\udd01 Trigger Manual Run: Manually starts the workflow.\n\n\ud83d\udcc4 Fetch Keywords from Google Sheet: Reads the list of job-related keywords from the All Keywords sheet.\n\n\ud83d\udd02 Loop Through Keywords: Iterates over each keyword to trigger Apify.\n\n\ud83c\udf10 Trigger Apify Scraper: Sends HTTP request to start Apify actor for scraping jobs.\n\n\u23f3 Wait for Apify Completion: Waits for the Apify actor to finish execution.\n\n\u23f1\ufe0f Delay Before Dataset Read: Waits a few seconds to ensure dataset is ready.\n\n\ud83d\udce6 Fetch Scraped Job Dataset: Fetches the latest dataset from Apify.\n\n\ud83e\uddf9 Process Raw Job Data: Filters jobs posted in the last 24 hours and formats the data.\n\n\ud83d\udce5 Save Jobs to Daily Sheet: Appends new job data to the daily Google Sheet.\n\n\ud83d\udd22 Update Keyword Job Count: Updates job count in the All Keywords summary sheet."
      },
      "typeVersion": 1
    },
    {
      "id": "f026e7c3-c558-4b2a-85f7-9b3f8b444be9",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        100,
        60
      ],
      "parameters": {
        "color": 4,
        "width": 600,
        "height": 300,
        "content": "## Data Cleaning & Deduplication\nCleans and deduplicates today's job data.\n\n\ud83d\udce5 Load Today\u2019s Daily Jobs: Loads all jobs added in today\u2019s sheet.\n\n\ud83e\uddfd Remove Duplicates by Title/Desc: Removes duplicates based on title & description.\n\n\u2705 Save Clean Job Data: Saves the cleaned, unique entries.\n\n\ud83d\uddd1\ufe0f Clear Old Daily Sheet Data: Deletes old or duplicate entries from the sheet.\n\n\ud83d\udd04 Reload Clean Job Data: Loads clean data again after deletion.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "1a92fdfa-d121-4922-adb0-3a971eed5c10",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1440,
        40
      ],
      "parameters": {
        "color": 3,
        "width": 500,
        "height": 340,
        "content": "## Daily Summary & Email Report\nGenerates a job summary and sends it via email.\n\n\ud83d\udcca Generate Keyword Summary Stats: Counts job totals per keyword.\n\n\ud83d\udcc8 Update Summary Sheet: Updates the summary sheet with keyword stats.\n\n\ud83d\udcd1 Fetch Final Summary Data: Reads the summary sheet for reporting.\n\n\ud83d\udce8 Build Email Body: Formats email with stats and sheet link.\n\n\ud83d\udcec Send Daily Report Email: Sends the structured daily summary email to recipients.\n\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "0f9b8517-78f3-402b-bd56-c0aece2efb04",
  "connections": {
    "Build Email Body\t": {
      "main": [
        [
          {
            "node": "Send Daily Report Email\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Trigger Manual Run\t": {
      "main": [
        [
          {
            "node": "Fetch Keywords from Google Sheet\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Clean Job Data\t": {
      "main": [
        [
          {
            "node": "Delete rows or columns from sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Process Raw Job Data\t": {
      "main": [
        [
          {
            "node": "Save Jobs to Daily Sheet\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Summary Sheet\t": {
      "main": [
        [
          {
            "node": "Fetch Final Summary Data\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Through Keywords\t": {
      "main": [
        [
          {
            "node": "Load Today\u2019s Daily Jobs\t",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Trigger Apify Scraper\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Reload Clean Job Data\t": {
      "main": [
        [
          {
            "node": "Generate Keyword Summary Stats\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Trigger Apify Scraper\t": {
      "main": [
        [
          {
            "node": "Wait for Apify Completion\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Final Summary Data\t": {
      "main": [
        [
          {
            "node": "Build Email Body\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Jobs to Daily Sheet\t": {
      "main": [
        [
          {
            "node": "Update Keyword Job Count\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Keyword Job Count\t": {
      "main": [
        [
          {
            "node": "Loop Through Keywords\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Delay Before Dataset Read\t": {
      "main": [
        [
          {
            "node": "Fetch Scraped Job Dataset\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Scraped Job Dataset\t": {
      "main": [
        [
          {
            "node": "Process Raw Job Data\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Load Today\u2019s Daily Jobs\t": {
      "main": [
        [
          {
            "node": "Remove Duplicates by Title/Desc\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for Apify Completion\t": {
      "main": [
        [
          {
            "node": "Delay Before Dataset Read\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Keyword Summary Stats\t": {
      "main": [
        [
          {
            "node": "Update Summary Sheet\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Remove Duplicates by Title/Desc\t": {
      "main": [
        [
          {
            "node": "Save Clean Job Data\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Delete rows or columns from sheet": {
      "main": [
        [
          {
            "node": "Reload Clean Job Data\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Keywords from Google Sheet\t": {
      "main": [
        [
          {
            "node": "Loop Through Keywords\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}