This workflow corresponds to n8n.io template #9176 — we link there as the canonical source.
This workflow follows the Google Drive → Googlegemini 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": "aijMWyEGzRRMqK8R",
"name": "Smart-Job-Hunter-Pro",
"tags": [
{
"id": "uZGKuGp0HPigoQN0",
"name": "Job Automation",
"createdAt": "2025-09-16T16:27:19.345Z",
"updatedAt": "2025-09-16T16:27:19.345Z"
},
{
"id": "I944JS1g3DKUUrRN",
"name": "whatjobs",
"createdAt": "2025-10-02T05:51:20.244Z",
"updatedAt": "2025-10-02T05:51:20.244Z"
},
{
"id": "N6ZePaKoG35LrNYs",
"name": "jobstreet",
"createdAt": "2025-10-02T05:50:40.170Z",
"updatedAt": "2025-10-02T05:50:40.170Z"
},
{
"id": "bwPZyR1jfzNycBxN",
"name": "jooble",
"createdAt": "2025-10-02T05:50:29.288Z",
"updatedAt": "2025-10-02T05:51:06.342Z"
},
{
"id": "MBocsXaRMeMaraXW",
"name": "indeed",
"createdAt": "2025-10-02T05:50:55.968Z",
"updatedAt": "2025-10-02T05:50:55.968Z"
},
{
"id": "SX9X9GBtWEuZd1uA",
"name": "telegram",
"createdAt": "2025-10-02T05:52:39.185Z",
"updatedAt": "2025-10-02T05:52:39.185Z"
},
{
"id": "QhSvOnrLX1QXdewR",
"name": "notion",
"createdAt": "2025-10-02T05:52:34.117Z",
"updatedAt": "2025-10-02T05:52:34.117Z"
},
{
"id": "FLmwNNktLWgGhLC1",
"name": "gemini",
"createdAt": "2025-10-02T05:52:25.584Z",
"updatedAt": "2025-10-02T05:52:25.584Z"
},
{
"id": "mqK996ihTFwyMENN",
"name": "drive",
"createdAt": "2025-10-02T05:52:48.075Z",
"updatedAt": "2025-10-02T05:52:48.075Z"
}
],
"nodes": [
{
"id": "0969c309-6b58-490b-a5c2-2c38dedbf197",
"name": "Schedule Job Search",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-464,
272
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 8
}
]
}
},
"typeVersion": 1.2
},
{
"id": "dbf7791c-8f35-4254-a4af-a3485cd9e671",
"name": "Set Job Variables",
"type": "n8n-nodes-base.set",
"position": [
-272,
272
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "9549d016-6938-4682-b873-f7f55926c255",
"name": "job_keywords",
"type": "string",
"value": "software developer, web developer, full stack, javascript, react, node.js"
},
{
"id": "7549d016-6938-4682-b873-f7f55926c256",
"name": "auto_apply_threshold",
"type": "number",
"value": 75
},
{
"id": "8549d016-6938-4682-b873-f7f55926c257",
"name": "location",
"type": "string",
"value": "Indonesia"
},
{
"id": "9549d016-6938-4682-b873-f7f55926c258",
"name": "radius",
"type": "string",
"value": "50"
},
{
"id": "a549d016-6938-4682-b873-f7f55926c259",
"name": "max_results_per_source",
"type": "string",
"value": "10"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "c9ca997b-0a50-4f48-8e27-eaf3c5a681fc",
"name": "Jooble Job Search",
"type": "n8n-nodes-base.httpRequest",
"position": [
0,
0
],
"parameters": {
"url": "https://jooble.org/api/{{PLACEHOLDER_JOOBLE_API_KEY}}",
"method": "POST",
"options": {
"timeout": 15000
},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "keywords",
"value": "={{ $node['Set Job Variables'].json.job_keywords }}"
},
{
"name": "location",
"value": "={{ $node['Set Job Variables'].json.location }}"
},
{
"name": "radius",
"value": "={{ $node['Set Job Variables'].json.radius }}"
},
{
"name": "page",
"value": "1"
},
{
"name": "ResultOnPage",
"value": "={{ $node['Set Job Variables'].json.max_results_per_source }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "32615148-d624-4fd4-9dae-dc82c58cb853",
"name": "JobStreet Search",
"type": "n8n-nodes-base.httpRequest",
"position": [
0,
240
],
"parameters": {
"url": "https://www.jobstreet.co.id/api/chalice-search/v4/search",
"options": {
"timeout": 15000
},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "keywords",
"value": "={{ $node['Set Job Variables'].json.job_keywords }}"
},
{
"name": "locations",
"value": "1000"
},
{
"name": "jobsPerPage",
"value": "={{ $node['Set Job Variables'].json.max_results_per_source }}"
},
{
"name": "pageNumber",
"value": "1"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
},
{
"name": "Accept",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "3a33c97e-5124-4f7e-8333-e94f936e327b",
"name": "Indeed Job Search",
"type": "n8n-nodes-base.httpRequest",
"position": [
0,
464
],
"parameters": {
"url": "https://id.indeed.com/jobs",
"options": {
"timeout": 15000
},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "={{ $node['Set Job Variables'].json.job_keywords }}"
},
{
"name": "l",
"value": "={{ $node['Set Job Variables'].json.location }}"
},
{
"name": "limit",
"value": "={{ $node['Set Job Variables'].json.max_results_per_source }}"
},
{
"name": "fromage",
"value": "7"
},
{
"name": "radius",
"value": "={{ $node['Set Job Variables'].json.radius }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
},
{
"name": "Accept",
"value": "text/html,application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "723d571c-1af2-43f2-9962-6069fd4f9709",
"name": "WhatJobs Search",
"type": "n8n-nodes-base.httpRequest",
"position": [
0,
704
],
"parameters": {
"url": "https://api.whatjobs.com/api/v1/jobs/search",
"options": {
"timeout": 15000
},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "keywords",
"value": "={{ $node['Set Job Variables'].json.job_keywords }}"
},
{
"name": "location",
"value": "={{ $node['Set Job Variables'].json.location }}"
},
{
"name": "limit",
"value": "={{ $node['Set Job Variables'].json.max_results_per_source }}"
},
{
"name": "radius",
"value": "={{ $node['Set Job Variables'].json.radius }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "x-api-token",
"value": "{{PLACEHOLDER_WHATJOBS_API_TOKEN}}"
},
{
"name": "Accept",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "d8ab2b7e-f220-4b38-a011-ac2d9f4c8595",
"name": "Merge Job Results",
"type": "n8n-nodes-base.merge",
"position": [
320,
320
],
"parameters": {},
"typeVersion": 3
},
{
"id": "1eb25afd-7129-4f7a-86ba-de5ecc8d611f",
"name": "Normalize Job Data",
"type": "n8n-nodes-base.code",
"position": [
512,
320
],
"parameters": {
"jsCode": "// Enhanced job data validation and normalization\nconst jobs = items.map((item, index) => {\n const jobData = item.json;\n\n // Handle different API response structures\n let normalizedJob = {};\n\n // Jooble API structure\n if (jobData.jobs && Array.isArray(jobData.jobs)) {\n return jobData.jobs.map(job => ({\n json: {\n id: job.id || `jooble_${index}_${Date.now()}`,\n title: job.title || 'Untitled Position',\n company: job.company || 'Unknown Company', \n location: job.location || 'Location not specified',\n description: job.snippet || job.description || 'No description available',\n url: job.link || '#',\n posted_date: job.updated || new Date().toISOString(),\n source: 'Jooble',\n salary: job.salary || 'Not specified',\n employment_type: job.type || 'Full-time',\n validation_score: 100\n }\n }));\n }\n\n // JobStreet API structure \n if (jobData.data && jobData.data.jobs) {\n return jobData.data.jobs.map(job => ({\n json: {\n id: job.id || `jobstreet_${index}_${Date.now()}`,\n title: job.jobTitle || job.title || 'Untitled Position',\n company: job.company?.name || job.company || 'Unknown Company',\n location: job.jobLocation?.displayName || job.location || 'Location not specified', \n description: job.jobSummary || job.description || 'No description available',\n url: job.jobDetailsUrl || job.url || '#',\n posted_date: job.postedAt || new Date().toISOString(),\n source: 'JobStreet',\n salary: job.salary?.displayText || 'Not specified',\n employment_type: job.workType || 'Full-time',\n validation_score: 100\n }\n }));\n }\n\n // Indeed/WhatJobs structure (HTML or different API)\n normalizedJob = {\n id: jobData.id || `job_${index}_${Date.now()}`,\n title: jobData.title || jobData.jobTitle || jobData.position || 'Untitled Position',\n company: jobData.company?.name || jobData.company || jobData.employer || 'Unknown Company',\n location: jobData.location?.displayName || jobData.location || jobData.city || 'Location not specified',\n description: jobData.description || jobData.summary || jobData.snippet || 'No description available',\n url: jobData.url || jobData.link || jobData.application_url || '#',\n posted_date: jobData.postedAt || jobData.datePosted || new Date().toISOString(),\n source: jobData.source || 'API',\n salary: jobData.salary || jobData.salaryRange || 'Not specified',\n employment_type: jobData.employmentType || jobData.jobType || 'Full-time',\n requirements: jobData.requirements || jobData.skills || [],\n benefits: jobData.benefits || [],\n raw_data: jobData\n };\n\n // Calculate validation score\n normalizedJob.validation_score = 0;\n if (normalizedJob.title && normalizedJob.title !== 'Untitled Position') normalizedJob.validation_score += 25;\n if (normalizedJob.company && normalizedJob.company !== 'Unknown Company') normalizedJob.validation_score += 25;\n if (normalizedJob.description && normalizedJob.description !== 'No description available') normalizedJob.validation_score += 25;\n if (normalizedJob.url && normalizedJob.url !== '#') normalizedJob.validation_score += 25;\n\n return { json: normalizedJob };\n}).flat();\n\n// Filter valid jobs and ensure we have an array\nconst validJobs = Array.isArray(jobs) ? jobs.filter(job => \n job.json && job.json.validation_score >= 50\n) : [];\n\nreturn validJobs.length > 0 ? validJobs : [{ \n json: { \n error: 'No valid jobs found', \n total_processed: items.length,\n message: 'Check API responses and data structure'\n } \n}];"
},
"typeVersion": 2
},
{
"id": "97052b3c-864a-426e-a8d1-6e7e2551b0e8",
"name": "AI Job Analysis",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
672,
320
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gemini-1.5-pro"
},
"options": {
"temperature": 0.3
},
"messages": {
"values": [
{
"content": "Analyze this job posting and provide a compatibility score (0-100) and generate a tailored cover letter. Job Details:\\n\\nTitle: {{ $json.title }}\\nCompany: {{ $json.company }}\\nLocation: {{ $json.location }}\\nDescription: {{ $json.description }}\\n\\nMy Skills: software development, JavaScript, React, Node.js, n8n automation, API integration, full-stack development\\n\\nPlease respond in JSON format with:\\n{\\n \\\"compatibility_score\\\": number,\\n \\\"reasons\\\": [\\\"reason1\\\", \\\"reason2\\\"],\\n \\\"cover_letter\\\": \\\"personalized cover letter text\\\",\\n \\\"key_requirements_match\\\": [\\\"matched requirements\\\"],\\n \\\"missing_requirements\\\": [\\\"requirements I don't meet\\\"]\\n}"
}
]
}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "1eaad4af-e542-4095-9e8e-6b3b25bf43fe",
"name": "Auto Apply Filter",
"type": "n8n-nodes-base.if",
"position": [
1024,
320
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "ff2062e7-8d7f-4da5-bbed-4ec68294661c",
"operator": {
"name": "filter.operator.gte",
"type": "number",
"operation": "gte"
},
"leftValue": "={{ JSON.parse($json.response || '{}').compatibility_score || 0 }}",
"rightValue": "={{ $node['Set Job Variables'].json.auto_apply_threshold }}"
}
]
}
},
"typeVersion": 2
},
{
"id": "2504a559-472c-4ec7-b355-9375eb9128a7",
"name": "Add to Notion Database",
"type": "n8n-nodes-base.notion",
"position": [
912,
32
],
"parameters": {
"title": "={{ $json.title || 'Job Application' }}",
"options": {},
"resource": "databasePage",
"databaseId": "{{PLACEHOLDER_NOTION_DATABASE_ID}}",
"propertiesUi": {
"propertyValues": [
{
"key": "Company"
},
{
"key": "Status",
"selectValue": "Applied"
},
{
"key": "Match Score",
"numberValue": "={{ JSON.parse($json.response || '{}').compatibility_score || 0 }}"
},
{
"key": "Applied Date"
},
{
"key": "Job URL",
"urlValue": "={{ $json.url || '#' }}"
},
{
"key": "Location"
},
{
"key": "Source",
"selectValue": "={{ $json.source || 'API' }}"
}
]
}
},
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "7a37b79a-7eff-4f76-b3fb-f68cd93c228f",
"name": "Send Telegram Alert",
"type": "n8n-nodes-base.telegram",
"position": [
1280,
32
],
"parameters": {
"text": "\ud83c\udfaf **New Job Match Found!**\\n\\n**Position:** {{ $json.title || 'Unknown Position' }}\\n**Company:** {{ $json.company || 'Unknown Company' }}\\n**Match Score:** {{ JSON.parse($json.response || '{}').compatibility_score || 0 }}%\\n**Location:** {{ $json.location || 'Not specified' }}\\n**Validation Score:** {{ $json.validation_score || 0 }}%\\n\\n**AI Analysis Reasons:**\\n{{ (JSON.parse($json.response || '{}').reasons || []).join('\\n\u2022 ') }}\\n\\n**Key Requirements Match:**\\n{{ (JSON.parse($json.response || '{}').key_requirements_match || []).join('\\n\u2022 ') }}\\n\\n\ud83d\udd17 **Apply Here:** {{ $json.url || 'URL not available' }}\\n\\n\ud83d\udcc4 **Cover letter saved to Google Drive**",
"chatId": "{{PLACEHOLDER_TELEGRAM_CHAT_ID}}",
"additionalFields": {
"parse_mode": "Markdown",
"disable_web_page_preview": true
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "cf2cd610-0044-4e60-be12-a1d5ea07ea59",
"name": "Save Cover Letter to Drive",
"type": "n8n-nodes-base.googleDrive",
"position": [
1280,
320
],
"parameters": {
"name": "={{ ($json.company || 'Company').replace(/[^a-zA-Z0-9]/g, '_') }}_{{ ($json.title || 'Job').replace(/[^a-zA-Z0-9]/g, '_') }}_{{ $now.toISOString().split('T')[0] }}.txt",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": "{{PLACEHOLDER_GOOGLE_DRIVE_FOLDER_ID}}"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "55cd809b-7a5e-4aa6-bac8-29056be7a4ae",
"name": "Error Handler",
"type": "n8n-nodes-base.set",
"position": [
352,
768
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "error-log-id",
"name": "error_occurred",
"type": "boolean",
"value": "true"
},
{
"id": "error-message-id",
"name": "error_message",
"type": "string",
"value": "={{ $json.error?.message || 'Unknown error occurred' }}"
},
{
"id": "error-timestamp-id",
"name": "error_timestamp",
"type": "string",
"value": "={{ new Date().toISOString() }}"
},
{
"id": "error-node-id",
"name": "failed_node",
"type": "string",
"value": "={{ $json.node || 'Unknown node' }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "95414b8a-8ab9-4f2b-8098-afe26aa0ef07",
"name": "Send Error Notification",
"type": "n8n-nodes-base.telegram",
"position": [
624,
768
],
"parameters": {
"text": "\u26a0\ufe0f **Workflow Error Alert**\\n\\n**Error occurred in:** {{ $json.failed_node || 'Unknown node' }}\\n**Timestamp:** {{ $json.error_timestamp }}\\n**Message:** {{ $json.error_message || 'No error message available' }}\\n\\n**Action:** Please check the workflow configuration and API credentials.",
"chatId": "{{PLACEHOLDER_TELEGRAM_CHAT_ID}}",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "f02783ce-1ebb-483b-9bc8-f848ae3c075a",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1312,
48
],
"parameters": {
"width": 784,
"height": 1856,
"content": "## \ud83d\udccb Complete Installation & Usage\n\n### **Pre-Requirements**\nBefore importing this workflow, ensure you have:\n- n8n instance (self-hosted or cloud)\n- Admin access to configure credentials\n- Valid API keys for job portals\n- Integration accounts (Google, Notion, Telegram)\n\n### **Step 1: Import Workflow**\n1. **Download the Automated-Job-Finder.json file** to your local computer\n2. **Open your n8n instance** (https://your-n8n-domain.com)\n3. **Navigate to Workflows** \u2192 Click **\"Import from file\"**\n4. **Select the JSON file** and click **\"Import\"**\n5. **Rename the workflow** to your preferred name (e.g., \"Smart-Job-Hunter-Pro\")\n\n### **Step 2: Configure Required API Credentials**\n\n#### **Jooble API Setup:**\n- Visit [Jooble Partner API](https://jooble.org/api/about)\n- Register for free API access and get your API key\n- Replace `{{PLACEHOLDER_JOOBLE_API_KEY}}` with your actual key\n\n#### **WhatJobs API Setup:**\n- Visit [WhatJobs API Documentation](https://developer.whatjobs.com)\n- Create developer account and generate API token\n- Replace `{{PLACEHOLDER_WHATJOBS_API_TOKEN}}` with your token\n\n#### **Google Gemini AI Setup:**\n- Go to [Google AI Studio](https://makersuite.google.com/app/apikey)\n- Create new API key for job analysis\n- In n8n: Add \"Google PaLM API\" credential with your key\n\n#### **Notion Database Setup:**\n1. Create Notion database with properties:\n - **Title**: Text\n - **Company**: Text \n - **Status**: Select (Applied, Interview, Rejected, Offer)\n - **Match Score**: Number\n - **Applied Date**: Date\n - **Job URL**: URL\n - **Location**: Text\n - **Source**: Select (Jooble, JobStreet, Indeed, WhatJobs)\n\n2. Get database ID from URL and replace `{{PLACEHOLDER_NOTION_DATABASE_ID}}`\n3. Create Notion integration and share database access\n\n#### **Telegram Bot Setup:**\n- Message @BotFather to create new bot\n- Get bot token and chat ID\n- Replace `{{PLACEHOLDER_TELEGRAM_CHAT_ID}}` with your chat ID\n- Configure Telegram credential in n8n\n\n#### **Google Drive Setup:**\n- Enable Google Drive API in Google Cloud Console\n- Create \"Job Applications\" folder\n- Get folder ID and replace `{{PLACEHOLDER_GOOGLE_DRIVE_FOLDER_ID}}`\n- Setup OAuth2 credentials in n8n\n\n### **Step 3: Customize Job Search Parameters**\n\nEdit the \"Set Job Variables\" node with your preferences:\n\n```javascript\n{\n \"job_keywords\": \"your target roles and skills\",\n \"auto_apply_threshold\": 75, // AI compatibility score threshold\n \"location\": \"Your Country/City\", \n \"radius\": \"50\", // Search radius in km\n \"max_results_per_source\": \"10\" // Jobs per API source\n}\n```\n\n### **Step 4: Test and Activate**\n\n1. **Manual Test**: Click \"Execute Workflow\" to test all integrations\n2. **Verify Results**: Check Notion database, Telegram notifications, and Google Drive\n3. **Schedule Configuration**: Default runs every 8 hours (customizable)\n4. **Activate Workflow**: Toggle to \"Active\" status for automated execution\n\n\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "79234eec-13a8-47bc-b30e-fe70d96c6d99",
"connections": {
"Error Handler": {
"main": [
[
{
"node": "Send Error Notification",
"type": "main",
"index": 0
}
]
]
},
"AI Job Analysis": {
"main": [
[
{
"node": "Auto Apply Filter",
"type": "main",
"index": 0
},
{
"node": "Error Handler",
"type": "main",
"index": 0
}
]
]
},
"WhatJobs Search": {
"main": [
[
{
"node": "Error Handler",
"type": "main",
"index": 0
}
]
]
},
"JobStreet Search": {
"main": [
[
{
"node": "Merge Job Results",
"type": "main",
"index": 1
},
{
"node": "Error Handler",
"type": "main",
"index": 0
}
]
]
},
"Auto Apply Filter": {
"main": [
[
{
"node": "Add to Notion Database",
"type": "main",
"index": 0
}
],
[
{
"node": "Error Handler",
"type": "main",
"index": 0
}
]
]
},
"Indeed Job Search": {
"main": [
[
{
"node": "Error Handler",
"type": "main",
"index": 0
}
]
]
},
"Jooble Job Search": {
"main": [
[
{
"node": "Merge Job Results",
"type": "main",
"index": 0
},
{
"node": "Error Handler",
"type": "main",
"index": 0
}
]
]
},
"Merge Job Results": {
"main": [
[
{
"node": "Normalize Job Data",
"type": "main",
"index": 0
}
]
]
},
"Set Job Variables": {
"main": [
[
{
"node": "Jooble Job Search",
"type": "main",
"index": 0
},
{
"node": "JobStreet Search",
"type": "main",
"index": 0
},
{
"node": "Indeed Job Search",
"type": "main",
"index": 0
},
{
"node": "WhatJobs Search",
"type": "main",
"index": 0
}
]
]
},
"Normalize Job Data": {
"main": [
[
{
"node": "AI Job Analysis",
"type": "main",
"index": 0
}
]
]
},
"Schedule Job Search": {
"main": [
[
{
"node": "Set Job Variables",
"type": "main",
"index": 0
}
]
]
},
"Add to Notion Database": {
"main": [
[
{
"node": "Send Telegram Alert",
"type": "main",
"index": 0
},
{
"node": "Save Cover Letter to Drive",
"type": "main",
"index": 0
},
{
"node": "Error Handler",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
googleDriveOAuth2ApigooglePalmApinotionApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Transform your job search with this comprehensive n8n workflow that automatically searches, analyzes, and applies to relevant positions across multiple job platforms. Perfect for developers, engineers, and tech professionals looking to streamline their job hunting process. 🔄…
Source: https://n8n.io/workflows/9176/ — 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.
This workflow creates a daily “n8n News Radar” briefing: Pulls the latest n8n ecosystem updates from Blog, Community, GitHub Releases, and Reddit. Filters to the last 24 hours + keyword relevance. Use
TGM — Topic Engine v3 (Auto-Recyclage + fal.ai + Google Drive). Uses httpRequest, googleGemini, googleDrive, telegram. Scheduled trigger; 15 nodes.
AI Institutional Stock Valuation Engine with Risk Scoring & Scenario Targets
Overview This is a production-grade, fully automated stock analysis system built entirely in n8n. It combines institutional-level financial analysis, dual AI model consensus, and a self-improving back
A professional AI equity analysis automation built on n8n that transforms structured financial data and real-time news into disciplined, risk-adjusted price targets and actionable BUY/HOLD/SELL signal