Skip to main content

Tailor your Google Docs CV to any job using Ollama and Groq

Workflow preview

Workflow preview
100%
Tailor your Google Docs CV to any job using Ollama and Groq preview
Open on n8n.io

1. Workflow Overview

CV Keyword Optimizer An AI powered n8n workflow that automatically tailors your resume to any job description by injecting relevant keywords — without touching your formatting, layout, or design...

Best for

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

Tools used

n8n-nodes-base.stickynote, n8n-nodes-base.formtrigger, n8n-nodes-base.code, n8n-nodes-base.googledocs, n8n-nodes-base.httprequest, n8n-nodes-base.if, n8n-nodes-base.googledrive, n8n-nodes-base.respondtowebhook

Source and attribution

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

Original n8n.io source

1.1 Workflow description

Title
Tailor your Google Docs CV to any job using Ollama and Groq
Workflow name
Tailor your Google Docs CV to any job using Ollama and Groq

🎯 CV Keyword Optimizer

An AI-powered n8n workflow that automatically tailors your resume to any job description by injecting relevant keywords — without touching your formatting, layout, or design.


How It Works

Architecture

┌─────────────────────────────────────────────────────────────────┐
│ User Input (Form) │
│ CV Google Docs Link + Job URL or Pasted JD │
└──────────────────────────┬──────────────────────────────────────┘
 │
 ▼
┌──────────────────────────────────────────────────────────────────┐
│ 1. Read CV from Google Docs API │
│ 2. Extract full CV text (handles tables, paragraphs, etc.) │
└──────────────────────────┬───────────────────────────────────────┘
 │
 ▼
┌──────────────────────────────────────────────────────────────────┐
│ 3. Get Job Description │
│ ├── URL provided? → Scrape job page, strip HTML to text │
│ │ └── Scrape failed? → Fall back to manual JD │
│ └── No URL? → Use manually pasted JD directly │
└──────────────────────────┬───────────────────────────────────────┘
 │
 ▼
┌──────────────────────────────────────────────────────────────────┐
│ 4. 🏠 Local Ollama (llama3.1:8b) │
│ Analyzes JD + CV → Extracts & ranks 10-20 ATS keywords │
│ Output: keyword, priority, target bullet, reason │
└──────────────────────────┬───────────────────────────────────────┘
 │
 ▼
┌──────────────────────────────────────────────────────────────────┐
│ 5. ☁️ Groq API (Llama 3.3 70B) │
│ Takes ranked keywords + CV → Produces find/replace pairs │
│ Naturally weaves keywords into experience bullet points │
└──────────────────────────┬───────────────────────────────────────┘
 │
 ▼
┌──────────────────────────────────────────────────────────────────┐
│ 6. Copy original CV via Google Drive API │
│ (preserves ALL formatting, tables, styles) │
│ │
│ 7. Apply replacements via Google Docs batchUpdate API │
│ (replaceAllText — formatting stays intact) │
└──────────────────────────┬───────────────────────────────────────┘
 │
 ▼
┌──────────────────────────────────────────────────────────────────┐
│ 8. Output │
│ ✅ New Google Doc link │
│ 📋 Changelog: original text → updated text + keywords added │
└──────────────────────────────────────────────────────────────────┘

Why Two AI Models?

Step Model Why
Keyword Extraction Ollama llama3.1:8b (local) Free, private, no API costs. Reasoning about which keywords actually matter for ATS
Text Rewriting Groq llama-3.3-70b-versatile (cloud) Larger model = better at natural language. Produces find/replace pairs that read naturally

What Gets Modified

  • ✅ Experience/work bullet points
  • ✅ Skills/technical skills lines
  • ❌ Name, contact info, education, dates, company names, job titles — never touched

Formatting Preservation

The workflow copies your original Google Doc (not recreates it), then uses replaceAllText to swap text in-place. This means:

  • ✅ Tables, columns, fonts, colors — all preserved
  • ✅ Bold, italic, underline — all preserved
  • ✅ Custom spacing, margins — all preserved
  • ✅ Original doc is untouched (changes go to the copy)

Setup Steps

Prerequisites

1. Install & Start Ollama

# macOS
brew install ollama

# Start the Ollama server
ollama serve

# Pull the model (in another terminal)
ollama pull llama3.1:8b

Verify it's running:

curl http://localhost:11434/api/tags

2. Get a Groq API Key

  1. Go to console.groq.com
  2. Sign up / log in
  3. Navigate to API Keys → Create a new key
  4. Copy the key (starts with gsk_...)

3. Configure Environment

cd cv-generator

# Create .env from template
cp .env.example .env

# Edit .env and add your Groq key
# GROQ_API_KEY=gsk_your_key_here

4. Start n8n

docker compose up -d

n8n will be available at http://localhost:5678

Default credentials:

  • Username: admin
  • Password: changeme

> ⚠️ Change these in docker-compose.yml for production use.

5. Import the Workflow

  1. Open n8n at http://localhost:5678
  2. Go to WorkflowsImport from File
  3. Select cv-keyword-optimizer.json
  4. You'll see credential warnings on some nodes — that's expected

6. Set Up Google Credentials

  1. In n8n, go to SettingsCredentials
  2. Create a Google Docs OAuth2 credential
  • Follow n8n's OAuth2 setup guide for Google
  • Required scopes: https://www.googleapis.com/auth/documents
  1. Create a Google Drive OAuth2 credential
  • Required scopes: https://www.googleapis.com/auth/drive
  1. Click each node with a ⚠️ warning → select your credential from the dropdown

7. Activate & Use

  1. Toggle the workflow Active
  2. Open the form URL shown in the trigger node (or go to http://localhost:5678/form/cv-keyword-optimizer-form)
  3. Fill in:
  • Google Docs CV Link (required)
  • Job Posting URL or Job Description (at least one)
  1. Submit and wait ~30-60 seconds
  2. Get your optimized CV link + detailed changelog

Project Structure

cv-generator/
├── cv-keyword-optimizer.json # n8n workflow definition
├── docker-compose.yml # n8n container config
├── .env # Environment variables (not committed)
├── .env.example # Template for .env
├── .gitignore # Ignores .env
└── README.md # This file

Troubleshooting

Issue Solution
Ollama connection refused Make sure ollama serve is running. n8n reaches it via host.docker.internal:11434
Groq 429 rate limit Free tier has limits. Wait a minute and retry
Scraping fails on LinkedIn LinkedIn blocks scrapers. Paste the JD manually instead
Google Docs auth error Re-check OAuth2 credentials in n8n. Ensure correct scopes
Replacements don't apply The AI's "find" text must exactly match the CV. Check the Changes Summary for what was attempted
Empty response from Ollama Model may still be loading. First run takes longer. Timeout is set to 5 min

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 - Overview

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

Block 2 - CV Input Form

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

Block 3 - Extract Doc ID & Job URL

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

Block 4 - Read CV from Google Docs

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

Block 5 - Extract CV Text

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

Block 6 - Scrape Job Page

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 7 - Extract Job Text from HTML

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

Block 8 - Parse Keywords

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

Block 9 - Parse AI Response

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

Block 10 - Check for Errors

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

Block 11 - Copy Original CV

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

Block 12 - Build Replace Requests

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

Block 13 - Apply Replacements to Copy

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 14 - Changes Summary

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

Block 15 - Redirect to CV

Type / Role
n8n-nodes-base.respondToWebhook - respondToWebhook
Config choices
Version 1.1

Block 16 - Error Output

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

Block 17 - Sticky Note

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

Block 18 - Sticky Note1

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

Block 19 - Sticky Note2

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

Block 20 - Sticky Note3

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

Block 21 - Sticky Note4

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

Block 22 - Sticky Note5

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

Block 23 - Sticky Note6

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

Block 24 - Sticky Note7

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

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

3. Summary Table

Workflow Tailor your Google Docs CV to any job using Ollama and Groq
Complexity advanced
Nodes 31
Categories HR, AI Summarization
Author Rishi
Published 10 May 2026

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/15585/15585.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 Google Docs CV to any job using Ollama and Groq do?

CV Keyword Optimizer An AI powered n8n workflow that automatically tailors your resume to any job description by injecting relevant keywords — without touching your formatting, layout, or design...

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.