Skip to main content

Match LinkedIn jobs and generate cover letters with OpenAI, Apify and Sheets

Workflow preview

Workflow preview
100%
Match LinkedIn jobs and generate cover letters with OpenAI, Apify and Sheets preview
Open on n8n.io

1. Workflow Overview

This n8n workflow automatically searches LinkedIn jobs using Apify, compares each job with your resume using AI, calculates a match score, generates a personalized cover letter, and stores everythi...

Best for

  • HR automation workflows
  • AI Summarization automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.splitinbatches, n8n-nodes-base.if, @n8n/n8n-nodes-langchain.lmchatopenai, n8n-nodes-base.extractfromfile, n8n-nodes-base.googlesheets, n8n-nodes-base.telegram, n8n-nodes-base.scheduletrigger, @apify/n8n-nodes-apify.apify

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by Jitesh Dugar.

Original n8n.io source

1.1 Workflow description

Title
Match LinkedIn jobs and generate cover letters with OpenAI, Apify and Sheets
Workflow name
Match LinkedIn jobs and generate cover letters with OpenAI, Apify and Sheets

This n8n workflow automatically searches LinkedIn jobs using Apify, compares each job with your resume using AI, calculates a match score, generates a personalized cover letter, and stores everything inside Google Sheets.

High-scoring jobs are instantly sent to Telegram so you can apply faster to the most relevant opportunities.


Workflow Structure


Step 1 — Schedule Trigger

Node: Schedule Trigger

This node automatically starts the workflow every day at a specific time.

What it does

  • Runs the workflow automatically
  • Eliminates manual execution
  • Creates a fully automated job-hunting system

Current Configuration

  • Runs daily at 5 PM

Step 2 — Download Resume PDF

Node: Download file

This node downloads the resume PDF from Google Drive.

What it does

  • Connects to Google Drive
  • Downloads the selected resume file
  • Sends the file to the next processing step

Why it matters

Your resume becomes dynamic input for the AI matching system.


Step 3 — Extract Resume Text

Node: Extract from File

This node extracts readable text from the PDF resume.

What it does

  • Reads the PDF file
  • Extracts plain text content
  • Makes the resume understandable for AI

Output

  • Resume text
  • PDF metadata
  • Structured readable content

Step 4 — Read Job Search Filters

Node: Get row(s) in sheet

This node reads job search preferences from Google Sheets.

What it reads

  • Job keyword
  • Preferred location
  • Easy Apply option

Example

Keyword Location Easy Apply
Software Developer Bangalore true

Step 5 — LinkedIn Job Scraper

Node: Run an Actor and get dataset

This node uses Apify to scrape LinkedIn job listings.

What it does

  • Searches LinkedIn jobs
  • Uses keyword + location filters
  • Fetches latest job postings
  • Supports Easy Apply filtering

Example Search

  • Software Developer
  • Bangalore
  • Easy Apply enabled

Output Includes

  • Job title
  • Company name
  • Job description
  • LinkedIn apply link
  • Applicant count
  • Workplace type

Step 6 — Process Jobs One-by-One

Node: Loop Over Items

This node processes each scraped job individually.

What it does

  • Loops through all job listings
  • Processes one job at a time
  • Prevents AI overload
  • Maintains stable execution

Step 7 — AI Resume Matcher

Node: Job Matcher

This is the core AI engine of the workflow.

AI Model Used

  • GPT-4.1 Mini

What it does

  • Reads your resume
  • Reads the job description
  • Compares both intelligently
  • Calculates a job match score
  • Generates a personalized cover letter

AI Output

{
 "score": 80,
 "coverLetter": "Generated personalized cover letter"
}

Step 8 — Parse AI Output

Node: Edit Fields

This node formats the AI response into reusable structured data.

What it does

  • Converts raw AI response into JSON
  • Cleans output formatting
  • Makes fields reusable in later nodes

Output Fields

  • Match score
  • Cover letter

Step 9 — Save Results to Google Sheets

Node: Append or update row in sheet

This node stores processed jobs inside Google Sheets.

What gets saved

  • Job title
  • Company
  • Location
  • Job description
  • Apply link
  • Match score
  • AI-generated cover letter

Step 10 — High Match Score Filter

Node: Score Filter

This node filters only high-quality job matches.

Current Logic

Continue only if:

Score ≥ 50

Step 11 — Telegram Job Alerts

Node: Send a text message

This node sends instant Telegram notifications for top job matches.

What it sends

  • Job title
  • Company
  • Location
  • Match score
  • Apply link

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Loop Over Items

Type / Role
n8n-nodes-base.splitInBatches - splitInBatches
Config choices
Version 3

Block 2 - Score Filter

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 3 - OpenAI Chat Model

Type / Role
@n8n/n8n-nodes-langchain.lmChatOpenAi - lmChatOpenAi
Config choices
Version 1.2

Block 4 - Extract from File

Type / Role
n8n-nodes-base.extractFromFile - extractFromFile
Config choices
Version 1

Block 5 - Append or update row in sheet

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 6 - Send a text message

Type / Role
n8n-nodes-base.telegram - telegram
Config choices
Version 1.2

Block 7 - Get row(s) in sheet

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 8 - Schedule Trigger

Type / Role
n8n-nodes-base.scheduleTrigger - scheduleTrigger
Config choices
Version 1.2

Block 9 - Run an Actor and get dataset

Type / Role
@apify/n8n-nodes-apify.apify - apify
Config choices
Version 1

Block 10 - Edit Fields

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.4

Block 11 - Sticky Note

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 12 - Download file

Type / Role
n8n-nodes-base.googleDrive - googleDrive
Config choices
Version 3

Block 13 - Sticky Note2

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 14 - Sticky Note3

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 15 - Sticky Note4

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 16 - Sticky Note5

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 17 - Sticky Note6

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 18 - Job Matcher

Type / Role
@n8n/n8n-nodes-langchain.agent - agent
Config choices
Version 2

Block 19 - Sticky Note7

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 20 - Sticky Note8

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 21 - Sticky Note9

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 22 - Sticky Note10

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 23 - Sticky Note11

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 24 - Sticky Note1

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

3. Summary Table

Workflow Match LinkedIn jobs and generate cover letters with OpenAI, Apify and Sheets
Complexity advanced
Nodes 24
Categories HR, AI Summarization
Author Jitesh Dugar
Published 11 May 2026

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/15623/15623.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Match LinkedIn jobs and generate cover letters with OpenAI, Apify and Sheets do?

This n8n workflow automatically searches LinkedIn jobs using Apify, compares each job with your resume using AI, calculates a match score, generates a personalized cover letter, and stores everythi...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your HR, AI Summarization use case.