Tailor your Google Docs CV to any job using Ollama and Groq
šÆ CV Keyword Optimizer
Description
šÆ 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 Docker installed Ollama installed locally A Groq API key (free tier works) Google account with Docs & Drive access 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 Go to console.groq.com Sign up / log in Navigate to API Keys ā Create a new key 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 Open n8n at http://localhost:5678 Go to Workflows ā Import from File Select cv-keyword-optimizer.json You'll see credential warnings on some nodes ā that's expected 6. Set Up Google Credentials In n8n, go to Settings ā Credentials Create a Google Docs OAuth2 credential Follow n8n's OAuth2 setup guide for Google Required scopes: https://www.googleapis.com/auth/documents Create a Google Drive OAuth2 credential Required scopes: https://www.googleapis.com/auth/drive Click each node with a ā ļø warning ā select your credential from the dropdown 7. Activate & Use Toggle the workflow Active Open the form URL shown in the trigger node (or go to http://localhost:5678/form/cv-keyword-optimizer-form) Fill in: Google Docs CV Link (required) Job Posting URL or Job Description (at least one) Submit and wait ~30-60 seconds 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 |. An n8n automation workflow template by Rishi.
Author
Rishi
Platform
web
Pricing model
free
Categories
Tags
Capabilities
- 7 nodes
- 1 views