Planifiez, suivez et archivez automatiquement les formations et habilitations de vos équipes pour garantir leur conformité et leur montée en compétence.
Planifiez, suivez et archivez automatiquement les formations et habilitations de vos équipes pour garantir leur conformité et leur montée en compétence.
{
"nodes": [
{
"id": "79849bb5-00a4-42e6-92c4-b06c7a20eb3e",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1580,
340
],
"parameters": {
"model": "gpt-4-turbo-preview",
"options": {
"temperature": 0,
"responseFormat": "json_object"
}
},
"credentials": {
"openAiApi": {
"id": "jazew1WAaSRrjcHp",
"name": "OpenAI (workfloows@gmail.com)"
}
},
"typeVersion": 1
},
{
"id": "85df0106-1f78-4412-8751-b84d417c8bf9",
"name": "Convert education to HTML",
"type": "n8n-nodes-base.code",
"position": [
2420,
180
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "function convertToHTML(list) {n let html = '';nn list.forEach((education, index) => {n if (index > 0) {n html += '
'; // Add a new line if it's not the first itemn }n html += `Institution: ${education.institution}
nStart year: ${education.start_year}
nDegree: ${education.degree}`;n });nn return html;n}nn// Assuming payload is already definednconst payload = $input.item.json.education;nnconst htmlOutput = convertToHTML(payload);nreturn {n htmlOutputn};"
},
"typeVersion": 2
},
{
"id": "da4fc45d-712f-4171-b72a-66b74b4d8e05",
"name": "Auto-fixing Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
"position": [
1820,
340
],
"parameters": {},
"typeVersion": 1
},
{
"id": "225a7513-6fd4-4672-9b40-b10b00f121a7",
"name": "OpenAI Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1740,
520
],
"parameters": {
"options": {
"temperature": 0
}
},
"credentials": {
"openAiApi": {
"id": "jazew1WAaSRrjcHp",
"name": "OpenAI (workfloows@gmail.com)"
}
},
"typeVersion": 1
},
{
"id": "0606c99d-a080-4277-b071-1bc0c93bb2e3",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1960,
520
],
"parameters": {
"jsonSchema": "{n "type": "object",n "properties": {n "personal_info": {n "type": "object",n "properties": {n "name": { "type": "string" },n "address": { "type": "string" },n "email": { "type": "string", "format": "email" },n "github": { "type": "string"},n "linkedin": { "type": "string" }n }n },n "employment_history": {n "type": "array",n "items": {n "type": "object",n "properties": {n "position": { "type": "string" },n "company": { "type": "string" },n "duration": { "type": "string" },n "responsibilities": {n "type": "array",n "items": { "type": "string" }n }n }n }n },n "education": {n "type": "array",n "items": {n "type": "object",n "properties": {n "institution": { "type": "string" },n "start_year": { "type": "integer" },n "degree": { "type": "string" }n }n }n },n "projects": {n "type": "array",n "items": {n "type": "object",n "properties": {n "name": { "type": "string" },n "year": { "type": "integer" },n "description": { "type": "string" },n "technologies": {n "type": "array",n "items": { "type": "string" }n }n }n }n },n "volunteering": {n "type": "array",n "items": {n "type": "object",n "properties": {n "activity": { "type": "string" },n "location": { "type": "string" },n "date": { "type": "string" },n "description": { "type": "string" }n }n }n },n "programming_languages": {n "type": "object",n "properties": {n "languages": {n "type": "array",n "items": { "type": "string" }n },n "tools": {n "type": "array",n "items": { "type": "string" }n },n "methodologies": {n "type": "array",n "items": { "type": "string" }n }n }n },n "foreign_languages": {n "type": "array",n "items": {n "type": "object",n "properties": {n "language": { "type": "string" },n "level": { "type": "string" }n }n }n }n }n}n"
},
"typeVersion": 1
},
{
"id": "027975cd-768a-4048-858d-9060f48ab622",
"name": "Convert employment history to HTML",
"type": "n8n-nodes-base.code",
"position": [
2420,
-20
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "function convertToHTML(list) {n let html = '';nn list.forEach((item, index) => {n if (index > 0) {n html += '
'; // Add a new line if it's not the first itemn }n html += `Position: ${item.position}nCompany: ${item.company}n
nDuration: ${item.duration}n
nResponsibilities:n`;nn item.responsibilities.forEach((responsibility, i) => {n html += `- ${responsibility}`;n if (i < item.responsibilities.length - 1 || index < list.length - 1) {n html += '
'; // Add new line if it's not the last responsibility in the last itemn }n });n });nn return html;n}nn// Assuming payload is already definednconst payload = $input.item.json.employment_history;nnconst htmlOutput = convertToHTML(payload);nreturn {n htmlOutputn};"
},
"typeVersion": 2
},
{
"id": "823a241d-1c68-40a9-8f2c-f1bdfaab7603",
"name": "Convert projects to HTML",
"type": "n8n-nodes-base.code",
"position": [
2420,
380
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "function convertToHTML(list) {n let html = '';nn list.forEach((project, index) => {n if (index > 0) {n html += '
'; // Add a new line if it's not the first projectn }n html += `Name: ${project.name}
nYear: ${project.year}
nDescription: ${project.description}
nTechnologies:n
`;nn project.technologies.forEach((technology, i) => {n html += `- ${technology}`;n if (i < project.technologies.length - 1 || index < list.length - 1) {n html += '
'; // Add new line if it's not the last technology in the last projectn }n });n });nn return html;n}nn// Assuming payload is already definednconst payload = $input.item.json.projects;nnconst htmlOutput = convertToHTML(payload);nreturn {n htmlOutputn};n"
},
"typeVersion": 2
},
{
"id": "a12eb0e1-1cb9-4b83-a1ec-42dd8214f6bc",
"name": "Convert volunteering to HTML",
"type": "n8n-nodes-base.code",
"position": [
2420,
580
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "function convertToHTML(list) {n let html = '';nn list.forEach((event, index) => {n if (index > 0) {n html += '
'; // Add a new line if it's not the first volunteering eventn }n html += `Activity: ${event.activity}
nLocation: ${event.location}
nDate: ${event.date}
nDescription: ${event.description}
`;n });nn return html;n}nn// Assuming payload is already definednconst payload = $input.item.json.volunteering;nnconst htmlOutput = convertToHTML(payload);nreturn {n htmlOutputn};n"
},
"typeVersion": 2
},
{
"id": "70b67b80-d22d-4eea-8c97-3d2cb2b9bbfc",
"name": "Telegram trigger",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
360,
340
],
"webhookId": "d6829a55-a01b-44ac-bad3-2349324c8515",
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "lStLV4zzcrQO9eAM",
"name": "Telegram (Resume Extractor)"
}
},
"typeVersion": 1.1
},
{
"id": "21bead1d-0665-44d5-b623-b0403c9abd6c",
"name": "Auth",
"type": "n8n-nodes-base.if",
"position": [
600,
340
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "7ca4b4c3-e23b-4896-a823-efc85c419467",
"operator": {
"type": "number",
"operation": "equals"
},
"leftValue": "={{ $json.message.chat.id }}",
"rightValue": 0
}
]
}
},
"typeVersion": 2
},
{
"id": "de76d6ec-3b0e-44e0-943d-55547aac2e46",
"name": "No operation (unauthorized)",
"type": "n8n-nodes-base.noOp",
"position": [
860,
520
],
"parameters": {},
"typeVersion": 1
},
{
"id": "439f5e2c-be7d-486b-a1f1-13b09f77c2c8",
"name": "Check if start message",
"type": "n8n-nodes-base.if",
"position": [
860,
220
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "1031f14f-9793-488d-bb6b-a021f943a399",
"operator": {
"type": "string",
"operation": "notEquals"
},
"leftValue": "={{ $json.message.text }}",
"rightValue": "/start"
}
]
}
},
"typeVersion": 2
},
{
"id": "af5f5622-c338-40c0-af72-90e124ed7ce1",
"name": "No operation (start message)",
"type": "n8n-nodes-base.noOp",
"position": [
1120,
360
],
"parameters": {},
"typeVersion": 1
},
{
"id": "2efae11a-376b-44aa-ab91-9b3dea82ede0",
"name": "Get file",
"type": "n8n-nodes-base.telegram",
"position": [
1120,
120
],
"parameters": {
"fileId": "={{ $json.message.document.file_id }}",
"resource": "file"
},
"credentials": {
"telegramApi": {
"id": "lStLV4zzcrQO9eAM",
"name": "Telegram (Resume Extractor)"
}
},
"typeVersion": 1.1
},
{
"id": "88fd1002-ad2c-445f-92d4-11b571db3788",
"name": "Extract text from PDF",
"type": "n8n-nodes-base.extractFromFile",
"position": [
1380,
120
],
"parameters": {
"options": {},
"operation": "pdf"
},
"typeVersion": 1
},
{
"id": "9dfc204b-c567-418a-93a3-9b72cf534a8c",
"name": "Set parsed fileds",
"type": "n8n-nodes-base.set",
"position": [
2040,
120
],
"parameters": {
"options": {}
},
"typeVersion": 3.2
},
{
"id": "314c771a-5ff2-484f-823b-0eab88f43ea3",
"name": "Personal info",
"type": "n8n-nodes-base.set",
"position": [
2420,
-380
],
"parameters": {
"fields": {
"values": [
{
"name": "personal_info",
"stringValue": "=Personal infon
nName: {{ $json.personal_info.name }}n
nAddress: {{ $json.personal_info.address }}n
nEmail: {{ $json.personal_info.email }}n
nGitHub: {{ $json.personal_info.github }}n
"
}
]
},
"include": "none",
"options": {}
},
"typeVersion": 3.2
},
{
"id": "be6b32e8-6000-4235-a723-0e22828ead45",
"name": "Technologies",
"type": "n8n-nodes-base.set",
"position": [
2420,
-200
],
"parameters": {
"fields": {
"values": [
{
"name": "technologies",
"stringValue": "=Technologiesn
nProgramming languages: {{ $json.programming_languages.languages.join(', ') }}n
nTools: {{ $json.programming_languages.tools.join(', ') }}n
nMethodologies: {{ $json.programming_languages.methodologies.join(', ') }}n
"
}
]
},
"include": "none",
"options": {}
},
"typeVersion": 3.2
},
{
"id": "ab726d61-84b8-4af7-a195-33e1add89153",
"name": "Employment history",
"type": "n8n-nodes-base.set",
"position": [
2640,
-20
],
"parameters": {
"fields": {
"values": [
{
"name": "employment_history",
"stringValue": "=Employment historyn
n{{ $json["htmlOutput"] }}"
}
]
},
"include": "none",
"options": {}
},
"typeVersion": 3.2
},
{
"id": "692f9555-6102-4d3c-b0a1-868e27e3c343",
"name": "Education",
"type": "n8n-nodes-base.set",
"position": [
2640,
180
],
"parameters": {
"fields": {
"values": [
{
"name": "education",
"stringValue": "=Educationn
n{{ $json["htmlOutput"] }}"
}
]
},
"include": "none",
"options": {}
},
"typeVersion": 3.2
},
{
"id": "258728f2-1f03-4786-8197-feb9f1bc4dfe",
"name": "Projects",
"type": "n8n-nodes-base.set",
"position": [
2640,
380
],
"parameters": {
"fields": {
"values": [
{
"name": "projects",
"stringValue": "=Projectsn
n{{ $json["htmlOutput"] }}"
}
]
},
"include": "none",
"options": {}
},
"typeVersion": 3.2
},
{
"id": "3c819ce4-235a-4b12-a396-d33dca9f80da",
"name": "Volunteering",
"type": "n8n-nodes-base.set",
"position": [
2640,
580
],
"parameters": {
"fields": {
"values": [
{
"name": "volunteering",
"stringValue": "=Volunteeringn
n{{ $json["htmlOutput"] }}"
}
]
},
"include": "none",
"options": {}
},
"typeVersion": 3.2
},
{
"id": "41bd7506-7330-4c25-8b43-aa3c836736fc",
"name": "Merge education and employment history",
"type": "n8n-nodes-base.merge",
"position": [
2880,
100
],
"parameters": {
"mode": "combine",
"options": {},
"combinationMode": "multiplex"
},
"typeVersion": 2.1
},
{
"id": "d788da36-360b-4009-82ad-2f206fad8e53",
"name": "Merge projects and volunteering",
"type": "n8n-nodes-base.merge",
"position": [
2880,
500
],
"parameters": {
"mode": "combine",
"options": {},
"combinationMode": "multiplex"
},
"typeVersion": 2.1
},
{
"id": "57c20e19-3d84-41c0-a415-1d55cb031da1",
"name": "Merge personal info and technologies",
"type": "n8n-nodes-base.merge",
"position": [
3140,
-160
],
"parameters": {
"mode": "combine",
"options": {},
"combinationMode": "multiplex"
},
"typeVersion": 2.1
},
{
"id": "f12be010-8375-4ff7-ba8e-9c2c870f648b",
"name": "Merge all",
"type": "n8n-nodes-base.merge",
"position": [
3400,
200
],
"parameters": {
"mode": "combine",
"options": {},
"combinationMode": "multiplex"
},
"typeVersion": 2.1
},
{
"id": "d6428167-2c75-42a5-a905-7590ff1d6a25",
"name": "Set final data",
"type": "n8n-nodes-base.set",
"position": [
3620,
200
],
"parameters": {
"fields": {
"values": [
{
"name": "output",
"stringValue": "={{ $json.personal_info }}n
n{{ $json.employment_history }}n
n{{ $json.education }}n
n{{ $json.projects }}n
n{{ $json.volunteering }}n
n{{ $json.technologies }}"
}
]
},
"include": "none",
"options": {}
},
"typeVersion": 3.2
},
{
"id": "9ea13c62-2e09-4b37-b889-66edaef1fcf1",
"name": "Convert raw to base64",
"type": "n8n-nodes-base.code",
"position": [
3840,
200
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const encoded = Buffer.from($json.output).toString('base64');nnreturn { encoded };"
},
"typeVersion": 2
},
{
"id": "c4474fa1-b1b5-432f-b30e-100201c9ec7c",
"name": "Convert to HTML",
"type": "n8n-nodes-base.convertToFile",
"position": [
4060,
200
],
"parameters": {
"options": {
"fileName": "index.html",
"mimeType": "text/html"
},
"operation": "toBinary",
"sourceProperty": "encoded"
},
"typeVersion": 1.1
},
{
"id": "3c4d2010-1bdc-4f01-bb1a-bd0128017787",
"name": "Generate plain PDF doc",
"type": "n8n-nodes-base.httpRequest",
"position": [
4340,
200
],
"parameters": {
"url": "http://gotenberg:3000/forms/chromium/convert/html",
"method": "POST",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
},
"sendBody": true,
"contentType": "multipart-form-data",
"bodyParameters": {
"parameters": [
{
"name": "files",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
}
},
"typeVersion": 4.1
},
{
"id": "2b3cd55f-21a3-4c14-905f-82b158aa3fd0",
"name": "Send PDF to the user",
"type": "n8n-nodes-base.telegram",
"position": [
4640,
200
],
"parameters": {
"chatId": "={{ $('Telegram trigger').item.json["message"]["chat"]["id"] }}",
"operation": "sendDocument",
"binaryData": true,
"additionalFields": {
"fileName": "={{ $('Set parsed fileds').item.json["personal_info"]["name"].toLowerCase().replace(' ', '-') }}.pdf"
}
},
"credentials": {
"telegramApi": {
"id": "lStLV4zzcrQO9eAM",
"name": "Telegram (Resume Extractor)"
}
},
"typeVersion": 1.1
},
{
"id": "54fe1d2d-eb9d-4fe1-883f-1826e27ac873",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
540,
180
],
"parameters": {
"width": 226.21234567901217,
"height": 312.917333333334,
"content": "### Add chat IDnRemember to set your actual ID to trigger automation from Telegram."
},
"typeVersion": 1
},
{
"id": "b193a904-260b-4d45-8a66-e3cb46fc7ce4",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
800,
83.43940740740783
],
"parameters": {
"width": 229.64938271604922,
"height": 293.54824691358016,
"content": "### Ignore start messagenWorkflow ignores initial`/start` message sent to the bot."
},
"typeVersion": 1
},
{
"id": "d5c95d8f-b699-4a8e-9460-a4f5856b5e6f",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1066,
-20
],
"parameters": {
"width": 211.00246913580224,
"height": 302.41975308642,
"content": "### Download resume filenBased on file ID, node performs downloading of the file uploaded by user."
},
"typeVersion": 1
},
{
"id": "2de0751d-8e11-457e-8c38-a6dcca59190c",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1320,
-20
],
"parameters": {
"width": 217.87654320987633,
"height": 302.41975308642,
"content": "### Extract text from PDFnNode extracts readable text form PDF."
},
"typeVersion": 1
},
{
"id": "4b9ccab8-ff6c-408f-93fe-f148034860a0",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1580,
-20
],
"parameters": {
"width": 410.9479506172837,
"height": 302.41975308642,
"content": "### Parse resume datanCreate structured data from text extracted from resume. Chain uses OpenAI `gpt-4-turbo-preview` model and JSON response mode. **Adjust JSON schema in output parser to your needs.**"
},
"typeVersion": 1
},
{
"id": "bfb1d382-90fa-4bff-8c38-04e53bcf5f58",
"name": "Parse resume data",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
1660,
120
],
"parameters": {
"prompt": "={{ $json.text }}",
"messages": {
"messageValues": [
{
"message": "Your task is to extract all necessary data such as first name, last name, experience, known technologies etc. from the provided resume text and return in well-unified JSON format. Do not make things up."
}
]
}
},
"typeVersion": 1.3
},
{
"id": "7e8eb10a-f21c-4a9c-90b1-b71537b78356",
"name": "Merge other data",
"type": "n8n-nodes-base.merge",
"position": [
3140,
340
],
"parameters": {
"mode": "combine",
"options": {},
"combinationMode": "multiplex"
},
"typeVersion": 2.1
},
{
"id": "7c4398de-7b4d-4095-b38f-eaf099d2991b",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
2340,
-491.4074074074074
],
"parameters": {
"width": 1196.8442469135782,
"height": 1260.345679012346,
"content": "### Format HTMLnFormat HTML for each resume section (employment history, projects etc.)."
},
"typeVersion": 1
},
{
"id": "9de2f504-6ff0-4b00-8e0d-436c789b4e23",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
3580,
40
],
"parameters": {
"width": 638.6516543209876,
"height": 322.5837037037037,
"content": "### Create HTML filenFrom formatted output create `index.html` file in order to run PDF conversion."
},
"typeVersion": 1
},
{
"id": "11abdff5-377e-490d-9136-15c24ff6a05e",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
4260,
39.83604938271645
],
"parameters": {
"color": 3,
"width": 262.0096790123454,
"height": 322.5837037037035,
"content": "### Convert file to PDFnForm `index.html` create PDF using [Gotenberg](https://gotenberg.dev/). If you're not familiar with this software, feel free to check out [my tutorial on YouTube](https://youtu.be/bo15xdjXf1Y?si=hFZMTfjzfSOLOLPK)."
},
"typeVersion": 1
},
{
"id": "73fb81d0-5218-4311-aaec-7fa259d8cbd3",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
4560,
40
],
"parameters": {
"width": 262.0096790123454,
"height": 322.5837037037035,
"content": "### Send PDF file to usernDeliver converted PDF to Telegram user (based on chat ID)."
},
"typeVersion": 1
},
{
"id": "bb5fa375-4cc9-4559-a014-7b618d6c5f32",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
-280,
128
],
"parameters": {
"width": 432.69769500990674,
"height": 364.2150828344463,
"content": "## u26a0ufe0f NotennThis is *resume extractor* workflow that I had a pleasure to present during [n8n community hangout](https://youtu.be/eZacuxrhCuo?si=KkJQrgQuvLxj-6FM&t=1701n) on March 7, 2024.nn1. Remember to add your credentials and configure nodes.n2. This node requires installed [Gotenberg](https://gotenberg.dev/) for PDF generation. If you're not familiar with this software, feel free to check out [my tutorial on YouTube](https://youtu.be/bo15xdjXf1Y?si=hFZMTfjzfSOLOLPK). If you don't want to self-host Gotenberg, you use other PDF generation provider (PDFMonkey, ApiTemplate or similar).n3. If you like this workflow, please subscribe to [my YouTube channel](https://www.youtube.com/@workfloows) and/or [my newsletter](https://workfloows.com/).nn**Thank you for your support!**"
},
"typeVersion": 1
}
],
"connections": {
"Auth": {
"main": [
[
{
"node": "Check if start message",
"type": "main",
"index": 0
}
],
[
{
"node": "No operation (unauthorized)",
"type": "main",
"index": 0
}
]
]
},
"Get file": {
"main": [
[
{
"node": "Extract text from PDF",
"type": "main",
"index": 0
}
]
]
},
"Projects": {
"main": [
[
{
"node": "Merge projects and volunteering",
"type": "main",
"index": 0
}
]
]
},
"Education": {
"main": [
[
{
"node": "Merge education and employment history",
"type": "main",
"index": 1
}
]
]
},
"Merge all": {
"main": [
[
{
"node": "Set final data",
"type": "main",
"index": 0
}
]
]
},
"Technologies": {
"main": [
[
{
"node": "Merge personal info and technologies",
"type": "main",
"index": 1
}
]
]
},
"Volunteering": {
"main": [
[
{
"node": "Merge projects and volunteering",
"type": "main",
"index": 1
}
]
]
},
"Personal info": {
"main": [
[
{
"node": "Merge personal info and technologies",
"type": "main",
"index": 0
}
]
]
},
"Set final data": {
"main": [
[
{
"node": "Convert raw to base64",
"type": "main",
"index": 0
}
]
]
},
"Convert to HTML": {
"main": [
[
{
"node": "Generate plain PDF doc",
"type": "main",
"index": 0
}
]
]
},
"Merge other data": {
"main": [
[
{
"node": "Merge all",
"type": "main",
"index": 1
}
]
]
},
"Telegram trigger": {
"main": [
[
{
"node": "Auth",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Parse resume data",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Parse resume data": {
"main": [
[
{
"node": "Set parsed fileds",
"type": "main",
"index": 0
}
]
]
},
"Set parsed fileds": {
"main": [
[
{
"node": "Convert employment history to HTML",
"type": "main",
"index": 0
},
{
"node": "Convert education to HTML",
"type": "main",
"index": 0
},
{
"node": "Convert projects to HTML",
"type": "main",
"index": 0
},
{
"node": "Personal info",
"type": "main",
"index": 0
},
{
"node": "Convert volunteering to HTML",
"type": "main",
"index": 0
},
{
"node": "Technologies",
"type": "main",
"index": 0
}
]
]
},
"Employment history": {
"main": [
[
{
"node": "Merge education and employment history",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Convert raw to base64": {
"main": [
[
{
"node": "Convert to HTML",
"type": "main",
"index": 0
}
]
]
},
"Extract text from PDF": {
"main": [
[
{
"node": "Parse resume data",
"type": "main",
"index": 0
}
]
]
},
"Check if start message": {
"main": [
[
{
"node": "Get file",
"type": "main",
"index": 0
}
],
[
{
"node": "No operation (start message)",
"type": "main",
"index": 0
}
]
]
},
"Generate plain PDF doc": {
"main": [
[
{
"node": "Send PDF to the user",
"type": "main",
"index": 0
}
]
]
},
"Convert projects to HTML": {
"main": [
[
{
"node": "Projects",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Auto-fixing Output Parser": {
"ai_outputParser": [
[
{
"node": "Parse resume data",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Convert education to HTML": {
"main": [
[
{
"node": "Education",
"type": "main",
"index": 0
}
]
]
},
"Convert volunteering to HTML": {
"main": [
[
{
"node": "Volunteering",
"type": "main",
"index": 0
}
]
]
},
"Merge projects and volunteering": {
"main": [
[
{
"node": "Merge other data",
"type": "main",
"index": 1
}
]
]
},
"Convert employment history to HTML": {
"main": [
[
{
"node": "Employment history",
"type": "main",
"index": 0
}
]
]
},
"Merge personal info and technologies": {
"main": [
[
{
"node": "Merge all",
"type": "main",
"index": 0
}
]
]
},
"Merge education and employment history": {
"main": [
[
{
"node": "Merge other data",
"type": "main",
"index": 0
}
]
]
}
}
}