This workflow corresponds to n8n.io template #15480 — we link there as the canonical source.
This workflow follows the Googlegemini → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "job-search-workflow",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Automated Job Search & AI Relevance Evaluator using Google Gemini and Notion",
"tags": [],
"nodes": [
{
"id": "sticky-main-overview",
"name": "Main Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1360,
-592
],
"parameters": {
"color": 6,
"width": 683,
"height": 1102,
"content": "\n\n\n\n## HOW IT WORKS\nThis workflow automates the job search process by cross-referencing a candidate's resume with live job listings from the JSearch API (RapidAPI). It extracts the candidate's current role using Gemini, searches for similar roles, filters for new postings, and then uses Gemini to perform a detailed evaluation of each job's relevance. Matching jobs are automatically added to a Notion database.\n\n## HOW TO SET UP\n1. **Notion**: Connect your Notion account and select your Job Database. Ensure the database has the required properties \n - Job ID\n - Job Title\n - Company\n - Description\n - Employment Type\n - N/A\n - Full-Time\n - Part-Time\n - Is Remote\n - Yes\n - No\n - Hybrid\n - Language\n - Job Location\n - Salary\n - Joining Timeline\n - Relevance Score\n - Skill Match\n - Summary\n - Status\n - Not Applied\n - Applied\n - URL\n - Apply Options\n - Posted On\n2. **RapidAPI**: Provide your RapidAPI key for the [JSearch API](https://rapidapi.com/letscrape-6zs-6zs-default/api/jsearch).\n3. **Google Gemini**: Supply your Google Gemini API credentials.\n4. **Local File**: Ensure the resume file path is correctly set in the 'Read Candidate Resume' node.\n\n## CUSTOMIZATION\n1. Modify the job search query in the 'Search for Jobs via RapidAPI' node.\n2. Adjust the relevance score threshold in the 'Evaluate Job Relevance' prompt if needed.\n3. Change the date filter range in 'Filter Recent Job Postings'."
},
"typeVersion": 1
},
{
"id": "sticky-section-1",
"name": "Prerequisites & Resume",
"type": "n8n-nodes-base.stickyNote",
"position": [
-464,
-512
],
"parameters": {
"color": 0,
"width": 786,
"height": 515,
"content": "### 1. NOTION SETUP\nFetch the Notion Database and get all the existing Jobs from the database."
},
"typeVersion": 1
},
{
"id": "sticky-section-2",
"name": "Job Discovery",
"type": "n8n-nodes-base.stickyNote",
"position": [
432,
-512
],
"parameters": {
"color": 0,
"width": 1000,
"height": 510,
"content": "### 2. RESUME ANALYSIS\nAnalyse the Resume and Extract the relevant details for Job Search"
},
"typeVersion": 1
},
{
"id": "sticky-section-3",
"name": "AI Evaluation & Storage",
"type": "n8n-nodes-base.stickyNote",
"position": [
2640,
-512
],
"parameters": {
"color": 0,
"width": 1471,
"height": 733,
"content": "### 3. EVALUATION & STORAGE\nFor each unique job, use AI to match against the resume and save the formatted result to Notion."
},
"typeVersion": 1
},
{
"id": "62ff1cd1-08d9-490a-92cc-71bdfbd0f80f",
"name": "Start Job Trigger",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1040,
-816
],
"parameters": {},
"typeVersion": 1
},
{
"id": "c337df28-cd6e-4411-ad84-12b33356c957",
"name": "Read Candidate Resume",
"type": "n8n-nodes-base.readWriteFile",
"position": [
608,
-384
],
"parameters": {
"options": {},
"fileSelector": "/home/node/.n8n-files/Navneet-Resume.pdf"
},
"typeVersion": 1.1
},
{
"id": "7208b89a-301d-4bac-b73c-9a6e9f02977b",
"name": "Extract Text from PDF",
"type": "n8n-nodes-base.extractFromFile",
"position": [
880,
-384
],
"parameters": {
"options": {},
"operation": "pdf"
},
"typeVersion": 1.1
},
{
"id": "6176186e-ba18-4a2c-b679-995c457b0383",
"name": "Search for Jobs via RapidAPI",
"type": "n8n-nodes-base.httpRequest",
"position": [
1680,
-384
],
"parameters": {
"url": "https://jsearch.p.rapidapi.com/search",
"options": {},
"sendBody": true,
"sendQuery": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{}
]
},
"queryParameters": {
"parameters": [
{
"name": "query",
"value": "AI"
},
{
"name": "page",
"value": "1"
},
{
"name": "num_pages",
"value": "10"
},
{
"name": "country",
"value": "de"
},
{
"name": "date_posted",
"value": "week"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "jsearch.p.rapidapi.com"
},
{
"name": "x-rapidapi-key",
"value": "REPLACE_WITH_YOUR_RAPIDAPI_KEY"
}
]
}
},
"typeVersion": 4.4
},
{
"id": "7251f606-f074-4abb-8eb7-72cb748fcb1f",
"name": "Parse Search Results",
"type": "n8n-nodes-base.splitOut",
"position": [
2208,
-384
],
"parameters": {
"options": {},
"fieldToSplitOut": "data"
},
"typeVersion": 1
},
{
"id": "edb3facd-3438-48e9-a864-f7e682e3f021",
"name": "Process Each Job Listing",
"type": "n8n-nodes-base.splitInBatches",
"position": [
2784,
-416
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "7adb4ff6-245e-4a3a-a0a8-4e9e246aa48a",
"name": "Evaluate Job Relevance",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
3152,
-160
],
"parameters": {
"text": "=You are an expert technical recruiter. Compare the candidate's Resume with the Job Description provided below.\n\nCandidate Resume:\n{{ $('Extract Text from PDF').item.json.text }}\n\nJob Title: \n{{ $json.job_title }}\n\nJob Description:\n{{ $json.job_description }}\n\nTask:\nCalculate the following and output your answer in STRICT JSON format. ALso make sure all information is presented in English even if the original is in a different language:\n\nJob Id: {{ $json.job_id }}\n\nJob Title: {{ $json.job_title }}\n\nCompany: {{ $json.employer_name }}\n\nURL: {{ $json.job_apply_link }}\n\nApply Options: {{ $json.apply_options }}\n\nEmployment Type: {{ $json.job_employment_type }}\n\nJob Description: Create an outlook of the Job Description\n\nIs Remote: Check the possibility of the remote work. If not available, mark it as N/A \n\nLocation: Check all possible locations where this job is applicable. If not available, Mark it as N/A\n\nSalary: If available, mention it here either a direct value or as a range. If not, mark it as N/A\n\nRelevance Score: (1-100) based on seniority and industry match. 0 if Job Description is missing\n\nSkill Match Score: (1-100) based on specific tools mentioned in both. 0 if Job Description is missing or no skills match\n\nJoining Timeline: Check how urgent the joing for this position it like Immediate, as soon as possible, Jan 2026 and so on. If not available, mark it as N/A\n\nPosted On: {{ $json.job_posted_at_datetime_utc }}\n\nApply Options: Create a list of all apply options\n\nSummary: A 1-sentence explanation of why you gave this score.\" No Summary if Job Description is missing\n\nLanguage: Check the main language requirement with fluency level: Like German B1 or Englis. If not available mark as N/A\n\nStatus: Not Applied\n",
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemma-4-31b-it",
"cachedResultName": "models/gemma-4-31b-it"
},
"options": {},
"resource": "document"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "de46bbd5-1477-4e5f-890f-8686ba24e162",
"name": "Rate Limit API Requests",
"type": "n8n-nodes-base.wait",
"position": [
2784,
-160
],
"parameters": {
"amount": 15
},
"typeVersion": 1.1
},
{
"id": "0e19495d-95f8-41e3-bd6c-35752031eb7c",
"name": "Add Record to Notion Database",
"type": "n8n-nodes-base.notion",
"position": [
3872,
-160
],
"parameters": {
"title": "={{ $json[\"Job ID\"] }}",
"simple": false,
"options": {},
"resource": "databasePage",
"databaseId": {
"__rl": true,
"mode": "list",
"value": "REPLACE_WITH_YOUR_NOTION_DATABASE_ID",
"cachedResultName": "Job Database"
},
"propertiesUi": {
"propertyValues": [
{
"key": "Job Title|select",
"selectValue": "={{ $json[\"Job Title\"] }}"
},
{
"key": "Company|select",
"selectValue": "={{ $json.Company }}"
},
{
"key": "URL|url",
"urlValue": "={{ $json.URL }}"
},
{
"key": "Employment Type|select",
"selectValue": "={{ $json[\"Employment Type\"] }}"
},
{
"key": "Apply Options|multi_select",
"multiSelectValue": "={{ $json['Apply Options'] }}"
},
{
"key": "Is Remote|select",
"selectValue": "={{ $json[\"Is Remote\"] }}"
},
{
"key": "Job Location|rich_text",
"textContent": "={{ $json.Location }}"
},
{
"key": "Salary|rich_text",
"textContent": "={{ $json.Salary }}"
},
{
"key": "Relevance Score|number",
"numberValue": "={{ $json[\"Relevance Score\"] }}"
},
{
"key": "Skill Match|number",
"numberValue": "={{ $json[\"Skill Match Score\"] }}"
},
{
"key": "Joining Timeline|rich_text",
"textContent": "={{ $json[\"Joining Timeline\"] }}"
},
{
"key": "Summary|rich_text",
"textContent": "={{ $json.Summary }}"
},
{
"key": "Status|select",
"selectValue": "={{ $json.Status }}"
},
{
"key": "Description|rich_text",
"textContent": "={{ $json['Job Description'] }}"
},
{
"key": "Language|multi_select",
"multiSelectValue": "={{ $json.Language }}"
},
{
"key": "Posted On|date",
"date": "={{ $json[\"Posted On\"] }}"
}
]
}
},
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "ae86fa9b-9ed6-460e-bc27-d12cbfdd03b8",
"name": "Format Data for Notion",
"type": "n8n-nodes-base.code",
"position": [
3504,
-160
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "let text = $input.item.json.text || \"\";\n\n// Remove markdown JSON codeblocks if present\ntext = text.replace(/```json/gi, '').replace(/```/g, '').trim();\n\nlet parsedData = {};\ntry {\n parsedData = JSON.parse(text);\n} catch (e) {\n parsedData = {\n \"Job ID\": $input.item.json.job_id || (\"ERROR-\" + Math.floor(Math.random()*1000)),\n \"Job Title\": \"Error parsing output\",\n \"Company\": \"Error\",\n \"URL\": \"\",\n \"Employment Type\": \"N/A\",\n \"Is Remote\": \"N/A\",\n \"Location\": \"N/A\",\n \"Salary\": \"N/A\",\n \"Relevance Score\": 0,\n \"Skill Match Score\": 0,\n \"Joining Timeline\": \"N/A\",\n \"Summary\": \"Failed to parse Gemini output: \" + e.message,\n \"Status\": \"Not Applied\",\n \"Job Description\": \"N/A\",\n \"Language\": [],\n \"Apply Options\": [],\n \"Posted On\": \"\"\n };\n}\n\n// Map Job Id back to Job ID if Notion requires exact casing\nif (parsedData[\"Job Id\"] && !parsedData[\"Job ID\"]) {\n parsedData[\"Job ID\"] = parsedData[\"Job Id\"];\n}\n\n// Helper to convert to array\nfunction toArray(val) {\n if (Array.isArray(val)) return val.map(v => typeof v === 'string' ? v : JSON.stringify(v));\n if (typeof val === 'string') {\n if (val.toUpperCase() === \"N/A\" || val.trim() === \"\") return [];\n return val.split(',').map(s => s.trim()).filter(s => s);\n }\n return [];\n}\n\n// Clean up Multiselect fields\nparsedData[\"Apply Options\"] = toArray(parsedData[\"Apply Options\"]);\nparsedData[\"Language\"] = toArray(parsedData[\"Language\"]);\n\nif (parsedData[\"Apply Options\"].length === 1 && parsedData[\"Apply Options\"][0].toUpperCase() === \"N/A\") {\n parsedData[\"Apply Options\"] = [];\n}\nif (parsedData[\"Language\"].length === 1 && parsedData[\"Language\"][0].toUpperCase() === \"N/A\") {\n parsedData[\"Language\"] = [];\n}\n\n// Clean up Select fields to strictly match Notion options\nlet isRemote = parsedData[\"Is Remote\"];\nif (typeof isRemote === 'string') {\n let irUpper = isRemote.toUpperCase();\n if (irUpper.includes(\"YES\") || irUpper.includes(\"TRUE\")) parsedData[\"Is Remote\"] = \"Yes\";\n else if (irUpper.includes(\"HYBRID\")) parsedData[\"Is Remote\"] = \"Hybrid\";\n else if (irUpper.includes(\"NO\") || irUpper.includes(\"FALSE\")) parsedData[\"Is Remote\"] = \"No\";\n else parsedData[\"Is Remote\"] = \"N/A\";\n} else {\n parsedData[\"Is Remote\"] = \"N/A\";\n}\n\nlet empType = parsedData[\"Employment Type\"];\nif (typeof empType === 'string') {\n let etUpper = empType.toUpperCase();\n if (etUpper.includes(\"FULL\") && etUpper.includes(\"TIME\")) parsedData[\"Employment Type\"] = \"Full-Time\";\n else if (etUpper.includes(\"PART\") && etUpper.includes(\"TIME\")) parsedData[\"Employment Type\"] = \"Part-Time\";\n else parsedData[\"Employment Type\"] = \"N/A\";\n} else {\n parsedData[\"Employment Type\"] = \"N/A\";\n}\n\nparsedData[\"Status\"] = \"Not Applied\";\n\nreturn parsedData;\n"
},
"typeVersion": 2
},
{
"id": "c6bcb7ed-3755-4fea-9fd5-5f54cc722905",
"name": "Fetch Notion Database Info",
"type": "n8n-nodes-base.notion",
"position": [
-288,
-384
],
"parameters": {
"resource": "database",
"databaseId": {
"__rl": true,
"mode": "list",
"value": "32ad581a-fa24-8025-931e-f0d11d4bdea8",
"cachedResultUrl": "https://www.notion.so/32ad581afa248025931ef0d11d4bdea8",
"cachedResultName": "Job Database"
}
},
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "2507281b-9e0b-4c3c-bc28-e51d91fe2769",
"name": "Retrieve Existing Job Listings",
"type": "n8n-nodes-base.notion",
"position": [
32,
-384
],
"parameters": {
"options": {},
"resource": "databasePage",
"operation": "getAll",
"returnAll": true,
"databaseId": {
"__rl": true,
"mode": "list",
"value": "32ad581a-fa24-8025-931e-f0d11d4bdea8",
"cachedResultUrl": "https://www.notion.so/32ad581afa248025931ef0d11d4bdea8",
"cachedResultName": "Job Database"
}
},
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "fea7f85d-a43f-49fa-9e72-105f6e245eb5",
"name": "Exclude Duplicate Applications",
"type": "n8n-nodes-base.filter",
"position": [
3136,
-400
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9a89ee99-d29f-476e-90ff-598010930388",
"operator": {
"type": "string",
"operation": "notContains"
},
"leftValue": "={{ $('Retrieve Existing Job Listings').item.json.property_job_id }}",
"rightValue": "={{ $json.job_id }}"
}
]
}
},
"typeVersion": 2.3
},
{
"id": "d670d5d9-9e44-400d-ae66-843650fb43bc",
"name": "Filter Recent Job Postings",
"type": "n8n-nodes-base.filter",
"position": [
1984,
-384
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e8007d62-8e64-4893-8654-0ddb33f7f414",
"operator": {
"type": "dateTime",
"operation": "after"
},
"leftValue": "={{ $json.data[0].job_posted_at_datetime_utc }}",
"rightValue": "={{ $now.minus({ days: 30 }).toISO() }}"
}
]
}
},
"typeVersion": 2.3
},
{
"id": "sticky-setup-notion-db1-1777907876820662",
"name": "Setup Notion DB1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-384,
-416
],
"parameters": {
"color": "#C96464",
"width": 280,
"height": 360,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nUpdate your Notion Credentials and Database ID:\n1. Open this node.\n2. Select your Notion Credential.\n3. Enter your Database ID."
},
"typeVersion": 1
},
{
"id": "sticky-setup-resume-path-1777907876820105",
"name": "Setup Resume Path",
"type": "n8n-nodes-base.stickyNote",
"position": [
528,
-400
],
"parameters": {
"color": "#C96464",
"width": 256,
"height": 344,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nUpdate the path for the Resume:\n1. Open this node.\n2. Update the path under File(s) Selector."
},
"typeVersion": 1
},
{
"id": "sticky-setup-google-ai-1-1777907876820658",
"name": "Setup Google AI 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
3056,
-192
],
"parameters": {
"color": "#C96464",
"width": 288,
"height": 376,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nUpdate your Google Credentials:\n1. In Google AI Studio, create your API Key.\n2. Open this node and update your Credentials."
},
"typeVersion": 1
},
{
"id": "sticky-setup-rapidapi-177790787682029",
"name": "Setup RapidAPI",
"type": "n8n-nodes-base.stickyNote",
"position": [
1616,
-400
],
"parameters": {
"color": "#C96464",
"height": 344,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nUpdate your RapidAPI Key:\n1. Open this node.\n2. Update the Header parameter x-rapidapi-key."
},
"typeVersion": 1
},
{
"id": "sticky-setup-google-ai-2-1777907876820784",
"name": "Setup Google AI 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1072,
-400
],
"parameters": {
"color": "#C96464",
"width": 256,
"height": 344,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nUpdate your Google Credentials:\n1. In Google AI Studio, create your API Key.\n2. Open this node and update your Credentials."
},
"typeVersion": 1
},
{
"id": "sticky-setup-notion-db2-177790787682070",
"name": "Setup Notion DB2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-64,
-416
],
"parameters": {
"color": "#C96464",
"width": 280,
"height": 360,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nUpdate your Notion Credentials and Database ID:\n1. Open this node.\n2. Select your Notion Credential.\n3. Enter your Database ID."
},
"typeVersion": 1
},
{
"id": "766fe1e2-22c9-405b-8c6a-2fa4880cfaa4",
"name": "Job Discovery1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1536,
-512
],
"parameters": {
"color": 0,
"width": 856,
"height": 510,
"content": "### 3. DISCOVERY\nUsing the JSearch API, collect the relevant and latest Job Postings"
},
"typeVersion": 1
},
{
"id": "e3bcb3c5-816d-41ad-bb53-2d07e13ddbe1",
"name": "Extract Current Job Title",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
1152,
-384
],
"parameters": {
"text": "=Analyse the resume text: {{ $json.text }}.\n\nIdentify the user's current job title.\nOutput ONLY a single search string.",
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemma-4-31b-it",
"cachedResultName": "models/gemma-4-31b-it"
},
"options": {},
"resource": "document"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
}
],
"active": false,
"shared": [
{
"role": "workflow:owner",
"project": {
"id": "gWkPS3Yo6L03U87I",
"icon": null,
"name": "Navneet Singh Arora <navneetsingh790@gmail.com>",
"type": "personal",
"createdAt": "2026-04-10T15:01:49.389Z",
"creatorId": "fd932e6f-0271-41b5-9363-6f2454ac13dc",
"updatedAt": "2026-04-10T15:07:46.566Z",
"description": null
},
"createdAt": "2026-04-10T15:14:30.931Z",
"projectId": "gWkPS3Yo6L03U87I",
"updatedAt": "2026-04-10T15:14:30.931Z",
"workflowId": "job-search-workflow"
}
],
"settings": {
"binaryMode": "separate",
"callerPolicy": "workflowsFromSameOwner",
"timeSavedMode": "fixed",
"availableInMCP": true,
"executionOrder": "v1"
},
"createdAt": "2026-04-10T15:14:30.931Z",
"updatedAt": "2026-05-04T17:55:25.353Z",
"versionId": "22626e88-ad6a-4e2b-ac5d-3a178ba404bd",
"isArchived": false,
"staticData": null,
"connections": {
"Start Job Trigger": {
"main": [
[
{
"node": "Fetch Notion Database Info",
"type": "main",
"index": 0
}
]
]
},
"Parse Search Results": {
"main": [
[
{
"node": "Process Each Job Listing",
"type": "main",
"index": 0
}
]
]
},
"Extract Text from PDF": {
"main": [
[
{
"node": "Extract Current Job Title",
"type": "main",
"index": 0
}
]
]
},
"Read Candidate Resume": {
"main": [
[
{
"node": "Extract Text from PDF",
"type": "main",
"index": 0
}
]
]
},
"Evaluate Job Relevance": {
"main": [
[
{
"node": "Format Data for Notion",
"type": "main",
"index": 0
}
]
]
},
"Format Data for Notion": {
"main": [
[
{
"node": "Add Record to Notion Database",
"type": "main",
"index": 0
}
]
]
},
"Rate Limit API Requests": {
"main": [
[
{
"node": "Evaluate Job Relevance",
"type": "main",
"index": 0
}
]
]
},
"Process Each Job Listing": {
"main": [
[],
[
{
"node": "Exclude Duplicate Applications",
"type": "main",
"index": 0
}
]
]
},
"Extract Current Job Title": {
"main": [
[
{
"node": "Search for Jobs via RapidAPI",
"type": "main",
"index": 0
}
]
]
},
"Fetch Notion Database Info": {
"main": [
[
{
"node": "Retrieve Existing Job Listings",
"type": "main",
"index": 0
}
]
]
},
"Filter Recent Job Postings": {
"main": [
[
{
"node": "Parse Search Results",
"type": "main",
"index": 0
}
]
]
},
"Search for Jobs via RapidAPI": {
"main": [
[
{
"node": "Filter Recent Job Postings",
"type": "main",
"index": 0
}
]
]
},
"Add Record to Notion Database": {
"main": [
[
{
"node": "Process Each Job Listing",
"type": "main",
"index": 0
}
]
]
},
"Exclude Duplicate Applications": {
"main": [
[
{
"node": "Rate Limit API Requests",
"type": "main",
"index": 0
}
]
]
},
"Retrieve Existing Job Listings": {
"main": [
[
{
"node": "Read Candidate Resume",
"type": "main",
"index": 0
}
]
]
}
},
"description": "Automated job search and AI-powered relevance evaluation workflow with Notion integration.",
"triggerCount": 0,
"versionCounter": 300,
"activeVersionId": null,
"versionMetadata": {
"name": null,
"description": null
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googlePalmApinotionApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automated Job Search & AI Relevance Evaluator
Source: https://n8n.io/workflows/15480/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Automated Job Search & AI Relevance Evaluator
Account manager-v1. Uses whatsAppTrigger, googleGemini, whatsApp, httpRequest. Event-driven trigger; 22 nodes.
This workflow helps you repurpose your YouTube videos across multiple social media platforms with zero manual effort. It’s designed for creators, businesses, and marketers who want to maximize reach w
Sales Lead Qualifier. Uses telegramTrigger, googleSheets, telegram, googleGemini. Event-driven trigger; 41 nodes.
This workflow empowers marketing teams, agencies and solopreneurs to instantly generate on-brand, platform-optimized social media ads — without designers or complex setup. Running performance marketin