🔓 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

Gemini + Gmail: ranked resume matches in your inbox

Lisa Granqvist Partner Workflow Automation Expert

Resume review gets messy fast. One person submits a PDF, another sends a LinkedIn link, and suddenly you’re juggling tabs, notes, and “quick” comparisons that quietly steal your afternoon.

Recruiters feel it when the pipeline floods. A hiring manager feels it when feedback is late. And a talent ops lead feels it when there’s no consistent scoring. This Gemini resume matching automation turns that chaos into a ranked shortlist you can trust.

You’ll see how the workflow collects candidate info, enriches it, scores fit against open roles, then sends a clean HTML report through Gmail so decisions move forward without the back-and-forth.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Gemini + Gmail: ranked resume matches in your inbox

The Problem: Resume reviews don’t scale (and “gut feel” leaks into hiring)

When candidate volume climbs, the process usually doesn’t get better. It gets louder. Resumes arrive in different formats, LinkedIn profiles add extra context you don’t have time to read, and role requirements live in someone’s head or a doc nobody opens. You end up doing the same mental work again and again: extract skills, sanity-check experience, and try to compare apples to oranges. By the end of the week, you’ve spent hours reviewing, but you still can’t confidently explain why Candidate A beat Candidate B.

The friction compounds. Not because your team isn’t capable, but because the process is built on copy-paste and memory.

  • Review time balloons because every resume requires manual summarizing before you can even start comparing.
  • Scoring is inconsistent across reviewers, so the shortlist changes depending on who looked first.
  • LinkedIn context often gets ignored, even when it would clarify seniority, scope, or recent projects.
  • Sharing results is clunky, which slows decisions and creates yet another thread of “who are we moving forward?”

The Solution: Gemini analyzes, scores, and emails ranked matches automatically

This workflow starts with a simple intake form hitting an n8n webhook: a candidate summary, a resume link, and (optionally) a LinkedIn URL. Gemini parses the resume and pulls out the useful parts you normally have to hunt for: skills, experience highlights, and signals of role fit. If a LinkedIn URL is present, Decodo scraping enriches the profile, and the workflow extracts structured attributes so the AI isn’t guessing. Then a job-matching agent compares the candidate profile against job opportunities pulled via Decodo’s job data, ranks the best matches, and produces a polished HTML report. Finally, Gmail delivers the ranked shortlist straight to your inbox so you can review, forward, and decide quickly.

The workflow kicks off from the intake webhook and maps fields into a consistent format. Gemini does the heavy reading, Decodo fills gaps from LinkedIn and job sources, and the agent assembles a ranked set of matches. Gmail sends the finished report as HTML, which means it’s readable the moment you open it.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you screen 20 candidates for one open role. Manually, it’s easy to spend about 10 minutes per resume, plus another 5 minutes checking LinkedIn for half of them, which is roughly 4 hours before you even share a shortlist. With this workflow, you drop the resume link and summary into the intake form (maybe 1 minute each), wait for processing, then receive ranked matches by email. You’re still making the decision, but the “first pass” work is basically gone.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Gemini for resume parsing and fit scoring
  • Gmail to deliver the HTML shortlist report
  • Decodo to scrape LinkedIn and job data
  • Gemini API access (from Google AI Studio / Google Cloud console)

Skill level: Intermediate. You’ll connect accounts, paste API keys, and test a webhook intake once.

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

How It Works

Intake arrives in one place. A webhook receives the candidate’s summary, resume link, and LinkedIn URL (if they provided one). n8n maps those fields so the rest of the workflow stays consistent.

Gemini turns documents into usable signals. The resume is parsed into structured highlights so you’re not reading line-by-line to find the same details every time.

Enrichment fills the gaps. If LinkedIn is present, Decodo pulls profile information and the workflow extracts attributes that help matching (titles, companies, seniority cues).

Job matching and scoring happens automatically. The agent evaluates fit against job opportunities pulled via Decodo, then Gemini produces ranked scoring and a clean narrative you can hand to a stakeholder.

The report lands in Gmail. The output is an HTML email, which means it’s readable, scannable, and easy to forward without copy-pasting into another format.

You can easily modify job location filters to role preferences based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Webhook Trigger

Set up the incoming webhook that receives candidate details and starts the workflow.

  1. Add the Intake Webhook Trigger node and set HTTP Method to POST.
  2. Set the Path to ca18f47b-399e-4689-9795-80ac1d23829b.
  3. Copy the Test URL after saving so you can submit sample candidate payloads.

Use a webhook tester (like Postman) to send a sample payload that includes body.data.fields so downstream mappings resolve properly.

Step 2: Connect Candidate Intake Data

Map the incoming form data to structured fields and route candidates based on LinkedIn availability.

  1. In Map Intake Fields, create assignments for the incoming data.
  2. Set short_summary to {{ $json.body.data.fields[1].value }}.
  3. Set resume_url_link to {{ $json.body.data.fields[2].value[0].url }}.
  4. Set user_email to {{ $json.body.data.fields[0].value }}.
  5. Set user_linkedin to {{ $json.body.data.fields[3].value }}.
  6. In Route LinkedIn Presence, keep the first rule set to notEmpty for {{ $json.user_linkedin }} and the second rule set to empty for {{ $json.user_linkedin }}.

⚠️ Common Pitfall: If body.data.fields positions change in your intake form, update the Map Intake Fields expressions to match the new indexes.

Step 3: Set Up LinkedIn Scraping and Resume Parsing

Route candidates to LinkedIn scraping when available and parse resumes via Gemini.

  1. Connect Route LinkedIn Presence so it sends candidates with LinkedIn profiles to Decodo LinkedIn Scraper and candidates without LinkedIn profiles to Gemini Resume Parser.
  2. In Decodo LinkedIn Scraper, set URL to {{ $json.user_linkedin }} and keep Geo as =.
  3. In Gemini Resume Parser, set Text to What's in this document or picture?, Resource to document, and Document URLs to {{ $json.resume_url_link }}.
  4. Ensure Gemini Resume Parser uses Model models/gemini-2.5-flash.

Credential Required: Connect your Decodo credentials for Decodo LinkedIn Scraper.

Credential Required: Connect your Google Gemini credentials for Gemini Resume Parser.

Step 4: Extract and Combine Candidate Profiles

Extract structured LinkedIn attributes and merge them with the parsed resume data.

  1. In Extract LinkedIn Attributes, set Text to {{ $json.data.results[0].content }}.
  2. Keep the attribute list for Name, Headline, Location, About summary, Experience (detailed roles and companies), Education, Licenses & Certifications, and Volunteer Experience.
  3. In Combine Candidate Data, set Mode to combine and Combine By to combineByPosition.
  4. Connect Extract LinkedIn Attributes and Gemini Resume Parser into Combine Candidate Data so both datasets merge before matching.

Credential Required: Gemini Profile Model is connected as the language model for Extract LinkedIn Attributes — add Google Gemini credentials on Extract LinkedIn Attributes, not on Gemini Profile Model.

Step 5: Configure AI Job Matching and Scoring

Use the agent to compile candidate context, scrape job listings, and score matches with Gemini.

  1. In Job Match Agent, set Text to =Short Summary User: {{ $('Map Intake Fields').item.json.short_summary }} --- User Resume and Experience: {{ $json.content.parts[0].text }} --- LinkedIn User: {{ $json.output }}.
  2. Keep Prompt Type as define and retain the provided system message for job matching logic.
  3. Confirm that Decodo Job Scraper Tool is connected to Job Match Agent as an AI tool.
  4. Confirm that Gemini Match Scoring is connected to Job Match Agent as the AI language model.

Credential Required: Decodo Job Scraper Tool is connected as a tool to Job Match Agent — add Decodo credentials on Job Match Agent, not on Decodo Job Scraper Tool.

Credential Required: Gemini Match Scoring is connected as the language model for Job Match Agent — add Google Gemini credentials on Job Match Agent, not on Gemini Match Scoring.

Step 6: Configure Output Email Delivery

Send the formatted job match report to the candidate via Gmail.

  1. In Email Job Match Report, set Send To to {{ $('Map Intake Fields').item.json.user_email }}.
  2. Set Subject to Top Job Matches for you.
  3. Set Message to {{ $json.output }} and keep Append Attribution disabled.

Credential Required: Connect your Gmail credentials for Email Job Match Report.

Step 7: Test and Activate Your Workflow

Validate the full flow from intake to email delivery before turning it on.

  1. Click Execute Workflow and send a test payload to the Intake Webhook Trigger URL.
  2. Confirm that Map Intake Fields produces short_summary, resume_url_link, user_email, and user_linkedin.
  3. Verify the route in Route LinkedIn Presence and ensure Combine Candidate Data receives inputs from both resume parsing and LinkedIn extraction when applicable.
  4. Check that Job Match Agent outputs HTML and that Email Job Match Report sends the email successfully.
  5. Turn the workflow Active once testing confirms successful matches and email delivery.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Gmail credentials can expire or need specific permissions. If things break, check the connected Google account access inside n8n’s Credentials screen 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.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Frequently Asked Questions

How long does it take to set up this Gemini resume matching automation?

About 30 minutes if your accounts and API keys are ready.

Do I need coding skills to automate resume matching?

No. You’ll mostly connect services and paste credentials. The only “technical” part is testing the webhook once.

Is n8n free to use for this Gemini resume matching 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 Gemini API usage and any Decodo scraping costs based on your volume.

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 Gemini resume matching workflow for different role criteria?

Yes, and it’s the first thing you should do. You can adjust the candidate field mapping in “Map Intake Fields,” then tune scoring language in “Gemini Match Scoring” so it reflects your role rubric (must-haves, nice-to-haves, seniority signals). If you want to enrich different sources, you can swap the Decodo scraping used in “Decodo LinkedIn Scraper” and the tool access used by “Decodo Job Scraper Tool.” Common tweaks include location preference, remote eligibility, and weighting recent experience more heavily than older roles.

Why is my Gmail connection failing in this workflow?

Usually it’s expired OAuth access or the wrong Google account connected. Reconnect the Gmail credential in n8n, confirm the sending address is allowed, and double-check the Gmail node is set to send HTML if your report looks broken. If it works for a few emails then fails, you may be hitting account or API limits.

How many candidates can this Gemini resume matching automation handle?

If you self-host, there’s no hard execution cap (it depends on your server and API limits). On n8n Cloud, capacity depends on your plan’s monthly executions, and AI calls are the real bottleneck. Practically, most small teams run this comfortably for dozens of candidates a week, then scale up by batching and watching Gemini/Decodo usage.

Is this Gemini resume matching automation better than using Zapier or Make?

Often, yes. n8n handles branching logic (like “LinkedIn present vs not”) cleanly, and it’s much more comfortable once you start combining scraping, AI parsing, and a final HTML report. Self-hosting is a big deal too, because high-volume screening can get expensive on per-task pricing. Zapier or Make can still be fine for a basic “form to email summary” flow, but this workflow benefits from the extra control. If you want a quick recommendation based on your volume and team setup, Talk to an automation expert.

Once this is running, your inbox becomes the handoff point: ranked matches, readable context, and fewer meetings just to agree on “who’s next.” Honestly, it’s a relief.

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