Match job descriptions with resumes using Google Gemini and log scores to Google Sheets
Smart Resume Screener — JD ↔ Resume AI Match & Sheet Logger
Smart Resume Screener ingests a candidate resume and a job description link, extracts clean text from both, runs an LLM-powered screening agent to produce a structured assessment (strengths, weaknesses, risk/reward, justification, and a 0–10 fit score), extracts contact details, and appends a single, validated row to a Google Sheet for tracking.
How It Works (Step-by-Step)
-
Trigger — On Form Submission Public form webhook sends: Binary resume file (PDF / DOCX) Job Description (JD) URL or text
-
Extract & Fetch Content
Resume Extraction node** Converts the uploaded binary resume into plain text (data.resume).
HTTP Request node** Fetches the JD HTML/text from the provided link.
Job Description Extractor (LLM-driven)** Parses the fetched content into structured JD fields: Requirements Responsibilities Skills Seniority etc.
- Prepare and Aggregate
Set Resume node** Normalizes the resume into a clean JSON object.
Merge/Aggregate node** Builds a single payload containing: { "resume": "...", "job_description": "...", "meta": "..." } 4. AI Evaluation
Recruiter Agent (LangChain node, powered by Google Gemini)** Receives aggregated payload Returns a strict JSON-formatted screening report including:
candidate_strengths
candidate_weaknesses
risk
reward
overall_fit_rating (0–10 numeric)
justification
Structured Output Parser** Enforces JSON schema Ensures predictable downstream data
- Identity Extraction & Logging
Contact Info Extractor** Extracts: Name Email
Append to Google Sheets** Writes: Date Name Email Strengths Weaknesses Risk Reward Justification Overall Fit Score
- (Optional) Notifications / Follow-Ups
Add Slack / Email / Webhook nodes Trigger alerts for high-fit candidates
Quick Setup Guide 👉 Demo & Setup Video 👉 Sheet Template 👉 Course
Nodes of Interest You Can Edit
Trigger — On Form Submission Change webhook URL Modify accepted form fields Add metadata capture (job_id, source)
Resume Extraction (Extract from File) Enable OCR fallback Adjust encoding/charset handling Replace with third-party resume parser
HTTP Request (Fetch Job Description) Configure timeouts Add retry policy Set headers Restrict allowed domains
Job Description Extractor (Information Extractor1) Modify extractor prompt/schema Add fields like must_have and nice_to_have
Set Resume (Prepare Resume) Strip headers/footers Normalize dates Split resume sections
Merge / Aggregate Modify payload structure Add context fields (job_id, recruiter_notes, source_platform)
Recruiter Agent (LangChain Agent) Edit system/user prompts Adjust model temperature Modify token limits Switch LLM provider
Structured Output Parser Update JSON schema Add fields like: experience_years certifications notice_period
Contact Info Extractor Add: Phone LinkedIn Location
Append to Google Sheets Modify column mapping Add fields like: workflow_run_id resume_link
What You’ll Need (Credentials)
Google Sheets API credentials (OAuth or Service Account) Google Drive / Storage credentials (if resumes are stored there) LLM provider credentials (e.g., Google Gemini API key/service account) (Optional) OCR / Vision API credentials for scanned PDFs (Optional) Email / Slack / Teams webhook or SMTP credentials Access to public JD URLs (or credentials if behind authentication)
Recommended Settings & Best Practices
LLM temperature:** 0.0–0.3 for consistent output Max tokens:** 800–1200 for justification (with enforced limits) Strict JSON schema:** Fail fast on invalid structure Retries & timeouts:** ~10s HTTP timeout 2 retries with exponential backoff Rate limiting:** Protect LLM quotas Deduplication:** Check existing email or resume hash Least privilege:** Scope Google service account to target sheet only PII handling:** Limit exposed fields; encrypt sensitive data if needed Schema versioning:** Add schema_version column Error logging:** Use Catch node with workflow_run_id Human review gate:** Route borderline scores (6–7) for manual review
Customization Ideas
Conditional alerts (overall_fit_rating >= 8) Multi-model scoring (Gemini + alternative model) Automated outreach emails ATS integration (Greenhouse, Lever, etc.) JD template library Multi-language resume routing Skill-level mapping (e.g., python: 4/5) Candidate scoring dashboard Resume storage with secure links
Troubleshooting — Quick Tips
Resume Extraction Issues Validate binary input Enable OCR for scanned PDFs Check encoding and file type
JD Fetch Failure Validate URL reachability Add headers (User-Agent) Increase timeout Provide auth if needed
LLM JSON Errors Lower temperature (0–0.2) Enforce strict JSON prompt Add retry with "fix-json" prompt Inspect raw LLM output
Google Sheets Append Fails Check credential expiry Confirm sheet ID and gid Validate column mapping Monitor API quota
Duplicate Rows Add email-based dedupe logic Hash resume content
PII Exposure Audit sheet sharing settings Use restricted service accounts
Tags / Suggested Listing Fields
recruiting
resume-parser
ai-screening
langchain
google-gemini
google-sheets
n8n
ats-integration
pii-sensitive
automation
Related Templates
Automatic News Summarization & Email Digest with GPT-4, NewsAPI and Gmail
📰 AI News Digest Agent: Auto News Summarizer & Email Newsletter Create an intelligent news curation system that automat...
Generate Food Recipes from Gmail & Form Requests with Ollama & Llama 3.2
This n8n template demonstrates how to create an intelligent food recipe assistant that accepts requests via Gmail and we...
Auto-classify Gmail emails with AI and apply labels for inbox organization
Who is this for? Professionals and individuals who receive high volumes of emails, those who want to automatically organ...
🔒 Please log in to import templates to n8n and favorite templates
Workflow Visualization
Loading...
Preparing workflow renderer
Comments (0)
Login to post comments