Agente Asistente de Búsqueda de Empleo
Este es unMiscellaneous, Multimodal AIflujo de automatización del dominio deautomatización que contiene 16 nodos.Utiliza principalmente nodos como Set, Code, Gmail, FormTrigger, Agent. Buscar el trabajo ideal con Gemini y Google Jobs, y generar cartas de presentación personalizadas
- •Cuenta de Google y credenciales de API de Gmail
- •Clave de API de Google Gemini
Nodos utilizados (16)
Categoría
{
"id": "jDUtQ2fgs8EOqU95",
"meta": {
"instanceId": "c2650793f644091dc80fb900fe63448ad1f4b774008de9608064d67294f8307c",
"templateCredsSetupCompleted": true
},
"name": "JOB Hunter Agent",
"tags": [],
"nodes": [
{
"id": "c6d0bc1b-bd78-4eea-84ed-6bed5c999d45",
"name": "Nota adhesiva - Cómo funciona",
"type": "n8n-nodes-base.stickyNote",
"position": [
432,
-288
],
"parameters": {
"color": 5,
"width": 500,
"height": 864,
"content": "## 🎯 SMART JOB HUNTER + COVER LETTER GENERATOR\n\n### 🚀 What This Workflow Does:\n\n1. **User Submission**\n - User upload CV (PDF) + preferences (location, job type, salary, etc.)\n - Triggered by Form node\n\n2. **Extract CV**\n - PDF text extracted\n - Stored in `cvData`\n\n3. **Prepare Data**\n - Collects all form fields (location, work setting, job type, salary, email)\n - Normalized into JSON variables\n\n4. **Job Hunter Agent**\n - Uses SerpAPI + Gemini LLM\n - System prompt forces **ONLY 1 job result**\n - Returns structured JSON with cover letter\n\n5. **Parse Agent Output**\n - Cleans JSON (removes ```json fences)\n - Ensures valid JSON for downstream\n\n6. **Generate HTML Email**\n - Builds clean email template\n - Inserts candidate profile + job match + cover letter + application tips\n\n7. **Send via Gmail**\n - Sends final email to user’s address\n - Subject: *Your Job MATCH!*\n"
},
"typeVersion": 1
},
{
"id": "ef02ff8f-9fa8-4f8a-a66f-d81003fe3915",
"name": "Nota adhesiva - Guía de configuración",
"type": "n8n-nodes-base.stickyNote",
"position": [
-384,
48
],
"parameters": {
"color": 4,
"width": 380,
"height": 528,
"content": "## ⚙️ SETUP GUIDE (Updated)\n\n### 1. Google Gemini (Required)\n* Go to [Google AI Studio](https://aistudio.google.com/)\n* Create Gemini API key\n* Add it to n8n credentials (`Google Palm / Gemini`)\n* Model used: **Gemini 2.5 Pro**\n\n### 2. SerpAPI (Required)\n* Go to [SerpAPI Dashboard](https://serpapi.com/)\n* Create API key\n* Add it to n8n credentials (`SerpAPI`)\n* Used by workflow to fetch **Google Jobs search results**\n\n### 3. Form Configuration\n* Form webhook auto-generated by n8n\n* Share form link directly with users\n* Or embed form in your website\n"
},
"typeVersion": 1
},
{
"id": "d776ebde-2cda-4b59-a0aa-a6ee0925d4f9",
"name": "Nota adhesiva - Consejos profesionales",
"type": "n8n-nodes-base.stickyNote",
"position": [
32,
48
],
"parameters": {
"color": 3,
"width": 360,
"height": 528,
"content": "## 🛠️ Customization Tips\n\n- **Prompt**:\n Adjust system message in Job Hunter Agent to refine tone/length of cover letter.\n\n- **Email Branding**:\n Update footer in HTML email (currently: *Generated by khmuhtadin.com*).\n\n- **Job Filters**:\n Extend Prepare Data node to pass blacklist, industries, or company size.\n\n- **LLM Model**:\n Currently using Google Gemini (Gemini 2.5 Pro).\n Switch to GPT-4o or Claude 3.5 Sonnet if available for better reasoning.\n\n- **Attachments**:\n Optionally attach parsed CV summary as PDF for user reference.\n"
},
"typeVersion": 1
},
{
"id": "027c527d-90c0-4aec-b3f5-7ca212c72b1d",
"name": "Al enviar el formulario",
"type": "n8n-nodes-base.formTrigger",
"position": [
-1200,
-256
],
"webhookId": "smart-job-hunter-v2",
"parameters": {
"options": {},
"formTitle": "🎯 Smart Job Hunter + Cover Letter Generator",
"formFields": {
"values": [
{
"fieldType": "file",
"fieldLabel": "CV/Resume (PDF)",
"multipleFiles": false,
"requiredField": true,
"acceptFileTypes": ".pdf"
},
{
"fieldLabel": "Preferred Location",
"placeholder": "e.g., Jakarta, Bandung, Remote, Anywhere",
"requiredField": true
},
{
"fieldType": "dropdown",
"fieldLabel": "Job Type",
"fieldOptions": {
"values": [
{
"option": "Full Time"
},
{
"option": "Part Time"
},
{
"option": "Freelance"
},
{
"option": "Contract"
},
{
"option": "Internship"
}
]
},
"requiredField": true
},
{
"fieldType": "dropdown",
"fieldLabel": "Work Setting",
"fieldOptions": {
"values": [
{
"option": "On Site"
},
{
"option": "Remote"
},
{
"option": "Hybrid"
}
]
},
"requiredField": true
},
{
"fieldLabel": "Minimum Salary Expectation (Optional)",
"placeholder": "e.g., 10 juta, 15-20 juta, negotiable"
},
{
"fieldType": "textarea",
"fieldLabel": "Additional Preferences (Optional)",
"placeholder": "e.g., startup culture, specific companies, must have BPJS"
},
{
"fieldType": "email",
"fieldLabel": "Email",
"placeholder": "We will send the results to this email",
"requiredField": true
}
]
},
"formDescription": "Upload your CV and let AI find perfect jobs with custom cover letters!"
},
"typeVersion": 2.3
},
{
"id": "c84aae8d-0731-4158-ae47-74cbf7a3fb92",
"name": "Extraer CV desde PDF",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-976,
-256
],
"parameters": {
"options": {},
"operation": "pdf",
"binaryPropertyName": "CV_Resume__PDF_"
},
"typeVersion": 1
},
{
"id": "6fa762f1-f99a-4436-b975-7583e5456ddd",
"name": "Preparar datos",
"type": "n8n-nodes-base.set",
"position": [
-752,
-256
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ce5f3a96-c63d-40fa-b02c-8d763bfa2ed1",
"name": "cvData",
"type": "string",
"value": "={{ $json.text }}"
},
{
"id": "51623c31-dacf-4828-b1ac-f03f67e00d54",
"name": "location",
"type": "string",
"value": "={{ $('On form submission').item.json['Preferred Location'] }}"
},
{
"id": "068b13d5-6941-415d-935b-4936e42df913",
"name": "workSetting",
"type": "string",
"value": "={{ $('On form submission').item.json['Work Setting'] }}"
},
{
"id": "e1636d57-472b-4886-b631-5deb45b103a3",
"name": "jobType",
"type": "string",
"value": "={{ $('On form submission').item.json['Job Type'] }}"
},
{
"id": "salary-expectation",
"name": "salaryExpectation",
"type": "string",
"value": "={{ $('On form submission').item.json['Minimum Salary Expectation (Optional)'] || 'Not specified' }}"
},
{
"id": "additional-prefs",
"name": "additionalPreferences",
"type": "string",
"value": "={{ $('On form submission').item.json['Additional Preferences (Optional)'] || 'None' }}"
},
{
"id": "user-email",
"name": "userEmail",
"type": "string",
"value": "={{ $('On form submission').item.json['Email'] }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "7ace28c0-f3d0-4d89-b250-8896817dbac5",
"name": "Agente de búsqueda de empleo",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-528,
-256
],
"parameters": {
"text": "={{ \n`ANALYZE CV AND FIND JOBS:\n\nCV Content:\n${$json.cvData}\n\nUser Preferences:\n- Location: ${$json.location}\n- Work Setting: ${$json.workSetting}\n- Job Type: ${$json.jobType}\n- Salary: ${$json.salaryExpectation}\n- Additional: ${$json.additionalPreferences}\n\nTASKS:\n1. Extract key info from CV (name, skills, experience, achievements)\n2. Search for 3 best matching jobs using tools\n3. Generate personalized cover letter for each job\n4. Format everything as structured JSON for email template`\n}}",
"options": {
"systemMessage": "=You are an expert Job Hunter specializing in the Indonesian job market. \nUse Decodo Scrapper and SerpAPI to find a real job. \n\n## YOUR MISSION:\n1. Analyze the CV to extract skills, experience, and achievements. \n2. Search for exactly 1 best matching job using the tools. \n - Return the first high-quality match you find. \n - Do not attempt multiple searches or retries. \n3. Generate one personalized cover letter for that job (250–350 words). \n4. Output everything as structured JSON.\n\n## OUTPUT FORMAT:\nYou MUST output a valid JSON object with this exact structure:\n\n{\n \"candidateName\": \"[Name from CV]\",\n \"candidateExperience\": \"[X years in Y field]\",\n \"candidateSkills\": \"[Top 3 skills]\",\n \"candidateLevel\": \"[Junior/Mid/Senior]\",\n \"candidateStrength\": \"[Key differentiator]\",\n \"searchSummary\": \"[Platform searched and result]\",\n \"job\": {\n \"title\": \"[Job title]\",\n \"company\": \"[Company name]\",\n \"location\": \"[City/Remote]\",\n \"salary\": \"[Range or estimate]\",\n \"postedDate\": \"[X days ago]\",\n \"applyUrl\": \"[URL]\",\n \"whyMatch\": [\"Reason 1\",\"Reason 2\",\"Reason 3\"],\n \"coverLetter\": \"Dear Hiring Manager at [Company],\\n\\n[250-350 word letter]\\n\\nBest regards,\\n[Name]\"\n },\n \"applicationTips\": {\n \"bestTime\": \"Monday-Wednesday, 9-11 AM\",\n \"keywords\": \"[List of keywords from the job]\",\n \"followUp\": \"After 1 week\",\n \"interviewPrep\": \"[Focus areas]\"\n }\n}\n\n## IMPORTANT:\n- Use real job data from the tools (no imaginary jobs). \n- Stop after finding **one** matching job. \n- Output ONLY valid JSON, no extra text.\n"
},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "da5ec126-74e9-4708-8ec6-bc0136cf6fa2",
"name": "Generar correo HTML",
"type": "n8n-nodes-base.code",
"position": [
0,
-256
],
"parameters": {
"jsCode": "const jobData = $json;\nconst job = jobData.job || null;\n\n// Build HTML email\nconst htmlEmail = `\n<!DOCTYPE html>\n<html lang=\"id\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Your Job Match</title>\n</head>\n<body style=\"margin:0; padding:0; font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color:#f4f7fa;\">\n <table role=\"presentation\" width=\"100%\" style=\"background-color:#f4f7fa;\">\n <tr>\n <td align=\"center\" style=\"padding:40px 20px;\">\n <table role=\"presentation\" width=\"600\" style=\"background:#fff; border-radius:10px; box-shadow:0 4px 6px rgba(0,0,0,0.1);\">\n\n <!-- Header -->\n <tr>\n <td style=\"background:linear-gradient(135deg,#667eea 0%,#764ba2 100%); padding:40px; border-radius:10px 10px 0 0; text-align:center;\">\n <h1 style=\"margin:0; color:#fff; font-size:28px;\">🎯 Your Job Match Is Ready!</h1>\n </td>\n </tr>\n\n <!-- Profile Summary -->\n <tr>\n <td style=\"padding:30px;\">\n <div style=\"background:#f8f9fa; border-radius:8px; padding:20px; margin-bottom:30px;\">\n <h2 style=\"margin:0 0 15px 0;\">👤 Profile Summary</h2>\n <p><strong>Name:</strong> ${jobData.candidateName || 'N/A'}</p>\n <p><strong>Experience:</strong> ${jobData.candidateExperience || 'N/A'}</p>\n <p><strong>Skills:</strong> ${(jobData.candidateSkills || []).join(', ')}</p>\n <p><strong>Level:</strong> ${jobData.candidateLevel || 'N/A'}</p>\n </div>\n\n <!-- Job Match -->\n ${job ? `\n <div style=\"border:1px solid #e0e0e0; border-radius:8px; padding:20px; margin-bottom:25px;\">\n <div style=\"background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%); color:white; padding:8px 16px; border-radius:20px; font-weight:600; font-size:14px; display:inline-block; margin-bottom:15px;\">\n 🥇 BEST MATCH\n </div>\n\n <h3>${job.title}</h3>\n <p>🏢 ${job.company} | 📍 ${job.location}</p>\n <p>💰 ${job.salary} | 📅 Posted ${job.postedDate}</p>\n\n <div style=\"background:#f8f9fa; padding:12px; border-radius:6px; margin:15px 0;\">\n <p style=\"margin:0 0 8px 0; font-weight:600;\">Why this matches:</p>\n <ul>${(job.whyMatch || []).map(r => `<li>${r}</li>`).join('')}</ul>\n </div>\n\n <a href=\"${job.applyUrl}\" style=\"display:inline-block; background:#00a8e8; color:white; padding:10px 24px; text-decoration:none; border-radius:5px; font-weight:600;\">\n Apply Now →\n </a>\n\n <!-- Cover Letter -->\n <div style=\"margin-top:20px; padding-top:20px; border-top:1px solid #e0e0e0;\">\n <h4>💌 Your Cover Letter</h4>\n <div style=\"background:#fff; border:1px solid #e0e0e0; padding:20px; border-radius:6px; white-space:pre-line; line-height:1.6;\">\n ${job.coverLetter}\n </div>\n </div>\n </div>\n ` : '<p>No job found.</p>'}\n\n <!-- Tips -->\n ${jobData.applicationTips ? `\n <div style=\"background:linear-gradient(135deg,#667eea 0%,#764ba2 100%); color:white; border-radius:8px; padding:20px;\">\n <h3 style=\"margin:0 0 15px 0;\">💡 Application Tips</h3>\n <p>📅 Best Time: ${jobData.applicationTips.bestTime}</p>\n <p>🎯 Keywords: ${(jobData.applicationTips.keywords || []).join(', ')}</p>\n <p>📧 Follow-up: ${jobData.applicationTips.followUp}</p>\n </div>\n ` : ''}\n </td>\n </tr>\n\n <!-- Footer -->\n <tr>\n <td style=\"background:#f8f9fa; padding:30px; text-align:center; border-radius:0 0 10px 10px;\">\n <p style=\"margin:0; color:#999; font-size:12px;\">\n Generated by khmuhtadin.com | ${new Date().toLocaleDateString()}\n </p>\n </td>\n </tr>\n\n </table>\n </td>\n </tr>\n </table>\n</body>\n</html>\n`;\n\n// Ambil email user dari workflow sebelumnya\nconst userEmail = $('Prepare Data').first().json.userEmail;\n\nreturn {\n htmlEmail,\n userEmail,\n jobData\n};\n"
},
"typeVersion": 2
},
{
"id": "4496a0d1-5bc3-4155-9b7f-5760f997da15",
"name": "Enviar un mensaje",
"type": "n8n-nodes-base.gmail",
"position": [
192,
-256
],
"webhookId": "f8fd58d8-4038-4e45-b7df-261ab2cfcddc",
"parameters": {
"sendTo": "={{ $('On form submission').item.json.Email }}",
"message": "={{ $json.htmlEmail }}",
"options": {
"appendAttribution": false
},
"subject": "=Your Job MATCH!"
},
"credentials": {
"gmailOAuth2": {
"id": "8p11S7abjY8KddB9",
"name": "contactmuhtadin"
}
},
"typeVersion": 2.1
},
{
"id": "7c1caa4d-d9f2-4404-a7e1-497ea55c87b5",
"name": "Analizar salida del agente",
"type": "n8n-nodes-base.code",
"position": [
-208,
-256
],
"parameters": {
"jsCode": "let raw = $json.output || \"\";\n\n// Clean markdown fences if they exist\nraw = raw.replace(/```json/g, '').replace(/```/g, '').trim();\n\nlet parsed;\ntry {\n parsed = JSON.parse(raw);\n} catch (e) {\n parsed = { error: \"Failed to parse JSON\", raw };\n}\n\nreturn parsed;\n"
},
"typeVersion": 2
},
{
"id": "bb0c881a-0185-4de3-ba10-97d1e5e91f7b",
"name": "SerpAPI",
"type": "@n8n/n8n-nodes-langchain.toolSerpApi",
"position": [
-384,
-96
],
"parameters": {
"options": {}
},
"credentials": {
"serpApi": {
"id": "RnX2LOB0xs45mOEw",
"name": "Login w Github"
}
},
"typeVersion": 1
},
{
"id": "08df6d1a-16fd-47aa-9c42-5a88e7184b59",
"name": "Nota adhesiva - Cómo funciona1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-832,
48
],
"parameters": {
"color": 7,
"width": 420,
"height": 528,
"content": "## ⚠️ Known Limitations\n\n- **Job Sources**:\n Currently only SerpAPI (Google Jobs) + Decodo supported.\n Can add LinkedIn, Jobstreet, Indeed with API/connector.\n\n- **Result Count**:\n Hard-limited to **1 job** per run (by system prompt).\n Change prompt if you want multiple jobs.\n\n- **Parsing**:\n If AI fails to return valid JSON → fallback is `{ error: ... }`.\n Email will show \"No job found\".\n\n- **Email Output**:\n Gmail API required in n8n.\n Make sure OAuth2 refresh tokens are valid.\n"
},
"typeVersion": 1
},
{
"id": "19c63f7b-d693-495d-94ec-5195c17df88a",
"name": "Gemini 2.5 Pro",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-528,
-96
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.5-pro"
},
"credentials": {
"googlePalmApi": {
"id": "KMIkjDkgwnQFlQ9j",
"name": "dev.uratalier"
}
},
"typeVersion": 1
},
{
"id": "d3684fdb-1701-400b-b6fc-1bab7bc6f2e3",
"name": "Nota adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2256,
32
],
"parameters": {
"width": 432,
"height": 912,
"content": "\n"
},
"typeVersion": 1
},
{
"id": "c9019277-17de-4099-a76f-a73742e42142",
"name": "Nota adhesiva1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1792,
32
],
"parameters": {
"width": 432,
"height": 912,
"content": "\n"
},
"typeVersion": 1
},
{
"id": "5f1f23db-4681-4473-a0e6-1f142853e68f",
"name": "Nota adhesiva2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1344,
32
],
"parameters": {
"width": 432,
"height": 912,
"content": ""
},
"typeVersion": 1
}
],
"active": false,
"pinData": {
"On form submission": [
{
"json": {
"Email": "khmuhtadin@proton.me",
"Job Type": "Freelance",
"formMode": "test",
"submittedAt": "2025-09-11T23:14:58.671+07:00",
"Work Setting": "Remote",
"CV/Resume (PDF)": {
"size": 4430,
"filename": "Dummy_ATS_Programmer_CV.pdf",
"mimetype": "application/pdf"
},
"Preferred Location": "USA",
"Additional Preferences (Optional)": "",
"Minimum Salary Expectation (Optional)": ""
},
"binary": {
"CV_Resume__PDF_": {
"data": "JVBERi0xLjQKJZOMi54gUmVwb3J0TGFiIEdlbmVyYXRlZCBQREYgZG9jdW1lbnQgaHR0cDovL3d3dy5yZXBvcnRsYWIuY29tCjEgMCBvYmoKPDwKL0YxIDIgMCBSIC9GMiAzIDAgUgo+PgplbmRvYmoKMiAwIG9iago8PAovQmFzZUZvbnQgL0hlbHZldGljYSAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZyAvTmFtZSAvRjEgL1N1YnR5cGUgL1R5cGUxIC9UeXBlIC9Gb250Cj4+CmVuZG9iagozIDAgb2JqCjw8Ci9CYXNlRm9udCAvSGVsdmV0aWNhLUJvbGQgL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcgL05hbWUgL0YyIC9TdWJ0eXBlIC9UeXBlMSAvVHlwZSAvRm9udAo+PgplbmRvYmoKNCAwIG9iago8PAovQ29udGVudHMgOSAwIFIgL01lZGlhQm94IFsgMCAwIDU5NS4yNzU2IDg0MS44ODk4IF0gL1BhcmVudCA4IDAgUiAvUmVzb3VyY2VzIDw8Ci9Gb250IDEgMCBSIC9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdCj4+IC9Sb3RhdGUgMCAvVHJhbnMgPDwKCj4+IAogIC9UeXBlIC9QYWdlCj4+CmVuZG9iago1IDAgb2JqCjw8Ci9Db250ZW50cyAxMCAwIFIgL01lZGlhQm94IFsgMCAwIDU5NS4yNzU2IDg0MS44ODk4IF0gL1BhcmVudCA4IDAgUiAvUmVzb3VyY2VzIDw8Ci9Gb250IDEgMCBSIC9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdCj4+IC9Sb3RhdGUgMCAvVHJhbnMgPDwKCj4+IAogIC9UeXBlIC9QYWdlCj4+CmVuZG9iago2IDAgb2JqCjw8Ci9QYWdlTW9kZSAvVXNlTm9uZSAvUGFnZXMgOCAwIFIgL1R5cGUgL0NhdGFsb2cKPj4KZW5kb2JqCjcgMCBvYmoKPDwKL0F1dGhvciAoXChhbm9ueW1vdXNcKSkgL0NyZWF0aW9uRGF0ZSAoRDoyMDI1MDkxMTE2MTM1OCswMCcwMCcpIC9DcmVhdG9yIChcKHVuc3BlY2lmaWVkXCkpIC9LZXl3b3JkcyAoKSAvTW9kRGF0ZSAoRDoyMDI1MDkxMTE2MTM1OCswMCcwMCcpIC9Qcm9kdWNlciAoUmVwb3J0TGFiIFBERiBMaWJyYXJ5IC0gd3d3LnJlcG9ydGxhYi5jb20pIAogIC9TdWJqZWN0IChcKHVuc3BlY2lmaWVkXCkpIC9UaXRsZSAoXChhbm9ueW1vdXNcKSkgL1RyYXBwZWQgL0ZhbHNlCj4+CmVuZG9iago4IDAgb2JqCjw8Ci9Db3VudCAyIC9LaWRzIFsgNCAwIFIgNSAwIFIgXSAvVHlwZSAvUGFnZXMKPj4KZW5kb2JqCjkgMCBvYmoKPDwKL0ZpbHRlciBbIC9BU0NJSTg1RGVjb2RlIC9GbGF0ZURlY29kZSBdIC9MZW5ndGggMTkwOQo+PgpzdHJlYW0KR2F0VXQ/JEchXiY7S1pGLyo6SGlUcG49RmFpQF4+cS5NXz8sVUowI2hXLi9ZX0dPZklYcz5CK0osUEM8VEcxVHFoOD1kR2EwcDRfUmVONTQ+XUIyb1JhM0FhXDx0LC5IUF1vdEFkYFIxPzMlO25cPVQ3PTRgT1BJJVljXCw4JW1sIzFyTGQyIV4+VV03V0lzTGJXTD8wIipyZmNINkM4QDZpcnEmO0AiJidCcGxmUDlHJVYtVCVBYXUxPFl0O1NrV1c7R1RvXEU7PVAtLj9SZFg+I2FrUi5oUGZOSj9UV1QzTkxucyFTbmpQVG04cy1MMUFdJU9MXm1bUzBuVXBzJ3BtXVxadGFWS1ghWWwqV1RjR2cvP09pIVVTc2NjNy9dXk00aFpZYUhmYW9qIi5RdCYwUGkxVm8kJF1bM0JRVlQwUWIiMissJ1VcP29XMyMuaVhHS2I1LWFWYjNqTEInXVhJRWdiIWRwNkJPKDZhXlw6Jyk7MjNybW9uNkY8YF44PWE3OiNiaF9fOSliblpRMW9mUW1fXFImdXE3LyQ5VVghQElZQ1wqIV9sRT41Nz0uKGM4PmdBPkstQG8zW1kkSWpQZiFZakciZEtfUFJcVlcrWHE3alM1WTcwMkUrSEBta1peMV4zbm84QVJcMio6VyZHbktjb2Jfc1Yjb0xtXGZhK2gscGJrWj9OQyUqOnItZmQ7LilDOGF1JktYN0E6VFNrcG9KUk9qUkcsQC9AYWdQZkVRY0gtJnQuTT9NZiJnXVdCRUZcI0IqWEBkTz9WOjppNUpaaV5jRiVdaV0xX1FsZEJDTl1IZ0E8KT9pIklDS3JbKW4hUEdMU1JuI2wrXlYtKjtRYEthS0NVbGk1TUlTOkhEJzFxOlRlNVBPWjNJU1AlSypka28mXykzQ2tCWHFKL3RVcWVyX2o/MTJjQztJclA6SSUuNlldX2IsaGM6byZmbEAkNDlnMVpqaTojODI6KmdgP0ZoYFVJZHAjLTFkQG0hTVY+TnB0ITI2Xj0+UFlUVlwncWhTQm05NFkqVSNbazRbRkY3SE9uJl1cTGVDRiluNUMua0V1bm04TV9wSUkkVGFEMSpNR2F1Mi06N0JEYk1CUWNeZkpiZz8tJ0gpM1dGOC1zZD0mc2tCNDJoaVhHLjheYTQ5Q2JiJDEkXWtCTUkrZmg7TzZraGM3bjY+Si5fSyZeVGM+dCxYNS5YMmRULjRSLmImSm9CaC00Q0xFRkgpKHBuK0NxWFYoIUQ8Tz9sI2MmVStWUUg+TVJmMmQ9IjElK2h0Ny1MZCZlOU4vR0MkY09tcCspOlk0KVlkS04nLVJcY05RWGw1XGVSRSlTQV1xUjs0JyJQUDdUXmdlYVRxMTAkZUUjaztXUSVgSD9hNTxzRTVPPiUqNiFAWGdjZjRLVjQ1TjIoLVk6WjcxJDAzJEdgJF01JDgoIWdoWiZYR2wuUWIocmw+IXA/cURndV86SidldHMsdTUsdEhuMlpJYS5PaiZacVFjIy5GbUVtaU5FQCFlWUgrLUFVYHEiaV0hcUZiNXJcNCliU0BAW2VnL1JOO14zUGFhNz1LVmwkdS1ySFRxbXJRbi5lNUEzXD9BRWpsUCpNUlhGP1pNYi9LWVxNOT1uMitjZSNwb1lAc1JBOjxmbSxgPkVJWyxXVEwxZGcqdEhAczc1bUxFMzRmYFNiQGA5U0BHJjhbIzk+Y21UNlo9Lm9OKVc+Z3VwaiRZQ0xFMmU+JChYUyJWR2MkKyRzPElhWF5xIWZAVElfOjRoa2VpXyFxJSE7WCEiKjE7IT08KFwsPjNscl00XEFdLGZgLnNBMnRmSSIpckA4KV8zaysuT1ttI0w8O01YQ3BDLUNbO2UjRTJFZmwvM2hMMChXVnIlQSVJQjhtW1YsNEk9c00udS5rU1N1Vi4sUj9SKW5HTi1SLSEwXzwhSyhjKSl0a2tAc1xRJiJHJCJXZkIkNUElRFFLMiI8bV9lTkU6OmFTZVtIPUlhcWZSOio5T1w1OUsxV2Q4KlVXYWJpSkdhVVpdS1dFPW1kTVthPWJbPV0lNikiJEgmW2lsQ21PUCZOOCRxQkxCK05GLU1zZj1UQjNhZGZUa1k7JT1MbWdaSVkkNydVSl1BW0UpMSEpb2ZuPUVtQ0hcTEJWaS4hQk1FP20iaFZbMGcsTzUwaVZSY2lYamhPM3A9KC1WUD5wKUgpPSkxLFJVK2xhQHBRSltdNlFJNUNQIkNUX2pwdGZmRG1ZRV1ac1RCWDtSSGlXPlpHXGA0c0lnNDQiRz0lIShfP1dzQFt0ZUVNS2w5I0ZeKUY/UTFfQiYjciVwYCk2PF0odC89biJxYWNsQVk9OkUjLChQTzQxIk4jRENpbT1rdDxgPWR0KiVnWTVuUUZvWGF1LmRTQEJEdTBJOEw+TitzVltALXNyIi1GZidBUTIlTHNMTlw0IzViKHFROCsoL0lUZmo8MSdyQGJqLzMiUFU3WVpyalgmZlJHYlNXMGMjb0VtTC42OWNzYyc6Vm1fbC9gdExILip0ZnBhLjB+PmVuZHN0cmVhbQplbmRvYmoKMTAgMCBvYmoKPDwKL0ZpbHRlciBbIC9BU0NJSTg1RGVjb2RlIC9GbGF0ZURlY29kZSBdIC9MZW5ndGggNzM2Cj4+CnN0cmVhbQpHYXRuJDlsbyNCJjtLWk9NRVEqVEZURUEwNV07JUg4SHInal1ALi0oYD4xcVpRRGU+LXEiSidgUFxDNT8pLEVhWXAzUSlVNS1KJTY3QSxRa1BoLjtjKGtwPkkrW0JpTD0kVzphIjVzWmNASDBrMV1SSyw+XzA4Sl9oXU1KRiIoLEZDM1IqLyQ9ZF9GakgjK1ZaQFwuSHQ8ISg8WV1TZ0lLVi5gMGlJJnA6ciFURXBNYXMycV0ubG0kc2RiQGo6aEdrLUokdDtXIjIrc2JJXFVxKjFbXyYlWSNVN1BeYCpoOTInLl4lO1VsNy0oN0RdNDxNTWwjdS5bYzlsW1ZtR1kpRyxjYU5WWkI9NF1AZzQ8KCJfYjZEY05zRSRvKkRSLSMqS1tkQV8nLSt0TW5NVEEiWlJSayxDT2pyXi8yJmRMP0JKIkhzO1s+OUQ6JWFlTXAmJ0InYFVkbT1wRVI9T3MsR106LiUpS1BBXzlKPjszQzNZX1hzYGJOKHBnW0hRIzswRGZdLmZlJWtqYkNnIXUlakQtNDZJXzJnLEdhcWQ6IW1gKVw0ak4hI2wrJyk3bSYqZiUlSVlGKDE7K2dtLyMsc1pfI28mK2dXcGM/KTcpKWNeMitQNShzSnFRSF43XD9FZEMyQF4kQXFdKUY1JSpkak0uSzIuXzZQVDhwWm5sOSVxRk45PShhRVxhcHNBJ0InUV5NUGU9TzQ2JUskaUZpQEFRcSEkU0I+LGIvbi0kIiU5IiRpazUiRTQkJjI9OUpfNVM1cFY4aVBYQVonI1s/Umg2aG4mZD8lV2VkYWM+XlY/VjovXTdhIlpJJGxlalxTQUpUcl8kMWN0cmBma28rTnBFMilddDFYbmc8PFhwTlUlTV1gY15TRGMsbCdkZD8sTz9vW201aGRyZ1VFaVMqc3EhWTtBc2xoKGhsRC9ZK2kqTEBdQEVxLXJnNmdkYltCKWZGJVUlJk45Li06N34+ZW5kc3RyZWFtCmVuZG9iagp4cmVmCjAgMTEKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDczIDAwMDAwIG4gCjAwMDAwMDAxMTQgMDAwMDAgbiAKMDAwMDAwMDIyMSAwMDAwMCBuIAowMDAwMDAwMzMzIDAwMDAwIG4gCjAwMDAwMDA1MzYgMDAwMDAgbiAKMDAwMDAwMDc0MCAwMDAwMCBuIAowMDAwMDAwODA4IDAwMDAwIG4gCjAwMDAwMDEwOTEgMDAwMDAgbiAKMDAwMDAwMTE1NiAwMDAwMCBuIAowMDAwMDAzMTU2IDAwMDAwIG4gCnRyYWlsZXIKPDwKL0lEIApbPDg0OTg1YmZkMjE4MjNjZDU2OTYwODI5MmZhYzMwMmFhPjw4NDk4NWJmZDIxODIzY2Q1Njk2MDgyOTJmYWMzMDJhYT5dCiUgUmVwb3J0TGFiIGdlbmVyYXRlZCBQREYgZG9jdW1lbnQgLS0gZGlnZXN0IChodHRwOi8vd3d3LnJlcG9ydGxhYi5jb20pCgovSW5mbyA3IDAgUgovUm9vdCA2IDAgUgovU2l6ZSAxMQo+PgpzdGFydHhyZWYKMzk4MwolJUVPRgo=",
"fileName": "Dummy_ATS_Programmer_CV.pdf",
"fileSize": "4.43 kB",
"fileType": "pdf",
"mimeType": "application/pdf",
"fileExtension": "pdf"
}
}
}
]
},
"settings": {
"executionOrder": "v1"
},
"versionId": "1ec8485f-2772-409f-bb99-f834cbb7c390",
"connections": {
"bb0c881a-0185-4de3-ba10-97d1e5e91f7b": {
"ai_tool": [
[
{
"node": "7ace28c0-f3d0-4d89-b250-8896817dbac5",
"type": "ai_tool",
"index": 0
}
]
]
},
"6fa762f1-f99a-4436-b975-7583e5456ddd": {
"main": [
[
{
"node": "7ace28c0-f3d0-4d89-b250-8896817dbac5",
"type": "main",
"index": 0
}
]
]
},
"19c63f7b-d693-495d-94ec-5195c17df88a": {
"ai_languageModel": [
[
{
"node": "7ace28c0-f3d0-4d89-b250-8896817dbac5",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"7ace28c0-f3d0-4d89-b250-8896817dbac5": {
"main": [
[
{
"node": "7c1caa4d-d9f2-4404-a7e1-497ea55c87b5",
"type": "main",
"index": 0
}
]
]
},
"027c527d-90c0-4aec-b3f5-7ca212c72b1d": {
"main": [
[
{
"node": "c84aae8d-0731-4158-ae47-74cbf7a3fb92",
"type": "main",
"index": 0
}
]
]
},
"7c1caa4d-d9f2-4404-a7e1-497ea55c87b5": {
"main": [
[
{
"node": "da5ec126-74e9-4708-8ec6-bc0136cf6fa2",
"type": "main",
"index": 0
}
]
]
},
"c84aae8d-0731-4158-ae47-74cbf7a3fb92": {
"main": [
[
{
"node": "6fa762f1-f99a-4436-b975-7583e5456ddd",
"type": "main",
"index": 0
}
]
]
},
"da5ec126-74e9-4708-8ec6-bc0136cf6fa2": {
"main": [
[
{
"node": "4496a0d1-5bc3-4155-9b7f-5760f997da15",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Varios, IA Multimodal
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
Khairul Muhtadin
@khmuhtadinCompartir este flujo de trabajo