Gmail to Airtable, ranked resumes without the slog
Your hiring inbox fills up fast. Then comes the real time-sink: downloading PDFs, trying to spot the job code in the subject line, copying names and emails into a tracker, and hoping your “quick scan” is consistent from one candidate to the next.
This resume scoring automation hits HR managers first, but founders hiring their first team and recruiters supporting multiple roles feel it too. The outcome is simple: every new CV gets captured, parsed, scored, and logged in Airtable so you review ranked candidates instead of messy attachments.
Below, you’ll see exactly how the workflow moves from Gmail to Airtable, what gets extracted and scored, and what you can tweak to match your hiring process.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Gmail to Airtable, ranked resumes without the slog
flowchart LR
subgraph sg0["Watch for New Applications Flow"]
direction LR
n0@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n1@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model1", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n3@{ icon: "mdi:play-circle", form: "rounded", label: "Watch for New Applications", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Extract Job Code", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/airtable.svg' width='40' height='40' /></div><br/>Find Job Post"]
n6@{ icon: "mdi:cog", form: "rounded", label: "Read CV (PDF) Text", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "AI CV Parser", pos: "b", h: 48 }
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Combine Job & CV Data"]
n9@{ icon: "mdi:robot", form: "rounded", label: "AI Applicant Scorer", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/airtable.svg' width='40' height='40' /></div><br/>Save Applicant"]
n7 --> n8
n5 --> n8
n4 --> n5
n6 --> n7
n9 --> n10
n8 --> n9
n0 -.-> n7
n2 -.-> n9
n1 -.-> n9
n3 --> n4
n3 --> n6
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n3 trigger
class n2,n7,n9 ai
class n0,n1 aiModel
class n5,n10 database
classDef customIcon fill:none,stroke:none
class n5,n8,n10 customIcon
The Problem: Resume screening turns into inbox archaeology
Most resume “processes” start as good intentions and end as a messy folder. A candidate emails a PDF, the subject line includes a job code (sometimes), you download the attachment, and then you retype the same details into a spreadsheet or ATS notes. It’s not just slow. It’s mentally tiring, which is when mistakes happen: the wrong job gets matched, a strong applicant gets buried, or you forget to follow up because the information is split across Gmail, PDFs, and a half-updated tracker. Honestly, the worst part is inconsistency. Two similar CVs can get wildly different treatment depending on how busy you are that day.
The friction compounds. Here’s where it breaks down.
- Every attachment becomes manual work, and five applications can easily eat about an hour of admin.
- Job codes get misread or skipped, so applicants end up logged under the wrong role.
- Quick scanning rewards flashy formatting, not relevant skills and experience.
- Notes live in people’s heads or scattered docs, which makes collaboration awkward and subjective.
The Solution: Auto-capture, parse, and score resumes from Gmail to Airtable
This n8n workflow watches a specific Gmail label for new emails that include resume attachments. When an application arrives, it pulls a job code from the email subject (for example, FN-001), then extracts raw text from the attached CV PDF. From there, an AI model (Gemini in this workflow) turns that unstructured resume text into structured fields like name, email, skills, and years of experience. Next, the workflow looks up the matching job post in Airtable using the extracted job code, combines the job requirements with the applicant profile, and runs an AI scoring step that assigns a 1–100 score plus a short reasoning summary (written in Bahasa Indonesia). Finally, it records everything to your Airtable “Applications” table so your pipeline stays clean and searchable.
The workflow starts with a Gmail label trigger and ends with a new Airtable record. In between, it extracts the job code, parses the PDF into usable fields, then scores the candidate against the exact requirements stored in Airtable.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you hire for two roles and get 25 resumes in a week. Manually, even a “quick” routine can take about 10 minutes per application to download the PDF, grab the email/name, find the job code, and log notes, which is roughly 4 hours weekly. With this workflow, your work is basically: label the email (or route it into the label), then review the ranked Airtable list once a day. The AI parsing and scoring runs in the background, so your admin time drops to more like 30 minutes for the whole week’s intake.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Gmail to receive labeled applications with attachments.
- Airtable to store job posts and applications.
- Google AI (Gemini) API access (get it from Google AI Studio / Google Cloud console)
Skill level: Intermediate. You’ll connect accounts, map a few fields, and confirm your Airtable tables match the required columns.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Gmail label trigger. The workflow monitors a Gmail label (for example, job-applications) and fires when a new email arrives with an attachment.
Job code + resume text extraction. It pulls the job code from the email subject using a pattern like ([A-Z]{2}-\d{3}), then extracts text from the attached PDF so the content becomes machine-readable.
AI parsing and candidate scoring. Gemini parses the CV into fields (name, email, skills, years), Airtable provides the job requirements, and the scoring step compares the two to generate a 1–100 score plus a short justification in Bahasa Indonesia.
Airtable logging. A new record is created in your “Applications” table, typically linked to the matching job post, so you can sort, filter, and review in one place.
You can easily modify the scoring criteria to match your hiring rubric based on role seniority, must-have skills, or minimum experience. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Gmail Trigger
Set up the email trigger so new applications with CV attachments are captured automatically.
- Add the Monitor New Applications node as your trigger.
- Credential Required: Connect your gmailOAuth2 credentials.
- Set Filters → Query to
has:attachment OR has:document. - Enable Options → Download Attachments and set Data Property Attachments Prefix Name to
CV_. - Set Poll Times to Every Minute to monitor new applications continuously.
⚠️ Common Pitfall: If attachments aren’t downloaded, Extract CV Text won’t find CV_0. Double-check the attachment prefix.
Step 2: Connect Airtable
Configure Airtable to look up job postings and store applicant records.
- Open Lookup Job Posting and set the Base to
[YOUR_ID]and Table toJob Posts. - Credential Required: Connect your airtableTokenApi credentials in Lookup Job Posting.
- Set Operation to
searchand Filter By Formula to={Job Code} = '{{ $json["Job Code"] }}'. - Open Record Applicant and set the Base to
[YOUR_ID]and Table toApplications. - Credential Required: Connect your airtableTokenApi credentials in Record Applicant.
Step 3: Configure Email Parsing & CV Extraction
Derive the job code from the email subject and extract text from the CV attachment.
- In Derive Job Code, enable Include Other Fields.
- Add an assignment with Name set to
=Job Codeand Value set to={{ ($json.subject.match(/([A-Z]{2}-\d{3})/) || [])[1] || null }}. - In Extract CV Text, set Operation to
pdfand Binary Property Name toCV_0. - Confirm execution flow: Monitor New Applications outputs to both Derive Job Code and Extract CV Text in parallel.
Step 4: Set Up AI Extraction & Scoring
Use Gemini to extract structured CV data and score applicants against job requirements.
- In Gemini Chat Engine, set Model Name to
models/gemini-2.5-flash-preview-04-17. - Credential Required: Connect your googlePalmApi credentials in Gemini Chat Engine (this powers AI Resume Extractor).
- In AI Resume Extractor, set Text to
=CV Text: {{ $json.text }} Email Subject: {{ $('Monitor New Applications').item.json.subject }}and keep Schema Type asfromJson. - In Secondary Gemini Engine, set Model Name to
models/gemini-2.5-flash-preview-04-17. - Credential Required: Connect your googlePalmApi credentials in Secondary Gemini Engine (this powers AI Candidate Scoring).
- In AI Candidate Scoring, keep Prompt Type as
defineand ensure Has Output Parser is enabled. - In Structured Result Parser, set JSON Schema Example to
{ "score": 100, "fit_summary": "Los Angeles" }and note that it is linked to AI Candidate Scoring (credentials are added to Secondary Gemini Engine).
Step 5: Merge Job Data & CV Data
Combine job posting data with CV extraction output before scoring.
- In Merge Job and CV, set Mode to
combineand enable Advanced. - Set Merge By Fields to map field1
Job Codewith field2output.job_code. - Confirm the flow: Lookup Job Posting → Merge Job and CV and AI Resume Extractor → Merge Job and CV.
⚠️ Common Pitfall: If the subject line doesn’t contain a matching job code pattern, Lookup Job Posting won’t return data and the merge can fail. Keep subject lines consistent with AB-001 format.
Step 6: Configure Output Destination
Store the AI scoring results and applicant details in Airtable.
- In Record Applicant, map Notes to
={{ $json.output.fit_summary }}. - Map Score to
={{ $json.output.score }}. - Map Job Post to
={{ $('Merge Job and CV').item.json['Job Code'] }}. - Map Email Address to
={{ $('Merge Job and CV').item.json.output.email }}and Applicant Name to={{ $('Merge Job and CV').item.json.output.name }}. - Leave Years of Experience at
0or update to a dynamic value if you add it later.
Step 7: Test & Activate Your Workflow
Validate the end-to-end flow before turning it on for production.
- Click Execute Workflow and send a test email with a PDF CV attachment that includes a subject like
Application for AB-001. - Confirm Derive Job Code extracts
AB-001and Extract CV Text outputs text content. - Verify AI Resume Extractor returns JSON fields and AI Candidate Scoring outputs
scoreandfit_summaryvia Structured Result Parser. - Check Airtable to confirm Record Applicant creates a new row with the mapped fields.
- When everything looks correct, toggle the workflow to Active for production use.
Common Gotchas
- Gmail permissions and labels can be finicky. If no emails trigger the workflow, confirm the label name matches your Gmail filter and re-check the Gmail credentials in n8n.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Airtable “Find record” steps often fail quietly when the job code format is inconsistent. Make sure your subject regex (like FN-001) matches what your Job Posts table uses, and keep the AI notes format stable so long text doesn’t get truncated.
Frequently Asked Questions
About 45 minutes if your Airtable base is ready.
No coding required. You will mostly be connecting accounts and mapping a few fields in Airtable.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Google Gemini API usage costs, which depend on how many PDFs you process.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, but you’ll need to change the instruction text in the AI Candidate Scoring prompt. Most teams also tweak the AI Resume Extractor fields (for example, adding location or notice period) and adjust the scoring logic so “must-have” skills weigh more than nice-to-haves.
Usually it’s an expired token or the Airtable integration doesn’t have access to the base you selected. Reconnect Airtable in n8n, then confirm the “Lookup Job Posting” node points to the right base and table. Another common cause is a job code mismatch: the workflow extracts FN-001 but your Airtable record says FN001 or uses a different field name. Fix the formatting, rerun one email, and the failures typically disappear.
On n8n Cloud, it depends on your plan’s monthly executions, and each processed email counts as an execution. If you self-host, there’s no platform execution cap, but you’re limited by your server size and how fast PDF extraction plus AI scoring runs; for most small teams, dozens to a few hundred resumes a week is comfortable.
Often, yes. This workflow has multiple stages (PDF text extraction, structured parsing, job lookup, scoring, then logging), and n8n handles that kind of branching and data shaping without turning your automation into a fragile chain of tiny zaps. It’s also easier to self-host, which matters if you want predictable costs as volume increases. Zapier and Make can still work if you want the simplest possible setup, but you may hit limits once you add AI parsing and richer logic. If you want a second opinion before building, Talk to an automation expert.
Once this is running, new applications stop feeling like interruptions and start showing up as a ranked list you can actually work through. Set it up once, then spend your time interviewing the right people.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.