Extraction structurée de données de candidats à partir de CV (GPT AI)

Avancé

Ceci est unHR, AI Summarizationworkflow d'automatisation du domainecontenant 20 nœuds.Utilise principalement des nœuds comme Set, Switch, Aggregate, GoogleSheets, Agent. Extraire des données structurées de candidats à partir de CV avec GPT AI

Prérequis
  • Informations d'identification Google Sheets API
  • Clé API OpenAI
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "meta": {
    "instanceId": "cb484ba7b742928a2048bf8829668bed5b5ad9787579adea888f05980292a4a7",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "98df1ef4-b57a-43a6-a928-d765559f747c",
      "name": "À la réception du message",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -100,
        1140
      ],
      "webhookId": "592787f5-230a-4e76-960c-6277f9faa9c8",
      "parameters": {
        "options": {
          "allowFileUploads": true
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "94e30376-80da-497e-830f-21dae01580f5",
      "name": "Commutateur",
      "type": "n8n-nodes-base.switch",
      "position": [
        120,
        1014
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "CSV",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "fcf85095-1221-4490-9d30-e10d7c3b686c",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".csv"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "HTML",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "58e60d14-1beb-47b8-8789-6cee2b2bb224",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".html"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "ODS",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "afce5705-212f-4e56-ac34-8b99e15a0806",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".ods"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "PDF",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "bb223b8a-826c-488b-9eb7-b1b50a6aef7f",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".pdf"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "RTF",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "29d5bf9a-69fb-4e01-8ea9-2ca7c8b3fc9c",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".rtf"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "TXT",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "d2e22acb-adbb-43d9-8a18-70851be20ea5",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".txt"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "XML",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "257adc56-8632-4671-9237-4e233b95e3fe",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".xml"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "XLS",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "d4673034-eaca-4f4c-9c37-104ffe0bb170",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.files[0].fileName.toLowerCase() }}",
                    "rightValue": ".xls"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra"
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "e16c87a4-86d0-4878-96bb-a0228ca621b0",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        780,
        1040
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "70ba1c39-f90f-44ac-9fdc-9a8a8d188484",
              "name": "text",
              "type": "string",
              "value": "={{ $json.text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b752e83e-3052-43d1-9418-4d433e351614",
      "name": "Agent IA1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1000,
        1040
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "systemMessage": "You are a helpful assistant that extracts email, name, skills, and education from resume text. "
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "0944cce4-d5b7-4e48-a466-1aa8f3b76e26",
      "name": "Modèle de chat OpenAI1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1028,
        1260
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "QpFZ2EiM3WGl6Zr3",
          "name": "Marketing OpenAI"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "58a42607-b1b4-43e0-884f-5a13e706edf8",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1148,
        1260
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"name\": \"Angel Menendez\",\n  \"email\": \"angel.menendez@example.com\",\n  \"skills\": \"JavaScript, Node.js, n8n, Docker, REST APIs\",\n  \"education\": \"B.S. in Computer Science, University of Arizona, 2010\"\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "42d5ebda-7d49-40ef-8c44-2fa57ec68f3e",
      "name": "Validate Output",
      "type": "n8n-nodes-base.set",
      "onError": "continueErrorOutput",
      "position": [
        1376,
        1040
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "4a062055-7dde-447e-ada1-0032f46af02a",
              "name": "output.name",
              "type": "string",
              "value": "={{ $json.output.name }}"
            },
            {
              "id": "bf28519f-f8e3-4b26-bee4-7758340df194",
              "name": "output.email",
              "type": "string",
              "value": "={{ $json.output.email }}"
            },
            {
              "id": "24975388-f25a-4c86-a995-9ec2cf819c13",
              "name": "output.skills",
              "type": "string",
              "value": "={{ $json.output.skills }}"
            },
            {
              "id": "c410f2d2-00e1-499b-9346-553164881465",
              "name": "output.education",
              "type": "string",
              "value": "={{ $json.output.education }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1235bbab-c227-4054-b8ce-007f39a805f5",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "disabled": true,
      "position": [
        1596,
        940
      ],
      "parameters": {
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "4ZBfVX71VUd6pRy3",
          "name": "Google Sheets Angel Access"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "bc4ca090-6c51-49e8-989a-147a6e720411",
      "name": "Edit Fields1",
      "type": "n8n-nodes-base.set",
      "position": [
        1596,
        1140
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "3fb8fe8f-a5f5-4c00-a8d2-39cd3e35615e",
              "name": "output",
              "type": "string",
              "value": "Unable to parse the agent outputs"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "7b0211f3-1925-4709-b274-e8d23437bb12",
      "name": "Edit Fields2",
      "type": "n8n-nodes-base.set",
      "position": [
        340,
        1890
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "3fb8fe8f-a5f5-4c00-a8d2-39cd3e35615e",
              "name": "output",
              "type": "string",
              "value": "Unable to parse the file data"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8b178bfb-ff80-4600-b6e2-1fe252c11f45",
      "name": "Edit Fields3",
      "type": "n8n-nodes-base.set",
      "position": [
        1816,
        940
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "3fb8fe8f-a5f5-4c00-a8d2-39cd3e35615e",
              "name": "output",
              "type": "string",
              "value": "=Name: {{ $json.output.name }}\nEmail: {{ $json.output.email }}\nSkills: {{ $json.output.skills }}\nEducation: {{ $json.output.education }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "5d4372fc-d63b-49d2-a2b6-70fd194ba550",
      "name": "Extract from CSV",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        340,
        340
      ],
      "parameters": {
        "options": {},
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "2eb2d95e-5453-47ad-a548-dbeaa32e3dbb",
      "name": "Extract from HTML",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        560,
        540
      ],
      "parameters": {
        "options": {},
        "operation": "html",
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "45c74d33-e46b-43ca-a71f-e16aa28910a2",
      "name": "Extract from ODS",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        560,
        740
      ],
      "parameters": {
        "options": {},
        "operation": "ods",
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "a2bf9dbe-94d0-4432-b8cc-5db69451e013",
      "name": "Extract from PDF",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        560,
        940
      ],
      "parameters": {
        "options": {},
        "operation": "pdf",
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "1bc7dbd2-1ce0-4244-8454-29eeb7b5fb64",
      "name": "Extract from RTF",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        560,
        1140
      ],
      "parameters": {
        "options": {},
        "operation": "rtf",
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "279cc40d-373a-48e3-9f53-4498d0181302",
      "name": "Extract from TXT",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        560,
        1340
      ],
      "parameters": {
        "options": {},
        "operation": "text",
        "destinationKey": "text",
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "7aa0c6f1-2630-4e0d-90e8-cd0d060327b2",
      "name": "Extract from XLS",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        560,
        1740
      ],
      "parameters": {
        "options": {},
        "operation": "xls",
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "f65cf46c-3482-4757-a087-3f48cb19c30b",
      "name": "Extract from XML",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        560,
        1540
      ],
      "parameters": {
        "options": {},
        "operation": "xml",
        "destinationKey": "text",
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "209e973c-a4ac-49bc-b977-90f2d1de487c",
      "name": "Agréger",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        560,
        340
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "text"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "Switch": {
      "main": [
        [
          {
            "node": "5d4372fc-d63b-49d2-a2b6-70fd194ba550",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "2eb2d95e-5453-47ad-a548-dbeaa32e3dbb",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "45c74d33-e46b-43ca-a71f-e16aa28910a2",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "a2bf9dbe-94d0-4432-b8cc-5db69451e013",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "1bc7dbd2-1ce0-4244-8454-29eeb7b5fb64",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "279cc40d-373a-48e3-9f53-4498d0181302",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "f65cf46c-3482-4757-a087-3f48cb19c30b",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "7aa0c6f1-2630-4e0d-90e8-cd0d060327b2",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "7b0211f3-1925-4709-b274-e8d23437bb12",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent1": {
      "main": [
        [
          {
            "node": "42d5ebda-7d49-40ef-8c44-2fa57ec68f3e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "e16c87a4-86d0-4878-96bb-a0228ca621b0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e16c87a4-86d0-4878-96bb-a0228ca621b0": {
      "main": [
        [
          {
            "node": "AI Agent1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1235bbab-c227-4054-b8ce-007f39a805f5": {
      "main": [
        [
          {
            "node": "8b178bfb-ff80-4600-b6e2-1fe252c11f45",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "42d5ebda-7d49-40ef-8c44-2fa57ec68f3e": {
      "main": [
        [
          {
            "node": "1235bbab-c227-4054-b8ce-007f39a805f5",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "bc4ca090-6c51-49e8-989a-147a6e720411",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5d4372fc-d63b-49d2-a2b6-70fd194ba550": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "45c74d33-e46b-43ca-a71f-e16aa28910a2": {
      "main": [
        [
          {
            "node": "e16c87a4-86d0-4878-96bb-a0228ca621b0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a2bf9dbe-94d0-4432-b8cc-5db69451e013": {
      "main": [
        [
          {
            "node": "e16c87a4-86d0-4878-96bb-a0228ca621b0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1bc7dbd2-1ce0-4244-8454-29eeb7b5fb64": {
      "main": [
        [
          {
            "node": "e16c87a4-86d0-4878-96bb-a0228ca621b0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "279cc40d-373a-48e3-9f53-4498d0181302": {
      "main": [
        [
          {
            "node": "e16c87a4-86d0-4878-96bb-a0228ca621b0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7aa0c6f1-2630-4e0d-90e8-cd0d060327b2": {
      "main": [
        [
          {
            "node": "e16c87a4-86d0-4878-96bb-a0228ca621b0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f65cf46c-3482-4757-a087-3f48cb19c30b": {
      "main": [
        [
          {
            "node": "e16c87a4-86d0-4878-96bb-a0228ca621b0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2eb2d95e-5453-47ad-a548-dbeaa32e3dbb": {
      "main": [
        [
          {
            "node": "e16c87a4-86d0-4878-96bb-a0228ca621b0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "58a42607-b1b4-43e0-884f-5a13e706edf8": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent1",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - Ressources Humaines, Résumé IA

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds20
Catégorie2
Types de nœuds9
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
Angel Menendez

Angel Menendez

@djangelic

Angel Menendez is a Staff Developer Advocate at n8n.io, specializing in low-code tools for cybersecurity workflows. From Puerto Rico, Angel's tech journey began by helping his father translate technical books. He later started a web development business and transitioned from a career as a flight attendant to cybersecurity engineering. His workflows have saved companies significant time. Outside work, Angel enjoys time with his two sons, riding electric bikes, reading, and exploring new places.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34