{
  "nodes": [
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4.1-mini",
          "mode": "list",
          "cachedResultName": "gpt-4.1-mini"
        },
        "options": {
          "temperature": 0.1
        }
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        2560,
        736
      ],
      "id": "fa5b7398-13bc-4f03-ac21-f0286f815d0b",
      "name": "OpenAI Chat Model3",
      "credentials": {
        "openAiApi": {
          "id": "6jBwrqnmjVwo4XzG",
          "name": "OpenAI n8n_prod_std"
        }
      }
    },
    {
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"summary\": \"\",\n  \"matched_requirements\": [],\n  \"missing_requirements\": [],\n  \"strengths\": [],\n  \"weaknesses\": [],\n  \"fit_score\": 0\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.2,
      "position": [
        3664,
        416
      ],
      "id": "31c153b2-f1c0-46d3-b6ed-0e9dd73018f3",
      "name": "Structured Output Parser3"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4.1-mini",
          "mode": "list",
          "cachedResultName": "gpt-4.1-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        3472,
        416
      ],
      "id": "d7a22431-4305-4074-8f0c-fbe3673cc538",
      "name": "OpenAI Chat Model4",
      "credentials": {
        "openAiApi": {
          "id": "6jBwrqnmjVwo4XzG",
          "name": "OpenAI n8n_prod_std"
        }
      }
    },
    {
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"name\": \"\",\n  \"phone_number\": \"\",\n  \"city\": \"\",\n  \"email\": \"\",\n  \"related_link\":\"\",\n  \"education\": \"\",\n  \"employment_history\": \"\"\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.2,
      "position": [
        3472,
        928
      ],
      "id": "005548f6-aa35-4194-a8fc-1ff04db5a86d",
      "name": "Structured Output Parser4"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4o-mini",
          "mode": "list",
          "cachedResultName": "gpt-4o-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        3296,
        928
      ],
      "id": "69e2ed58-d6b2-4642-b282-5799b03a781d",
      "name": "OpenAI Chat Model5",
      "credentials": {
        "openAiApi": {
          "id": "6jBwrqnmjVwo4XzG",
          "name": "OpenAI n8n_prod_std"
        }
      }
    },
    {
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"personal_info\": {\n    \"full_name\": \"\",\n    \"phone\": \"\",\n    \"email\": \"\",\n    \"github\": \"\",\n    \"linkedin\": \"\"\n  },\n  \"total_years_experience\": 0.0,\n  \"education\": [],\n  \"employment_history\": [],\n  \"personal_projects\": []\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.2,
      "position": [
        2768,
        736
      ],
      "id": "0c6c3966-8a82-43a2-87c6-59979588022f",
      "name": "Structured Output Parser5"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Based on this job description:\n\n```\n{{ $json.job_description }}\n```\n\nhow well do you think this profile would match that said job description:\n\n```\n{{ $json.profile }}\n```",
        "hasOutputParser": true,
        "messages": {
          "messageValues": [
            {
              "message": "={{ $json.promt }}"
            }
          ]
        }
      },
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "typeVersion": 1.5,
      "position": [
        3488,
        240
      ],
      "id": "93def98e-2e40-4fac-849a-b6774ea3a11e",
      "name": "So sánh Kinh nghiệm vs JD1"
    },
    {
      "parameters": {
        "aggregate": "aggregateAllItemData",
        "options": {}
      },
      "type": "n8n-nodes-base.aggregate",
      "typeVersion": 1,
      "position": [
        1488,
        544
      ],
      "id": "e895c1d8-c541-4f9c-a52d-fafa6e475c23",
      "name": "Aggregate"
    },
    {
      "parameters": {
        "operation": "executeQuery",
        "query": "SELECT \n\tcount(id)\nFROM n8n_prod.public.execution_entity\nWHERE `\"workflowId\"` = '34duOc0vu4IOKoMV'\nAND status = 'running'",
        "options": {}
      },
      "type": "n8n-nodes-base.mySql",
      "typeVersion": 2.5,
      "position": [
        -400,
        576
      ],
      "id": "0483eba1-596d-485c-a187-146bb30ebf0b",
      "name": "get_running_flow_id",
      "credentials": {
        "mySql": {
          "id": "RX2wv9U4dBXSSCtb",
          "name": "Data Lakehouse n8n acc"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "777720c3-ebde-4cb0-8f95-9ba738eab17c",
              "leftValue": "={{ $json['count(id)'] }}",
              "rightValue": 2,
              "operator": {
                "type": "number",
                "operation": "lt"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        -192,
        576
      ],
      "id": "85d453f8-e4cc-42a4-9f1b-7268b6d3bf1d",
      "name": "If2"
    },
    {
      "parameters": {
        "content": "Action: Tạo lịch chạy workflow tự động\n- Thời gian: 15 giây\n- Giải thích: Mỗi 15 giây tự động quét folder quản lý CV\n\n",
        "height": 400,
        "width": 208
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -672,
        336
      ],
      "id": "e4b2ee88-83bb-4c30-9a54-48dd12b90365",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "Action: Lấy ra ID instance của wf đang chạy",
        "height": 400,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -448,
        336
      ],
      "id": "a0ec6090-52a8-4471-b3f6-9affb952a481",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "Action: Check workflow đang chạy, nếu ID instance của wf có status = running>=2 thì không chạy tiếp\n- Nếu count(id) < 2 → Tiếp tục chạy\n- Nếu count(id) >= 2 → Dừng (đã có instance khác đang chạy)",
        "height": 400,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -240,
        336
      ],
      "id": "8bd3060d-8e4a-422f-8a66-d2427b8d1ddd",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "content": "Action: Tìm folder theo vị trí trên Google Drive",
        "height": 400,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -32,
        336
      ],
      "id": "bfc922c1-d547-48d3-b4a9-aac38f7a53b2",
      "name": "Sticky Note3"
    },
    {
      "parameters": {
        "content": "Action: Lấy thông tin Job Description từ Google Sheet từ sheet Quản lý JD trong file Google Sheets Quản lý kết quả đánh giá CV.",
        "height": 400,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        176,
        336
      ],
      "id": "15e41e9b-0bc4-4754-aaec-908cef03fde1",
      "name": "Sticky Note4"
    },
    {
      "parameters": {
        "content": "Action: Kiểm tra folder name có khớp với position trong sheet quản lý JD không.\n- Folder name = Position\n-> Xử lý tiếp\n- Folder name ≠ Position \n-> Dừng\n",
        "height": 400,
        "width": 208
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        384,
        336
      ],
      "id": "344e7e88-b877-478b-895b-466d6a21f096",
      "name": "Sticky Note5"
    },
    {
      "parameters": {
        "content": "Action: Cập nhật thông tin folder vào Sheet quản lý JD",
        "height": 400,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        608,
        336
      ],
      "id": "cb558034-0ad4-4568-9cca-2e003e39bb6b",
      "name": "Sticky Note6"
    },
    {
      "parameters": {
        "content": "Action: Quét tất cả CV files trong folder vị trí",
        "height": 400,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1024,
        336
      ],
      "id": "05b8962e-adf8-4d9f-aac1-9df21730a8c7",
      "name": "Sticky Note7"
    },
    {
      "parameters": {
        "content": "Action: Thêm thông tin CV mới vào Sheet quản lý link CV.",
        "height": 384,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1232,
        336
      ],
      "id": "0ee93085-a681-4d1a-b681-9d5288799703",
      "name": "Sticky Note8"
    },
    {
      "parameters": {
        "content": "Action: Gom nhiều CV thành 1 batch xử lý",
        "height": 384,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1440,
        336
      ],
      "id": "6e2b072b-ce86-4983-911d-d92f5fca94fe",
      "name": "Sticky Note9"
    },
    {
      "parameters": {
        "content": "Action: Đọc sheet Quản lý link CV ứng viên",
        "height": 384,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1648,
        336
      ],
      "id": "b00bbc52-9c01-4dc0-87ea-c48af5f0216a",
      "name": "Sticky Note10"
    },
    {
      "parameters": {
        "content": "Action:  Lấy CV cần xử lý từ Sheet quản lý bằng cách lọc ra các CV có Status rỗng.\n- Status is empty \n-> Xử lý tiếp\n- Status =  \"Đã xử lý\" -> Dừng\n",
        "height": 384,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1856,
        336
      ],
      "id": "2821e7d6-dac1-493c-aaf9-964c45c6ca8f",
      "name": "Sticky Note11"
    },
    {
      "parameters": {
        "content": "Action: Tải file CV từ Google Drive về server n8n.",
        "height": 384,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        2064,
        336
      ],
      "id": "9fde4c96-0f7f-4f41-88a5-308941a60613",
      "name": "Sticky Note12"
    },
    {
      "parameters": {
        "content": "Action: Trích xuất nội dung text từ file CV",
        "height": 384,
        "width": 198
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        2272,
        336
      ],
      "id": "2ad53aa7-0153-484b-b4f1-e5fc4e9902cd",
      "name": "Sticky Note13"
    },
    {
      "parameters": {
        "content": "Action: AI trích xuất thông tin có cấu trúc từ CV text\n- Model: GPT-4.1-mini (temperature: 0.1 cho output ổn định)\n- System prompt: Hướng dẫn AI parse CV theo schema JSON cụ thể\n- Output JSON gồm: personal_info, total_years_experience, education, employment_history, personal_projects\n- Structured Output Parser5: Đảm bảo AI output đúng định dạng JSON",
        "height": 576,
        "width": 448
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        2544,
        304
      ],
      "id": "27bf0edc-7811-4b93-83bb-7a43f5e3117d",
      "name": "Sticky Note14"
    },
    {
      "parameters": {
        "content": "Action: Chuẩn bị JD và prompt cho AI đánh giá",
        "height": 336,
        "width": 208
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        3200,
        80
      ],
      "id": "6de1efc2-fc52-400e-bb17-b05d85f3fb08",
      "name": "Sticky Note15"
    },
    {
      "parameters": {
        "content": "Action: AI đánh giá độ phù hợp giữa CV và JD\n- Input: profile (CV info) + job_description\n- Prompt: Lấy từ cột \"Prompt\" trong Sheet (cho flexibility)\n- Output: summary, matched_requirements, missing_requirements, strengths, weaknesses, fit_score",
        "height": 480,
        "width": 368
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        3424,
        64
      ],
      "id": "6d4e40a0-4dbd-428d-a166-ec56dee6191f",
      "name": "Sticky Note16"
    },
    {
      "parameters": {
        "content": "Action: AI format lại thông tin đơn giản hơn\n- Input: JSON từ Information Extractor1\n- Output JSON đơn giản: name, phone_number, city, email, related_link, education, employment_history\n- Structured Output Parser4: Đảm bảo format output đơn giản đúng schema",
        "height": 480,
        "width": 368
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        3232,
        576
      ],
      "id": "03561a9b-0a57-4a6f-b019-499ed6287d55",
      "name": "Sticky Note17"
    },
    {
      "parameters": {
        "content": "Action: Chuẩn bị data để merge",
        "height": 304,
        "width": 224
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        3616,
        608
      ],
      "id": "fe464dc1-7f60-4d4b-ad30-1e303701df09",
      "name": "Sticky Note18"
    },
    {
      "parameters": {
        "content": "Action: Kết hợp thông tin cá nhân + kết quả đánh giá.\nMerge output từ Edit Fields2 (thông tin cá nhân) và So sánh Kinh nghiệm vs JD1 (kết quả đánh giá)",
        "height": 352,
        "width": 224
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        4176,
        320
      ],
      "id": "43b66b67-72da-4e41-8fc8-4bd25e2cae25",
      "name": "Sticky Note19"
    },
    {
      "parameters": {
        "content": "Action: Format data đúng cấu trúc cột Sheet",
        "height": 352,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        4416,
        320
      ],
      "id": "94fbac77-47cc-4ef1-a7cf-e17e8523133d",
      "name": "Sticky Note20"
    },
    {
      "parameters": {
        "content": "Action: Ghi kết quả đánh giá vào Sheet kết quả.",
        "height": 352,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        4624,
        320
      ],
      "id": "4c22d5c1-66c8-44ac-91fa-94dcb00a337c",
      "name": "Sticky Note21"
    },
    {
      "parameters": {
        "content": "Action: Chỉ update status cho CV vừa xử lý xong.\n- Nếu cột Drive CV ở sheet kết quả = Link Cv ở sheet Quản lý link CV ứng viên\n-> Xử lý tiếp\n- Nếu cột Drive CV ở sheet kết quả ≠ Link Cv ở sheet Quản lý link CV ứng viên\n-> Dừng",
        "height": 432,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        4832,
        240
      ],
      "id": "d0f94dfc-66fe-47ae-a6b9-ce5415b3d66b",
      "name": "Sticky Note22"
    },
    {
      "parameters": {
        "content": "Action: Update Status = \"Đã xử lý\" đối với CV vừa có kết quả trong Sheet Quản lý link CV ứng viên",
        "height": 368,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        5040,
        304
      ],
      "id": "e201d913-7879-4093-8a9e-f8889c809e0b",
      "name": "Sticky Note23"
    },
    {
      "parameters": {
        "content": "Action: Tạo lịch chạy workflowthông báo điền Promt vào sheet Quản lý JD\n- Thời gian: 15 giây\n- Giải thích: Mỗi 15 giây tự động quét sheet Quản lý JD\n",
        "height": 352,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -576,
        1712
      ],
      "id": "1bf2a38e-4d56-4c6a-a486-7ee825962776",
      "name": "Sticky Note24",
      "disabled": true
    },
    {
      "parameters": {
        "content": "Action: Đọc sheet quản lý JD: https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit?gid=573685843#gid=573685843",
        "height": 352,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -368,
        1712
      ],
      "id": "967bc38d-9144-4353-a153-dd7e46e702cc",
      "name": "Sticky Note25",
      "disabled": true
    },
    {
      "parameters": {
        "content": "Action: Lọc ra các JD chưa có promt\nGiải thích:\n- Promt is empty -> Xử lý tiếp\n- Promt is not empty \n-> Dừng WF",
        "height": 352,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -160,
        1712
      ],
      "id": "36bbd49e-37df-4b90-8486-fad2591dba8a",
      "name": "Sticky Note26",
      "disabled": true
    },
    {
      "parameters": {
        "content": "Action: Gửi ICA cho CMi để điền promt vào\n",
        "height": 352,
        "width": 192
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        48,
        1712
      ],
      "id": "2b63b892-dd19-4442-8d36-444c16d98261",
      "name": "Sticky Note27",
      "disabled": true
    },
    {
      "parameters": {
        "resource": "fileFolder",
        "searchMethod": "query",
        "queryString": "'1kSu5F5wO1PuY_z6XXEsrrilTu7kAmAO9' in parents and mimeType = 'application/vnd.google-apps.folder'",
        "returnAll": true,
        "filter": {
          "includeTrashed": false
        },
        "options": {
          "fields": [
            "name",
            "id",
            "webViewLink"
          ]
        }
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        16,
        560
      ],
      "id": "e785571a-ec0a-4478-bf25-e142a13051f5",
      "name": "Tìm folder theo vị trí trên Google Drive",
      "retryOnFail": true,
      "maxTries": 2,
      "waitBetweenTries": 2000,
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "cuUghpUhU296zZND",
          "name": "GG Drive HDTEX acc Data"
        }
      }
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0",
          "mode": "list",
          "cachedResultName": "Test Link quản lý kết quả - Workflow Tự động đánh giá CV",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": 573685843,
          "mode": "list",
          "cachedResultName": "Quản lý JD",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit#gid=573685843"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        16,
        816
      ],
      "id": "855b0516-6ec6-4c3e-9f71-ae0fff687bb6",
      "name": "Lấy thông tin Job Description",
      "retryOnFail": true,
      "maxTries": 2,
      "waitBetweenTries": 2000,
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "DVEh1rvgLcJkBkas",
          "name": "GG Sheets HDTex acc Data"
        }
      }
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 2
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        -608,
        576
      ],
      "id": "e9a5ba16-dd7c-4e49-8b16-0778b4831e0d",
      "name": "Lịch chạy WF tự động"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 3
          },
          "conditions": [
            {
              "id": "62239f9e-82e1-4b6d-9055-c107bacfa617",
              "leftValue": "={{ $json.Position }}",
              "rightValue": "={{ $('Tìm folder theo vị trí trên Google Drive').item.json.name }}",
              "operator": {
                "type": "string",
                "operation": "equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.3,
      "position": [
        432,
        560
      ],
      "id": "bea8f80f-c684-49ea-98ac-059071543130",
      "name": "Check folder name = position JD"
    },
    {
      "parameters": {
        "operation": "update",
        "documentId": {
          "__rl": true,
          "value": "1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0",
          "mode": "list",
          "cachedResultName": "Test Link quản lý kết quả - Workflow Tự động đánh giá CV",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": 573685843,
          "mode": "list",
          "cachedResultName": "Quản lý JD",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit#gid=573685843"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Position": "={{ $('Lấy thông tin Job Description').item.json.Position }}",
            "Folder Name": "={{ $('Tìm folder theo vị trí trên Google Drive').item.json.name }}",
            "ID folder name": "={{ $('Tìm folder theo vị trí trên Google Drive').item.json.id }}"
          },
          "matchingColumns": [
            "Position"
          ],
          "schema": [
            {
              "id": "Folder Name",
              "displayName": "Folder Name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "ID folder name",
              "displayName": "ID folder name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Position",
              "displayName": "Position",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Mô tả",
              "displayName": "Mô tả",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Prompt",
              "displayName": "Prompt",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "row_number",
              "displayName": "row_number",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "number",
              "canBeUsedToMatch": true,
              "readOnly": true,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        656,
        544
      ],
      "id": "5b6cc31d-8888-4c01-a26e-b9465b54e12d",
      "name": "Update thông tin folder vào Sheet quản lý JD",
      "retryOnFail": true,
      "maxTries": 2,
      "waitBetweenTries": 2000,
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "DVEh1rvgLcJkBkas",
          "name": "GG Sheets HDTex acc Data"
        }
      }
    },
    {
      "parameters": {
        "resource": "fileFolder",
        "searchMethod": "query",
        "queryString": "='{{ $json['ID folder name'] }}' in parents and mimeType != 'application/vnd.google-apps.folder'",
        "limit": 5,
        "filter": {
          "includeTrashed": false
        },
        "options": {
          "fields": [
            "id",
            "webViewLink",
            "name"
          ]
        }
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        1072,
        544
      ],
      "id": "920f082a-d58a-4864-9915-7ff6104e1c89",
      "name": "Quét tất cả CV files",
      "retryOnFail": true,
      "maxTries": 2,
      "waitBetweenTries": 2000,
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "cuUghpUhU296zZND",
          "name": "GG Drive HDTEX acc Data"
        }
      }
    },
    {
      "parameters": {
        "operation": "appendOrUpdate",
        "documentId": {
          "__rl": true,
          "value": "1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0",
          "mode": "list",
          "cachedResultName": "Test Link quản lý kết quả - Workflow Tự động đánh giá CV",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": 791468454,
          "mode": "list",
          "cachedResultName": "Quản lý link CV ứng viên",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit#gid=791468454"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "File name": "={{ $json.name }}",
            "Link CV": "={{ $json.webViewLink }}",
            "Folder name": "={{ $('Update thông tin folder vào Sheet quản lý JD').item.json['Folder Name'] }}",
            "Mô tả": "={{ $('Lấy thông tin Job Description').item.json[\"Mô tả\"] }}",
            "Prompt": "={{ $('Lấy thông tin Job Description').item.json.Prompt }}"
          },
          "matchingColumns": [
            "File name"
          ],
          "schema": [
            {
              "id": "File name",
              "displayName": "File name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Link CV",
              "displayName": "Link CV",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Folder name",
              "displayName": "Folder name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Mô tả",
              "displayName": "Mô tả",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Prompt",
              "displayName": "Prompt",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Status",
              "displayName": "Status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        1280,
        544
      ],
      "id": "0f3f44ea-4b89-4fdc-a162-f7a1073ab89a",
      "name": "Update CV mới vào Sheet quản lý link CV",
      "retryOnFail": false,
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "DVEh1rvgLcJkBkas",
          "name": "GG Sheets HDTex acc Data"
        }
      }
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0",
          "mode": "list",
          "cachedResultName": "Test Link quản lý kết quả - Workflow Tự động đánh giá CV",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": 791468454,
          "mode": "list",
          "cachedResultName": "Quản lý link CV ứng viên",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit#gid=791468454"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        1696,
        544
      ],
      "id": "dcc6df41-a12d-47ce-898f-ec59ab980948",
      "name": "Đọc sheet Quản lý link CV ứng viên",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "DVEh1rvgLcJkBkas",
          "name": "GG Sheets HDTex acc Data"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "91fb41fc-ab06-4b0a-93d6-5a25ad8bfe67",
              "leftValue": "={{ $json.Status }}",
              "rightValue": "",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        1904,
        544
      ],
      "id": "85c81126-a904-4bf5-9f05-70d3418582e4",
      "name": "Lấy CV cần xử lý"
    },
    {
      "parameters": {
        "operation": "download",
        "fileId": {
          "__rl": true,
          "value": "={{ $json['Link CV'] }}",
          "mode": "url"
        },
        "options": {
          "fileName": "={{ $json['File name'] }}"
        }
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        2112,
        528
      ],
      "id": "ab832dce-637f-420a-b5be-54643eb071d5",
      "name": "Tải file CV từ Google Drive về server n8n",
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "cuUghpUhU296zZND",
          "name": "GG Drive HDTEX acc Data"
        }
      }
    },
    {
      "parameters": {
        "operation": "pdf",
        "options": {}
      },
      "type": "n8n-nodes-base.extractFromFile",
      "typeVersion": 1,
      "position": [
        2320,
        528
      ],
      "id": "863b6c80-c93c-478f-b100-1bb3325ab166",
      "name": "Extract nội dung text từ file CV",
      "alwaysOutputData": true,
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Extract this text \n\n```\n{{ $json.text }}\n```",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "You are an information extractor specialized in parsing résumé data.\n\n**Input:**  \nA raw resume text.\n\n**Task:**  \nParse the text and output **exactly** one JSON object matching this schema:\n\n```json\n{\n  \"personal_info\": {\n    \"full_name\": \"\",\n    \"phone\": \"\",\n    \"email\": \"\",\n    \"github\": \"\",\n    \"linkedin\": \"\"\n  },\n  \"total_years_experience\": 0.0,\n  \"education\": [],\n  \"employment_history\": [],\n  \"personal_projects\": []\n}\n````\n\n#### Field definitions\n\n* **`personal_info`**:\n\n  * `full_name`, `phone`, `email`, `github`, `linkedin` as strings (empty if missing).\n* **`total_years_experience`**:\n\n  * Sum of all employer tenures in years, rounded to one decimal.\n* **`education`**:\n\n  * An **array** of objects, one per school/university, each with:\n\n    ```json\n    {\n      \"institution\": \"\",\n      \"degree\": \"\",\n      \"location\": \"\",\n      \"start_date\": \"\",\n      \"end_date\": \"\",\n      \"gpa\": null,\n      \"honors\": []\n    }\n    ```\n* **`employment_history`**:\n\n  * An **array** of objects, one per company, each with:\n\n    ```json\n    {\n      \"company\": \"\",\n      \"role\": \"\",\n      \"location\": \"\",\n      \"start_date\": \"\",\n      \"end_date\": \"\",\n      \"responsibilities\": [\n        {\n          \"title\": \"\",\n          \"description\": \"\",\n          \"skills\": []\n        },\n        ...\n      ]\n    }\n    ```\n* **`personal_projects`**:\n\n  * An **array** of objects, one per project, each with:\n\n    ```json\n    {\n      \"name\": \"\",\n      \"description\": \"\",\n      \"technologies\": [],\n      \"github_repo\": \"\",\n      \"stars\": null,\n      \"deployment\": \"\"\n    }\n    ```\n\n#### Instructions\n\n1. **Detect and output all** entries—do **not** limit arrays to a single element.\n2. **Fill in every field**; if data is missing, use `\"\"`, `[]`, or `null` as appropriate.\n3. Calculate `total_years_experience` by summing each company’s duration (`end_date` − `start_date`), rounding to one decimal.\n4. **Do not** add, remove, rename, or reorder any keys.\n5. Output must be strict, valid JSON matching the exact skeleton above—nothing more, nothing less.\n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.8,
      "position": [
        2592,
        528
      ],
      "id": "52a5a242-7005-46cf-a60c-91c57a7abc4c",
      "name": "AI trích xuất có cấu trúc từ CV"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Extract the key information from this json:\n\n```\n{{ JSON.stringify($('AI trích xuất có cấu trúc từ CV').item.json.output, null, 2) }}\n```",
        "hasOutputParser": true,
        "messages": {
          "messageValues": [
            {
              "message": "=Today is {{ new Date().toISOString().split('T')[0] }}. If you see the word \"present\", \"now\", \"current\" etc in the time this person works at a company, you should use today date instead of these words  You are an information extractor specialized in parsing résumé data.  **Input:**   A JSON object representing a candidate’s full resume, with keys such as `personal_info`, `education`, `employment_history`, `personal_projects`, etc.  **Task:**   Extract and transform that input into a new JSON object **exactly** matching the schema below:  ```json {   \"name\": \"\",   \"phone_number\": \"\",   \"city\": \"\",   \"email\": \"\",   \"related_links\": [],   \"education\": [],   \"employment_history\": [] } ````  where: * **`name`**: Candidate’s full name. * **`phone_number`**: Primary telephone number. * **`city`**: City where the candidate is located (from address or resume header). * **`email`**: Primary email address. * **`related_links`**: Array of all profile URLs found (e.g., LinkedIn, GitHub, Facebook, personal website). * **`education`**: Array of institution names (e.g., university or school) the candidate attended. * **`employment_history`**: Array of strings, each formatted as `\"Company Name (X years)\"`, where X is the total time the candidate spent at that company (in years, rounded to one decimal if needed).  **Instructions:**  1. Fill in each field; use empty strings (`\"\"`) or empty arrays (`[]`) if no data is available. 2. Do **not** add, remove, rename, or reorder any keys. 3. Compute each company’s tenure by subtracting `start_date` from `end_date`; round to one decimal place (e.g. `1.5 years`). 4. Output must be matching the exact skeleton above, and nothing else."
            }
          ]
        }
      },
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "typeVersion": 1.5,
      "position": [
        3312,
        752
      ],
      "id": "94da39a4-e3d5-4562-a18d-fecf77a87ea7",
      "name": "Format lại thông tin đơn giản"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "eec44f0b-3e70-46de-a503-8cae7640280f",
              "name": "profile",
              "value": "={{ JSON.stringify($json.output, null, 2) }}",
              "type": "string"
            },
            {
              "id": "85380eaa-3588-4811-8890-f11baaa50363",
              "name": "folder_name",
              "value": "={{ $('Đọc sheet Quản lý link CV ứng viên').item.json[\"Folder name\"] }}",
              "type": "string"
            },
            {
              "id": "bcdededf-76fa-436a-aa77-229b8d7b886d",
              "name": "job_description",
              "value": "={{ $('Đọc sheet Quản lý link CV ứng viên').item.json[\"Mô tả\"] }}",
              "type": "string"
            },
            {
              "id": "fdba49a5-b604-4b31-9763-85f615d613d5",
              "name": "promt",
              "value": "={{ $('Đọc sheet Quản lý link CV ứng viên').item.json.Prompt }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        3248,
        240
      ],
      "id": "0ae0b33a-168f-4c9a-95c5-b0cac2c5e496",
      "name": "JD và promt để AI đánh giá"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "7eb12ed8-06ca-4851-8571-48e2907a3ba3",
              "name": "Drive CV",
              "value": "={{ $('Đọc sheet Quản lý link CV ứng viên').item.json['Link CV'] }}",
              "type": "string"
            },
            {
              "id": "b60c9641-e64d-4a86-b81e-eda9b5381dec",
              "name": "Name",
              "value": "={{ $json.output.name }}",
              "type": "string"
            },
            {
              "id": "d797fa39-3d25-49bb-a4c6-e1be8b53cfbe",
              "name": "Phone number",
              "value": "={{ $json.output.phone_number }}",
              "type": "string"
            },
            {
              "id": "6182ebea-1dd0-47da-9925-0f79ec20339e",
              "name": "City",
              "value": "={{ $json.output.city }}",
              "type": "string"
            },
            {
              "id": "a11c9ef7-3973-47d5-8838-1fa8a584d3e5",
              "name": "Email",
              "value": "={{ $json.output.email }}",
              "type": "string"
            },
            {
              "id": "d0e04cdc-3c37-450c-92c3-73f56ec72c04",
              "name": "Education",
              "value": "={{ $json.output.education }}",
              "type": "string"
            },
            {
              "id": "b79e2972-3d36-4f8c-87cf-b420e72b0dfc",
              "name": "Employment History",
              "value": "={{ $json.output.employment_history }}",
              "type": "string"
            },
            {
              "id": "9db2d3be-3e7c-4b5f-b789-fb706ed7aeb2",
              "name": "related_links",
              "value": "={{ $json.output.related_links }}",
              "type": "string"
            },
            {
              "id": "acdc78db-f502-4473-bd3a-1425abee5e97",
              "name": "Vị trí",
              "value": "={{ $('Lấy CV cần xử lý').item.json['Folder name'] }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        3712,
        752
      ],
      "id": "1ede06e3-44e1-41fb-8a8d-662a8c893702",
      "name": "Chuẩn bị data"
    },
    {
      "parameters": {
        "mode": "combine",
        "combineBy": "combineByPosition",
        "options": {}
      },
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3,
      "position": [
        4240,
        512
      ],
      "id": "940511c4-9a8e-48bb-9401-8d77c8f90a6c",
      "name": "Gộp kết quả"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "fa99af1a-9f4f-4a2a-8937-84c8d965dbdf",
              "name": "Date",
              "value": "={{ new Date().toISOString().split('T')[0].split('-').reverse().join('-') }}",
              "type": "string"
            },
            {
              "id": "86a09b83-6efa-4fc8-ba6d-99c2b9778de2",
              "name": "Name",
              "value": "={{ $json.Name }}",
              "type": "string"
            },
            {
              "id": "6ba78489-c886-4b4b-be08-587e64c56d3e",
              "name": "Phone number",
              "value": "={{ $json['Phone number'] }}",
              "type": "string"
            },
            {
              "id": "8ea80cc2-6062-42d5-a406-4889126746fa",
              "name": "City",
              "value": "={{ $json.City }}",
              "type": "string"
            },
            {
              "id": "13f234a9-cfcf-4799-8ff7-3e4f94ebf4b7",
              "name": "Email",
              "value": "={{ $json.Email }}",
              "type": "string"
            },
            {
              "id": "22d36309-1989-463e-81be-0c02ebdc8e76",
              "name": "Related Link",
              "value": "={{ $json.related_links }}",
              "type": "string"
            },
            {
              "id": "474306e0-f011-490b-813f-e18ec6d9909a",
              "name": "Education",
              "value": "={{ $json.Education }}",
              "type": "string"
            },
            {
              "id": "faac4c67-70c3-4a4f-a31a-d57e0229d9ac",
              "name": "Employment History",
              "value": "={{ $json['Employment History'] }}",
              "type": "string"
            },
            {
              "id": "1249be26-4125-40cb-9f4a-fa4260cec623",
              "name": "Summary",
              "value": "={{ $json.output.summary }}",
              "type": "string"
            },
            {
              "id": "6f233ca7-9029-40a4-b50c-19276c198297",
              "name": "Matched Requirements",
              "value": "={{ $json[\"output\"][\"matched_requirements\"].map(item => `- ${item}`).join('\\n') }}",
              "type": "string"
            },
            {
              "id": "7f4b5ddb-7a8d-43d5-9ec5-e6a9882e583a",
              "name": "Missing Requirements",
              "value": "={{ $json[\"output\"][\"missing_requirements\"].map(item => `- ${item}`).join('\\n') }}",
              "type": "string"
            },
            {
              "id": "e0d5da5d-1680-4d4c-805b-25df8d37dced",
              "name": "Strengths",
              "value": "={{ $json[\"output\"][\"strengths\"].map(item => `- ${item}`).join('\\n') }}",
              "type": "string"
            },
            {
              "id": "aba82332-a02b-42b0-952f-9c916b7a2337",
              "name": "Weaknesses",
              "value": "={{ $json[\"output\"][\"weaknesses\"].map(item => `- ${item}`).join('\\n') }}",
              "type": "string"
            },
            {
              "id": "e4096544-b560-4c72-8704-903a19a559e5",
              "name": "Fit Score",
              "value": "={{ $json.output.fit_score }}",
              "type": "number"
            },
            {
              "id": "1b5b6d16-3e03-43df-a4d3-18111a997528",
              "name": "Drive CV",
              "value": "={{ $json.driveUrl || $json['Drive CV'] || '' }}",
              "type": "string"
            },
            {
              "id": "f23829f8-60af-4e38-b839-a7baf2abdb7e",
              "name": "Vị trí",
              "value": "={{ $json['Vị trí'] }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        4464,
        512
      ],
      "id": "9a649939-71ea-4225-a54c-2e97208568fa",
      "name": "Chuẩn hóa các trường"
    },
    {
      "parameters": {
        "operation": "appendOrUpdate",
        "documentId": {
          "__rl": true,
          "value": "1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0",
          "mode": "list",
          "cachedResultName": "Test Link quản lý kết quả - Workflow Tự động đánh giá CV",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": 712367641,
          "mode": "list",
          "cachedResultName": "Kết quả đánh giá CV",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit#gid=712367641"
        },
        "columns": {
          "mappingMode": "autoMapInputData",
          "value": {},
          "matchingColumns": [
            "Drive CV"
          ],
          "schema": [
            {
              "id": "Date",
              "displayName": "Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Name",
              "displayName": "Name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Drive CV",
              "displayName": "Drive CV",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Vị trí",
              "displayName": "Vị trí",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Phone number",
              "displayName": "Phone number",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "City",
              "displayName": "City",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "displayName": "Email",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Related Link",
              "displayName": "Related Link",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Education",
              "displayName": "Education",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Employment History",
              "displayName": "Employment History",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Summary",
              "displayName": "Summary",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Matched Requirements",
              "displayName": "Matched Requirements",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Missing Requirements",
              "displayName": "Missing Requirements",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Strengths",
              "displayName": "Strengths",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Weaknesses",
              "displayName": "Weaknesses",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Fit Score",
              "displayName": "Fit Score",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "HR Review",
              "displayName": "HR Review",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        4672,
        512
      ],
      "id": "687d3fdc-cc20-455a-9f15-0e153a572295",
      "name": "Update kết quả đánh giá",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "DVEh1rvgLcJkBkas",
          "name": "GG Sheets HDTex acc Data"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "76bce49d-7798-4180-83ae-11148e3ce847",
              "leftValue": "={{ $json[\"Drive CV\"] }}",
              "rightValue": "={{ $('Đọc sheet Quản lý link CV ứng viên').item.json['Link CV'] }}",
              "operator": {
                "type": "string",
                "operation": "equals",
                "name": "filter.operator.equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        4880,
        512
      ],
      "id": "d98975ec-ec5c-4a84-a7ce-5818a277866a",
      "name": "Lọc CV vừa xử lý xong"
    },
    {
      "parameters": {
        "operation": "update",
        "documentId": {
          "__rl": true,
          "value": "1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0",
          "mode": "list",
          "cachedResultName": "Test Link quản lý kết quả - Workflow Tự động đánh giá CV",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": 791468454,
          "mode": "list",
          "cachedResultName": "Quản lý link CV ứng viên",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit#gid=791468454"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "File name": "={{ $('Đọc sheet Quản lý link CV ứng viên').item.json[\"File name\"] }}",
            "Link CV": "={{ $('Đọc sheet Quản lý link CV ứng viên').item.json[\"Link CV\"] }}",
            "Status": "Đã xử lý"
          },
          "matchingColumns": [
            "Link CV"
          ],
          "schema": [
            {
              "id": "File name",
              "displayName": "File name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Link CV",
              "displayName": "Link CV",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Folder name",
              "displayName": "Folder name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Mô tả",
              "displayName": "Mô tả",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Prompt",
              "displayName": "Prompt",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Status",
              "displayName": "Status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "displayName": "row_number",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "number",
              "canBeUsedToMatch": true,
              "readOnly": true,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        5088,
        496
      ],
      "id": "e7aadcbf-0c2e-4335-baf0-9121930f7445",
      "name": "Update Status xử lý CV",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "DVEh1rvgLcJkBkas",
          "name": "GG Sheets HDTex acc Data"
        }
      }
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "seconds",
              "secondsInterval": 15
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.3,
      "position": [
        -528,
        1904
      ],
      "id": "1100ed35-3171-4d74-8bb6-ef112351acec",
      "name": "Lịch điền Promt",
      "disabled": true
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0",
          "mode": "list",
          "cachedResultName": "Link quản lý kết quả - Workflow Tự động đánh giá CV",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": 573685843,
          "mode": "list",
          "cachedResultName": "Quản lý JD",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit#gid=573685843"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        -320,
        1904
      ],
      "id": "f004e433-c7ca-4bae-8217-849021fb16b5",
      "name": "Đọc sheet quản lý JD",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "DVEh1rvgLcJkBkas",
          "name": "GG Sheets HDTex acc Data"
        }
      },
      "disabled": true
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 3
          },
          "conditions": [
            {
              "id": "17ae01cd-5246-48b8-95df-91429f19cf4d",
              "leftValue": "={{ $json.Prompt }}",
              "rightValue": "",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.3,
      "position": [
        -112,
        1904
      ],
      "id": "ff03dc05-73f9-4416-8a66-2666e2ba2bce",
      "name": "Lọc ra các JD chưa có promt",
      "disabled": true
    },
    {
      "parameters": {
        "channel": "#CjdTcrEB4hjhRScYH",
        "text": "@25014191 @23011451\nAnh/chị vui lòng điền Promt AI vào cột \"Promt\" của sheet \"Quản lý JD\" để chạy Workflow Tự động đánh giá CV ứng viên \nLink sheet: https://docs.google.com/spreadsheets/d/1ijEAgAqTZ3lpYQ5JYxWg18FZxTKLiF9XXunds7ryRI0/edit?gid=573685843#gid=573685843",
        "options": {},
        "attachments": []
      },
      "type": "n8n-nodes-base.rocketchat",
      "typeVersion": 1,
      "position": [
        96,
        1888
      ],
      "id": "43186b2a-549e-46e5-81d5-7125283aab23",
      "name": "Gửi ICA nhắc điền promt",
      "credentials": {
        "rocketchatApi": {
          "id": "C1LnACumKxTip42j",
          "name": "ICA (CAB)"
        }
      },
      "disabled": true
    },
    {
      "parameters": {
        "mode": "combine",
        "advanced": true,
        "mergeByFields": {
          "values": [
            {
              "field1": "name",
              "field2": "Position"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3.2,
      "position": [
        224,
        560
      ],
      "id": "23e35f6f-b8e1-4422-9325-e3ec02fd00f6",
      "name": "Merge"
    },
    {
      "parameters": {
        "amount": 15
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        864,
        544
      ],
      "id": "7763a71a-be49-4d9a-b194-e29c1bfa2d72",
      "name": "Wait",
      "webhookId": "1cf96deb-690b-44d8-b1c4-1f28d2b45987"
    }
  ],
  "connections": {
    "OpenAI Chat Model3": {
      "ai_languageModel": [
        [
          {
            "node": "AI trích xuất có cấu trúc từ CV",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser3": {
      "ai_outputParser": [
        [
          {
            "node": "So sánh Kinh nghiệm vs JD1",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model4": {
      "ai_languageModel": [
        [
          {
            "node": "So sánh Kinh nghiệm vs JD1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser4": {
      "ai_outputParser": [
        [
          {
            "node": "Format lại thông tin đơn giản",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model5": {
      "ai_languageModel": [
        [
          {
            "node": "Format lại thông tin đơn giản",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser5": {
      "ai_outputParser": [
        [
          {
            "node": "AI trích xuất có cấu trúc từ CV",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "So sánh Kinh nghiệm vs JD1": {
      "main": [
        [
          {
            "node": "Gộp kết quả",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Đọc sheet Quản lý link CV ứng viên",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get_running_flow_id": {
      "main": [
        [
          {
            "node": "If2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If2": {
      "main": [
        [
          {
            "node": "Tìm folder theo vị trí trên Google Drive",
            "type": "main",
            "index": 0
          },
          {
            "node": "Lấy thông tin Job Description",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Tìm folder theo vị trí trên Google Drive": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Lấy thông tin Job Description": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Lịch chạy WF tự động": {
      "main": [
        [
          {
            "node": "get_running_flow_id",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check folder name = position JD": {
      "main": [
        [
          {
            "node": "Update thông tin folder vào Sheet quản lý JD",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Update thông tin folder vào Sheet quản lý JD": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Quét tất cả CV files": {
      "main": [
        [
          {
            "node": "Update CV mới vào Sheet quản lý link CV",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update CV mới vào Sheet quản lý link CV": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Đọc sheet Quản lý link CV ứng viên": {
      "main": [
        [
          {
            "node": "Lấy CV cần xử lý",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Lấy CV cần xử lý": {
      "main": [
        [
          {
            "node": "Tải file CV từ Google Drive về server n8n",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tải file CV từ Google Drive về server n8n": {
      "main": [
        [
          {
            "node": "Extract nội dung text từ file CV",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract nội dung text từ file CV": {
      "main": [
        [
          {
            "node": "AI trích xuất có cấu trúc từ CV",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI trích xuất có cấu trúc từ CV": {
      "main": [
        [
          {
            "node": "Format lại thông tin đơn giản",
            "type": "main",
            "index": 0
          },
          {
            "node": "JD và promt để AI đánh giá",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format lại thông tin đơn giản": {
      "main": [
        [
          {
            "node": "Chuẩn bị data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "JD và promt để AI đánh giá": {
      "main": [
        [
          {
            "node": "So sánh Kinh nghiệm vs JD1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Chuẩn bị data": {
      "main": [
        [
          {
            "node": "Gộp kết quả",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gộp kết quả": {
      "main": [
        [
          {
            "node": "Chuẩn hóa các trường",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Chuẩn hóa các trường": {
      "main": [
        [
          {
            "node": "Update kết quả đánh giá",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update kết quả đánh giá": {
      "main": [
        [
          {
            "node": "Lọc CV vừa xử lý xong",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Lọc CV vừa xử lý xong": {
      "main": [
        [
          {
            "node": "Update Status xử lý CV",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Status xử lý CV": {
      "main": [
        []
      ]
    },
    "Lịch điền Promt": {
      "main": [
        [
          {
            "node": "Đọc sheet quản lý JD",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Đọc sheet quản lý JD": {
      "main": [
        [
          {
            "node": "Lọc ra các JD chưa có promt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Lọc ra các JD chưa có promt": {
      "main": [
        [
          {
            "node": "Gửi ICA nhắc điền promt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Check folder name = position JD",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Quét tất cả CV files",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "e6335aa52b72b294373f7e9ff2f7b0691634ae094aab25f9e5eea0292f829734"
  }
}