{"workflow":{"id":13321,"name":"Screen and score job candidates with GPT-4o, Gmail and Google Calendar","views":14,"recentViews":0,"totalViews":14,"createdAt":"2026-02-12T04:26:16.735Z","description":"## How It Works\nThis workflow automates end-to-end candidate evaluation for HR teams and recruiters overwhelmed by high-volume hiring. Designed for talent acquisition professionals, hiring managers, and HR operations, it solves the challenge of manually screening resumes, validating qualifications, and coordinating interview feedback across multiple stakeholders. The system triggers on new applications, extracts CV content, prepares structured candidate data, and deploys specialized AI agents for comprehensive evaluation: Signal Agent validates credentials, CV Verification Agent confirms qualifications, Trust Assessment Agent evaluates cultural fit, and Experience Agent analyzes career trajectory. The Orchestrator Agent synthesizes insights, checks validation results, and routes decisions—sending approval emails for qualified candidates, rejection notices for mismatches, and logging all outcomes to Google Calendar and Sheets. By automating screening with multi-dimensional AI analysis, organizations reduce time-to-hire by 70%, eliminate bias, ensure consistent evaluation criteria, and free recruiters to focus on relationship-building with top talent.\n\n## Setup Steps\n1. Connect **webhook/form trigger** to applicant tracking system or career portal\n2. Configure **CV extraction** node with document parsing API credentials\n3. Add **OpenAI API keys** to all AI agent nodes \n4. Define **evaluation criteria** in each agent's prompt \n5. Link **Gmail** credentials for approval and rejection email templates\n6. Connect **Google Calendar** API for interview scheduling automation\n\n## Prerequisites\nATS integration or career portal webhook access, OpenAI API account\n## Use Cases\nHigh-volume recruitment screening, technical role qualification validation\n## Customization\nModify agent prompts for role-specific criteria, adjust scoring thresholds for pass/fail decisions\n## Benefits\nReduces screening time by 70%, eliminates unconscious bias through standardized evaluation","workflow":{"id":"QfrwxvGk9ufr98K15732H","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"AI-powered candidate validation and trust assessment system","tags":[],"nodes":[{"id":"121fa34f-7bf5-43e7-9059-af8ae4ea9d17","name":"Candidate Application Form","type":"n8n-nodes-base.formTrigger","position":[-2688,128],"webhookId":"d31fadf6-3522-4531-a253-f660c46987b0","parameters":{"options":{},"formTitle":"Candidate Application Form","formFields":{"values":[{"fieldName":"fullName","fieldLabel":"Full Name","requiredField":true},{"fieldName":"emailAddress","fieldType":"email","fieldLabel":"Email Address","requiredField":true},{"fieldName":"phoneNumber","fieldLabel":"Phone Number","requiredField":true},{"fieldName":"positionAppliedFor","fieldLabel":"Position Applied For","requiredField":true},{"fieldName":"coverLetter","fieldType":"textarea","fieldLabel":"Cover Letter"},{"fieldName":"cvResume","fieldType":"file","fieldLabel":"CV/Resume","multipleFiles":false,"requiredField":true,"acceptFileTypes":".pdf, .doc, .docx"},{"fieldName":"yearsOfExperience","fieldLabel":"Years of Experience","requiredField":true},{"fieldName":"linkedInProfileUrl","fieldLabel":"LinkedIn Profile URL"},{"fieldName":"previousEmployers","fieldType":"textarea","fieldLabel":"Previous Employers"},{"fieldName":"highestEducationLevel","fieldLabel":"Highest Education Level"}]},"formDescription":"Please submit your application details and upload your CV"},"typeVersion":2.5},{"id":"9bdd4324-78e8-498f-ad21-8d27e07470b0","name":"Workflow Configuration","type":"n8n-nodes-base.set","position":[-2464,128],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"hrEmail","type":"string","value":"<__PLACEHOLDER_VALUE__HR Department Email Address__>"},{"id":"id-2","name":"minExperienceYears","type":"number","value":2},{"id":"id-3","name":"trustScoreThreshold","type":"number","value":70},{"id":"id-4","name":"validationScoreThreshold","type":"number","value":75},{"id":"id-5","name":"companyName","type":"string","value":"<__PLACEHOLDER_VALUE__Your Company Name__>"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"7277f0ce-d16b-4948-b28f-e225c2ae8c63","name":"Extract CV Content","type":"n8n-nodes-base.extractFromFile","position":[-2240,128],"parameters":{"options":{"joinPages":true},"operation":"pdf"},"typeVersion":1.1},{"id":"cea407b9-45a7-405b-b4e2-2f29d0a823b8","name":"Prepare Candidate Data","type":"n8n-nodes-base.set","position":[-2016,128],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"candidateName","type":"string","value":"={{ $json['Full Name'] }}"},{"id":"id-2","name":"candidateEmail","type":"string","value":"={{ $json['Email Address'] }}"},{"id":"id-3","name":"candidatePhone","type":"string","value":"={{ $json['Phone Number'] }}"},{"id":"id-4","name":"positionApplied","type":"string","value":"={{ $json['Position Applied For'] }}"},{"id":"id-5","name":"yearsExperience","type":"string","value":"={{ $json['Years of Experience'] }}"},{"id":"id-6","name":"linkedinProfile","type":"string","value":"={{ $json['LinkedIn Profile URL'] }}"},{"id":"id-7","name":"coverLetter","type":"string","value":"={{ $json['Cover Letter'] }}"},{"id":"id-8","name":"previousEmployers","type":"string","value":"={{ $json['Previous Employers'] }}"},{"id":"id-9","name":"educationLevel","type":"string","value":"={{ $json['Highest Education Level'] }}"},{"id":"id-10","name":"cvContent","type":"string","value":"={{ $json.data }}"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"6568bb23-bd37-4024-8c47-e6e5838a10f3","name":"Orchestrator Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[-1152,96],"parameters":{"text":"=Candidate Data: {{ JSON.stringify($json) }}","options":{"systemMessage":"You are an AI Orchestrator coordinating a multi-agent candidate validation and trust assessment system.\n\nYour task is to:\n1. Call the Candidate Signal Agent Tool to validate structured application and interview data\n2. Call the CV Verification Agent Tool to verify CV authenticity and consistency\n3. Call the Trust Assessment Agent Tool to assess candidate reliability and trustworthiness\n4. Call the Experience Agent Tool to coordinate communications, scheduling, and feedback loops\n5. Synthesize all agent results into a final validation decision\n6. Return a structured assessment with overall validation status, trust score, and recommendations\n\nCoordinate the agents in the optimal sequence and ensure all validation checks are completed before making a final decision."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"e554a20c-cb63-42cd-a7a0-ad1d1a99508c","name":"Candidate Signal Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[-1600,320],"parameters":{"text":"=Validate this candidate data: {{ $fromAI(\"candidateData\", \"Candidate application and interview data to validate\", \"json\") }}","options":{"systemMessage":"You are a Candidate Signal Agent specialized in validating structured application and interview data.\n\nYour task is to:\n1. Analyze application completeness and data quality\n2. Validate years of experience against position requirements\n3. Check for inconsistencies in provided information\n4. Assess application strength based on cover letter quality\n5. Evaluate education level alignment with position\n6. Calculate a validation score (0-100)\n7. Identify any red flags or missing critical information\n8. Return structured validation results with score, status, and detailed findings"},"hasOutputParser":true,"toolDescription":"Validates structured candidate application and interview data, checking completeness, consistency, and alignment with position requirements"},"typeVersion":3},{"id":"870f8035-77f1-49b8-9f1e-dcd401035017","name":"CV Verification Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[-1312,320],"parameters":{"text":"=Verify this CV: {{ $fromAI(\"cvData\", \"CV content and candidate information to verify\", \"json\") }}","options":{"systemMessage":"You are a CV Verification Agent specialized in analyzing CV authenticity and consistency.\n\nYour task is to:\n1. Analyze CV structure, formatting, and professionalism\n2. Verify consistency between CV content and application data\n3. Check for timeline gaps or inconsistencies in employment history\n4. Assess skill claims against experience level\n5. Identify potential fabrications or exaggerations\n6. Evaluate education credentials alignment\n7. Calculate a CV authenticity score (0-100)\n8. Return structured verification results with score, consistency checks, and concerns"},"hasOutputParser":true,"toolDescription":"Verifies CV authenticity by analyzing structure, consistency with application data, employment history, and identifying potential fabrications"},"typeVersion":3},{"id":"2666d8df-0264-45e2-9bcc-f839f2931a71","name":"Trust Assessment Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[-1024,320],"parameters":{"text":"=Assess trust for this candidate: {{ $fromAI(\"candidateProfile\", \"Complete candidate profile for trust assessment\", \"json\") }}","options":{"systemMessage":"You are a Trust Assessment Agent specialized in evaluating candidate reliability and trustworthiness.\n\nYour task is to:\n1. Analyze communication patterns and responsiveness indicators\n2. Evaluate transparency in provided information\n3. Assess professional online presence (LinkedIn profile quality)\n4. Check for consistency across all provided data points\n5. Identify behavioral signals indicating reliability\n6. Evaluate reference quality and previous employer information\n7. Calculate a trust score (0-100) based on multiple factors\n8. Return structured trust assessment with score, reliability indicators, and risk factors"},"hasOutputParser":true,"toolDescription":"Assesses candidate reliability and trustworthiness by analyzing communication patterns, transparency, online presence, and consistency across data points"},"typeVersion":3},{"id":"3deae6ec-3adb-4410-8a88-8735e96ef0a6","name":"Experience Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[-736,320],"parameters":{"text":"=Coordinate candidate experience: {{ $fromAI(\"experienceAction\", \"Action to perform for candidate experience management\", \"json\") }}","options":{"systemMessage":"You are an Experience Agent specialized in coordinating candidate communications, scheduling, and feedback loops.\n\nYour task is to:\n1. Send personalized email communications to candidates using Gmail Tool\n2. Schedule interview appointments using Google Calendar Tool\n3. Coordinate feedback collection and follow-ups\n4. Manage candidate journey touchpoints\n5. Ensure timely and professional communication\n6. Handle scheduling conflicts and rescheduling requests\n7. Provide status updates to candidates throughout the process\n\nUse the Gmail Tool to send emails and Google Calendar Tool to manage interview schedules. Always maintain professional and empathetic communication."},"toolDescription":"Coordinates candidate communications, interview scheduling, and feedback loops using Gmail and Google Calendar integrations"},"typeVersion":3},{"id":"983b72ff-c460-4684-8fe3-16ce0593f367","name":"OpenAI Model - Orchestrator","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-1728,320],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"maxTokens":3000,"temperature":0.3},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"090f35d7-c145-4367-82a0-589a0b8a48d7","name":"OpenAI Model - Signal Agent","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-1792,544],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o-mini"},"options":{"maxTokens":2000,"temperature":0.2},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"8c48bfc9-f84f-4593-b8e4-a69cfec9428c","name":"OpenAI Model - CV Agent","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-1344,528],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o-mini"},"options":{"maxTokens":2000,"temperature":0.2},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"def97da2-3003-4675-8b3a-6f6be0fcc666","name":"OpenAI Model - Trust Agent","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-1024,624],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o-mini"},"options":{"maxTokens":2000,"temperature":0.2},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"4c556a13-a348-46f9-972b-64e04325f3fb","name":"OpenAI Model - Experience Agent","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-720,528],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o-mini"},"options":{"maxTokens":1500,"temperature":0.4},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"ba68fbe9-de43-4b81-9fbe-9de997ad649a","name":"Orchestrator Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-448,320],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"overallStatus\": {\n      \"type\": \"string\",\n      \"description\": \"Overall validation status: Approved, Rejected, or Review Required\"\n    },\n    \"validationScore\": {\n      \"type\": \"number\",\n      \"description\": \"Overall validation score from 0-100\"\n    },\n    \"trustScore\": {\n      \"type\": \"number\",\n      \"description\": \"Trust assessment score from 0-100\"\n    },\n    \"cvAuthenticityScore\": {\n      \"type\": \"number\",\n      \"description\": \"CV verification score from 0-100\"\n    },\n    \"signalValidationScore\": {\n      \"type\": \"number\",\n      \"description\": \"Application data validation score from 0-100\"\n    },\n    \"recommendations\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"description\": \"List of recommendations for next steps\"\n    },\n    \"redFlags\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"description\": \"List of identified red flags or concerns\"\n    },\n    \"strengths\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"description\": \"List of candidate strengths\"\n    },\n    \"nextActions\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"description\": \"Recommended next actions\"\n    }\n  },\n  \"required\": [\"overallStatus\", \"validationScore\", \"trustScore\", \"recommendations\"]\n}"},"typeVersion":1.3},{"id":"4e0d02e3-f8a0-440e-b629-17d88f684a17","name":"Signal Agent Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-1536,544],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"validationScore\": {\n      \"type\": \"number\",\n      \"description\": \"Application validation score from 0-100\"\n    },\n    \"status\": {\n      \"type\": \"string\",\n      \"description\": \"Validation status: Pass, Fail, or Needs Review\"\n    },\n    \"completeness\": {\n      \"type\": \"number\",\n      \"description\": \"Application completeness percentage\"\n    },\n    \"inconsistencies\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"description\": \"List of identified inconsistencies\"\n    },\n    \"missingInfo\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"description\": \"List of missing critical information\"\n    },\n    \"findings\": {\n      \"type\": \"string\",\n      \"description\": \"Detailed validation findings\"\n    }\n  },\n  \"required\": [\"validationScore\", \"status\", \"completeness\"]\n}"},"typeVersion":1.3},{"id":"b49511ba-3f7c-4946-9793-76dc2580715f","name":"CV Agent Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-1168,528],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"authenticityScore\": {\n      \"type\": \"number\",\n      \"description\": \"CV authenticity score from 0-100\"\n    },\n    \"consistencyStatus\": {\n      \"type\": \"string\",\n      \"description\": \"Consistency check result: Consistent, Minor Issues, or Major Concerns\"\n    },\n    \"timelineGaps\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"description\": \"Identified gaps in employment timeline\"\n    },\n    \"inconsistencies\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"description\": \"Inconsistencies between CV and application\"\n    },\n    \"concerns\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"description\": \"Potential concerns or red flags\"\n    },\n    \"professionalismScore\": {\n      \"type\": \"number\",\n      \"description\": \"CV professionalism score from 0-100\"\n    },\n    \"analysis\": {\n      \"type\": \"string\",\n      \"description\": \"Detailed CV analysis\"\n    }\n  },\n  \"required\": [\"authenticityScore\", \"consistencyStatus\", \"analysis\"]\n}"},"typeVersion":1.3},{"id":"8ccfdb4a-05a1-43be-9351-54d32955fdf6","name":"Trust Agent Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-880,528],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"trustScore\": {\n      \"type\": \"number\",\n      \"description\": \"Overall trust score from 0-100\"\n    },\n    \"reliabilityLevel\": {\n      \"type\": \"string\",\n      \"description\": \"Reliability assessment: High, Medium, Low, or Concerning\"\n    },\n    \"transparencyScore\": {\n      \"type\": \"number\",\n      \"description\": \"Transparency score from 0-100\"\n    },\n    \"consistencyScore\": {\n      \"type\": \"number\",\n      \"description\": \"Data consistency score from 0-100\"\n    },\n    \"reliabilityIndicators\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"description\": \"Positive reliability indicators\"\n    },\n    \"riskFactors\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"description\": \"Identified risk factors\"\n    },\n    \"assessment\": {\n      \"type\": \"string\",\n      \"description\": \"Detailed trust assessment\"\n    }\n  },\n  \"required\": [\"trustScore\", \"reliabilityLevel\", \"assessment\"]\n}"},"typeVersion":1.3},{"id":"6248abfc-0b1c-4d5d-9063-518cc0950541","name":"Gmail Tool","type":"n8n-nodes-base.gmailTool","position":[-560,528],"webhookId":"d88d8615-fb8f-4ea8-9d03-9c01010525f2","parameters":{"sendTo":"={{ $fromAI('recipientEmail', 'Email address of the recipient', 'string') }}","message":"={{ $fromAI('emailBody', 'Email message body in HTML format', 'string') }}","options":{},"subject":"={{ $fromAI('emailSubject', 'Email subject line', 'string') }}"},"credentials":{"gmailOAuth2":{"id":"u1N5nBDvQ0AWhNnV","name":"Gmail account"}},"typeVersion":2.2},{"id":"c3e973f3-0891-4763-be19-d13be69441e0","name":"Google Calendar Tool","type":"n8n-nodes-base.googleCalendarTool","position":[-368,528],"parameters":{"end":"={{ $fromAI('endTime', 'Event end time in ISO format', 'string') }}","start":"={{ $fromAI('startTime', 'Event start time in ISO format', 'string') }}","calendar":{"__rl":true,"mode":"id","value":"={{ $fromAI('calendarId', 'Google Calendar ID', 'string', 'primary') }}"},"additionalFields":{"summary":"={{ $fromAI('eventTitle', 'Event title/summary', 'string') }}","description":"={{ $fromAI('eventDescription', 'Event description', 'string') }}"}},"credentials":{"googleCalendarOAuth2Api":{"id":"26RxMvw1rSjTSjmV","name":"Google Calendar account"}},"typeVersion":1.3},{"id":"0ab7750b-351a-49f0-9e92-b42b07411cd3","name":"Check Validation Result","type":"n8n-nodes-base.if","position":[-192,224],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"id-1","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.overallStatus }}","rightValue":"Approved"}]}},"typeVersion":2.3},{"id":"0088a885-5bab-440a-99bb-aa58040e08c5","name":"Send Approval Email","type":"n8n-nodes-base.emailSend","position":[32,128],"webhookId":"f8b0a5dc-97ae-4384-a987-e000036abc6f","parameters":{"html":"=<html><body><h2>Congratulations {{ $('Prepare Candidate Data').first().json.candidateName }}!</h2><p>We are pleased to inform you that your application for <strong>{{ $('Prepare Candidate Data').first().json.positionApplied }}</strong> has been approved.</p><h3>Assessment Summary:</h3><ul><li>Overall Validation Score: {{ $json.validationScore }}/100</li><li>Trust Score: {{ $json.trustScore }}/100</li><li>CV Authenticity Score: {{ $json.cvAuthenticityScore }}/100</li></ul><h3>Next Steps:</h3><ul>{{ $json.nextActions.map(action => `<li>${action}</li>`).join(\"\") }}</ul><p>Our team will contact you shortly to schedule an interview.</p><p>Best regards,<br>{{ $('Workflow Configuration').first().json.companyName }} HR Team</p></body></html>","options":{},"subject":"=Application Approved - {{ $('Prepare Candidate Data').first().json.positionApplied }} at {{ $('Workflow Configuration').first().json.companyName }}","toEmail":"={{ $('Prepare Candidate Data').first().json.candidateEmail }}","fromEmail":"={{ $('Workflow Configuration').first().json.hrEmail }}"},"typeVersion":2.1},{"id":"ae1d49ed-c8b7-4ff0-a33b-472731785eec","name":"Send Rejection Email","type":"n8n-nodes-base.emailSend","position":[32,320],"webhookId":"fc22658e-f240-4d33-b10b-085bf40ac5c0","parameters":{"html":"=<html><body><h2>Dear {{ $('Prepare Candidate Data').first().json.candidateName }},</h2><p>Thank you for your interest in the <strong>{{ $('Prepare Candidate Data').first().json.positionApplied }}</strong> position at {{ $('Workflow Configuration').first().json.companyName }}.</p><p>After careful review of your application, we regret to inform you that we will not be moving forward with your candidacy at this time.</p><h3>Assessment Summary:</h3><ul><li>Overall Status: {{ $json.overallStatus }}</li><li>Validation Score: {{ $json.validationScore }}/100</li></ul>{{ $json.redFlags && $json.redFlags.length > 0 ? `<h3>Areas for Improvement:</h3><ul>${$json.redFlags.map(flag => `<li>${flag}</li>`).join(\"\")}` : \"\" }}<p>We encourage you to continue developing your skills and experience. We wish you the best in your job search.</p><p>Best regards,<br>{{ $('Workflow Configuration').first().json.companyName }} HR Team</p></body></html>","options":{},"subject":"=Application Status - {{ $('Prepare Candidate Data').first().json.positionApplied }} at {{ $('Workflow Configuration').first().json.companyName }}","toEmail":"={{ $('Prepare Candidate Data').first().json.candidateEmail }}","fromEmail":"={{ $('Workflow Configuration').first().json.hrEmail }}"},"typeVersion":2.1},{"id":"9a5be78e-2fc2-4002-abac-cef33fd41b5a","name":"Log Results","type":"n8n-nodes-base.code","position":[256,224],"parameters":{"jsCode":"// Log candidate validation results\nconst candidateData = $('Prepare Candidate Data').first().json;\nconst validationResults = $input.first().json;\n\nconst logEntry = {\n  timestamp: new Date().toISOString(),\n  candidateName: candidateData.candidateName,\n  candidateEmail: candidateData.candidateEmail,\n  positionApplied: candidateData.positionApplied,\n  overallStatus: validationResults.overallStatus,\n  validationScore: validationResults.validationScore,\n  trustScore: validationResults.trustScore,\n  cvAuthenticityScore: validationResults.cvAuthenticityScore,\n  signalValidationScore: validationResults.signalValidationScore,\n  recommendations: validationResults.recommendations,\n  redFlags: validationResults.redFlags || [],\n  strengths: validationResults.strengths || [],\n  emailSent: true\n};\n\nconsole.log('Candidate Validation Complete:', JSON.stringify(logEntry, null, 2));\n\nreturn [{ json: logEntry }];"},"typeVersion":2},{"id":"b20c67e4-f769-47f3-9fb4-90c021badef7","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-2736,-384],"parameters":{"width":704,"height":320,"content":"## How It Works\nThis workflow automates end-to-end candidate evaluation for HR teams and recruiters overwhelmed by high-volume hiring. Designed for talent acquisition professionals, hiring managers, and HR operations, it solves the challenge of manually screening resumes, validating qualifications, and coordinating interview feedback across multiple stakeholders. The system triggers on new applications, extracts CV content, prepares structured candidate data, and deploys specialized AI agents for comprehensive evaluation: Signal Agent validates credentials, CV Verification Agent confirms qualifications, Trust Assessment Agent evaluates cultural fit, and Experience Agent analyzes career trajectory. The Orchestrator Agent synthesizes insights, checks validation results, and routes decisions—sending approval emails for qualified candidates, rejection notices for mismatches, and logging all outcomes to Google Calendar and Sheets. By automating screening with multi-dimensional AI analysis, organizations reduce time-to-hire by 70%, eliminate bias, ensure consistent evaluation criteria, and free recruiters to focus on relationship-building with top talent."},"typeVersion":1},{"id":"11fac2b8-5d65-4542-9ba9-d3c9d5169283","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-1984,-320],"parameters":{"width":496,"height":256,"content":"## Setup Steps\n1. Connect **webhook/form trigger** to applicant tracking system or career portal\n2. Configure **CV extraction** node with document parsing API credentials\n3. Add **OpenAI API keys** to all AI agent nodes \n4. Define **evaluation criteria** in each agent's prompt \n5. Link **Gmail** credentials for approval and rejection email templates\n6. Connect **Google Calendar** API for interview scheduling automation"},"typeVersion":1},{"id":"d8a4b9d4-422d-46ab-8b88-fd9b0df09a77","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-1424,-432],"parameters":{"color":6,"width":496,"height":352,"content":"## Prerequisites\nATS integration or career portal webhook access, OpenAI API account\n## Use Cases\nHigh-volume recruitment screening, technical role qualification validation\n## Customization\nModify agent prompts for role-specific criteria, adjust scoring thresholds for pass/fail decisions\n## Benefits\nReduces screening time by 70%, eliminates unconscious bias through standardized evaluation"},"typeVersion":1},{"id":"dc806988-8226-4bd5-9d8c-0541556f54f0","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-2768,-16],"parameters":{"color":7,"width":912,"height":944,"content":"## Application Processing\n**What**: Trigger captures new applications, extracts CV content, structures candidate data  \n**Why**: Standardizes diverse application formats into consistent data for reliable AI analysis"},"typeVersion":1},{"id":"34bd4b58-d356-489f-964a-6d38f7ab6d9f","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-1840,-16],"parameters":{"color":7,"width":1584,"height":928,"content":"## Multi-Agent Screening\n**What**: Four specialized AI agents analyze credentials, qualifications, cultural fit, and experience simultaneously  \n**Why**: Parallel evaluation provides comprehensive candidate assessment from multiple expert perspectives instantly.\nGoogle Calendar logs scheduling and case timelines, Google Sheets stores validation results "},"typeVersion":1},{"id":"c4e0f5d8-0aa5-4136-9cb5-0a51a0850f2c","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-240,-16],"parameters":{"color":7,"width":688,"height":928,"content":"## Automated Response\n**What**: Routes approvals to interview scheduling, rejections to candidate communication, logs to calendar/sheets  \n**Why**: Eliminates manual coordination delays while maintaining professional candidate experience"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"3a22605d-fd02-4cc3-bb9d-98c8e685f847","connections":{"Gmail Tool":{"ai_tool":[[{"node":"Experience Agent Tool","type":"ai_tool","index":0}]]},"Extract CV Content":{"main":[[{"node":"Prepare Candidate Data","type":"main","index":0}]]},"Orchestrator Agent":{"main":[[{"node":"Check Validation Result","type":"main","index":0}]]},"Send Approval Email":{"main":[[{"node":"Log Results","type":"main","index":0}]]},"Google Calendar Tool":{"ai_tool":[[{"node":"Experience Agent Tool","type":"ai_tool","index":0}]]},"Send Rejection Email":{"main":[[{"node":"Log Results","type":"main","index":0}]]},"Experience Agent Tool":{"ai_tool":[[{"node":"Orchestrator Agent","type":"ai_tool","index":0}]]},"CV Agent Output Parser":{"ai_outputParser":[[{"node":"CV Verification Agent Tool","type":"ai_outputParser","index":0}]]},"Prepare Candidate Data":{"main":[[{"node":"Orchestrator Agent","type":"main","index":0}]]},"Workflow Configuration":{"main":[[{"node":"Extract CV Content","type":"main","index":0}]]},"Check Validation Result":{"main":[[{"node":"Send Approval Email","type":"main","index":0}],[{"node":"Send Rejection Email","type":"main","index":0}]]},"OpenAI Model - CV Agent":{"ai_languageModel":[[{"node":"CV Verification Agent Tool","type":"ai_languageModel","index":0}]]},"Trust Agent Output Parser":{"ai_outputParser":[[{"node":"Trust Assessment Agent Tool","type":"ai_outputParser","index":0}]]},"CV Verification Agent Tool":{"ai_tool":[[{"node":"Orchestrator Agent","type":"ai_tool","index":0}]]},"Candidate Application Form":{"main":[[{"node":"Workflow Configuration","type":"main","index":0}]]},"OpenAI Model - Trust Agent":{"ai_languageModel":[[{"node":"Trust Assessment Agent Tool","type":"ai_languageModel","index":0}]]},"Orchestrator Output Parser":{"ai_outputParser":[[{"node":"Orchestrator Agent","type":"ai_outputParser","index":0}]]},"Signal Agent Output Parser":{"ai_outputParser":[[{"node":"Candidate Signal Agent Tool","type":"ai_outputParser","index":0}]]},"Candidate Signal Agent Tool":{"ai_tool":[[{"node":"Orchestrator Agent","type":"ai_tool","index":0}]]},"OpenAI Model - Orchestrator":{"ai_languageModel":[[{"node":"Orchestrator Agent","type":"ai_languageModel","index":0}]]},"OpenAI Model - Signal Agent":{"ai_languageModel":[[{"node":"Candidate Signal Agent Tool","type":"ai_languageModel","index":0}]]},"Trust Assessment Agent Tool":{"ai_tool":[[{"node":"Orchestrator Agent","type":"ai_tool","index":0}]]},"OpenAI Model - Experience Agent":{"ai_languageModel":[[{"node":"Experience Agent Tool","type":"ai_languageModel","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":30,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":2},"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.emailSend":{"count":2},"n8n-nodes-base.gmailTool":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.formTrigger":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.extractFromFile":{"count":1},"n8n-nodes-base.googleCalendarTool":{"count":1},"@n8n/n8n-nodes-langchain.agentTool":{"count":4},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":5},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":4}}},"status":"published","readyToDemo":null,"user":{"name":"Cheng Siong Chin","username":"cschin","bio":"Dr. Cheng Siong CHIN is an n8n workflow creator specializing in AI-powered automation, agent orchestration, and intelligent system integrations. He designs and builds end-to-end workflows that combine LLMs, APIs, and data pipelines to streamline complex processes and deliver production-ready automation solutions. Contact me to discuss custom AI workflows and agent architectures.\n","verified":true,"links":["https://gravatar.com/mysticluminary9fa255f7f5"],"avatar":"https://gravatar.com/avatar/54544f98e839bb9dd9a764ad1e6823eeddb6db5138d201e42f291a7b0a73303f?r=pg&d=retro&size=200"},"nodes":[{"id":11,"icon":"fa:envelope","name":"n8n-nodes-base.emailSend","codex":{"data":{"alias":["SMTP","email","human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.sendemail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/sendemail/"}]},"categories":["Communication","HITL","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Send Email","color":"#00bb88"},"iconData":{"icon":"envelope","type":"icon"},"displayName":"Send Email","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":9,"name":"Core Nodes"},{"id":28,"name":"HITL"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1225,"icon":"file:form.svg","name":"n8n-nodes-base.formTrigger","codex":{"data":{"alias":["table","submit","post"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.formtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Other Trigger Nodes"]}}},"group":"[\"trigger\"]","defaults":{"name":"On form submission"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSI0MCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwQjdCQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzQuOTc4IDM3LjczMmExLjU2IDEuNTYgMCAwIDEtMS41NjIgMS41NjNINi4yNmExLjU2IDEuNTYgMCAwIDEtMS41NjMtMS41NjNWOS42MDdjMC0uNDA1LjE1Ny0uNzk0LjQzOC0xLjA4Nmw2LjMwNC02LjUzMXY1LjM0NEg4LjIxM2ExLjE3MiAxLjE3MiAwIDEgMCAwIDIuMzQzaDQuNDNhMS4xNyAxLjE3IDAgMCAwIDEuMTcxLTEuMTcxVi4yMzJoMTkuNjAyYTEuNTYgMS41NiAwIDAgMSAxLjU2MiAxLjU2M3YxMC4zMjdsLTIuODYgMi44Ni04LjI1MiA4LjI3NmE0MTMuMDA2IDQxMy4wMDYgMCAwIDEtMS42NTQgMS42NjJsLS4zMzcuMzM3YTIgMiAwIDAgMC0uNTU3IDEuMDhMMjAuMyAzMS45MjJjLS4xMDguNjM4LS4yMTUgMS4wNzkuMjExIDEuNDE4LjQwMy4zMi45LjE3NCAxLjU0LjA2Nmw1LjQwOC0uOTI4YTIgMiAwIDAgMCAxLjA4LS41NTZsNi40NC02LjQyOXptLTI0LjAzLTIxLjI2NWExLjE4IDEuMTggMCAwIDAgMS4xNzEgMS4xNzJoMTMuMTYzYTEuMTcyIDEuMTcyIDAgMSAwIDAtMi4zNDRIMTIuMTE5YTEuMTcgMS4xNyAwIDAgMC0xLjE3MiAxLjE3Mm03LjI5NCAxNC43NjZhMS4xNyAxLjE3IDAgMCAwLTEuMTcyLTEuMTcySDEyLjEyYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNC45NTFhMS4xNyAxLjE3IDAgMCAwIDEuMTcyLTEuMTcybS44Ni03LjM5MWExLjE3IDEuMTcgMCAwIDAtMS4xNzItMS4xNzJoLTUuODExYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNS44MWExLjE2NCAxLjE2NCAwIDAgMCAxLjE3My0xLjE3MSIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwQjdCQyIgZD0ibTMzLjUzMiAxNi4zOTcgNC4yODktNC4yODkgMy43NTggMy43MSAxLjYxNy0xLjYxNiAyLjI1OCAyLjI1N2MuMjE4LjIxOC4zNC41MTMuMzQzLjgyLS4wMDIuMzExLS4xMjUuNjA4LS4zNDQuODNsLTYuODA0IDYuNzk2YTEuMTMgMS4xMyAwIDAgMS0uODI4LjM0MyAxLjE1IDEuMTUgMCAwIDEtLjgyOC0uMzQzIDEuMTggMS4xOCAwIDAgMSAwLTEuNjU3bDUuOTc2LTUuOTY4LTEuMzEyLTEuMzEzLTEuMzgzIDEuNDE0LTEzLjE0OSAxMy4xMjUtNC42MTcuNzgyLjc4Mi00LjYxNy4zMzYtLjMzNyAyLjU2MiAyLjU1NWExLjEgMS4xIDAgMCAwIC44MjguMzQ0Yy4zMTIuMDA1LjYxMi0uMTIuODI4LS4zNDRhMS4xOCAxLjE4IDAgMCAwIDAtMS42NTZsLTIuNTYyLTIuNTYyek00NC43MzYgMTIuMjRjMCAuNDE0LS4xNjMuODEtLjQ1NCAxLjEwMmwtLjkyMi45MTQtMy44NTItMy44MjguOTMtLjkzYTEuNTYzIDEuNTYzIDAgMCAxIDIuMjAzIDBsMS42NCAxLjY0MWMuMjkxLjI5My40NTUuNjkuNDU1IDEuMTAyIi8+PC9zdmc+"},"displayName":"n8n Form Trigger","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1235,"icon":"file:extractFromFile.svg","name":"n8n-nodes-base.extractFromFile","codex":{"data":{"alias":["CSV","Spreadsheet","Excel","xls","xlsx","ods","tabular","decode","decoding","Move Binary Data","Binary","File","PDF","JSON","HTML","ICS","iCal","txt","Text","RTF","XML","64","Base64","Convert"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Files","Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Extract from File"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuOTM3NSAyQzAuNDE5NzMzIDIgMCAyLjQxOTczIDAgMi45Mzc1VjM3LjMyMjFDMCAzNy44Mzk5IDAuNDE5NzMzIDM4LjI1OTYgMC45Mzc1IDM4LjI1OTZIMjYuMjE1NEMyNi43MzMyIDM4LjI1OTYgMjcuMTUyOSAzNy44Mzk5IDI3LjE1MjkgMzcuMzIyMUwyNy4xNTI5IDMwLjY3MTlMMTYuNzk2OSAzMC42NzE5QzE0Ljg5ODQgMzAuNjcxOSAxMy4zNTk0IDI5LjEzMjkgMTMuMzU5NCAyNy4yMzQ0VjI1LjM1OTRDMTMuMzU5NCAyMy40NjA5IDE0Ljg5ODQgMjEuOTIxOSAxNi43OTY5IDIxLjkyMTlIMjcuMTUyOUwyNy4xNTI5IDE1Ljc4MjFIMTQuMzA4M0MxMy43OTA2IDE1Ljc4MjEgMTMuMzcwOCAxNS4zNjI0IDEzLjM3MDggMTQuODQ0NlYySDAuOTM3NVoiIGZpbGw9IiMzNTNGNkUiLz4KPHBhdGggZD0iTTE2LjAyNzEgMkMxNS45NDA4IDIgMTUuODcwOCAyLjA2OTk2IDE1Ljg3MDggMi4xNTYyNVYxMi44MTM0QzE1Ljg3MDggMTMuMDcyMyAxNi4wODA3IDEzLjI4MjEgMTYuMzM5NiAxMy4yODIxSDI2Ljk5NjdDMjcuMDgzIDEzLjI4MjEgMjcuMTUyOSAxMy4yMTIyIDI3LjE1MjkgMTMuMTI1OUwyNy4xNTI5IDEyLjYxNzFDMjcuMTUyOSAxMi4zNjg4IDI3LjA1NDUgMTIuMTMwNyAyNi44NzkxIDExLjk1NUwxNy4yMjI1IDIuMjc1MzhDMTcuMDQ2NiAyLjA5OTA4IDE2LjgwNzkgMiAxNi41NTg4IDJIMTYuMDI3MVoiIGZpbGw9IiMzNTNGNkUiLz4KPHBhdGggZD0iTTI5Ljc2NDIgMzQuNjUwM0MyOS4wMzQgMzMuOTE2IDI5LjAzNzQgMzIuNzI4OCAyOS43NzE2IDMxLjk5ODZMMzMuNjE5NyAyOC4xNzE5TDE2Ljc5NjkgMjguMTcxOUMxNi4yNzkxIDI4LjE3MTkgMTUuODU5NCAyNy43NTIxIDE1Ljg1OTQgMjcuMjM0NFYyNS4zNTk0QzE1Ljg1OTQgMjQuODQxNiAxNi4yNzkxIDI0LjQyMTkgMTYuNzk2OSAyNC40MjE5TDMzLjU0MTIgMjQuNDIxOUwyOS43NzE2IDIwLjY3MzNDMjkuMDM3NCAxOS45NDMxIDI5LjAzNCAxOC43NTU5IDI5Ljc2NDIgMTguMDIxNkMzMC40OTQ0IDE3LjI4NzQgMzEuNjgxNiAxNy4yODQgMzIuNDE1OSAxOC4wMTQyTDM5LjQ0NzEgMjUuMDA2NEMzOS44MDEgMjUuMzU4MyA0MCAyNS44MzY4IDQwIDI2LjMzNTlDNDAgMjYuODM1IDM5LjgwMSAyNy4zMTM1IDM5LjQ0NzEgMjcuNjY1NUwzMi40MTU5IDM0LjY1NzZDMzEuNjgxNiAzNS4zODc4IDMwLjQ5NDQgMzUuMzg0NSAyOS43NjQyIDM0LjY1MDNaIiBmaWxsPSIjMzUzRjZFIi8+Cjwvc3ZnPgo="},"displayName":"Extract from File","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1310,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agentTool","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent Tool","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent Tool","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":17,"name":"HR"},{"id":49,"name":"AI Summarization"}],"image":[]}}