🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Apollo to Airtable, smarter candidate shortlists

Lisa Granqvist Partner Workflow Automation Expert

Candidate sourcing looks simple until you’re doing it for the third role this week. You search Apollo, open profiles, copy details into a spreadsheet, then try to remember why Candidate A felt “better” than Candidate B.

This hits recruiters first, honestly. But agency owners and in-house talent leads feel it too when shortlists slip, hiring managers get impatient, and outreach goes out late. Apollo Airtable automation fixes the messy middle so your shortlist is consistent and usable.

This workflow takes a job description and turns it into an Airtable shortlist with AI scoring, deduped candidates, and outreach drafts you can send right away. You’ll see what it does, what you need, and how teams typically customize it.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Apollo to Airtable, smarter candidate shortlists

The Problem: Shortlists take forever and still feel subjective

Turning a job description into a recruiter-ready shortlist usually means juggling five different “mini tasks” that all require focus. You mutate titles, run Apollo searches, open tabs for LinkedIn checks, paste profile bits into a tracker, then attempt to score “fit” from memory. It’s not just slow. It’s inconsistent. Two people can review the same candidate and come back with totally different notes, which leads to extra back-and-forth and (worse) delayed outreach while the best candidates keep getting messages from competitors.

The friction compounds. Here’s where it breaks down.

  • Manual sourcing turns into about 2 hours per role before you even write a single message.
  • Duplicates sneak in when you search multiple title variants and locations, so your “top 20” is really 14 people and confusion.
  • Scoring ends up vibe-based, which means you second-guess yourself and re-review profiles later.
  • Outreach gets postponed because writing “just 15 emails” is never just 15 emails.

The Solution: Job description in, Airtable shortlist out

This n8n workflow runs a complete recruiting pipeline from one intake form or webhook. You submit the job title, job description, and location (plus optional target company domains), and the workflow normalizes the title so your search isn’t too narrow. It then generates several title variations, searches candidates in Apollo via API, and removes duplicates so your list stays clean. Next, AI scores each candidate from 0–5 with concise reasoning across experience, industry, and seniority, then structures the output into recruiter-friendly fields. Finally, it enriches profiles (like name, title, location, image, and basic experience), drafts a short email and LinkedIn DM, and writes everything into Airtable for review and downstream automation.

The workflow starts with job intake, then moves through search, deduping, and scoring. After enrichment, it generates a full candidate assessment and outreach messages, then logs the job and candidates to Airtable so you can shortlist, assign, and follow up without copy-pasting.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you’re filling one role and you normally try five title variations in Apollo, then review 30 profiles. If you spend about 5 minutes per profile to skim LinkedIn, paste notes, and write a quick outreach draft, that’s roughly 2.5 hours. With this workflow, you submit the job intake in about 3 minutes, then let n8n run search, dedupe, scoring, enrichment, and outreach generation in the background (often around 10–15 minutes depending on APIs). You’re mostly just reviewing the Airtable shortlist and sending messages.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Airtable for jobs, candidates, and outreach tracking
  • Apollo to source candidates via people search
  • OpenAI or Anthropic API key (get it from your LLM provider dashboard)

Skill level: Intermediate. You’ll connect credentials, match Airtable field names, and adjust a few prompts for your niche.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

Job intake triggers the run. A form or webhook captures job title, job description, location, and optional target company domains, then creates a Job record in Airtable right away.

Title normalization widens the search. An AI node cleans up the title (so “AE” becomes “Account Executive,” for example) and generates up to five variations, which are split into separate Apollo searches.

Candidate sourcing and cleanup happens automatically. n8n queries Apollo via HTTP requests, splits the result set into individual candidates, then removes duplicates before anything gets scored.

Scoring, enrichment, and outreach run as a pipeline. AI produces a 0–5 fit score with reasons, a structured recruiter assessment (positives, red flags, recommendation), and short outreach drafts. A LinkedIn enrichment API fills gaps like location, image, and experience, then candidates are written into Airtable for review.

You can easily modify the scoring thresholds to only push “4–5” candidates into Airtable views, or swap Apollo for a different source. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Form Trigger

Set up the form intake so hiring managers can submit job details that kick off the workflow.

  1. Add the Form Intake Trigger node and set Form Title to Job Input.
  2. Under Form Fields, include Job Title, Job Description, Location, and a textarea field Target Companies with placeholder Comma separated domains of target companies to source talent from.
  3. Save the webhook URL from Form Intake Trigger for testing later.

Step 2: Connect Airtable for Job Records

Store the incoming job data in Airtable so candidates can be linked back to the search.

  1. Open Map Job Inputs and verify the three assignments: Job Title = {{ $json["Job Title"] }}, Job Description = {{ $json["Job Description"] }}, Location = {{ $json.Location }}.
  2. Configure Add Job to Airtable with Operation set to create, and map fields Job Title, Job Location, and Job Description to the incoming values.
  3. Credential Required: Connect your airtableTokenApi credentials in Add Job to Airtable.

Tip: Confirm the Airtable Base and Table selections match Candidate Search - From Job DescriptionJob Searches to avoid creating records in the wrong workspace.

Step 3: Generate and Split Job Title Variants

Use AI to normalize the job title and create search-friendly variants before sourcing candidates.

  1. In Generate Title Variants, confirm Model is gpt-4.1-mini and JSON Output is enabled.
  2. Ensure the first message references the job inputs with {{ $('Map Job Inputs').item.json["Job Title"] }} and {{ $('Map Job Inputs').item.json["Job Description"] }}.
  3. Credential Required: Connect your openAiApi credentials in Generate Title Variants.
  4. In Split Title Variants, set Field to Split Out to choices[0].message.content to produce individual titles.

⚠️ Common Pitfall: If the AI output is not valid JSON, Split Title Variants will fail to split. Keep Generate Title Variants in JSON mode.

Step 4: Source Candidates via Apollo and Clean Results

Search Apollo for people matching the generated titles, then split and deduplicate results.

  1. Configure Apollo People Lookup with URL https://api.apollo.io/api/v1/mixed_people/search and Method POST.
  2. Set query parameters: person_titles[] = {{ $json['choices[0].message.content'] }}, per_page = 10, include_similar_titles = false, person_locations[] = {{ $('Map Job Inputs').item.json.Location }}.
  3. Replace the header value x-api-key from [CONFIGURE_YOUR_API_KEY] with your Apollo API key.
  4. In Split People Results, set Field to Split Out to people.
  5. In Remove Duplicate People, set Compare to selectedFields and Fields to Compare to id.

⚠️ Common Pitfall: Apollo People Lookup does not use n8n credentials. If the API key is missing or invalid, the workflow will continue with empty results because On Error is set to continue.

Step 5: Score Candidates with AI and Route Qualified Leads

Build a structured, machine-readable fit score and route candidates for enrichment.

  1. In Assemble Profile Text, keep LinkedIn_profile as {{ Object.entries($json).map(([key, value]) => `${key}:${value}`).join(', ') }} and employment_history as the mapped string join expression.
  2. Set Limit Scoring Batch to Max Items 50 to cap scoring volume.
  3. Open Prequalify Candidate and confirm the prompt references {{ $json.LinkedIn_profile }}, {{ $json.employment_history }}, and job data from Map Job Inputs.
  4. Ensure GPT Mini Scoring Model is connected as the language model for Prequalify Candidate; Credential Required: Connect your openAiApi credentials in GPT Mini Scoring Model.
  5. In Structure Scoring Output, keep the JSON schema prompt and confirm hasOutputParser is enabled.
  6. Ensure GPT Mini Structuring Model is connected as the language model for Structure Scoring Output; Credential Required: Connect your openAiApi credentials in GPT Mini Structuring Model.
  7. Verify Score Branch Router uses {{ $json.output.general_fit_score }} with the rule >= 4 to pass only high scores to Map Candidate Fields.

Tip: Structured Parser A and Auto Repair Parser A are AI sub-nodes. Add credentials to OpenAI Chat Engine A (the parent language model), not to the parser nodes.

Step 6: Enrich Profiles and Generate Reviews + Outreach

Enrich candidate profiles, generate recruiter-ready reviews, and compose outreach messaging.

  1. In Map Candidate Fields, confirm the output mappings like Name = {{ $json.output.candidate_name }} and LinkedIn = {{ $json.output.candidate_linkedinUrl }}.
  2. Set Limit Enrichment Batch to Max Items 50.
  3. Configure LinkedIn Enrichment API with URL https://real-time-data-enrichment.p.rapidapi.com/get-profile-data-by-url, and query parameter url = {{ $json.LinkedIn }}.
  4. Replace x-rapidapi-key from [CONFIGURE_YOUR_API_KEY] with your RapidAPI key.
  5. Ensure Generate Candidate Review includes the assessment fields and job inputs, and uses OpenAI Chat Engine B as the language model. Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine B.
  6. Ensure Compose Outreach Messages references {{ JSON.stringify($('Generate Candidate Review').item.json.output) }} and is connected to Anthropic Chat Engine. Credential Required: Connect your anthropicApi credentials in Anthropic Chat Engine.

Tip: The auto-fixing and structured parsers (Auto Repair Parser B, Structured Parser B, Auto Repair Parser C, Structured Parser C) are sub-nodes. Add OpenAI credentials to their parent engines (OpenAI Chat Engine C and OpenAI Chat Engine D), not the parsers.

Step 7: Save Candidates to Airtable

Push enriched candidate data, reviews, and outreach copy into the Candidates table.

  1. In Add Candidates to Airtable, set Operation to create and map the key fields: Name = {{ $('LinkedIn Enrichment API').item.json.firstName }} {{ $('LinkedIn Enrichment API').item.json.lastName }}, Email Body = {{ $json.output.Email_Body }}, and Job Searches = {{ [ $('Add Job to Airtable').first().json.id ] }}.
  2. Ensure review fields like Executive Summary and Summary Fit Score map from {{ $('Generate Candidate Review').item.json.output... }}.
  3. Credential Required: Connect your airtableTokenApi credentials in Add Candidates to Airtable.

Step 8: Test and Activate Your Workflow

Run a full test to confirm candidate scoring, enrichment, and Airtable outputs are correct.

  1. Click Execute Workflow and submit a sample job through Form Intake Trigger.
  2. Confirm a new job record appears in Airtable from Add Job to Airtable and that candidate records are created by Add Candidates to Airtable.
  3. Verify that Score Branch Router only passes candidates with general_fit_score >= 4 into the enrichment branch.
  4. When satisfied, switch the workflow to Active to enable production intake.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Airtable credentials can expire or need specific permissions. If things break, check your n8n Credentials entry and confirm the Base access first.
  • Apollo (or your candidate source) can rate-limit searches when you run lots of title variants. If you start seeing empty results, add batching/pagination and increase the interval between requests.
  • Default AI prompts are generic. Add your role-specific “must haves” and your tone for outreach early, or you’ll be rewriting the same messages every time.

Frequently Asked Questions

How long does it take to set up this Apollo Airtable automation automation?

About an hour if your Airtable base and API keys are ready.

Do I need coding skills to automate candidate shortlists from Apollo to Airtable?

No. You’ll mostly connect accounts and map a few Airtable fields. The “hard” part is deciding your scoring criteria, not writing code.

Is n8n free to use for this Apollo Airtable automation workflow?

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 OpenAI or Anthropic API usage (usually a few dollars for a batch of candidates, depending on how many you score and enrich).

Where can I host n8n to run this automation?

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.

Can I customize this Apollo Airtable automation workflow for only shortlisting candidates scored 4–5?

Yes, and it’s a common tweak. Add a simple filter after the scoring output (right after the score routing step) so only candidates with a score of 4 or 5 continue to enrichment and Airtable writing. You can also adjust the scoring prompt to weigh your niche harder, like “enterprise SaaS” or “healthcare compliance,” so the 4–5 bucket actually means something.

Why is my Apollo connection failing in this workflow?

Most of the time it’s an expired or rotated API key in n8n Credentials, so regenerate it and update the HTTP Request node. It can also be missing permissions on the Apollo side, or you’re hitting rate limits because the workflow runs several title variations quickly. If results suddenly come back empty, check the raw HTTP response in the last execution to confirm what Apollo is returning.

How many candidates can this Apollo Airtable automation automation handle?

On n8n Cloud, it depends on your monthly execution limits, but most teams can run this for several roles per week on a starter plan. If you self-host, there’s no execution cap; the real limits become API rate limits (Apollo and enrichment) and how aggressively you batch candidates. Practically, start with scoring 20–50 candidates per role, then increase once you’re happy with the prompts and your API costs.

Is this Apollo Airtable automation automation better than using Zapier or Make?

For this kind of pipeline, usually yes. You’re doing branching, batching, deduping, structured AI outputs, and multiple write-backs, and n8n handles that without turning every extra step into a pricing surprise. Zapier or Make can still work if you only want “job intake → create Airtable record,” but the AI scoring and enrichment logic gets fiddly fast. Also, self-hosting n8n is a big deal if you expect lots of runs. Talk to an automation expert if you want a quick recommendation based on your weekly volume.

Once this is running, your “blank page” shortlist problem disappears. The workflow handles the repetitive parts so you can spend your time on judgment calls and real conversations.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal