AI-Powered Applicant Screener
Build an AI agent workflow that screens job applicants automatically with n8n.
Introduction
30 Second Summary
Companies receive hundreds of job applications for every open role. Hiring managers spend hours reading each one, trying to decide who deserves an interview.
In this project, you will build an AI-powered applicant screening workflow using n8n. A candidate submits their information through a web form, an AI agent evaluates their fit against job criteria you define, and the workflow automatically routes qualified candidates forward.
What You'll Build
You'll watch a candidate hit "submit" on a web form and see the entire screening decision play out live on n8n's visual canvas, from AI evaluation to automatic routing.
By the end of this project, you'll have:
- A live web form where you submit applicant details and watch them flow into your workflow as structured data.
- An AI agent powered by Google Gemini that reads each submission, evaluates the candidate against your job criteria, and returns a fit score with rationale.
- Conditional routing that automatically sorts candidates into "shortlisted" or "rejected" paths based on the AI's score, with error handling for production reliability.
- Secret Mission: Configure an automated notification that alerts you when a standout candidate applies.
Are there any prerequisites?
None. This project includes full setup instructions for every tool you need. You just need a Google account and a Windows laptop with 16GB of RAM.
Before We Start
Before you dive in, let's lock in what you're about to build and why it matters. Taking a moment to commit to the goal now gives you a clear mental anchor for every step that follows.
Install Node.js and Launch n8n
Your AI applicant screener needs a platform to run on. n8n is a visual workflow automation tool that runs locally on your machine, giving you a drag-and-drop canvas to wire up AI agents, triggers, and logic nodes.
n8n requires Node.js to run. In this step, you'll install Node.js, then use it to launch n8n and get your automation workspace ready.
In this step, get ready to:
- Install Node.js v24 LTS on your Windows machine.
- Launch n8n locally using npx n8n.
- Create your n8n owner account and open the workflow canvas.
Download and install Node.js
Node.js is the runtime that powers n8n behind the scenes. You need version 24.x LTS installed before n8n can start.
- Open your browser and navigate to the Node.js download page:
- https://nodejs.org
- Click the LTS download button (it should say v24 with "Recommended For Most Users").
- Run the downloaded .msi installer file.
What will the installer ask?
The Node.js installer is a standard Windows wizard. Click through each screen, accepting the defaults. On the "Tools for Native Modules" screen, check the box that says Automatically install the necessary tools. This ensures n8n's dependencies can compile correctly.
After the wizard finishes, a separate Command Prompt window may open to install build tools. Let it complete and close on its own.
- Once the installer finishes, open a fresh terminal. Press the Windows key, type PowerShell, and press Enter.
- Verify Node.js installed correctly by running:
node -v
Before you check the output, what version number do you expect to see?
✔️ I see v24.x
You should see something like v24.16.0 (the exact patch number may differ). Node.js is installed and ready.
ⓧ I see an older version
If you see a version number lower than v24 (such as v20 or v22), you need to upgrade. n8n requires Node.js v20.19 to v24.x inclusive, and this project uses v24 LTS.
- Go back to https://nodejs.org and download the v24 LTS installer.
- Run the installer. It will upgrade your existing Node.js installation in place.
- Close your terminal and open a new one, then run node -v again to confirm it now shows v24.x.
ⓧ Command not found
If you see an error indicating that node is not recognized, the installer did not add Node.js to your system PATH. Try these steps:
- Close your current terminal completely and open a new PowerShell window. The PATH update only applies to new terminal sessions.
- If it still fails, re-run the Node.js installer from https://nodejs.org and make sure you do not uncheck the "Add to PATH" option.
- For additional troubleshooting, see Microsoft's guide at https://learn.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-windows.
Launch n8n with npx
Now that Node.js is installed, you can launch n8n directly from your terminal. The npx command downloads and runs n8n without permanently installing it on your system.
- In the same PowerShell window, start n8n by running:
npx n8n
What does this command do?
npx downloads the n8n package (version 2.33.7 at time of writing) and runs it immediately. No global install needed. It starts a local web server on port 5678 that hosts the n8n editor.
This command takes over your terminal while n8n is running. You will not be able to type other commands in this window. Leave it running for the rest of the project.
First time running npx n8n
If prompted to confirm the package installation, type y and press Enter. The download may take a minute or two depending on your internet speed.
- Wait until you see a message in your terminal that says:
Editor is now accessible via:
http://localhost:5678
- Open your browser and go to http://localhost:5678.
You should see the n8n setup screen asking you to create an owner account.
Don't see the editor message?
If the terminal shows errors or hangs for more than 3 minutes:
- Check that no other application is already using port 5678 on your machine.
- Make sure your node -v output shows v24.x. n8n does not support Node.js v26 or higher.
- Try closing the terminal, opening a fresh one, and running npx n8n again.
Still stuck? Help me troubleshoot why n8n won't start on my Windows machine.
Create your n8n owner account
The first time you open n8n, it asks you to create a local owner account. This secures your instance so only you can access your workflows.
- On the setup screen in your browser, fill in the Email, First Name, Last Name, and Password fields.
- Your password must be at least 8 characters, include at least one number, and at least one capital letter.
- Click Next.
Is this account shared anywhere?
This account is entirely local. It lives in a database on your machine at C:\Users\<username>\.n8n and is never sent to any external server. Use any email and password you can remember.
After completing the setup, n8n logs you in automatically and you land on the workflow canvas. This is where you will build your applicant screening workflow.
Your automation platform is live. Next up, you'll create a web form that captures applicant data and watch real submissions flow into n8n.
Create the Applicant Form and See a Submission
Your automation platform is up and running. Now you need something for it to automate.
Every workflow starts with a trigger. A trigger defines what event kicks off the automation. For an applicant screener, the trigger is a candidate submitting their information through a form. The n8n Form Trigger node creates a live web form instantly, so you can see a working baby version of the end product right now.
In this step, get ready to:
- Add a Form Trigger node to your n8n workflow.
- Configure applicant fields (name, experience, skills, cover letter).
- Submit test data and see it flow through the trigger as JSON.
Add a Form Trigger node to your workflow
The Form Trigger node generates a web form page for you automatically. You configure the fields, and n8n serves the form on its local server.
- On the n8n canvas, click the + button (or click Add first step if the canvas is empty).
- Search for Form Trigger in the search bar.
- Select n8n Form Trigger from the results to add it to the canvas.
The node settings panel opens. Now configure the form itself.
- In the Form Title field, enter AI Agent Developer Application.
- Under Form Elements, click Add Form Element to add your first field.
- Set Field Label to Full Name and Element Type to Text.
- Click Add Form Element again. Set Field Label to Years of Experience and Element Type to Number.
- Click Add Form Element again. Set Field Label to Key Skills and Element Type to Text.
- Click Add Form Element one more time. Set Field Label to Cover Letter and Element Type to Textarea.
Why Textarea instead of Text?
The Text element type creates a single-line input. Textarea creates a multiline text box, which is what you want for a cover letter where applicants write multiple sentences.
What is a Form Trigger?
A trigger is the event that starts a workflow. The Form Trigger specifically generates a hosted web form. When someone submits it, n8n captures all the field data and passes it to the next node in the workflow.
This is different from connecting an external form service. n8n builds and serves the form itself at a local URL.
Test the form with a sample submission
Your form is configured. Now you need to see it working. The Form Trigger node provides a Test URL that lets you view incoming data directly in the n8n editor.
- In the Form Trigger node panel, click Execute Step. This opens the form in a new browser tab.
- In the Full Name field, type Jane Smith.
- In the Years of Experience field, type 3.
- In the Key Skills field, type Python, n8n, API integrations.
- In the Cover Letter field, type a short paragraph. For example: I have 3 years of experience building workflow automations using n8n and Python. I specialize in connecting AI models to business tools via API integrations.
- Click the Submit button on the form.
Use realistic sample data
Fill in the form like a real applicant would. In later steps, the AI agent evaluates this data against job criteria. Realistic input helps you verify the AI produces sensible responses.
Observe the submitted data in n8n
Before you switch back to n8n, think about what you expect to see. What format do you think the form data will appear in?
- Switch back to the n8n browser tab where your workflow is open.
You should see the Form Trigger node showing your submitted data as JSON output. Each field you filled in appears as a key-value pair: the field label becomes the key, and what you typed becomes the value.
What should I see?
The node's output panel displays your submission as structured data. You should see keys like Full Name, Years of Experience, Key Skills, and Cover Letter with the exact values you typed into the form.
This is the raw applicant data that your AI agent will evaluate in the next step.
Don't see any output data?
Make sure you clicked Execute Step before opening the form. n8n only listens for submissions while testing is active.
If the form tab didn't open automatically, look for the Test URL displayed at the top of the Form Trigger node panel. Copy it and paste it into a new browser tab manually.
Still stuck? Why isn't my Form Trigger showing submitted data in n8n?
You now have a live intake form that captures applicant data and surfaces it as structured JSON in your workflow. Next up, you will connect an AI agent that reads this data and decides whether the candidate is a good fit.
Connect the AI Agent to Evaluate Applicants
Your Form Trigger captures applicant data, but right now that data just sits there with no one reading it or making a decision.
In this step, you'll connect an AI model that reads each submission and decides whether the candidate is a good fit for the role. This is what transforms a simple form automation into an AI agent workflow.
In this step, get ready to:
- Get a free Gemini API key from Google AI Studio.
- Add an AI Agent node and connect it to the Gemini model.
- Write a screening prompt that evaluates applicants and returns a structured score.
Get your free Gemini API key
The AI Agent node needs access to a language model to evaluate applicants. You'll use Google's Gemini API, which is completely free with no billing account required.
- Open a new browser tab and go to aistudio.google.com.
- Sign in with your Google account.
- If this is your first time, accept the Terms of Service when prompted.
- Click Get API key on the landing page (or select API Key from the left sidebar).
- Click Create API key.
- Select Create API key in new project.
- Copy the generated API key and keep this tab open.
Why Gemini instead of OpenAI?
Google's Gemini API offers genuinely free input and output tokens with no billing account required. OpenAI requires a credit card for API access. Since you already have a Google account, Gemini is the zero-cost path.
Your key is safe on the free tier
With no billing account linked, exceeding the free-tier quota results in a 429 RESOURCE_EXHAUSTED error. You will never be charged unexpectedly.
Can't create an API key?
If you see a permissions error, make sure you are signed into a personal Google account (not a corporate/Workspace account with restricted permissions). Try signing out and signing back in.
help me troubleshoot creating a Gemini API key in Google AI Studio
Add the AI Agent node and connect it to Gemini
Now you'll add the node that actually does the thinking. The AI Agent node in n8n wraps LangChain's agent executor, giving you access to language models directly on the canvas.
- Switch back to your n8n tab at http://localhost:5678.
- Click the + button on the canvas to add a new node.
- Search for AI Agent and select it to add it to your workflow.
- Connect the Form Trigger's output to the AI Agent's input by dragging a line between them.
- Click on the AI Agent node to open its settings.
- At the bottom of the node panel, click the + under Chat Model.
- Select Google Gemini Chat Model from the list.
- In the credentials dropdown, click Create New Credential.
- Paste your API key into the API Key field.
- Leave the Host field as the default value.
- Click Save to store the credential.
- In the Model dropdown, select a Gemini Flash model (this is the fastest option available on the free tier).
You should now see the AI Agent node connected to your Form Trigger on the canvas, with a Gemini Chat Model sub-node attached below it.
What is the AI Agent node?
The AI Agent node is an autonomous system that receives data, makes decisions, and acts within its environment to achieve a goal. Unlike a simple API call, it can use tools, reason through steps, and produce structured output.
For this project, you're using it in a focused single-step mode: read input, evaluate against criteria, and return a structured score.
Write the screening prompt and test the workflow
The prompt is what turns a generic language model into an applicant screener. It defines the job criteria, injects the applicant's data, and tells the model exactly what format to return.
- In the AI Agent node settings, find the Prompt section.
- Change the prompt setting from Take from previous node automatically to Define below.
- Paste the following prompt into the Prompt (User Message) field:
You are an applicant screening assistant for an AI Agent Developer role.
Evaluate the following candidate based on these job criteria:
- Required skills: Python, workflow automation tools (n8n, Zapier, or similar), API integrations
- Preferred experience: 2+ years in automation or AI development
- Must demonstrate clear communication in their cover letter
Candidate Information:
- Name: {{ $json.Full_Name }}
- Years of Experience: {{ $json.Years_of_Experience }}
- Key Skills: {{ $json.Key_Skills }}
- Cover Letter: {{ $json.Cover_Letter }}
Return ONLY a JSON object with exactly two fields:
- "score": a number from 0 to 100 representing how well this candidate fits the role
- "rationale": one sentence explaining your score
Example output:
{"score": 72, "rationale": "Strong Python skills and relevant automation experience, but limited direct AI agent development."}
What does this prompt do?
- The first section defines the job criteria so the model knows what "good" looks like.
- The {{ $json.Field_Name }} expressions are n8n's way of injecting data from the previous node (the Form Trigger) into the prompt at runtime.
- The output format instruction tells the model to return structured JSON instead of freeform text, making it possible for later nodes to read the score programmatically.
- The example output gives the model a concrete template to follow, reducing the chance of unexpected formatting.
Now test the full workflow to see the AI evaluate an applicant.
- Click Test workflow at the bottom of the n8n canvas.
- Open the test form URL in a new browser tab (the same URL from Step 2).
- Fill in sample applicant data: name Jane Smith, 3 years experience, skills Python, n8n, API integrations, and a short cover letter mentioning automation experience.
- Submit the form.
Before you switch back to n8n, predict: what do you expect the AI Agent node's output to contain?
- Return to your n8n tab and click on the AI Agent node to see its output.
You should see a JSON response containing a score (a number between 0 and 100) and a rationale (one sentence explaining the score). For Jane Smith with Python and n8n skills, expect a score somewhere above 60.
AI Agent node showing an error?
If you see an authentication error, double-check that your API key was pasted correctly in the credential. Open the Gemini Chat Model sub-node, click on the credential, and verify the key has no extra spaces.
If the node shows no output at all, make sure you clicked Test workflow before submitting the form. The workflow must be in test mode to capture submissions.
help me fix my AI Agent node connection to Google Gemini in n8n
Your AI agent can now read applicant data and produce a structured evaluation. Next up, you'll add conditional routing so the workflow automatically sorts candidates into "advance" and "reject" paths based on that score.
Add Conditional Routing Based on the AI Score
Your AI agent evaluates each applicant and returns a score. But right now, every candidate gets the same treatment after evaluation.
Without conditional routing, the workflow cannot make decisions. You need logic that splits candidates into "advance" and "reject" paths based on the score. This is the core of any applicant tracking automation.
In this step, get ready to:
- Add an IF node that checks whether the AI's score meets your passing threshold.
- Create Set nodes on each branch to compile clean candidate summaries.
- Test end-to-end with strong and weak applicants to confirm routing works.
Add an IF node after the AI Agent
The IF node is n8n's conditional branching tool. It inspects a value and sends data down either a TRUE or FALSE path based on a comparison you define.
- On the n8n canvas, click the + button on the right edge of your AI Agent node.
- Search for If and select the If node to add it to the canvas.
- In the IF node's configuration panel, click the data type dropdown and select Number.
- For the comparison, select is greater than or equal to.
- In the first value field (left side), click the Expression tab and enter this expression:
{{ JSON.parse($json.output).score }}
- In the second value field (right side), enter 70 as a fixed value. This is your passing threshold.
What does this expression do?
The AI Agent node stores its response as a text string in the output field. Your prompt told the AI to return JSON, so that string contains something like {"score": 82, "rationale": "Strong match..."}.
The expression JSON.parse($json.output).score converts that text into a real JSON object and pulls out the score number. The IF node then checks if that number is 70 or above.
Create the Shortlisted and Not Selected paths
Each branch needs a Set node that compiles the candidate's key information into a clean summary object. This keeps downstream data tidy and easy to read.
- Click the + button on the TRUE output of the IF node (the green connector on the right side).
- Search for Edit Fields (Set) and add it.
- Rename this node to Shortlisted by double-clicking its title.
- In the Shortlisted node, click Add Field and add three fields:
- Field 1: Name it candidate_name. Set the value to the expression {{ $('Form Trigger').item.json.Full_Name }}.
- Field 2: Name it score. Set the value to the expression {{ JSON.parse($('AI Agent').item.json.output).score }}.
- Field 3: Name it rationale. Set the value to the expression {{ JSON.parse($('AI Agent').item.json.output).rationale }}.
Keep Include Other Input Fields off
By default, the Set node passes through all previous fields. Toggle off Include Other Input Fields so the output contains only your three clean summary fields. This makes downstream data easier to work with.
- Now click the + button on the FALSE output of the IF node (the red connector).
- Add another Edit Fields (Set) node.
- Rename it to Not Selected.
- Configure the same three fields (candidate_name, score, rationale) using the same expressions as above.
- Toggle off Include Other Input Fields here as well.
Why the same fields on both branches?
Both outcomes need the candidate's name, score, and rationale for record-keeping. The difference is which branch they arrive on. In a production system, you would connect each branch to a different destination (like a spreadsheet tab or email template).
Test the full workflow end-to-end
Time to prove that the routing actually works. You will submit two applicants and confirm that a strong candidate routes to Shortlisted while a weak one routes to Not Selected.
- Click Test workflow in the top-right corner of the canvas.
- Open the form URL (shown in the Form Trigger node output) in a new browser tab.
- Fill in a strong applicant: enter Alex Chen for Full Name, 4 for Years of Experience, Python, n8n, API integrations, LangChain for Key Skills, and a cover letter mentioning hands-on automation experience.
- Submit the form.
Before you check the results, what do you expect to happen? Do you think this applicant will route to the Shortlisted or Not Selected path?
- Return to the n8n canvas and wait for all nodes to finish executing.
- Click the Shortlisted node. You should see the output showing candidate_name, score (70 or above), and rationale.
What should I see?
The IF node shows a green checkmark on its TRUE branch, and the Shortlisted node displays a JSON object like:
{
"candidate_name": "Alex Chen",
"score": 82,
"rationale": "Strong match with relevant automation experience."
}
Your exact score and rationale will vary because the AI generates them fresh each time.
- Click Test workflow again to re-activate the form.
- In a new browser tab, submit a weak applicant: enter Pat Johnson for Full Name, 0 for Years of Experience, Microsoft Word, data entry for Key Skills, and a short cover letter with no mention of automation or AI.
- Submit the form and return to the n8n canvas.
- Click the Not Selected node. You should see the weak applicant's name with a score below 70.
Both applicants going to the same branch?
Check that your IF node condition uses Number as the data type. If you accidentally left it on String, the comparison treats 70 as text and the logic breaks.
Also confirm the expression in the left value field is exactly {{ JSON.parse($json.output).score }}. A typo (missing parenthesis, wrong field name) will cause the node to error.
If the AI returns a score right around 70, it may go either way. Try a more extreme test case (0 years experience, completely irrelevant skills) to get a clearly low score.
Still stuck? Why isn't my IF node routing applicants correctly based on the AI score?
Your workflow now makes real decisions. Strong candidates get shortlisted, weak ones get filtered out. Next up, you will handle the messy reality of AI outputs that do not always come back as clean JSON.
Handle the AI Returning Unexpected Output
Your workflow screens applicants end-to-end, routing strong candidates to the Shortlisted path and weak ones to Not Selected. But what happens when the AI returns something unexpected?
In this step, you will discover that the AI sometimes wraps its JSON output in markdown code fences or adds extra commentary. This breaks the IF node's condition silently. You will add a Code node to parse the AI's output reliably, and configure an Error Workflow to catch any failures that slip through.
In this step, get ready to:
- Discover how edge-case inputs break your current workflow.
- Add a Code node to extract and parse JSON from the AI's text output.
- Configure an Error Workflow to log failed executions.
Test your workflow with edge-case inputs
Your AI Agent node works well with straightforward applicants. Real submissions are messier.
Empty cover letters, extremely long rambling text, or unusual formatting can cause the AI to respond differently than your prompt expects. Time to see this in action.
- Click Test workflow in the top-right corner of the n8n canvas.
- Open the form URL in a new browser tab.
- Set Full Name to Test Edge Case.
- Set Years of Experience to 0.
- Set Key Skills to none.
- Leave the Cover Letter field completely empty.
- Submit the form.
Before you look at the result in n8n, what do you expect the AI Agent's raw output to look like? Do you think it will be a clean JSON object, or something else?
- Return to the n8n canvas and click on the AI Agent node to inspect its output.
You will likely see that the AI wrapped its response in markdown code fences like ```json ... ``` or added commentary text before or after the JSON object.
The IF node tries to evaluate this raw text as a number, and it either fails silently or routes every applicant to the wrong branch.
Why does this happen?
Large language models are trained on text that often formats JSON inside code fences. Even when your prompt says "return only JSON", the model sometimes adds formatting or a short sentence like "Here is the evaluation:" before the JSON.
This is normal behavior, not a bug in your prompt. It is the gap your workflow needs to close.
Add a Code node to parse the AI output
The Code node in n8n lets you write custom JavaScript to transform data between nodes. You will insert one between the AI Agent node and the IF node to strip code fences and extract clean JSON.
- Disconnect the wire between the AI Agent node and the IF node by clicking the connection line and pressing Delete on your keyboard.
- Click the + button on the AI Agent node's output connector.
- Search for Code and add the Code node.
- In the Code node settings, confirm the Mode is set to Run Once for All Items (this is the default).
- In the Language dropdown, confirm JavaScript is selected.
- Replace the default code in the editor with the following JavaScript snippet:
// Get all input items from the AI Agent node
const items = $input.all();
const results = [];
for (let i = 0; i < items.length; i++) {
// Get the AI's text output
const text = items[i].json.output || items[i].json.text || '';
// Strip markdown code fences if present
let cleaned = text.replace(/```json\n?/g, '').replace(/```\n?/g, '').trim();
// Find the JSON object in the text
const jsonMatch = cleaned.match(/\{[\s\S]*\}/);
let score = 0;
let rationale = 'Could not parse AI response';
if (jsonMatch) {
try {
const parsed = JSON.parse(jsonMatch[0]);
score = Number(parsed.score) || 0;
rationale = parsed.rationale || 'No rationale provided';
} catch (e) {
// JSON parse failed, keep defaults
}
}
results.push({
json: { score, rationale }
});
}
return results;
What does this code do?
- `$input.all()` retrieves all items flowing into this Code node from the AI Agent.
- The regex strips markdown code fences that the AI often wraps around its JSON.
- The .match() call finds the first JSON object in whatever text remains, even if the AI added commentary before or after it.
- If parsing fails entirely, the code defaults to a score of 0 so the candidate routes to the Not Selected branch rather than crashing the workflow.
- The returned array of { json: { score, rationale } } objects is the format n8n expects from a Code node.
- Connect the Code node's output to the IF node's input by dragging from the Code node's output connector to the IF node.
- Click on the IF node and update the condition value expression to {{ $json.score }} so it reads the clean score field from the Code node instead of the raw AI text.
- Test the workflow by clicking Test workflow and submitting the same edge-case applicant (empty cover letter, 0 experience, "none" for skills).
- Click the Code node to inspect its output.
You should see a clean JSON object with a score (a number, likely low) and a rationale (a sentence). The IF node now evaluates correctly and routes this weak candidate to the Not Selected branch.
Code node showing an error?
- Make sure you copied the entire snippet, including the closing curly brace and return results; at the bottom.
- Confirm the mode is Run Once for All Items, not Run Once for Each Item. The code uses $input.all() which requires this mode.
- Check that the AI Agent node actually produced output on this test run. If the AI Agent has no output, the Code node has nothing to parse.
Still stuck? Help me debug my Code node in n8n
- Now test with a strong applicant: submit the form with 3+ years of experience, relevant skills like Python, n8n, API integrations, and a short cover letter about automation experience.
- Confirm the Code node outputs a high score and the IF node routes this candidate to the Shortlisted branch.
Configure an Error Workflow to catch failures
Your Code node handles most parsing issues gracefully. But in production, other things can go wrong: the Gemini API might time out, n8n might run out of memory, or a node misconfiguration might surface.
An Error Workflow ensures no applicant submission is silently lost. It runs automatically whenever a linked workflow fails during an automated execution.
- Click the n8n logo in the top-left corner to return to the workflows list.
- Click Add workflow to create a new workflow.
- In the new workflow canvas, click Add first step.
- Search for Error Trigger and add it as the first node.
What is an Error Trigger?
The Error Trigger node starts a workflow whenever a linked workflow fails. It receives details about the failed execution: the error message, which node failed, and a link to the execution log.
You can connect it to any action node (email, Slack, logging) to alert you about failures. For now, having the Error Trigger in place is enough to log the failure details inside n8n's execution history.
- Name this workflow Error Handler by clicking the workflow name at the top and typing the new name.
- Click Save in the top-right corner.
- Navigate back to your applicant screening workflow by clicking the n8n logo and selecting it from the workflows list.
- Click the three dots icon in the upper-right corner to open the Options menu.
- Select Settings.
- In the Error workflow dropdown, select Error Handler (the workflow you just created).
- Click Save.
Your applicant screening workflow is now linked to the Error Handler. If any node throws an unhandled error during an automated execution, n8n will trigger the Error Handler workflow and log the details.
Why can't I test the Error Workflow manually?
The Error Trigger node only fires during automated (production) workflow runs, not manual test executions. This is by design in n8n.
You can verify it is correctly linked by checking that the Workflow settings modal shows your Error Handler selected in the Error workflow dropdown.
Don't see your Error Handler in the dropdown?
- Make sure you saved the Error Handler workflow before navigating back. Unsaved workflows do not appear in the dropdown.
- Confirm the Error Handler workflow contains the Error Trigger node as its first node.
Still not working? Help me set up an Error Workflow in n8n
- Run one final end-to-end test: click Test workflow, open the form, and submit a strong applicant with relevant skills and 3+ years of experience.
Before you check the result, predict: which branch will this applicant take, and what score do you expect?
- Click through each node in the canvas to trace the data flow: Form Trigger, then AI Agent, then Code, then IF, then Shortlisted.
You should see the applicant's data flow cleanly through the Code node (with a high score value) and route to the Shortlisted branch. Your workflow now handles both well-formatted and malformed AI responses gracefully.
Your workflow is now production-reliable. The Code node catches malformed AI output, and the Error Workflow catches anything else that might go wrong. Next up, you will tackle the Secret Mission and add a notification step for top candidates.
Secret mission
Send a Top Candidate Alert
A real applicant tracking system doesn't just sort candidates into folders. It alerts recruiters the moment a standout arrives. Can you extend your workflow to send a formatted notification when a top candidate scores 85 or higher?
Clean Up Your Resources
Clean Up Your Resources
This project runs entirely locally with a free-tier API key, so there are no ongoing costs. Decide whether to keep your resources running, pause them to come back later, or delete them entirely.
Resources you used:
- n8n local instance and workflow data (stored in C:\Users\<username>\.n8n, runs only when you start it).
- Google AI Studio API key (free tier, no billing account required, no charges possible).
Keep everything running
No action needed. Choose this if you plan to keep experimenting with your applicant screening workflow or building new workflows in n8n.
- Your n8n workflows and credentials persist in C:\Users\<username>\.n8n.
- Start n8n anytime by opening a terminal and running npx n8n.
- Your Google AI Studio API key remains active on the free tier. No billing account is linked, so exceeding quotas results in rate-limit errors, not charges.
- Node.js stays installed on your machine for any future JavaScript or Node projects.
Pause - I'll come back to this later
Shut down the n8n process to free up your terminal. Nothing runs or costs money while stopped.
- In the terminal where n8n is running, press Ctrl+C to stop the process.
- Your workflows, credentials, and execution history are all saved in the .n8n folder. They will be there when you return.
- To resume later, open a terminal and run npx n8n again.
Delete - I don't want to use this again
Remove all project resources and start fresh. This deletes your workflows, credentials, and execution history permanently.
- Stop n8n by pressing Ctrl+C in the terminal where it is running.
- Delete all n8n workflow data by running this command in Command Prompt:
rmdir /s /q %USERPROFILE%\.n8n
- Revoke your Google AI Studio API key: go to aistudio.google.com, open your API keys list, and delete the key you created for this project.
- Since you used npx n8n (no global install), there is no package to uninstall. The cached download will be cleaned up automatically by npm over time.
Nice Work!
Nice Work!
You just built a fully functional AI-powered applicant screening workflow from scratch using n8n and Google's Gemini API. This is the exact type of automation that companies hiring for AI agent roles need built.
You've learned how to:
- Build a complete AI agent workflow that receives applicant data through a live web form, evaluates it against job criteria using a language model, and returns a structured score with rationale.
- Implement conditional routing that automatically sorts candidates into shortlisted and rejected paths based on the AI's evaluation score.
- Add error handling and output parsing to make an AI workflow production-reliable, catching malformed responses instead of failing silently.
- Configure a notification system that alerts you when a top candidate (score 85+) arrives, completing the end-to-end ATS workflow (Secret Mission).
Ready to quiz yourself?