Automate Candidate Screening with LlamaIndex & GPT for Email Responses

Go to Workflow
373 views
Built by Khairul Muhtadin Khairul Muhtadin
Created on June 06, 2025

Description

Stop drowning in CVs. This n8n workflow, HRMate, parses every incoming job application, scores candidate fit with AI, and sends personalized accept or reject emails. No manual screening, no ghosted applicants.

It triggers on each new email application, extracts candidate info and PDF resumes, parses content with LlamaIndex AI, scores candidates against your requirements with OpenAI, then sends tailored emails and updates status automatically.

Last updated: September 2026.

Why Use HRMate?

Save hours** of manual CV screening and email replies
Never ghost applicants again**. Automatic, polite rejections with AI-generated growth suggestions
Increase hiring accuracy** with AI-assisted candidate scoring
Centralize communication** with auto-acceptance invites including calendly scheduling links
Fully customizable and scalable for multiple job openings

Who Is This For?

HR teams overwhelmed with incoming applications
Small businesses wanting professional recruitment automation
Recruiters seeking data-driven candidate assessments
Companies aiming to improve applicant experience and speed

What Problem Does It Solve?

Manual screening is slow, inconsistent, and lets candidates slip through the cracks. HRMate automates parsing, evaluation, and personalized emails, cutting workload while keeping candidates engaged.

What This Workflow Does

Trigger:** On every new incoming email application via Gmail Trigger (polls every minute)
Attachment Check:** Detects and uploads PDF resumes to LlamaIndex AI for parsing
Parsing:** Waits and retrieves clean markdown text of candidate documents
AI Evaluation:** Matches candidate profile against job criteria using gpt-5.6-terra, scoring fit from 1 to 100
Email Communication:**

If score ≥ 80 → sends acceptance email with calendly interview scheduling link
If score < 80 → sends rejection email with professional, motivational feedback generated by AI
Status Update:** Marks candidate as accepted/rejected and optionally updates Google Sheets

Setup Instructions

Import .json workflow into n8n
Add credentials:

Gmail OAuth2 (trigger & email sending)
LlamaIndex API key (for PDF parsing, docs)
OpenAI API key (gpt-5.6-terra model for evaluation)
Customize job criteria in "Set Job Criteria Text" node
Update email templates and calendly links as needed
Test workflow with real incoming applications

Pre-Requirements

n8n instance (self-hosted or cloud)
Gmail account with API credentials
LlamaIndex API access
OpenAI API key
Google Sheets (optional, for status tracking)

Customize It Further

Add new job positions by replicating job criteria and subject filters
Modify evaluation criteria or prompts in OpenAI node
Integrate Slack or other notification nodes
Adjust email content and branding for acceptance/rejection messages

Nodes Used

Gmail Trigger
HTTP Request (LlamaIndex API)
Wait node (poll parsing status)
Code node (markdown cleaning)
OpenAI gpt-5.6-terra node (candidate evaluation)
IF nodes (conditional email flow)
Gmail node (send acceptance/rejection emails)
Set nodes (data preparation & status marking)
Google Sheets (optional update)
Sticky Notes for documentation

Quick Answers
What score gets an interview?
80 or above triggers an acceptance email with a calendly scheduling link. Below 80 gets a polite rejection with AI-generated feedback.
What triggers the workflow?
Every new email application via the Gmail Trigger, which polls every minute.
Can it handle multiple openings?
Yes. Replicate the job criteria and subject filters per position.

Support

Made by: khmuhtadin
Tag: hr, recruitment, candidate-screening, openai, gmail
Category: HR & Recruitment
Need a custom? Contact Me

Additional info
Built with n8n. Need an assessment on your business? Feel free to reach out at https://khmuhtadin.com/consultation/

Nodes Used (5)

Code
n8n-nodes-base.code
Gmail
n8n-nodes-base.gmail
Google Sheets
n8n-nodes-base.googleSheets
HTTP Request
n8n-nodes-base.httpRequest
OpenAI
@n8n/n8n-nodes-langchain.openAi