{
  "id": "wAomRf96IfSnpTA7",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Upwork Job Poster Email",
  "tags": [],
  "nodes": [
    {
      "id": "aa72ce26-28ae-4dab-982f-be16fa123d87",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        420,
        360
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "94fba561-bc7e-4180-9b5d-beb9482b28b6",
      "name": "Run Every X Hours",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        0,
        140
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "603403fa-6f4b-4124-90ee-f852954e67a4",
      "name": "Fetch Latest Upwork Jobs (Apify)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        220,
        140
      ],
      "parameters": {
        "url": "https://api.apify.com/v2/actor-tasks/<TASK_ID>/run-sync-get-dataset-items?token=<API_TOKEN>",
        "options": {},
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {}
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "0ed2ab83-1fcb-459c-aa6d-ef81c8414b45",
      "name": "Extract Company or Person Name from Job",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        440,
        140
      ],
      "parameters": {
        "text": "=Title: {{ $json.title }}\nDescription: {{ $json.description }}",
        "options": {
          "systemMessage": "\"Extract the client's name or company name if it is mentioned. Return only the name or 'null' if not found.\""
        },
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "ccd6cf3c-2666-45eb-8dc3-6575180c897b",
      "name": "Name is Found?",
      "type": "n8n-nodes-base.if",
      "position": [
        800,
        140
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "7366a7c6-e767-4aea-96e1-0cbbcbb26100",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json.output }}",
              "rightValue": "null"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "c9721e93-707d-45c1-a06b-68606157f995",
      "name": "No Name Found - End Early",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1240,
        320
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "4164b6e9-9ba7-4fc6-a1b6-c976f626aea5",
      "name": "Is It a Person or Company?",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1180,
        40
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "options": {
          "systemMessage": "\"Extract the client's name or company name. Return only the 'person' if looks like a person's name if not return 'company'.\"\n"
        },
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "93c7b341-6257-4ee2-a54f-ecbfcdf0f89b",
      "name": "Person or Company?",
      "type": "n8n-nodes-base.if",
      "position": [
        1540,
        40
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "729e7baa-ae94-4661-a061-7d656faf820f",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.output }}",
              "rightValue": "company"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "7dcacf79-eb65-454c-97fd-16ea6aed2f94",
      "name": "Search LinkedIn for Company (Phantombuster)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1960,
        -120
      ],
      "parameters": {
        "url": "https://api.phantombuster.com/api/v2/agents/<AGENT_ID>/launch",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"argument\": {\n    \"search\": {{ $json.output }},\n    \"numberOfProfiles\": 5,\n    \"sessionCookie\": \"<LINKEDIN_SESSION_COOKIE>\"\n  },\n  \"saveArguments\": true\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Phantombuster-Key-1",
              "value": "<YOUR_API_KEY>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e2f7db77-373e-462a-bc57-57653e067e30",
      "name": "Scrape LinkedIn Company Profile",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2180,
        -120
      ],
      "parameters": {
        "url": "https://api.phantombuster.com/api/v2/agents/<AGENT_ID>/launch",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"argument\": {\n    \"spreadsheetUrl\": {{ $json.profileUrl }},\n    \"sessionCookie\": \"<LINKEDIN_SESSION_COOKIE>\"\n  },\n  \"saveArguments\": true\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Phantombuster-Key-1",
              "value": "<YOUR_API_KEY>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "14d7f669-dbc1-484e-b3c0-3d1e83d4c74f",
      "name": "Find Company Email (Hunter.io)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2400,
        -120
      ],
      "parameters": {
        "url": "=https://api.hunter.io/v2/domain-search?domain{{ $json.website }}=&api_key=<YOUR_API_KEY>",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "4fd05ce5-495e-4d3a-8998-3120c3456e57",
      "name": "Search LinkedIn for Person (Phantombuster)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1960,
        1280
      ],
      "parameters": {
        "url": "https://api.phantombuster.com/api/v2/agents/<AGENT_ID>/launch",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n  \"argument\": {\n    \"search\": {{ $json.output }},\n    \"numberOfProfiles\": 3,\n    \"sessionCookie\": \"<LINKEDIN_SESSION_COOKIE>\"\n  },\n  \"saveArguments\": true\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Phantombuster-Key-1",
              "value": "<YOUR_API_KEY>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "f048e198-cc4b-4739-be7d-d3d885c6d2bb",
      "name": "Scrape LinkedIn Person Profile",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2180,
        1280
      ],
      "parameters": {
        "url": "https://api.phantombuster.com/api/v2/agents/<AGENT_ID>/launch",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"argument\": {\n    \"spreadsheetUrl\": {{ $json.profileUrl }},\n    \"sessionCookie\": \"<LINKEDIN_SESSION_COOKIE>\"\n  },\n  \"saveArguments\": true\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Phantombuster-Key-1",
              "value": "<YOUR_API_KEY>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "dbc8c317-b469-4125-b939-614524a0339b",
      "name": "Find Personal Email (Hunter.io)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2400,
        1280
      ],
      "parameters": {
        "url": "=https://api.hunter.io/v2/email-finder?domain={{ $json.fullName }}=Ali%20Raza&api_key=<YOUR_API_KEY>",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "047146a8-2b02-4098-a0e9-f8366c42aa4f",
      "name": "Store Results in Google Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2760,
        20
      ],
      "parameters": {
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "1e9dee68-e0c2-4588-b6ca-666534d14dd4",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1820,
        -2200
      ],
      "parameters": {
        "color": 4,
        "width": 1300,
        "height": 320,
        "content": "=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
      },
      "typeVersion": 1
    },
    {
      "id": "2085a7ca-f68b-490a-9dcb-3c96fc6a739d",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1820,
        -1860
      ],
      "parameters": {
        "color": 4,
        "width": 1289,
        "height": 5558,
        "content": "# \ud83d\ude80 **Automated Upwork Lead Enrichment Workflow**\n\n> \u2728 *Fetch potential clients from Upwork, extract their info using AI, search them on LinkedIn, gather emails, and store all in Google Sheets* \u2728\n\n---\n\n## \ud83e\udde9 **1. Trigger & Data Collection**\n\n---\n\n### \u23f0 `Trigger - Run Every X Hours`\n\n**\ud83d\udd27 Node Type**: Schedule Trigger\n**\ud83e\udde0 Purpose**:\nThis node starts your automation periodically. You define how often it runs (e.g., every 6 hours, daily, etc.).\n\n**\ud83d\udcda Why It\u2019s Important**:\nYou don\u2019t want to manually check Upwork every few hours. This node automates it for you.\n\n---\n\n### \ud83c\udf10 `Fetch Latest Upwork Jobs (Apify)`\n\n**\ud83d\udd27 Node Type**: HTTP Request\n**\ud83e\udde0 Purpose**:\nFetch the latest Upwork jobs by calling the [Apify Upwork Actor API](https://apify.com/).\n\n**\u2699\ufe0f Tech Behind It**:\nA simple `GET` request pulls in structured job listings (title, description, budget, etc.) as JSON data.\n\n**\ud83d\udca1 Beginner Tip**:\nNo coding needed\u2014just copy your Apify API URL with your token and plug it into the node.\n\n---\n\n## \ud83e\udd16 **2. AI Name Extraction**\n\n---\n\n### \ud83e\udde0 `AI - Extract Company or Person Name from Job`\n\n**\ud83d\udd27 Node Type**: AI Agent / OpenAI Chat\n**\ud83e\udde0 Purpose**:\nUses GPT to scan the job title + description and extract a **company name or client\u2019s full name**, if present.\n\n**\ud83d\udcda Why It\u2019s Smart**:\nClients sometimes mention names like \u201cHi, we at DevSync...\u201d or sign with their name at the bottom. This step grabs that.\n\n**\ud83e\udde0 AI Prompt Tip**:\nUse structured prompts like:\n\n> \u201cExtract a full person or company name from this job description. If not found, say 'none\u2019.\u201d\n\n---\n\n### \ud83e\uddea `IF - Name is Found?`\n\n**\ud83d\udd27 Node Type**: IF\n**\ud83e\udde0 Purpose**:\nChecks whether the AI returned a name. If not, it skips that job.\n\n**\ud83d\uded1 `No Name Found - End Early`**\nStops further processing and prevents wasted API calls or errors.\n\n---\n\n## \ud83e\udded **3. AI Classification \u2013 Person vs Company**\n\n---\n\n### \ud83e\udde0 `AI - Is It a Person or Company?`\n\n**\ud83d\udd27 Node Type**: AI Agent\n**\ud83e\udde0 Purpose**:\nClassifies the extracted name as either a **company** or a **person** using simple AI logic.\n\n**\ud83d\udd0d Why It Matters**:\nDepending on what it is, the next step\u2014searching LinkedIn\u2014will differ.\n\n---\n\n### \ud83d\udd00 `IF - Person or Company?`\n\n**\ud83d\udd27 Node Type**: IF\n**\ud83e\udde0 Purpose**:\nRoutes the flow to two different paths:\n\n* Company \u2192 Search company profile\n* Person \u2192 Search individual profile\n\n---\n\n## \ud83c\udfe2 **4A. Company Path**\n\n---\n\n### \ud83d\udd0d `Search LinkedIn for Company (Phantombuster)`\n\n**\ud83d\udd27 Node Type**: HTTP Request\n**\ud83d\udce1 Purpose**:\nUses [Phantombuster\u2019s LinkedIn Search API](https://phantombuster.com/) to search for the **company name**.\n\n**\ud83d\udce6 Input**: `\"DevSync\"`\n**\ud83d\udce4 Output**: Company\u2019s LinkedIn URL\n\n---\n\n### \ud83c\udfed `Scrape LinkedIn Company Profile`\n\n**\ud83d\udd27 Node Type**: HTTP Request\n**\ud83d\udd0d Purpose**:\nScrapes the company\u2019s LinkedIn page to pull:\n\n* Size\n* Website\n* Industry\n* Location\n* Description\n\n---\n\n### \ud83d\udcec `Find Company Email (Hunter.io)`\n\n**\ud83d\udd27 Node Type**: HTTP Request\n**\ud83d\udd0d Purpose**:\nUses [Hunter.io](https://hunter.io) to find company-level email addresses like `info@devsync.com`, `hello@devsync.com`, etc.\n\n**\ud83d\udce6 Input**: Company\u2019s domain (e.g., `devsync.com`)\n**\ud83d\udce4 Output**: Emails + Confidence Score\n\n---\n\n## \ud83d\udc64 **4B. Person Path**\n\n---\n\n### \ud83d\udd0d `Search LinkedIn for Person (Phantombuster)`\n\n**\ud83d\udd27 Node Type**: HTTP Request\n**\ud83d\udce1 Purpose**:\nSearches for the extracted **person\u2019s name** like \"John Smith\" using Phantombuster.\n\n**\ud83d\udce4 Output**: LinkedIn profile URL(s)\n\n---\n\n### \ud83e\uddd1\u200d\ud83d\udcbc `Scrape LinkedIn Person Profile`\n\n**\ud83d\udd27 Node Type**: HTTP Request\n**\ud83d\udcc4 Purpose**:\nScrapes:\n\n* Name\n* Current Job Title\n* Company\n* Location\n* Education\n* LinkedIn URL\n\n---\n\n### \u2709\ufe0f `Find Personal Email (Hunter.io)`\n\n**\ud83d\udd27 Node Type**: HTTP Request\n**\ud83d\udd0d Purpose**:\nAttempts to find personal emails using the name + company domain.\n\n**\ud83d\udce4 Output**: Email (if public), sometimes with confidence score.\n\n---\n\n## \ud83d\udcd1 **5. Store Everything in Google Sheets**\n\n---\n\n### \ud83e\uddfe `Store Results in Google Sheet`\n\n**\ud83d\udd27 Node Type**: Google Sheets (Append Row)\n**\ud83e\udde0 Purpose**:\nSaves:\n\n* Job title\n* Description\n* Client Name\n* Person/Company\n* LinkedIn Profile\n* Scraped Info\n* Emails\n\n**\ud83d\udcda Why It\u2019s Gold**:\nYou now have a **personal CRM of Upwork clients** to reach out to directly or research further.\n\n---\n\n## \ud83c\udf1f **Summary of Benefits**\n\n| \u2705 Feature              | \ud83d\udca1 Benefit                            |\n| ---------------------- | ------------------------------------- |\n| Fully automated        | Save hours of manual research         |\n| Uses AI                | No need to write complex regex or NLP |\n| Phantombuster scraping | Get verified LinkedIn profiles        |\n| Hunter.io              | Helps gather email leads              |\n| Google Sheets          | Easy to filter, review, and manage    |\n\n---\n\n## \ud83d\udccc **Beginner Tips**\n\n* \ud83e\uddea Start with dummy job data and test just the first few nodes.\n* \ud83d\udd11 Always **secure your API keys** using environment variables or secrets.\n* \ud83e\udde0 Use **n8n\u2019s execution log** to debug any failures.\n* \ud83e\uddf9 Add rate-limiting or error handling if APIs return errors or limits.\n\n---\n\nWould you like a Notion-ready documentation, downloadable PDF, or HTML guide for your team or clients?\n"
      },
      "typeVersion": 1
    },
    {
      "id": "5bda85dd-7559-4239-9b38-c887a39dbb54",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -60,
        -2180
      ],
      "parameters": {
        "color": 3,
        "width": 1800,
        "height": 2680,
        "content": "## \ud83e\udde9 **1. Trigger & Data Collection**\n\n---\n\n### \u23f0 `Trigger - Run Every X Hours`\n\n**\ud83d\udd27 Node Type**: Schedule Trigger\n**\ud83e\udde0 Purpose**:\nThis node starts your automation periodically. You define how often it runs (e.g., every 6 hours, daily, etc.).\n\n**\ud83d\udcda Why It\u2019s Important**:\nYou don\u2019t want to manually check Upwork every few hours. This node automates it for you.\n\n---\n\n### \ud83c\udf10 `Fetch Latest Upwork Jobs (Apify)`\n\n**\ud83d\udd27 Node Type**: HTTP Request\n**\ud83e\udde0 Purpose**:\nFetch the latest Upwork jobs by calling the [Apify Upwork Actor API](https://apify.com/).\n\n**\u2699\ufe0f Tech Behind It**:\nA simple `GET` request pulls in structured job listings (title, description, budget, etc.) as JSON data.\n\n**\ud83d\udca1 Beginner Tip**:\nNo coding needed\u2014just copy your Apify API URL with your token and plug it into the node.\n\n---\n\n## \ud83e\udd16 **2. AI Name Extraction**\n\n---\n\n### \ud83e\udde0 `AI - Extract Company or Person Name from Job`\n\n**\ud83d\udd27 Node Type**: AI Agent / OpenAI Chat\n**\ud83e\udde0 Purpose**:\nUses GPT to scan the job title + description and extract a **company name or client\u2019s full name**, if present.\n\n**\ud83d\udcda Why It\u2019s Smart**:\nClients sometimes mention names like \u201cHi, we at DevSync...\u201d or sign with their name at the bottom. This step grabs that.\n\n**\ud83e\udde0 AI Prompt Tip**:\nUse structured prompts like:\n\n> \u201cExtract a full person or company name from this job description. If not found, say 'none\u2019.\u201d\n\n---\n\n### \ud83e\uddea `IF - Name is Found?`\n\n**\ud83d\udd27 Node Type**: IF\n**\ud83e\udde0 Purpose**:\nChecks whether the AI returned a name. If not, it skips that job.\n\n**\ud83d\uded1 `No Name Found - End Early`**\nStops further processing and prevents wasted API calls or errors.\n\n---\n\n## \ud83e\udded **3. AI Classification \u2013 Person vs Company**\n\n---\n\n### \ud83e\udde0 `AI - Is It a Person or Company?`\n\n**\ud83d\udd27 Node Type**: AI Agent\n**\ud83e\udde0 Purpose**:\nClassifies the extracted name as either a **company** or a **person** using simple AI logic.\n\n**\ud83d\udd0d Why It Matters**:\nDepending on what it is, the next step\u2014searching LinkedIn\u2014will differ.\n\n---\n\n### \ud83d\udd00 `IF - Person or Company?`\n\n**\ud83d\udd27 Node Type**: IF\n**\ud83e\udde0 Purpose**:\nRoutes the flow to two different paths:\n\n* Company \u2192 Search company profile\n* Person \u2192 Search individual profile"
      },
      "typeVersion": 1
    },
    {
      "id": "aa30a465-97e4-449f-a0b4-07a97a0f3d2c",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1880,
        -1300
      ],
      "parameters": {
        "color": 5,
        "width": 700,
        "height": 1420,
        "content": "## \ud83c\udfe2 **4A. Company Path**\n\n---\n\n### \ud83d\udd0d `Search LinkedIn for Company (Phantombuster)`\n\n**\ud83d\udd27 Node Type**: HTTP Request\n**\ud83d\udce1 Purpose**:\nUses [Phantombuster\u2019s LinkedIn Search API](https://phantombuster.com/) to search for the **company name**.\n\n**\ud83d\udce6 Input**: `\"DevSync\"`\n**\ud83d\udce4 Output**: Company\u2019s LinkedIn URL\n\n---\n\n### \ud83c\udfed `Scrape LinkedIn Company Profile`\n\n**\ud83d\udd27 Node Type**: HTTP Request\n**\ud83d\udd0d Purpose**:\nScrapes the company\u2019s LinkedIn page to pull:\n\n* Size\n* Website\n* Industry\n* Location\n* Description\n\n---\n\n### \ud83d\udcec `Find Company Email (Hunter.io)`\n\n**\ud83d\udd27 Node Type**: HTTP Request\n**\ud83d\udd0d Purpose**:\nUses [Hunter.io](https://hunter.io) to find company-level email addresses like `info@devsync.com`, `hello@devsync.com`, etc.\n\n**\ud83d\udce6 Input**: Company\u2019s domain (e.g., `devsync.com`)\n**\ud83d\udce4 Output**: Emails + Confidence Score\n\n---\n"
      },
      "typeVersion": 1
    },
    {
      "id": "7d7ec4da-d52c-4563-94df-3dcf88c85ff0",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1900,
        160
      ],
      "parameters": {
        "color": 6,
        "width": 640,
        "height": 1300,
        "content": "## \ud83d\udc64 **4B. Person Path**\n\n---\n\n### \ud83d\udd0d `Search LinkedIn for Person (Phantombuster)`\n\n**\ud83d\udd27 Node Type**: HTTP Request\n**\ud83d\udce1 Purpose**:\nSearches for the extracted **person\u2019s name** like \"John Smith\" using Phantombuster.\n\n**\ud83d\udce4 Output**: LinkedIn profile URL(s)\n\n---\n\n### \ud83e\uddd1\u200d\ud83d\udcbc `Scrape LinkedIn Person Profile`\n\n**\ud83d\udd27 Node Type**: HTTP Request\n**\ud83d\udcc4 Purpose**:\nScrapes:\n\n* Name\n* Current Job Title\n* Company\n* Location\n* Education\n* LinkedIn URL\n\n---\n\n### \u2709\ufe0f `Find Personal Email (Hunter.io)`\n\n**\ud83d\udd27 Node Type**: HTTP Request\n**\ud83d\udd0d Purpose**:\nAttempts to find personal emails using the name + company domain.\n\n**\ud83d\udce4 Output**: Email (if public), sometimes with confidence score.\n\n---"
      },
      "typeVersion": 1
    },
    {
      "id": "46f24197-38da-43a1-ba03-1e394169340a",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2680,
        -520
      ],
      "parameters": {
        "color": 6,
        "width": 260,
        "height": 720,
        "content": "## \ud83d\udcd1 **5. Store Everything in Google Sheets**\n\n---\n\n### \ud83e\uddfe `Store Results in Google Sheet`\n\n**\ud83d\udd27 Node Type**: Google Sheets (Append Row)\n**\ud83e\udde0 Purpose**:\nSaves:\n\n* Job title\n* Description\n* Client Name\n* Person/Company\n* LinkedIn Profile\n* Scraped Info\n* Emails"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "9c24521c-85cb-4dbe-b671-43cb6e038740",
  "connections": {
    "Name is Found?": {
      "main": [
        [
          {
            "node": "Is It a Person or Company?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No Name Found - End Early",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Extract Company or Person Name from Job",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Is It a Person or Company?",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Run Every X Hours": {
      "main": [
        [
          {
            "node": "Fetch Latest Upwork Jobs (Apify)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Person or Company?": {
      "main": [
        [
          {
            "node": "Search LinkedIn for Company (Phantombuster)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Search LinkedIn for Person (Phantombuster)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is It a Person or Company?": {
      "main": [
        [
          {
            "node": "Person or Company?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find Company Email (Hunter.io)": {
      "main": [
        [
          {
            "node": "Store Results in Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape LinkedIn Person Profile": {
      "main": [
        [
          {
            "node": "Find Personal Email (Hunter.io)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find Personal Email (Hunter.io)": {
      "main": [
        [
          {
            "node": "Store Results in Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape LinkedIn Company Profile": {
      "main": [
        [
          {
            "node": "Find Company Email (Hunter.io)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Latest Upwork Jobs (Apify)": {
      "main": [
        [
          {
            "node": "Extract Company or Person Name from Job",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Company or Person Name from Job": {
      "main": [
        [
          {
            "node": "Name is Found?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search LinkedIn for Person (Phantombuster)": {
      "main": [
        [
          {
            "node": "Scrape LinkedIn Person Profile",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search LinkedIn for Company (Phantombuster)": {
      "main": [
        [
          {
            "node": "Scrape LinkedIn Company Profile",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}