Back to Catalog

Screen job applicants with Gemini AI: Jotform to Notion hiring pipeline

AttaAtta
151 views
2/3/2026
Official Page

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:

  1. Downloads their PDF resume (even from private links).
  2. Extracts the text from the resume and reads their cover letter.
  3. Compares the application to the Notion job description using Gemini AI.
  4. Generates an "AI Fit Score" (0-100) and a concise summary.
  5. Filters out low-scoring applicants.
  6. Creates a new, fully detailed candidate page in your Notion database, linked to the correct job.
  7. Instantly alerts your hiring team on Slack with the candidate's score and summary.
  8. 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 Auth credentials.
      • Name: Jotform API Key (Query)
      • Parameter Name: apiKey
      • Parameter Value: [Paste your Jotform API Key here]
  • URL: Replace uploadYour in 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_positionApplying in 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_typeA8 in 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 40 to 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 }} ... (Replace q3_fullName)
    • Email: {{ $('Jotform Trigger').item.json.q4_email }} (Replace q4_email)
    • Phone: {{ $('Jotform Trigger').item.json.q5_phoneNumber?.full ? ... (Replace q5_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 uploadYour with your file QID.

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 the IF (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 Analysis node 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
  • Email
  • Phone Number (Can be optional)
  • File Upload (Label: Upload Your Resume)
    • Crucial: Set the file type option to pdf only.
  • 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.

  1. Create a new Table database in Notion named Open Positions.
  2. 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.

  1. Create a new Table database in Notion named Candidates.
  2. 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.

Screen Job Applicants with Gemini AI: Jotform to Notion Hiring Pipeline

This n8n workflow automates the initial screening of job applicants by integrating Jotform submissions with Google Gemini AI and Notion, and providing notifications via Slack and Gmail. It streamlines your hiring process by intelligently processing applications and organizing them in your Notion database.

What it does

  1. Triggers on new Jotform submissions: The workflow starts whenever a new application form is submitted via Jotform.
  2. Extracts resume text: It extracts the text content from the submitted resume file (assuming it's a PDF or similar text-based document).
  3. Analyzes application with Google Gemini AI: The extracted resume text and other application details are sent to a Google Gemini Chat Model. An AI Agent then processes this information using a structured output parser to evaluate the applicant against predefined criteria.
  4. Decides on applicant suitability: An "If" node evaluates the AI's assessment to determine if the applicant is a "Good Fit" or "Bad Fit."
  5. Notifies via Slack:
    • If the applicant is a "Good Fit," a Slack message is sent to a specified channel, providing key details from the application and AI assessment.
    • If the applicant is a "Bad Fit," a different Slack message is sent, informing the team of the rejection.
  6. Updates Notion Database:
    • For "Good Fit" applicants, a new page is created in a Notion database with relevant applicant information and the AI's positive assessment.
    • For "Bad Fit" applicants, a new page is created in the same Notion database, marking them as rejected and including the AI's negative assessment.
  7. Sends Email (Good Fit): For "Good Fit" applicants, an automated email is sent via Gmail to the applicant, acknowledging their application and indicating the next steps.
  8. Sends Email (Bad Fit): For "Bad Fit" applicants, an automated email is sent via Gmail to the applicant, informing them that their application will not be moving forward.

Prerequisites/Requirements

  • n8n Instance: A running n8n instance.
  • Jotform Account: A Jotform account with a form set up for job applications.
  • Google Gemini API Key: Access to the Google Gemini API for the AI Agent.
  • Notion Account: A Notion workspace with a database set up to manage job applicants.
  • Slack Account: A Slack workspace and a channel for notifications.
  • Gmail Account: A Gmail account configured for sending automated emails.

Setup/Usage

  1. Import the workflow: Import the provided JSON into your n8n instance.
  2. Configure Credentials:
    • Jotform Trigger: Set up your Jotform API credentials.
    • Google Gemini Chat Model: Configure your Google Gemini API key.
    • Notion: Set up your Notion API credentials and specify the database ID.
    • Slack: Set up your Slack API credentials and specify the channel ID.
    • Gmail: Set up your Gmail API credentials.
  3. Customize Nodes:
    • Jotform Trigger: Select the specific Jotform form you want to monitor.
    • Extract from File: Ensure this node correctly targets the resume file from the Jotform submission.
    • AI Agent & Structured Output Parser: Review and adjust the prompts and parsing rules to align with your specific screening criteria and desired output from Gemini.
    • If: Verify the conditions for distinguishing "Good Fit" from "Bad Fit" based on the AI's output.
    • Slack: Customize the messages for both "Good Fit" and "Bad Fit" scenarios.
    • Notion: Map the data from the workflow to the properties in your Notion database for both "Good Fit" and "Bad Fit" entries.
    • Gmail: Customize the subject and body of the emails for both "Good Fit" and "Bad Fit" applicants.
  4. Activate the workflow: Once configured, activate the workflow to start processing new Jotform submissions automatically.

Related Templates

Generate song lyrics and music from text prompts using OpenAI and Fal.ai Minimax

Spark your creativity instantly in any chat—turn a simple prompt like "heartbreak ballad" into original, full-length lyrics and a professional AI-generated music track, all without leaving your conversation. 📋 What This Template Does This chat-triggered workflow harnesses AI to generate detailed, genre-matched song lyrics (at least 600 characters) from user messages, then queues them for music synthesis via Fal.ai's minimax-music model. It polls asynchronously until the track is ready, delivering lyrics and audio URL back in chat. Crafts original, structured lyrics with verses, choruses, and bridges using OpenAI Submits to Fal.ai for melody, instrumentation, and vocals aligned to the style Handles long-running generations with smart looping and status checks Returns complete song package (lyrics + audio link) for seamless sharing 🔧 Prerequisites n8n account (self-hosted or cloud with chat integration enabled) OpenAI account with API access for GPT models Fal.ai account for AI music generation 🔑 Required Credentials OpenAI API Setup Go to platform.openai.com → API keys (sidebar) Click "Create new secret key" → Name it (e.g., "n8n Songwriter") Copy the key and add to n8n as "OpenAI API" credential type Test by sending a simple chat completion request Fal.ai HTTP Header Auth Setup Sign up at fal.ai → Dashboard → API Keys Generate a new API key → Copy it In n8n, create "HTTP Header Auth" credential: Name="Fal.ai", Header Name="Authorization", Header Value="Key [Your API Key]" Test with a simple GET to their queue endpoint (e.g., /status) ⚙️ Configuration Steps Import the workflow JSON into your n8n instance Assign OpenAI API credentials to the "OpenAI Chat Model" node Assign Fal.ai HTTP Header Auth to the "Generate Music Track", "Check Generation Status", and "Fetch Final Result" nodes Activate the workflow—chat trigger will appear in your n8n chat interface Test by messaging: "Create an upbeat pop song about road trips" 🎯 Use Cases Content Creators: YouTubers generating custom jingles for videos on the fly, streamlining production from idea to audio export Educators: Music teachers using chat prompts to create era-specific folk tunes for classroom discussions, fostering interactive learning Gift Personalization: Friends crafting anniversary R&B tracks from shared memories via quick chats, delivering emotional audio surprises Artist Brainstorming: Songwriters prototyping hip-hop beats in real-time during sessions, accelerating collaboration and iteration ⚠️ Troubleshooting Invalid JSON from AI Agent: Ensure the system prompt stresses valid JSON; test the agent standalone with a sample query Music Generation Fails (401/403): Verify Fal.ai API key has minimax-music access; check usage quotas in dashboard Status Polling Loops Indefinitely: Bump wait time to 45-60s for complex tracks; inspect fal.ai queue logs for bottlenecks Lyrics Under 600 Characters: Tweak agent prompt to enforce fuller structures like [V1][C][V2][B][C]; verify output length in executions

Daniel NkenchoBy Daniel Nkencho
601

Auto-reply & create Linear tickets from Gmail with GPT-5, gotoHuman & human review

This workflow automatically classifies every new email from your linked mailbox, drafts a personalized reply, and creates Linear tickets for bugs or feature requests. It uses a human-in-the-loop with gotoHuman and continuously improves itself by learning from approved examples. How it works The workflow triggers on every new email from your linked mailbox. Self-learning Email Classifier: an AI model categorizes the email into defined categories (e.g., Bug Report, Feature Request, Sales Opportunity, etc.). It fetches previously approved classification examples from gotoHuman to refine decisions. Self-learning Email Writer: the AI drafts a reply to the email. It learns over time by using previously approved replies from gotoHuman, with per-classification context to tailor tone and style (e.g., different style for sales vs. bug reports). Human Review in gotoHuman: review the classification and the drafted reply. Drafts can be edited or retried. Approved values are used to train the self-learning agents. Send approved Reply: the approved response is sent as a reply to the email thread. Create ticket: if the classification is Bug or Feature Request, a ticket is created by another AI agent in Linear. Human Review in gotoHuman: How to set up Most importantly, install the gotoHuman node before importing this template! (Just add the node to a blank canvas before importing) Set up credentials for gotoHuman, OpenAI, your email provider (e.g. Gmail), and Linear. In gotoHuman, select and create the pre-built review template "Support email agent" or import the ID: 6fzuCJlFYJtlu9mGYcVT. Select this template in the gotoHuman node. In the "gotoHuman: Fetch approved examples" http nodes you need to add your formId. It is the ID of the review template that you just created/imported in gotoHuman. Requirements gotoHuman (human supervision, memory for self-learning) OpenAI (classification, drafting) Gmail or your preferred email provider (for email trigger+replies) Linear (ticketing) How to customize Expand or refine the categories used by the classifier. Update the prompt to reflect your own taxonomy. Filter fetched training data from gotoHuman by reviewer so the writer adapts to their personalized tone and preferences. Add more context to the AI email writer (calendar events, FAQs, product docs) to improve reply quality.

gotoHumanBy gotoHuman
353

Synchronizing WooCommerce inventory and creating products with Google Gemini AI and BrowserAct

Synchronize WooCommerce Inventory & Create Products with Gemini AI & BrowserAct This sophisticated n8n template automates WooCommerce inventory management by scraping supplier data, updating existing products, and intelligently creating new ones with AI-formatted descriptions. This workflow is essential for e-commerce operators, dropshippers, and inventory managers who need to ensure their product pricing and stock levels are synchronized with multiple third-party suppliers, minimizing overselling and maximizing profit. --- Self-Hosted Only This Workflow uses a community contribution and is designed and tested for self-hosted n8n instances only. --- How it works The workflow is typically run by a Schedule Trigger (though a Manual Trigger is also shown) to check stock automatically. It reads a list of suppliers and their inventory page URLs from a central Google Sheet. The workflow loops through each supplier: A BrowserAct node scrapes the current stock and price data from the supplier's inventory page. A Code node parses this bulk data into individual product items. It then loops through each individual product found. The workflow checks WooCommerce to see if the product already exists based on its name. If the product exists: It proceeds to update the existing product's price and stock quantity. If the product DOES NOT exist: An If node checks if the missing product's category matches a predefined type (optional filtering). If it passes the filter, a second BrowserAct workflow scrapes detailed product attributes from a dedicated product page (e.g., DigiKey). An AI Agent (Gemini) transforms these attributes into a specific, styled HTML table for the product description. Finally, the product is created in WooCommerce with all scraped details and the AI-generated description. Error Handling: Multiple Slack nodes are configured to alert your team immediately if any scraping task fails or if the product update/creation process encounters an issue. Note: This workflow does not support image uploads for new products. To enable this functionality, you must modify both the n8n and BrowserAct workflows. --- Requirements BrowserAct API account for web scraping BrowserAct n8n Community Node -> (n8n Nodes BrowserAct) BrowserAct templates named “WooCommerce Inventory & Stock Synchronization” and “WooCommerce Product Data Reconciliation” Google Sheets credentials for the supplier list WooCommerce credentials for product management Google Gemini account for the AI Agent Slack credentials for error alerts --- Need Help? How to Find Your BrowseAct API Key & Workflow ID How to Connect n8n to Browseract How to Use & Customize BrowserAct Templates How to Use the BrowserAct N8N Community Node --- Workflow Guidance and Showcase STOP Overselling! Auto-Sync WooCommerce Inventory from ANY Supplier

Madame AI Team | KaiBy Madame AI Team | Kai
600