Saltar al contenido

AI CV Optimizer

Este workflow usa IA para analizar un CV contra una oferta de empleo, identificando habilidades clave y brechas. Genera recomendaciones, consejos de optimización y envía un informe detallado por email al candidato.

AIn8n 18 nodos 12 tipos conectado
Cargando workflow...

Nodos

Webhook RespondToWebhook ExtractFromFile Set HttpRequest Merge LmChatGoogleGemini OutputParserStructured StickyNote Gmail Agent Code

Herramientas

Webhook PDF Extractor HTTP Request Google Gemini AI Agent Gmail

Detalles

ID
8637
Nodos
18
Conex.
Tipos
12

Pertenece a:

¿Qué hace este workflow?

Este workflow automatiza el análisis de currículums vitae utilizando inteligencia artificial. Al recibir un CV en formato PDF y una oferta de empleo, el sistema extrae automáticamente la información clave de ambos documentos y los compara, identificando las habilidades y experiencias relevantes, así como las posibles brechas entre el perfil del candidato y los requisitos del puesto. Genera un informe detallado con recomendaciones de optimización del CV, consejos para adaptar la candidatura y sugerencias para mejorar la coincidencia con la oferta. Finalmente, este informe es enviado por email al candidato, proporcionándole una herramienta valiosa para mejorar sus posibilidades de éxito. Es ideal para departamentos de RRHH que buscan optimizar el proceso de selección o para profesionales que desean perfeccionar su CV antes de postularse, ahorrando tiempo y aumentando la efectividad de las candidaturas.

¿Cómo funciona?

Este workflow usa 18 nodos conectados con 12 tipos diferentes: Webhook, RespondToWebhook, ExtractFromFile, Set, HttpRequest y 7 más. La estructura está totalmente conectada — listo para importar.

¿Para quién es?

Diseñado para empresas de Recursos Humanos. Nivel intermedio — necesitas familiaridad con n8n. Alto valor de negocio: automatiza una tarea recurrente con impacto directo.

¿Lo quieres en tu empresa?

Lo implementamos por ti end-to-end: integración, deploy, mantenimiento y soporte. Consultoría B2B con Genai Sapiens.

Hablemos de tu proyecto

¿Quieres aprender a hacerlo?

Sprints de 30 días con companion IA + comunidad. Aprende n8n, automatización y agentes IA desde cero o nivel avanzado.

Ver formación Momentum

Workflows similares

\n\n"},"typeVersion":1.4},{"id":"5f221527-5476-49cb-a166-eb3213f5d4a6","name":"Extract CV Text (PDF)","type":"n8n-nodes-base.extractFromFile","position":[0,384],"parameters":{"options":{},"operation":"pdf","binaryPropertyName":"=cv"},"typeVersion":1},{"id":"75eb814c-8d04-4310-bc01-3fcaf1640634","name":"Prepare CV Text","type":"n8n-nodes-base.set","position":[224,384],"parameters":{"options":{},"assignments":{"assignments":[{"id":"be5e5936-7940-43be-b905-62b54d9db076","name":"cv_text","type":"string","value":"={{ $json.text }}"}]}},"typeVersion":3.4},{"id":"da50a5a9-a727-45f9-b07c-e75844f89d45","name":"Fetch Job Posting","type":"n8n-nodes-base.httpRequest","position":[448,304],"parameters":{"url":"={{ $(' Webhook - CV Optimizer Form').item.json.body.job_url }}","options":{}},"typeVersion":4.2},{"id":"405c1c1d-afa1-4b9e-a595-a7eef3772303","name":"Merge CV + Job Data","type":"n8n-nodes-base.merge","position":[896,368],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition"},"typeVersion":3.2},{"id":"f7e1ebf8-5e4e-48b8-a384-d88f53d771bb","name":" Gemini Model - Primary","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[1120,592],"parameters":{"options":{}},"credentials":{"googlePalmApi":{"id":"qQGrvqnSPqWFH6I6","name":"Google Gemini(PaLM) Api account 5"}},"typeVersion":1},{"id":"cf43c082-b2ae-42e0-8d3d-83db4a4d9f9d","name":"Parse AI JSON Output","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1248,592],"parameters":{"autoFix":true,"jsonSchemaExample":"{\n \"job_title\": \"Frontend Developer (React)\",\n \"location\": \"Helsinki, Finland\",\n \"fit_summary\": \"The candidate has solid React, TypeScript, and JavaScript experience, supported by practical work on full-stack applications. They also demonstrate CI/CD knowledge and testing skills (Cypress, Jest), which align well with the role. However, the CV does not explicitly highlight advanced CSS frameworks or accessibility practices that are emphasized in the job description.\",\n \"recommendation\": \"Consider\",\n \"fit_score\": 7,\n \"missing_critical\": [\n \"Advanced CSS framework experience (e.g., Tailwind, Material UI)\",\n \"Accessibility (WCAG) best practices\"\n ],\n \"cv_optimization\": \"Add a section highlighting hands-on experience with CSS frameworks (Tailwind, Material UI) and accessibility best practices (WCAG). Include concrete project examples that demonstrate user-focused design and frontend performance improvements.\",\n \"final_recommendation\": \" The candidate is a good potential match but should strengthen their CV by explicitly mentioning CSS framework expertise and accessibility knowledge to move from 'Consider' to a stronger 'Apply'.\"\n}"},"typeVersion":1.3},{"id":"51bd8f61-dea2-4763-beb3-d0171ca55660","name":"Gemini Model","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[1328,800],"parameters":{"options":{}},"credentials":{"googlePalmApi":{"id":"qQGrvqnSPqWFH6I6","name":"Google Gemini(PaLM) Api account 5"}},"typeVersion":1},{"id":"a0bbfaab-6717-4a88-9766-97d70dec3f03","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-224,-304],"parameters":{"width":512,"height":272,"content":"## AI CV Optimizer: Match Your CV to Job Descriptions with AI\n\nThis workflow uses AI to automatically analyze a candidate’s CV against any job posting. It extracts key skills, requirements, and gaps, then generates a clear fit summary, recommendations, and optimization tips. Candidates also receive a structured email report, helping them improve their CV and focus on the right roles.\n\nNo more guesswork, the workflow delivers objective. \n### AI-powered career insights in minutes."},"typeVersion":1},{"id":"91fb8dbc-2126-47dc-a4ae-a42d8b9c4397","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[1152,192],"parameters":{"color":6,"width":224,"content":"### AI - Compare CV with Job\n\nYou can adjust the AI Agent prompt for output schema, scoring, or language.\n"},"typeVersion":1},{"id":"0343291b-6da2-4155-9a52-164f4c4ab1d1","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1088,736],"parameters":{"color":5,"width":208,"height":112,"content":"### Gemini / AI \nCredentials: \nUse **Google Gemini/PaLM** credential."},"typeVersion":1},{"id":"14e53603-87f5-4d4e-92ef-216eb5917964","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[1584,528],"parameters":{"color":5,"width":192,"height":96,"content":"### Send report \nSend Email\nCredentials: Use **Gmail OAuth2** credential. (required)."},"typeVersion":1},{"id":"c05f35ba-eeb9-4752-80ef-23eefbcca0f2","name":"Send report ","type":"n8n-nodes-base.gmail","position":[1616,368],"webhookId":"ce5d269e-ee40-4c92-9479-e5af8baec199","parameters":{"sendTo":"={{ $(' Webhook - CV Optimizer Form').item.json.body.email }}","message":"=

Hi,

\n\n

We’ve analyzed your CV against the job posting for {{ $json.output.job_title }} in {{ $json.output.location }}.

\n\n

Summary:
\n{{ $json.output.fit_summary }}

\n\n

Critical gaps identified:

\n\n\n

FinalFit Score: {{ $json.output.fit_score }} / 10 Recommendation: {{ $json.output.recommendation }}

\n

\nTips for improving CV: {{ $json.output.cv_optimization }}\n

\n

AI Advice:
\n{{ $json.output.final_recommendation }}\n

\n\n

Best of luck with your applications,
AI CV Optimizer

","options":{},"subject":"=Your CV Review: {{ $json.output.job_title }} in {{ $json.output.location }}"},"credentials":{"gmailOAuth2":{"id":"jkKHvU2Pb9X5WJk5","name":"Gmail account"}},"typeVersion":2.1},{"id":"8918b88f-f90d-4e68-b28b-84dd68ad854a","name":"Sticky Note11","type":"n8n-nodes-base.stickyNote","position":[-16,16],"parameters":{"color":5,"width":160,"height":144,"content":"### Submission form\n**POST (required)**\n- `Upload CV`\n- `Job Link` \n- `email` "},"typeVersion":1},{"id":"03491b28-4df7-4be4-88b1-4128e92fe9b7","name":"AI CV Analyzer","type":"@n8n/n8n-nodes-langchain.agent","position":[1152,368],"parameters":{"text":"=CV:\n{{ $json[\"cv_text\"] ? $json[\"cv_text\"].slice(0, 18000) : \"\" }}\n\nJOB:\n{{ $json[\"job_text\"] ? $json[\"job_text\"].slice(0, 18000) : \"\" }}\n\nTasks:\n1) Extract the \"job_title\" and \"location\". \n2) Identify \"matched_skills\" and \"missing_critical\" skills. \n3) Write a short \"advice\" paragraph (max 100 words). \n4) Write a friendly \"email_body\" addressed to the candidate, summarizing:\n - Job title & location \n - What they already match well \n - Areas to improve or learn for better fit \n - A motivating closing sentence \n5)5) Write a short final_recommendation paragraph.\n\n6) Provide **two recommendations**: \n - \"recommendation\": Apply / Consider / Not a fit (must align with fit_score) \n - \"cv_optimization\": Clear advice on how to improve the CV for similar roles. \n6) The \"fit_score\" must always align with \"recommendation\": \n - Apply → fit_score between 9 and 10 \n - Consider → fit_score between 7 and 8 \n - Not a fit → fit_score between 1 and 6 \n\n⚠️ IMPORTANT: Return ONLY valid JSON in this schema:\n{\n \"job_title\": \"string\",\n \"location\": \"string\",\n \"fit_score\": 0,\n \"recommendation\": \"Apply|Consider|Not a fit\",\n\"final_recommendation\": [\"string\"],\n \"matched_skills\": [\"string\"],\n \"missing_critical\": [\"string\"],\n \"advice\": \"string\",\n \"cv_optimization\": \"string\",\n \"email_body\": \"string\"\n}","options":{"systemMessage":"You are a professional career assistant. \nYour task is to compare a candidate’s CV with a job description and return a structured JSON output. \n\n⚠️ RULES: \n- Follow the schema exactly. \n- Every field must be included. \n- All values must be plain text, arrays, or integers — never nested objects. \n- `fit_score` must be an integer (1–10) aligned with `recommendation`: \n - \"Apply\" → 9–10 \n - \"Consider\" → 7–8 \n - \"Not a fit\" → 1–6 \n- Do not add responsibilities, requirements, or benefits. \n- Do not include any text outside the JSON. \n\nSchema:\n{\n \"job_title\": \"string\",\n \"location\": \"string\",\n \"fit_score\": 0,\n \"recommendation\": \"Apply|Consider|Not a fit\",\n \"matched_skills\": [\"string\"],\n \"missing_critical\": [\"string\"],\n \"advice\": \"string\",\n \"cv_optimization\": \"string\",\n \"email_body\": \"string\",\n\"final_recommendation\": : \"string\",\n\n}"},"promptType":"define","hasOutputParser":true},"typeVersion":2.2},{"id":"798f0b85-bd22-4ad8-a9c3-a3535d955069","name":"Job Text Cleaner","type":"n8n-nodes-base.code","position":[672,304],"parameters":{"jsCode":"const raw = $json.data || \"\";\nconst text = raw\n .replace(//gi, \"\")\n .replace(//gi, \"\")\n .replace(/<\\/?[^>]+(>|$)/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim();\nreturn [{ job_text: text }];"},"typeVersion":2},{"id":"eef4754b-adb0-4859-93df-cfc361f8175c","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[384,-304],"parameters":{"color":2,"width":304,"height":144,"content":"## Customization checklist\n✅ Update Webhook URL\n✅ Configure Google Gemini credentials\n✅ Set Gmail OAuth2 credentials\n✅ Adjust AI prompt if schema changes"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"039ce290-aa42-4e4a-a346-65841445a6a6","connections":{"Gemini Model":{"ai_languageModel":[[{"node":"Parse AI JSON Output","type":"ai_languageModel","index":0}]]},"AI CV Analyzer":{"main":[[{"node":"Send report ","type":"main","index":0}]]},"Prepare CV Text":{"main":[[{"node":"Fetch Job Posting","type":"main","index":0},{"node":"Merge CV + Job Data","type":"main","index":1}]]},"Job Text Cleaner":{"main":[[{"node":"Merge CV + Job Data","type":"main","index":0}]]},"Fetch Job Posting":{"main":[[{"node":"Job Text Cleaner","type":"main","index":0}]]},"Merge CV + Job Data":{"main":[[{"node":"AI CV Analyzer","type":"main","index":0}]]},"Parse AI JSON Output":{"ai_outputParser":[[{"node":"AI CV Analyzer","type":"ai_outputParser","index":0}]]},"Extract CV Text (PDF)":{"main":[[{"node":"Prepare CV Text","type":"main","index":0}]]}," Gemini Model - Primary":{"ai_languageModel":[[{"node":"AI CV Analyzer","type":"ai_languageModel","index":0}]]}," Webhook - CV Optimizer Form":{"main":[[{"node":"Webhook Response - HTML Form","type":"main","index":0}],[{"node":"Extract CV Text (PDF)","type":"main","index":0}]]}}}