{
  "name": "Find high-quality remote jobs with OpenAI, Decodo, and Google Sheets",
  "nodes": [
    {
      "id": "e375362b-8709-4a26-8d75-64d7957fb1be",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2032,
        -352
      ],
      "parameters": {
        "width": null,
        "height": 992,
        "content": "## What this workflow does\n\nThis workflow automates the discovery, evaluation, and notification of job opportunities based on a candidate’s professional profile.\n\nIt fetches remote job listings, compa"
      }
    },
    {
      "id": "994716c3-8656-4544-aafb-363fae6c58c0",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1536,
        0
      ],
      "parameters": {
        "width": 384,
        "height": 80,
        "content": "## 1. Candidate profile input\nReads the candidate profile from Google Sheets."
      }
    },
    {
      "id": "59034560-8896-42a8-8f7f-73fcbae0a70c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        -368
      ],
      "parameters": {
        "width": 480,
        "height": 144,
        "content": "##  2. Data collection & AI scoring\n- Fetches remote job listings using Decodo.\n- Extracts structured job data \n- Combines each job with the candidate profile.\n- An AI agent evaluates fit based on ski"
      }
    },
    {
      "id": "5a03fe43-a4d8-4fb0-ae0a-2e20e057e948",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        880,
        288
      ],
      "parameters": {
        "width": 432,
        "height": null,
        "content": "## 3.Results & notifications\n- Filters jobs based on a minimum fit score.\n- Saves qualified matches to Google Sheets for tracking.\n- Builds an HTML email with the Top 5 job matches.\n-Sends the summary"
      }
    },
    {
      "id": "5f690d8b-1d28-4c33-ad4c-d72713acfd3f",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -56,
        16
      ]
    },
    {
      "id": "bdbdc8da-d05d-4265-92e4-119ece6bdf3a",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        848,
        -672
      ],
      "parameters": {
        "width": 832,
        "height": 368,
        "content": "## Output \n![txt](https://ik.imagekit.io/agbb7sr41/ouput_2_job_matching.png)"
      }
    },
    {
      "id": "b027fa9e-ebe3-4db1-9bc5-1c70463d431f",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1696,
        112
      ],
      "parameters": {
        "width": 624,
        "height": 224,
        "content": "## Input\n![txt](https://ik.imagekit.io/agbb7sr41/job_input.png)"
      }
    },
    {
      "id": "2999fdf8-d3f1-4e18-8c57-3b3c078c8555",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1056,
        -112
      ],
      "parameters": {
        "width": 768,
        "height": 352,
        "content": "## Output\n![txt](https://ik.imagekit.io/agbb7sr41/job_matching_output.png)"
      }
    },
    {
      "id": "2ae9e8c4-c04c-41e1-ba48-8ef0a5aab82d",
      "name": "Daily trigger (job scan)",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1472,
        -208
      ]
    },
    {
      "id": "062c51ef-1452-4c80-948b-58fe78ead883",
      "name": "Load candidate profile (Google Sheets)",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1248,
        -208
      ]
    },
    {
      "id": "a56fcd39-e13c-49c2-b07a-3911235e405b",
      "name": "Fetch RemoteOK HTML (Decodo)",
      "type": "@decodo/n8n-nodes-decodo.decodo",
      "position": [
        -1024,
        -136
      ]
    },
    {
      "id": "ef3c6f5c-0ace-4b35-85b5-7c37c581cdd7",
      "name": "Extract JobPosting JSON",
      "type": "n8n-nodes-base.code",
      "position": [
        -800,
        -136
      ]
    },
    {
      "id": "c2065e0d-6312-4a97-86bc-1f4db4371d16",
      "name": "Merge profile + job list",
      "type": "n8n-nodes-base.merge",
      "position": [
        -576,
        -208
      ]
    },
    {
      "id": "34037fb5-64ba-4208-9198-7daf10bfd659",
      "name": "Create candidate-job pairs",
      "type": "n8n-nodes-base.code",
      "position": [
        -352,
        -208
      ]
    },
    {
      "id": "8c6557cc-cf04-43be-ac24-a822d47ddbf5",
      "name": "Score fit with AI (salary + skills + industry)",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -128,
        -208
      ]
    },
    {
      "id": "2d7e990c-1f99-4446-b0fe-01fca99464c7",
      "name": "Flatten AI scores into job fields",
      "type": "n8n-nodes-base.code",
      "position": [
        224,
        -208
      ]
    },
    {
      "id": "c0379c5d-fa0e-45c6-bed7-7e88e61f80ee",
      "name": "Parse AI JSON output (safe)",
      "type": "n8n-nodes-base.code",
      "position": [
        448,
        -208
      ]
    },
    {
      "id": "931f69da-6be3-4529-925e-49d71eca1863",
      "name": "Normalize job data for output",
      "type": "n8n-nodes-base.code",
      "position": [
        672,
        -208
      ]
    },
    {
      "id": "77fb2694-9235-4ae5-9ccb-a40a0474e8de",
      "name": "Build Top 5 email (HTML)",
      "type": "n8n-nodes-base.code",
      "position": [
        1120,
        -304
      ]
    },
    {
      "id": "2ad89074-f8a0-4de5-b5fa-f042718de305",
      "name": "Send Top 5 email (Gmail)",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1344,
        -304
      ]
    },
    {
      "id": "3b22a64e-db27-4c5c-9316-924d6ae546f5",
      "name": "Save matches to Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        896,
        -112
      ]
    },
    {
      "id": "99e7d532-6a36-4747-a41f-0f03914722e8",
      "name": "Check whether the fit score is greater than X",
      "type": "n8n-nodes-base.if",
      "position": [
        896,
        -304
      ]
    },
    {
      "id": "4720e582-9855-4528-850e-6b161d224b36",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1728,
        -320
      ],
      "parameters": {
        "width": 688,
        "height": 752,
        "content": ""
      }
    },
    {
      "id": "2221b5c8-c29f-4272-9e05-b7da48099217",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1048,
        -384
      ],
      "parameters": {
        "width": 1840,
        "height": 544,
        "content": ""
      }
    },
    {
      "id": "aefd8868-5175-463a-b57e-644e1d1723c5",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        -736
      ],
      "parameters": {
        "width": 1024,
        "height": 1200,
        "content": ""
      }
    }
  ],
  "connections": {
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Score fit with AI (salary + skills + industry)",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Extract JobPosting JSON": {
      "main": [
        [
          {
            "node": "Merge profile + job list",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Build Top 5 email (HTML)": {
      "main": [
        [
          {
            "node": "Send Top 5 email (Gmail)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Daily trigger (job scan)": {
      "main": [
        [
          {
            "node": "Load candidate profile (Google Sheets)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge profile + job list": {
      "main": [
        [
          {
            "node": "Create candidate-job pairs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create candidate-job pairs": {
      "main": [
        [
          {
            "node": "Score fit with AI (salary + skills + industry)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI JSON output (safe)": {
      "main": [
        [
          {
            "node": "Normalize job data for output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch RemoteOK HTML (Decodo)": {
      "main": [
        [
          {
            "node": "Extract JobPosting JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalize job data for output": {
      "main": [
        [
          {
            "node": "Save matches to Google Sheets",
            "type": "main",
            "index": 0
          },
          {
            "node": "Check whether the fit score is greater than X",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save matches to Google Sheets": {
      "main": [
        []
      ]
    },
    "Flatten AI scores into job fields": {
      "main": [
        [
          {
            "node": "Parse AI JSON output (safe)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Load candidate profile (Google Sheets)": {
      "main": [
        [
          {
            "node": "Fetch RemoteOK HTML (Decodo)",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge profile + job list",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check whether the fit score is greater than X": {
      "main": [
        [
          {
            "node": "Build Top 5 email (HTML)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Score fit with AI (salary + skills + industry)": {
      "main": [
        [
          {
            "node": "Flatten AI scores into job fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}