{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "da18f79f-39b8-401f-ad5d-2d632dcde25e",
      "name": "Extract from File",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -1888,
        1008
      ],
      "parameters": {
        "options": {},
        "operation": "pdf"
      },
      "typeVersion": 1
    },
    {
      "id": "64a40f8f-82d1-4b8d-b23a-7f5573a21ab0",
      "name": "Download file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -2112,
        1008
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "list",
          "value": "1iBfY5oJ0ciSwYOSDz7U4aDIVXydPxiI8"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "3cc04f30-318a-436c-bc67-52619815755a",
      "name": "Get row(s) in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1664,
        1008
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1038962310
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1If_YNfm4zYlVwlv9eGdUHtZuFrwLrfpDdBK70lr2_pA"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "2b9b0b5d-8653-438a-a01b-124c7638e188",
      "name": "Create search URL",
      "type": "n8n-nodes-base.code",
      "position": [
        -1440,
        1008
      ],
      "parameters": {
        "jsCode": "let url = \"https://www.linkedin.com/jobs/search/?f_TPR=r86400&sortBy=DD&count=10\";\nconst keyword = $input.first().json.Keyword;\nconst location = $input.first().json.Location;\nconst experienceLevel = $input.first().json['Experience Level'];\nconst remote = $input.first().json.Remote;\nconst jobType = $input.first().json['Job Type'];\nconst easyApply = $input.first().json['Easy Apply'];\nif (keyword && keyword !== \"\") { url += `&keywords=${encodeURIComponent(keyword)}`; }\nif (location && location !== \"\") { url += `&location=${encodeURIComponent(location)}`; }\nif (experienceLevel && experienceLevel !== \"\") {\n  const transformedExperiences = experienceLevel.split(\",\").map((exp) => {\n    switch (exp.trim()) { case \"Internship\": return \"1\"; case \"Entry level\": return \"2\"; case \"Associate\": return \"3\"; case \"Mid-Senior level\": return \"4\"; case \"Director\": return \"5\"; case \"Executive\": return \"6\"; default: return \"\"; }\n  }).filter(Boolean);\n  if (transformedExperiences.length > 0) { url += `&f_E=${transformedExperiences.join(\",\")}`; }\n}\nif (remote && remote !== \"\") {\n  const transformedRemote = remote.split(\",\").map((e) => {\n    switch (e.trim()) { case \"Remote\": return \"2\"; case \"Hybrid\": return \"3\"; case \"On-Site\": return \"1\"; default: return \"\"; }\n  }).filter(Boolean);\n  if (transformedRemote.length > 0) { url += `&f_WT=${transformedRemote.join(\",\")}`; }\n}\nif (jobType && jobType !== \"\") {\n  const transformedJobType = jobType.split(\",\").map((type) => {\n    switch (type.trim()) { case \"Full-time\": return \"F\"; case \"Part-time\": return \"P\"; case \"Contract\": return \"C\"; case \"Temporary\": return \"T\"; case \"Volunteer\": return \"V\"; case \"Internship\": return \"I\"; default: return \"\"; }\n  }).filter(Boolean);\n  if (transformedJobType.length > 0) { url += `&f_JT=${transformedJobType.join(\",\")}`; }\n}\nif (easyApply === true || easyApply === \"true\") { url += \"&f_EA=true\"; }\nreturn { url };"
      },
      "typeVersion": 2
    },
    {
      "id": "60d0f4a8-1dd1-4bac-8f76-645ebf2067dc",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -2336,
        1008
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 17
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "09209346-4d17-4e0b-8b9e-cd95d0a64e35",
      "name": "Fetch Jobs from Linkedin",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1216,
        1008
      ],
      "parameters": {
        "url": "={{ $json.url }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "b02e2762-c2ac-4b37-a19f-eae21a4f2613",
      "name": "Extract Job Links",
      "type": "n8n-nodes-base.html",
      "position": [
        -992,
        1008
      ],
      "parameters": {
        "options": {},
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "links",
              "attribute": "href",
              "cssSelector": "ul.jobs-search__results-list li div a[class*=\"base-card\"]",
              "returnArray": true,
              "returnValue": "attribute"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "0df3034d-90ed-410a-9b49-6d8da8450784",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "onError": "continueRegularOutput",
      "position": [
        -320,
        1008
      ],
      "parameters": {
        "options": {
          "reset": false
        }
      },
      "typeVersion": 3
    },
    {
      "id": "fcbf0122-4835-4dae-8acd-4d9055a3f9c9",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        -96,
        1008
      ],
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "d9b9de7d-206c-497a-8301-7446c8d4ee10",
      "name": "Fetch Job Page",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        192,
        1008
      ],
      "parameters": {
        "url": "={{ $json.links }}",
        "options": {}
      },
      "executeOnce": false,
      "retryOnFail": true,
      "typeVersion": 4.2,
      "waitBetweenTries": 5000
    },
    {
      "id": "51db6214-6176-428d-b8bd-7310e8e38293",
      "name": "Parse Job Attributes",
      "type": "n8n-nodes-base.html",
      "position": [
        480,
        1008
      ],
      "parameters": {
        "options": {},
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "title",
              "cssSelector": "div h1"
            },
            {
              "key": "company",
              "cssSelector": "div span a"
            },
            {
              "key": "location",
              "cssSelector": "div span[class*='topcard__flavor topcard__flavor--bullet']"
            },
            {
              "key": "description",
              "cssSelector": "div.description__text.description__text--rich"
            },
            {
              "key": "jobid",
              "attribute": "data-semaphore-content-urn",
              "cssSelector": "a[data-item-type='semaphore']",
              "returnValue": "attribute"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "52d26382-35dc-4ec5-a9a3-2826198ca928",
      "name": "Modify Job Attributes",
      "type": "n8n-nodes-base.set",
      "position": [
        704,
        1008
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "784ead57-9d83-4e08-b83c-23fa165bf045",
              "name": "description",
              "type": "string",
              "value": "={{ $json.description ? $json.description.replaceAll(/\\s+/g, ' ').substring(0, 1500) : '' }}"
            },
            {
              "id": "fd3c9d2c-5ff9-46a7-b70a-f990fbc7da9d",
              "name": "jobid",
              "type": "string",
              "value": "={{ $json.jobid ? $json.jobid.split(\":\").last() : '' }}"
            },
            {
              "id": "27a20cd2-ab0d-42b7-9cee-ea64e0e26ea3",
              "name": "applyLink",
              "type": "string",
              "value": "={{ $json.jobid ? \"https://www.linkedin.com/jobs/view/\"+ $json.jobid.split(\":\").last() : '' }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "852e90cc-0e3b-4198-86a3-b401559345c6",
      "name": "Aggregate Jobs",
      "type": "n8n-nodes-base.itemLists",
      "position": [
        -96,
        712
      ],
      "parameters": {
        "options": {},
        "operation": "summarize",
        "fieldsToSummarize": {
          "values": [
            {
              "field": "title",
              "aggregation": "append"
            },
            {
              "field": "company",
              "aggregation": "append"
            },
            {
              "field": "location",
              "aggregation": "append"
            },
            {
              "field": "description",
              "aggregation": "append"
            },
            {
              "field": "jobid",
              "aggregation": "append"
            },
            {
              "field": "applyLink"
            }
          ]
        }
      },
      "typeVersion": 3
    },
    {
      "id": "7ae89a34-c569-4a3d-b23d-cbd196c84d61",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        128,
        608
      ],
      "parameters": {
        "text": "=You are an expert Senior Career Coach. \n\nGoal: Analyze the \"Delta\" between the user's current resume and the reality of the job market based on these scraped job listings.\n\nInputs:\n- User Resume: {{ $('Extract from File').first().json.text }}\n\n- Market Data (Jobs):\n\njob title :{{ $json.appended_title }}\nCompany: {{ $json.appended_company }}\nlocation : {{ $json.appended_location }} \n all job description: {{ $json.appended_description }}\n\n- My Goal: Role: {{ $('Get row(s) in sheet').item.json.Keyword }} location: \n{{ $('Get row(s) in sheet').item.json.Location }}\n\nExperince: {{ $('Get row(s) in sheet').item.json['Experience Level'] }}\n\nTask:\n1. Identify 'High-Frequency Missing Skills': Analyze the aggregated job descriptions and identify the top 3 to 5 technical skills that appear REPEATEDLY across multiple jobs but are missing from the resume. Strictly ignore unique, one-off skills that only appear in a single JD.\n2. Career Coach Analysis: Be blunt. Based on the gap between the resume and these high-frequency market demands, why is the user not landing these roles yet?\n3. 30-Day Action Plan: Create a rigorous 4-week (30-day) roadmap to close these specific gaps.\n   - Week 1 (Days 1-7): Knowledge Acquisition (Specific courses, tools, or libraries to learn the top missing skills).\n   - Week 2 (Days 8-14): Guided Practice (Small exercises or mini-projects to build muscle memory).\n   - Week 3 (Days 15-21): The Capstone Project (What specific, complex feature should they build and add to their portfolio to prove these skills?).\n   - Week 4 (Days 22-30): Market Positioning (How to rewrite the resume summary, bullet points, and LinkedIn profile to reflect this new 30-day transformation).\n\nOutput: You must return ONLY a valid JSON object.\n{\n  \"readiness_score\": 65,\n  \"high_frequency_missing_skills\": [\"Skill A\", \"Skill B\", \"Skill C\"],\n  \"coach_notes\": \"...\",\n  \"training_plan_30_days\": {\n    \"week_1_foundations\": \"...\",\n    \"week_2_practice\": \"...\",\n    \"week_3_portfolio_project\": \"...\",\n    \"week_4_repositioning\": \"...\"\n  }\n}",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "efabf3d2-5635-4115-9d84-0d4387a602d5",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        200,
        832
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ceb6362e-92e2-469b-b88d-435b38c26e75",
      "name": "Parse AI Output",
      "type": "n8n-nodes-base.set",
      "position": [
        480,
        712
      ],
      "parameters": {
        "mode": "raw",
        "options": {},
        "jsonOutput": "={{ $json.output.replaceAll(/```(?:json)?/g, \"\").trim() }}",
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "5d9a7b1f-c9ac-4550-852a-9d88f306b165",
      "name": "Send a text message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        704,
        712
      ],
      "parameters": {
        "text": "=\ud83d\ude80 **Career Coach 30-Day Market Report** \ud83d\ude80\n\n\ud83d\udcca **Market Readiness:** {{ $json.readiness_score }}% (Based on {{ $('Aggregate Jobs').item.json.count_applyLink }} scanned)\n\n\u274c **Recurring Missing Skills:**\n{{ $json.high_frequency_missing_skills.join(', ') }}\n\n\ud83d\udca1 **Coach Advice:** \n{{ $json.coach_notes }}\n\n\ud83d\udcc5 **30-Day Transformation Plan:**\n\u2022 **Week 1 (Foundations):** {{ $json.training_plan_30_days.week_1_foundations }}\n\n\u2022 **Week 2 (Practice):** {{ $json.training_plan_30_days.week_2_practice }}\n\n\u2022 **Week 3 (Project):** {{ $json.training_plan_30_days.week_3_portfolio_project }}\n\n\u2022 **Week 4 (Positioning):** {{ $json.training_plan_30_days.week_4_repositioning }}",
        "chatId": "#Your Telegram Chat ID here#",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d90574bf-b641-4208-8e3a-7e768388396f",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -768,
        1008
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "links"
      },
      "typeVersion": 1
    },
    {
      "id": "f32bdb85-4dc7-4db2-8062-50aa895a4d8c",
      "name": "Update Logs",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        928,
        1080
      ],
      "parameters": {
        "columns": {
          "value": {
            "jobid": "={{ $json.jobid }}",
            "title": "={{ $json.title }}",
            "company": "={{ $json.company }}",
            "location": "={{ $json.location }}",
            "applyLink": "={{ $json.applyLink }}",
            "time_stamp": "={{ $now }}",
            "description": "={{ $json.description }}"
          },
          "schema": [
            {
              "id": "description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "jobid",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "jobid",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "applyLink",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "applyLink",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "company",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "location",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "time_stamp",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "time_stamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1895806376,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1VJuWKPOgBT1ic0GE1ohAh6E9uH6oyo-Z4fP16jkE_QI/edit#gid=1895806376",
          "cachedResultName": "Logs"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1VJuWKPOgBT1ic0GE1ohAh6E9uH6oyo-Z4fP16jkE_QI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1VJuWKPOgBT1ic0GE1ohAh6E9uH6oyo-Z4fP16jkE_QI/edit?usp=drivesdk",
          "cachedResultName": "n8n Job Coach"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "0b333875-dcd7-4119-aefb-8ca1a467f8d8",
      "name": "Limit",
      "type": "n8n-nodes-base.limit",
      "position": [
        -544,
        1008
      ],
      "parameters": {
        "maxItems": 10
      },
      "typeVersion": 1
    },
    {
      "id": "d25bea3b-89af-42db-827a-64910a55b164",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2928,
        656
      ],
      "parameters": {
        "width": 464,
        "height": 704,
        "content": "### How it works\nThis workflow acts as an AI-powered Career Coach. It routinely pulls your target job preferences and future aspirations from a Google Sheet, alongside your current resume from Google Drive. \n\nIt then scrapes the latest matching job postings from LinkedIn and combines the descriptions to analyze the current market demand. Using OpenAI, it compares your resume against this market data to identify high-frequency missing skills. Finally, it generates a structured 30-day training plan and sends it directly to your Telegram so you can upskill and land your dream role.\n\n### Setup\n1. Download the [Google Sheets Template](https://docs.google.com/spreadsheets/d/e/2PACX-1vSo0HAZi8Dr73EsbECV6-lWkbCczuvaERiiUc7KVriolIP4rkO9TDsQ60OMw_X0U8NmPL3SsByJmlTT/pub?output=ods) and upload it to your Drive.\n2. Connect your **Google Drive** and **Google Sheets** credentials. Ensure your resume ID and Sheet ID are correctly mapped in the nodes.\n3. Connect your **OpenAI** account.\n4. Connect your **Telegram** bot and add your `Chat ID`.\n5. Adjust the **Schedule Trigger** to your preferred frequency (e.g., weekly).\n\n### Customization tips\n- Update the LinkedIn search URL parameters in the `Create search URL` code node if you need stricter location or remote/hybrid filters.\n- If you scrape more than 10 jobs at once, ensure you use `gpt-4o` or a model with a large context window to handle the combined text volume."
      },
      "typeVersion": 1
    },
    {
      "id": "ac0cc3c6-d219-401b-8637-90c822ed6fa7",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2360,
        864
      ],
      "parameters": {
        "color": 7,
        "width": 1712,
        "height": 304,
        "content": "## 1. Input & Search Setup\nFetches your resume, reads target job criteria from Sheets, and scrapes the  matching LinkedIn job links."
      },
      "typeVersion": 1
    },
    {
      "id": "f760267f-c7c8-4d24-bde2-120f91d7e96b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -352,
        824
      ],
      "parameters": {
        "color": 7,
        "width": 1408,
        "height": 416,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## 2. Process Job Postings\nLoops through each individual job link to scrape, clean, and format the full job descriptions."
      },
      "typeVersion": 1
    },
    {
      "id": "4c4958d2-75ae-4818-974a-805a433b0e6d",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        488
      ],
      "parameters": {
        "color": 7,
        "width": 1296,
        "height": 384,
        "content": "## 3. Career Coach AI & Notification\nAggregates all job descriptions into one batch, runs the AI gap analysis, and sends the 30-day plan to Telegram."
      },
      "typeVersion": 1
    },
    {
      "id": "7fe583d3-a775-424f-b059-24b78b335bc5",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -627,
        832
      ],
      "parameters": {
        "color": "#E61414",
        "width": 262,
        "height": 336,
        "content": "\u26a0\ufe0f **Cost Safeguard**\nThis node limits the data payload. Do not bypass this, or large scrapes will cause high API token usage!"
      },
      "typeVersion": 1
    },
    {
      "id": "6263eef1-a2ae-480a-80f1-fa9d894a7342",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        576
      ],
      "parameters": {
        "height": 288,
        "content": "Update your Chat ID in this telegram node"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Fetch Job Page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Parse AI Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Limit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Logs": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download file": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate Jobs": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Job Page": {
      "main": [
        [
          {
            "node": "Parse Job Attributes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Aggregate Jobs",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI Output": {
      "main": [
        [
          {
            "node": "Send a text message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Download file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create search URL": {
      "main": [
        [
          {
            "node": "Fetch Jobs from Linkedin",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Job Links": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet": {
      "main": [
        [
          {
            "node": "Create search URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Job Attributes": {
      "main": [
        [
          {
            "node": "Modify Job Attributes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Modify Job Attributes": {
      "main": [
        [
          {
            "node": "Update Logs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Jobs from Linkedin": {
      "main": [
        [
          {
            "node": "Extract Job Links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}