Skip to main content

Tailor your CV and cover letter to each job with easybits and Gemini

Workflow preview

Workflow preview
100%
Tailor your CV and cover letter to each job with easybits and Gemini preview
Open on n8n.io

1. Workflow Overview

What This Workflow Does Upload a job posting (PDF, image, or screenshot) and instantly get a tailored CV section and a matching cover letter – both written in the posting's language and tone, both ...

Best for

  • Personal Productivity automation workflows
  • Multimodal AI automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.formtrigger, n8n-nodes-base.googlesheets, n8n-nodes-base.code, @easybits/n8n-nodes-extractor.easybitsextractor, @n8n/n8n-nodes-langchain.googlegemini, n8n-nodes-base.form, n8n-nodes-base.googledocs, n8n-nodes-base.aggregate

Source and attribution

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

Original n8n.io source

1.1 Workflow description

Title
Tailor your CV and cover letter to each job with easybits and Gemini
Workflow name
Tailor your CV and cover letter to each job with easybits and Gemini

What This Workflow Does

Upload a job posting (PDF, image, or screenshot) and instantly get a tailored CV section and a matching cover letter – both written in the posting's language and tone, both honest about what you actually have. The workflow scores how well your stored CV matches the posting before and after AI rewriting, so you can see exactly how much keyword surfacing happened. Anything you don't actually have lands in a gaps array – never invented into bullets.

How It Works

  1. Upload – Drop the job posting into the n8n web form, optionally with notes
  2. Load CV – Reads your structured Master CV from Google Sheets
  3. Extract – easybits Extractor pulls 10 structured fields from the posting (must-haves, keywords, language, tone, etc.)
  4. Score (before) – A Code node calculates a deterministic match score using keyword overlap
  5. Tailor bullets – Gemini rewrites your CV bullets to surface real overlap with the posting, mirrors employer phrasing, flags genuine gaps
  6. Score (after) – Same scoring formula, run against the rewritten bullets – the delta is the win
  7. Cover letter – A second Gemini call drafts a 3-paragraph letter in the posting's language and tone, referencing only the tailored CV
  8. Output – Both pieces get written into a single Google Doc, titled with company + role
  9. Done – A completion screen shows the score before/after, the Doc link, and any gaps

Setup Guide

1. Run the CV Onboarding Workflow First

This workflow assumes a populated Master CV Google Sheet. If you haven't run the CV Onboarding (easybits) workflow yet, do that first – it'll extract your CV into the right structure.

2. Install & Connect the easybits Extractor

On n8n Cloud the easybits Extractor is available out of the box. On self-hosted n8n, install it via Settings → Community Nodes → enter @easybits/n8n-nodes-extractor.

Sign up at easybits.tech for a free API key. Open the easybits: Extract Job Posting node and connect your credential.

3. Configure the Extraction Pipeline

The Extractor uses 10 fields to pull structured data from the job posting. Paste each description into the corresponding field's description box:

job_title (string) The exact job title as written in the posting. If multiple titles are mentioned, return the primary one. Return null if not stated.

company (string) The hiring company's name. Return null if not stated or if the posting is from a recruiter without naming the company.

seniority (string) One of: intern, junior, mid, senior, lead, principal, executive. Infer from title and years-of-experience requirements. Return null only if there is no signal at all.

must_have_skills (array) Skills, tools, or specific qualifications the posting explicitly lists as required, must-have, mandatory, or essential. Return as SHORT noun phrases (1-3 words each). Examples: "Python", "PostgreSQL", "Kafka", "5 years experience", "fluent German". DO NOT return full sentences or full requirements. Break compound requirements into individual atoms – e.g., "Solid understanding of testing, monitoring, and profiling" must be returned as three separate items: "testing", "monitoring", "profiling". DO NOT include soft skills like "problem-solving" or "attention to detail". Return empty array if none are explicitly required.

nice_to_have_skills (array) Skills listed as preferred, bonus, plus, nice-to-have, or "ideally". Same format as must_have_skills. Return empty array if none.

responsibilities (array) Concrete duties or tasks the role involves, as short action phrases. Maximum 8 items. Empty array if the posting is purely qualifications-focused.

keywords (array) Domain-specific terms, technologies, methodologies, or industry vocabulary worth mirroring in a CV. Exclude generic words like "team player". Maximum 15 items.

tone (string) Writing style of the posting. One of: formal, professional, casual, technical.

language (string) ISO 639-1 code of the posting's primary language (e.g., "en", "de", "nl").

location (string) Work location as stated. Include "remote", "hybrid", or city/country. Null if not stated.

The 10-field cap matches the easybits free plan, so anyone can run this workflow as-is.

4. Connect Google Sheets

Open the Load Master CV node and connect your Google Sheets credential. Replace the placeholder document ID with your Master CV sheet's ID and select the Master CV tab.

5. Connect Gemini

Open both Gemini nodes (Gemini: Tailor Bullets and Gemini: Cover Letter) and connect your Google AI / Gemini credential. Default model: gemini-2.5-pro.

6. Connect Google Docs

Open both Create Google Doc and Write to Google Doc nodes, connect your Google Docs credential. In Create Google Doc, pick a Drive and Folder where tailored applications should be saved (a dedicated folder is recommended).

7. Activate & Use

Set the workflow to active, copy the form URL, and upload a real job posting. The completion screen returns the score delta and a link to the generated Google Doc.


🔧 Notes on Implementation

Honesty guardrail. Both Gemini prompts forbid inventing experience. Skills the CV genuinely lacks land in a gaps array, surfaced on the completion screen – never faked into bullets or claimed in the cover letter.

Deterministic scoring. The before/after match score is calculated in JavaScript, not by an LLM. The same formula runs against the original CV and the tailored bullets, so the delta reflects real keyword surfacing – not AI claiming it improved things. Must-haves count double in the formula; keywords count single.

Defensive parsing. The toArray() helper in the Score nodes handles three shapes the Extractor may return for array fields: actual arrays, JSON strings, and comma-separated strings. This makes the workflow robust across different Extractor response shapes.

Language and tone. Both come from the Extractor as structured fields, so a German posting yields a German CV section AND a German cover letter – automatically.

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 - On form submission

Type / Role
n8n-nodes-base.formTrigger - formTrigger
Config choices
Version 2.5

Block 2 - Load Master CV

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

Block 3 - Prep Data

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 4 - easybits: Extract Job Posting

Type / Role
@easybits/n8n-nodes-extractor.easybitsExtractor - easybitsExtractor
Config choices
Version 2

Block 5 - Score: Before

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 6 - Gemini: Tailor Bullets

Type / Role
@n8n/n8n-nodes-langchain.googleGemini - googleGemini
Config choices
Version 1.1

Block 7 - Score: After

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 8 - Gemini: Cover Letter

Type / Role
@n8n/n8n-nodes-langchain.googleGemini - googleGemini
Config choices
Version 1.1

Block 9 - Assemble Document

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 10 - Show Completion Screen

Type / Role
n8n-nodes-base.form - form
Config choices
Version 2.5

Block 11 - Create Google Doc

Type / Role
n8n-nodes-base.googleDocs - googleDocs
Config choices
Version 2

Block 12 - Aggregate CV Rows

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

Block 13 - Write to Google Doc

Type / Role
n8n-nodes-base.googleDocs - googleDocs
Config choices
Version 2

Block 14 - Sticky Note

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

Block 15 - Sticky Note1

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

Block 16 - Sticky Note3

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

Block 17 - Sticky Note2

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

Block 18 - Sticky Note4

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

Block 19 - Sticky Note5

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

Block 20 - Sticky Note6

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

Block 21 - Sticky Note7

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

Block 22 - Sticky Note8

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

Block 23 - Sticky Note9

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

Block 24 - Sticky Note10

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

Showing the first 24 of 27 workflow blocks. Download the JSON for the full node graph.

3. Summary Table

Workflow Tailor your CV and cover letter to each job with easybits and Gemini
Complexity advanced
Nodes 27
Categories Personal Productivity, Multimodal AI
Author Felix
Published 07 May 2026

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/15526/15526.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 Tailor your CV and cover letter to each job with easybits and Gemini do?

What This Workflow Does Upload a job posting (PDF, image, or screenshot) and instantly get a tailored CV section and a matching cover letter – both written in the posting's language and tone, both ...

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 Personal Productivity, Multimodal AI use case.