🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

LinkedIn to Google Sheets, job matches ranked

Lisa Granqvist Partner Workflow Automation Expert

Job hunting gets messy fast. You find a role on LinkedIn, copy the link somewhere, forget why it looked good, then re-open the tab days later and start over.

This LinkedIn job automation hits job seekers first, but recruiters and career coaches feel the same friction when they’re tracking roles for clients. And if you run a small agency and someone’s hiring, you’ve probably done the “spreadsheet + bookmarks + notes app” shuffle too.

This workflow pulls relevant LinkedIn roles, scores each one against your resume, drafts helpful notes and a cover letter, then logs everything into Google Sheets so you can apply with focus. Below, you’ll see exactly what it does and how to make it your own.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: LinkedIn to Google Sheets, job matches ranked

The Problem: LinkedIn job tracking turns into spreadsheet chaos

Finding jobs isn’t the hard part. It’s keeping your process clean enough that you can make good decisions. A typical week looks like this: you open LinkedIn, save a few roles, paste a couple links into a sheet, and tell yourself you’ll “come back later” to compare them. Later arrives, the descriptions changed, you can’t remember which ones were remote, and you’re back to re-reading everything. Add cover letters on top and it turns into a nightly chore. Honestly, it’s the context switching that drains you.

It adds up fast. Here’s where it breaks down in real life.

  • You re-read the same job description three times because your notes are scattered across tabs and documents.
  • Manual scoring is inconsistent, so “great fit” depends on your mood that day.
  • Copy-paste into Google Sheets invites small errors, which means duplicate rows and missed follow-ups.
  • Cover letters become a bottleneck, so you apply to fewer roles than you should.

The Solution: Resume-based LinkedIn matching logged in Google Sheets

This workflow runs on a schedule and starts by pulling your latest resume PDF from Google Drive. It reads the resume, extracts the skills and experience that matter, then builds targeted LinkedIn search queries based on your preferences (role type, location, remote, Easy Apply, and a job limit). After it fetches recent listings, it opens each job detail page, pulls out the description and attributes, and asks an AI agent to compare that job to your resume. For every role, you get a match score, practical notes, suggested resume improvements, and a tailored cover letter draft. Everything is upserted into Google Sheets, and you get a Gmail notification when the run finishes.

The workflow starts with a scheduled trigger and your saved preferences. Then it gathers LinkedIn listings and loops through each job link in batches (with a short wait to avoid hammering pages). Finally, it writes clean rows into your tracking sheet and emails you that the run is done.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you want to seriously compare 40 LinkedIn roles in a week. Manually, even a quick pass is maybe 6 minutes per role to open the job page, skim, paste a link into Google Sheets, and write a note, which is about 4 hours total (and that’s before cover letters). With this workflow, you spend about 10 minutes setting preferences once, let it run in the background, then you review a ranked sheet in one sitting. The “work” becomes choosing top matches, not gathering them.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Drive to store your resume PDF.
  • Google Sheets to log, rank, and track jobs.
  • Gmail for the “run finished” notification email.
  • AI model credentials (get it from Google AI Studio for Gemini, or your provider’s console).

Skill level: Intermediate. You’ll connect accounts, paste Sheet IDs, and adjust a few preferences in the Config/Setup nodes.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A scheduled run kicks things off. n8n triggers on your chosen cadence (daily, weekdays, whatever fits), then loads your saved preferences like remote-only or Easy Apply.

Your resume becomes the “source of truth.” The workflow downloads your PDF from Google Drive, parses it, and uses an AI agent to summarize skills, experience, and role direction so job scoring stays consistent.

LinkedIn roles are fetched and processed in batches. n8n builds search queries, requests listings, extracts job links, and loops through them with a deliberate delay. That delay matters because LinkedIn pages can be finicky and you don’t want partial page loads.

AI generates the decision-making layer. For each job, another agent compares your resume to the job description, produces a fit score, writes notes, suggests resume tweaks, and drafts a cover letter you can personalize.

Everything lands in Google Sheets, then you get a Gmail ping. The workflow upserts rows so re-runs update existing jobs instead of creating a sea of duplicates. You can easily modify the search preferences and scoring prompts to match your industry and tone based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Scheduled Run Trigger

This workflow starts on a daily schedule and immediately sets user preferences that guide the search and result limits.

  1. Open Scheduled Run Trigger and set the schedule rule to run at triggerAtHour: 5.
  2. In Setup Preferences, set maxJobsPerSearch to 2, preferredRemote to Remote, and preferredEasyApply to No.
  3. Confirm the execution order: Scheduled Run TriggerSetup Preferences.
Keep maxJobsPerSearch low during initial testing to avoid long runs while validating LinkedIn extraction.

Step 2: Connect Google Drive

This section retrieves your resume PDF and extracts text for all downstream AI tasks.

  1. Open Retrieve Drive File and set File ID to your resume file, e.g. [YOUR_ID].
  2. Credential Required: Connect your googleDriveOAuth2Api credentials in Retrieve Drive File.
  3. In Parse Resume PDF, set Operation to pdf to extract text from the downloaded file.
  4. Verify the flow: Setup PreferencesRetrieve Drive FileParse Resume PDF.
⚠️ Common Pitfall: If the Drive file is not publicly accessible, the workflow will fail unless Retrieve Drive File is authorized with the correct Google account.

Step 3: Set Up AI Resume Insight and Search Filters

This stage analyzes the resume with AI, constructs job search rows, and appends search filters to Google Sheets.

  1. Open Resume Insight Agent and keep the prompt that references {{ $node["Parse Resume PDF"].data.text }}.
  2. Ensure Gemini Model Core is connected as the language model to Resume Insight Agent. Credential Required: Connect your googlePalmApi credentials in Gemini Model Core (not in the agent node).
  3. In Compose Search Rows, keep the JS code that applies preferences from Setup Preferences and throws an error if items[0].json.output is missing.
  4. Open Append Search Filters and map fields using the expressions like {{$json.Remote}}, {{$json.Keyword}}, and {{$json["Experience Level"]}}.
  5. Credential Required: Connect your googleSheetsOAuth2Api credentials in Append Search Filters.
  6. Verify the flow: Parse Resume PDFResume Insight AgentCompose Search RowsAppend Search Filters.
If Resume Insight Agent outputs invalid JSON, Compose Search Rows will throw a parse error—keep the AI prompt unmodified during initial tests.

Step 4: Configure LinkedIn Search and Link Processing

This part builds LinkedIn URLs, fetches listings, extracts job links, and limits results per search.

  1. In Build LinkedIn Query, leave the JS that constructs URLs and sets f_EA=true and f_WT for remote filtering.
  2. Set Request LinkedIn Listings URL to the expression {{ $json.url }}.
  3. In Extract Listing Links, confirm the CSS selector ul.jobs-search__results-list li div a[class*="base-card"] and set Return Value to attribute for jobs.
  4. In Restrict Job Count, keep the JS that slices items based on $node["Setup Preferences"].json.maxJobsPerSearch.
  5. Set Expand Link Items Field to Split Out to jobs and route into Batch Through Links.
⚠️ Common Pitfall: LinkedIn HTML can change. If Extract Listing Links returns empty arrays, update the CSS selector first.

Step 5: Set Up Job Detail Parsing, AI Scoring, and Sheet Updates

Each job link is fetched, parsed, scored with AI, and upserted into Google Sheets before looping to the next batch.

  1. In Delay Between Batches, set Amount to 2 to space out requests, then route to Fetch Job Detail Page.
  2. Set Fetch Job Detail Page URL to the expression {{ $json.jobs }}.
  3. In Parse Job Detail HTML, confirm extraction keys like Title, Company, Location, Description, and Job ID from the listed selectors.
  4. In Map Job Attributes, keep expressions like {{$json.Description.replaceAll(/\s+/g, " ")}} and {{"https://www.linkedin.com/jobs/view/"+ $json["Job ID"].split(":").last()}}.
  5. Ensure Gemini Chat Engine A is connected to Job Fit Agent and Gemini Chat Engine B is connected to Resume Improvement Agent. Credential Required: Connect your googlePalmApi credentials in both Gemini chat engines (not in the agent nodes).
  6. In Assemble Sheet Payload, keep the raw JSON parsing code that reads {{ $('Job Fit Agent').item.json.output }} and extracts the object safely.
  7. Open Upsert Job Results and confirm Operation is appendOrUpdate, mapping values like {{ $('Map Job Attributes').item.json['Apply Link'] }} and {{ $('Assemble Sheet Payload').item.json.match_score }}.
  8. Credential Required: Connect your googleSheetsOAuth2Api credentials in Upsert Job Results.
Batch Through Links outputs to both Send Results Email and Delay Between Batches in parallel, ensuring email delivery while processing continues.

Step 6: Configure Results Email Delivery

The workflow sends a summary email after each batch run to confirm updated results.

  1. Open Send Results Email and set Send To to [YOUR_EMAIL].
  2. Set Subject to Job search results and Message to the provided text including your Google Sheet link.
  3. Credential Required: Connect your gmailOAuth2 credentials in Send Results Email.

Step 7: Test and Activate Your Workflow

Run a manual test to verify each stage, then activate the schedule for daily operation.

  1. Click Execute Workflow to run a manual test starting at Scheduled Run Trigger.
  2. Verify that Append Search Filters writes rows into the Filter sheet and Upsert Job Results populates the Result sheet in Job Search N8N.
  3. Confirm that Send Results Email arrives with the configured message and link.
  4. When satisfied, toggle the workflow to Active so Scheduled Run Trigger runs daily at the configured hour.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Drive credentials can expire or need specific permissions. If things break, check the n8n Credentials screen and the file’s sharing settings first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • LinkedIn HTML selectors change sometimes, so the “extract links/details” parsing can suddenly return blanks. When that happens, inspect the job page HTML and update the parsing selectors in the HTML extraction nodes.

Frequently Asked Questions

How long does it take to set up this LinkedIn job automation automation?

About 30 minutes if your Google accounts are ready.

Do I need coding skills to automate LinkedIn job automation?

No. You will connect your accounts and paste in a few IDs and preferences.

Is n8n free to use for this LinkedIn job automation workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in AI model costs (often just a few dollars a month at moderate usage).

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this LinkedIn job automation workflow for different roles or locations?

Yes, and you should. Update the preferences in the “Setup Preferences/Config” Set node (location, remote-only, Easy Apply, and the job limit), then tweak the prompt used by the resume insight and job fit agents to target the titles you care about. Common customizations include adding multiple locations, changing the minimum fit score you’ll consider “worth applying,” and writing cover letters in your own tone.

Why is my Google Sheets connection failing in this workflow?

Most of the time it’s an expired Google authorization or the sheet ID is wrong. Reconnect the Google Sheets credential in n8n, then re-check the spreadsheet and tab names used in the Upsert step. Also make sure the Google account you connected actually has edit access to that sheet.

How many jobs can this LinkedIn job automation automation handle?

It depends on the job limit you set and how long you’re willing to let it run, but 50–100 roles per run is realistic for most setups.

Is this LinkedIn job automation automation better than using Zapier or Make?

Often, yes, because this is not a simple two-step Zap. You’re looping through many jobs, parsing pages, waiting between batches, and running multiple AI evaluations per role, which gets expensive or awkward in tools that charge per task at high volume. n8n also gives you a self-hosting path if you want more control. That said, if you only want “send me new LinkedIn jobs to a sheet” and nothing else, Zapier or Make can feel quicker. The moment you care about scoring, drafts, and clean upserts, n8n usually wins. Talk to an automation expert if you want a second opinion before setting it up.

Once this is running, your job search stops being a pile of tabs and turns into a ranked shortlist you can actually act on. The workflow handles the repetitive stuff, so you can spend your energy on strong applications.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal