AutomationFlowsAI & RAG › Smart Job Search: Resume Scoring & Tailoring with Openai, Apify, and Airtable

Smart Job Search: Resume Scoring & Tailoring with Openai, Apify, and Airtable

ByAshish Kumar Swain @phoenix on n8n.io

This workflow is designed for job seekers who want to automate their job application research and resume optimization. It's ideal for professionals who want to match their CVs to new job postings daily, improving the chance of landing interviews without manual work. Problem:…

Cron / scheduled trigger★★★★☆ complexityAI-powered25 nodesOpenAI ChatGoogle SheetsHTTP RequestAirtableAgentOpenAI
AI & RAG Trigger: Cron / scheduled Nodes: 25 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Agent → Airtable recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

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

Download .json
{
  "id": "JI81TaHdazYM3Wld",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Automate Job Search with AI Resume Scoring & Tailoring using OpenAI, Apify, and Airtable",
  "tags": [],
  "nodes": [
    {
      "id": "ab831a91-5f98-4cf3-9ab9-1ba0df29f1ec",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1400,
        320
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "90d367a2-292f-48ac-9f5a-49edb04b1c2d",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -200,
        320
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "95c3b832-eb9e-4611-9083-1d8fd46e508d",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1740,
        560
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "b42322e6-1439-40fa-ac74-857ffeafb9dc",
      "name": "Split Job Preferences",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        260,
        380
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "e6c9f084-4cb5-4765-8571-877c8cfdf0a4",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        920,
        320
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "179ba6f1-6732-4c00-a1a7-e06c6f42f124",
      "name": "Job Extract with revamped scoring",
      "type": "n8n-nodes-base.code",
      "position": [
        2300,
        60
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "f9a4f1b7-e64f-4588-b3e0-31fd30686a6c",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1700,
        -160
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "f24fd530-3e6a-4266-92f1-797d48e0f623",
      "name": "\ud83d\udd52 Trigger: Daily Job Fetch",
      "type": "n8n-nodes-base.cron",
      "position": [
        -160,
        380
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "c7678b9b-75a8-4968-9122-48f8b090f88d",
      "name": "\ud83d\udcc4 Fetch Job Preferences (Google Sheets)",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        40,
        380
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "507700bb-852b-414e-b963-78820a13e3e3",
      "name": "\ud83d\udd04 Loop: Search Jobs per Preference",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        500,
        380
      ],
      "parameters": {},
      "notesInFlow": false,
      "typeVersion": 3,
      "alwaysOutputData": false
    },
    {
      "id": "8fb836b2-2934-4fed-b697-14bf77ce3525",
      "name": "\ud83d\udd0d Apify: Scrape Jobs",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        720,
        500
      ],
      "parameters": {},
      "typeVersion": 1,
      "alwaysOutputData": false
    },
    {
      "id": "96a3fe38-1e2d-408b-8f36-2db1a3f3c8fa",
      "name": "\ud83e\uddf9 Clean & Extract Job Data",
      "type": "n8n-nodes-base.code",
      "position": [
        720,
        360
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "534613f3-ff95-4700-8a78-bdca59056625",
      "name": "Filter: Recent Jobs (<48h)",
      "type": "n8n-nodes-base.if",
      "position": [
        1000,
        400
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "ab1a0536-acb4-4814-98f5-595c35ca10c6",
      "name": "\ud83d\uddc2\ufe0f Archive: Old Jobs (Airtable)",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1180,
        440
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "21168e06-6b77-4565-a7d6-35baf87bec4f",
      "name": "\ud83d\udd04 Loop: Score New Jobs",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1460,
        380
      ],
      "parameters": {},
      "notesInFlow": false,
      "typeVersion": 3,
      "alwaysOutputData": false
    },
    {
      "id": "e5733cb2-dee3-4059-8608-e9fb662bac9a",
      "name": "\ud83e\udd16 AI: Score CV vs Job",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1720,
        360
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "8f680cad-1d78-4967-8904-e49de08f8f9e",
      "name": "\ud83d\udcc4 Parse AI Score Output",
      "type": "n8n-nodes-base.code",
      "position": [
        2040,
        500
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "2a6607ec-7d95-4154-9e24-b70d2fb1c0f8",
      "name": "\ud83d\udd04 Loop: Generate CV Suggestions",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1780,
        60
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "27122680-563d-4499-8c03-6c6985c9aacc",
      "name": "\u270d\ufe0f AI: Revamp CV Based on Job",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1960,
        80
      ],
      "parameters": {},
      "typeVersion": 1.8
    },
    {
      "id": "024a3a75-9a6c-42b2-845b-67da9eefd599",
      "name": "\ud83d\uddc2\ufe0f Save: Final Job Data (Airtable)",
      "type": "n8n-nodes-base.airtable",
      "position": [
        2160,
        -100
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "6491c5a3-d2dc-4dce-afcd-8a19c85f8f1c",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -200,
        720
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "af4e7a10-d23e-4dfe-ab8a-01f8fbcaffc7",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        920,
        640
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "d19b6513-015e-40ec-b28f-75cde88c9c54",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        840,
        -160
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "557651ed-ad92-44ae-814c-3295925e6759",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1400,
        720
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "70f492a9-54ee-4f46-8e5b-b0bec641b9c8",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -200,
        -160
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c67e1b0b-b5e8-4b84-941e-8c46150bf730",
  "connections": {
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "\ud83e\udd16 AI: Score CV vs Job",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Split Job Preferences": {
      "main": [
        [
          {
            "node": "\ud83d\udd04 Loop: Search Jobs per Preference",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udd0d Apify: Scrape Jobs": {
      "main": [
        [
          {
            "node": "\ud83d\udd04 Loop: Search Jobs per Preference",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udd16 AI: Score CV vs Job": {
      "main": [
        [
          {
            "node": "\ud83d\udcc4 Parse AI Score Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udd04 Loop: Score New Jobs": {
      "main": [
        [
          {
            "node": "\ud83d\udd04 Loop: Generate CV Suggestions",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "\ud83e\udd16 AI: Score CV vs Job",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter: Recent Jobs (<48h)": {
      "main": [
        [
          {
            "node": "\ud83d\udd04 Loop: Score New Jobs",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "\ud83d\uddc2\ufe0f Archive: Old Jobs (Airtable)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udcc4 Parse AI Score Output": {
      "main": [
        [
          {
            "node": "\ud83d\udd04 Loop: Score New Jobs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udd52 Trigger: Daily Job Fetch": {
      "main": [
        [
          {
            "node": "\ud83d\udcc4 Fetch Job Preferences (Google Sheets)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\uddf9 Clean & Extract Job Data": {
      "main": [
        [
          {
            "node": "Filter: Recent Jobs (<48h)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Job Extract with revamped scoring": {
      "main": [
        [
          {
            "node": "\ud83d\udd04 Loop: Generate CV Suggestions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u270d\ufe0f AI: Revamp CV Based on Job": {
      "main": [
        [
          {
            "node": "Job Extract with revamped scoring",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udd04 Loop: Generate CV Suggestions": {
      "main": [
        [
          {
            "node": "\ud83d\uddc2\ufe0f Save: Final Job Data (Airtable)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "\u270d\ufe0f AI: Revamp CV Based on Job",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udd04 Loop: Search Jobs per Preference": {
      "main": [
        [
          {
            "node": "\ud83e\uddf9 Clean & Extract Job Data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "\ud83d\udd0d Apify: Scrape Jobs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udcc4 Fetch Job Preferences (Google Sheets)": {
      "main": [
        [
          {
            "node": "Split Job Preferences",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

This workflow is designed for job seekers who want to automate their job application research and resume optimization. It's ideal for professionals who want to match their CVs to new job postings daily, improving the chance of landing interviews without manual work. Problem:…

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

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

This n8n automation workflow automates the creation, scripting, production, and posting of YouTube videos. It leverages AI (OpenAI), image generation (PIAPI), video rendering (Shotstack), and platform

Agent, OpenAI Chat, Airtable Tool +7
AI & RAG

This workflow is designed for: Content creators and marketers E-commerce and product-based businesses Agencies producing social media visuals and videos Automation builders looking for AI-powered crea

HTTP Request, Edit Image, Google Drive +7
AI & RAG

This workflow automates the creation, rendering, approval, and posting of TikTok-style POV (Point of View) videos to Instagram, with cross-posting to Facebook and YouTube. It eliminates manual video p

OpenAI Chat, Output Parser Item List, HTTP Request +10
AI & RAG

Content marketers and SEO specialists who need to generate multiple SEO-optimized articles targeting keyword variations. Ideal for affiliate sites, niche blogs, or service-based businesses creating lo

Agent, Memory Buffer Window, OpenAI Chat +7
AI & RAG

Most blogs publish words. This system publishes experiences.

OpenAI Chat, HTTP Request, Output Parser Structured +7