š„ Screen job applicants with Gemini AI: Jotform to Notion hiring pipeline
ā” 172 views Ā· š„ HR & Recruitment
Description
Stop drowning in job applications. This workflow transforms your hiring process from a manual, time-consuming data-entry task into an automated, intelligent screening system.
When a candidate applies via your Jotform, this workflow automatically:
- Downloads their PDF resume (even from private links).
- Extracts the text from the resume and reads their cover letter.
- Compares the application to the Notion job description using Gemini AI.
- Generates an āAI Fit Scoreā (0-100) and a concise summary.
- Filters out low-scoring applicants.
- Creates a new, fully detailed candidate page in your Notion database, linked to the correct job.
- Instantly alerts your hiring team on Slack with the candidateās score and summary.
- Sends an automated confirmation email to the candidate.
Features
- Triggers on New Jotform Submissions: Kicks off the moment a candidate clicks āApply Now.ā
- Handles Private Files: Securely downloads private resume files from Jotform using your API key.
- PDF Text Extraction: Automatically reads the text from any uploaded PDF resume.
- Deep AI Analysis: Uses Gemini AI to compare the candidateās resume and cover letter against the specific job description from Notion.
- Relational Database Linking: Automatically links the new candidate to the correct āOpen Positionā page in Notion.
- Automated Quality Filtering: An IF node stops low-scoring candidates from cluttering your database.
- Multi-Channel Communication: Provides instant feedback to your team (Slack) and the candidate (Email).
Nodes Used
- š£ Jotform Trigger (
Jotform Trigger) - āļø Gmail (
Send Confirmation Email) - ā¬ļø HTTP Request (
Download Resume PDF) - š Extract From File (
Read Resume Text) - š Notion (
Find Job in Notion) - šļø Merge (
Combine Data) - š§ AI Agent (
AI Candidate Analysis) - ā IF (
Score > 40?) - ā Notion (
Create Candidate in Notion) - š£ Slack (
Alert Hiring Team) - š« No Operation, do nothing (
Ignore (Score < 40))
How to use this template
This template requires manual setup due to Jotformās unique Question IDs (QIDs). Please follow these steps carefully.
ā ļø CRITICAL WARNING ON JOTFORM QIDs
To get the file URL, this template requires you to turn āResolve Dataā OFF in the Jotform Trigger. This means the workflow uses Question IDs (e.g., q7_positionApplying, q8_typeA8) instead of human-readable labels.
Your QIDs will be different from the ones in this template. You must run the trigger once, find your QIDs, and replace them in the downstream nodes.
1. Set up Jotform and Notion (See āMore Informationā section below)
- Before you start, create your Jotform form and your two Notion databases (āOpen Positionsā and āCandidatesā) as described at the end of this document.
2. Configure the Jotform Trigger Node
- Credentials: Connect your Jotform account.
- Form: Select your āJob Applicationā form.
- IMPORTANT: In the node Parameters, find the āResolve Dataā option and turn it OFF.
- Test: Run a test by submitting your form. Look at the output and write down your unique QIDs for each field (e.g.,
q3_fullName,q7_positionApplying,q8_typeA8,uploadYour).
3. Configure the Download Resume PDF (HTTP Request) Node
- Credentials: This node needs your Jotform API Key.
- Authentication:
Query Auth - Credential: Create new
Header Authcredentials.- Name:
Jotform API Key (Query) - Parameter Name:
apiKey - Parameter Value: [Paste your Jotform API Key here]
- Name:
- Authentication:
- URL: Replace
uploadYourin the expression{{ $('Jotform Trigger').item.json.uploadYour[0] }}with the QID for your file upload field.
4. Configure the Find Job in Notion Node
(See the āRequired Notion Setupā section at the end of this document for detailed instructions on how to build this database)
- Credentials: Connect your Notion credentials.
- Database ID: Select your āOpen Positionsā database.
- Filter Value: Replace
q7_positionApplyingin the expression{{ $('Jotform Trigger').item.json.q7_positionApplying }}with the QID for your āPositionā dropdown.
5. Configure the AI Candidate Analysis Node
- Credentials: Connect your Google AI (Gemini) credentials.
- Prompt: In the prompt, find the line for āCandidateās Cover Letterā. Replace
q8_typeA8in the expression{{ $('Jotform Trigger').item.json.q8_typeA8 }}with the QID for your cover letter field.
6. Configure the IF (Score > 40?) Node
- No credentials needed. You can change the āValue 2ā from
40to any score you want to use as your quality filter.
7. Configure the Create Candidate in Notion Node
(See the āRequired Notion Setupā section at the end of this document for detailed instructions on how to build this database)
- This is the most important step. Connect your Notion credentials and select your āCandidatesā database.
- You must go through every single property and replace my QIDs with your QIDs from the Jotform trigger.
- Candidate Name:
{{ $('Jotform Trigger').item.json.q3_fullName.first }} ...(Replaceq3_fullName) - Email:
{{ $('Jotform Trigger').item.json.q4_email }}(Replaceq4_email) - Phone:
{{ $('Jotform Trigger').item.json.q5_phoneNumber?.full ? ...(Replaceq5_phoneNumber) - Position (Relation): This expression,
{{ $('Find Job in Notion').item.json.id }}, is correct. - AI Summary, Score, Skills: These expressions are also correct.
- Resume (File): In the URL field, replace
uploadYourwith your file QID.
- Candidate Name:
8. Configure Communication Nodes
Send Confirmation Email(Gmail): Connect your email credentials and customize the email body.Alert Hiring Team(Slack): Connect your Slack credentials and select your desired channel (e.g.,#hiring).
9. Activate your Workflow!
- Once all steps are configured and QIDs are replaced, save and activate your workflow.
How to Adapt the Template
- Log Rejected Candidates: Connect the
false(No) output of theIF (Score > 40?)node to a Google Sheets node to keep a log of all candidates who didnāt meet the score threshold. - Change the AI Prompt: Edit the prompt in the
AI Candidate Analysisnode to ask for different insights, such as āList 3 potential red flagsā or āEstimate years of experience.ā - Use a Different AI: Replace the Google AI node with an OpenAI or Claude node.
- Change Notifications: Swap the Slack node for Discord, Microsoft Teams, or a simple email notification.
More Information
About Jotform
Jotform is a powerful and easy-to-use online form builder perfect for creating professional job application forms. Its flexibility with file uploads and webhooks makes it an ideal trigger for this n8n automation. If you donāt have an account, you can get started using the link above.
Required Jotform Fields
Your Jotform must have these fields for the template to work:
- Full Name
- Phone Number (Can be optional)
- File Upload (Label:
Upload Your Resume)- Crucial: Set the file type option to
pdfonly.
- Crucial: Set the file type option to
- Dropdown (Label:
Position Applying For)- Crucial: The options (e.g., āMarketing Managerā) must exactly match the page titles in your āOpen Positionsā Notion database.
- Long Text (Label:
Summary / Cover Letter)
Required Notion Setup
This workflow requires two separate databases in Notion that are linked together. Both databases must be shared with your n8n integration.
Database 1: āOpen Positionsā This database holds your job descriptions. The AI reads from this database to understand the job requirements.
- Create a new Table database in Notion named
Open Positions. - Create the following properties:
Name(Title): This is the job title. It must exactly match the options in your Jotform dropdown (e.g., āMarketing Managerā).Job Description(Text): A text field where you will paste the full job description for the role.
Database 2: āCandidatesā This database will store every new applicant and their AI-generated score.
- Create a new Table database in Notion named
Candidates. - Create the following properties to store the data:
Candidate Name(Title): This will be filled with the applicantās name from the form.Email(Email): Stores the candidateās email.Phone(Phone): Stores the candidateās phone number.Resume(File): Stores the link to the resume PDF.AI Summary(Text): Stores the 2-sentence summary from the AI.AI Fit Score(Number): Stores the 0-1S00 score from the AI.Key Skills(Multi-select): Stores the skills array generated by the AI.Position(Relation): This is the final, crucial property.- Type: Select
Relation. - Database: In the menu, search for and select your āOpen Positionsā database.
- IMPORTANT: A toggle labeled āShow on āOpen Positionsāā will appear. You must turn this toggle ON. This creates a two-way relation, which is required for n8n to see and use this property.
- Type: Select
š Nodes Used
HTTP Request, Slack, Jotform Trigger, Gmail, Notion, AI Agent
š„ Import
Download workflow.json and import into n8n:
Workflow menu ā Import from File