{"workflow":{"id":13710,"name":"Grade exam answers with GPT‑4.1 mini, plagiarism checks, Slack alerts and Google Sheets logging","views":32,"recentViews":0,"totalViews":32,"createdAt":"2026-02-25T14:36:53.954Z","description":"## How It Works\nThis workflow streamlines academic assessment through a multi-agent AI system that interprets rubrics, grades submissions, checks for plagiarism, performs quality moderation, generates feedback, and escalates borderline cases. Designed for educators and assessment administrators, it reduces inconsistencies in manual marking while embedding integrity checks into every evaluation cycle. A manual trigger retrieves student answers and rubrics, which are first structured before being sent to a Primary Marker Agent. If integrity concerns arise, a Plagiarism Analysis Agent runs in parallel. Results are consolidated and reviewed by a Quality Moderator Agent, followed by a Feedback Generator. Borderline cases are routed to a Secondary Marker Agent, while approved outcomes proceed to escalation preparation, Slack notifications, statistics computation, final consolidation, and logging in Google Sheets.\n\n## Setup Steps\n1. Configure manual trigger and connect student answer and rubric data sources.\n2. Add OpenAI API credentials to all OpenAI Chat Model nodes.\n3. Define moderation thresholds in the Route by Moderation Decision rules node.\n4. Configure Slack credentials and set escalation alert channel.\n5. Set plagiarism sensitivity thresholds in the Plagiarism Analyser Agent node.\n\n## Prerequisites\n- Google Sheets with service account credentials\n- Student answer and rubric data source (API or spreadsheet)\n## Use Cases\n- Automated essay and short-answer marking for university assessments\n## Customization\n- Replace OpenAI with Anthropic Claude for marking and moderation agents\n## Benefits\n- Automates end-to-end marking with built-in plagiarism and moderation checks\n","workflow":{"id":"kvNGz3KpHI7Par64pZIdM","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"Smart examination marking with plagiarism detection and moderation","tags":[],"nodes":[{"id":"f534983f-265a-4f9f-bb89-ab2756191105","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","position":[-1312,1248],"parameters":{},"typeVersion":1},{"id":"1b240cf7-c1c3-49d1-8a19-a7ff7bef4c6d","name":"Workflow Configuration","type":"n8n-nodes-base.set","position":[-1120,1248],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"apiEndpoint","type":"string","value":"<__PLACEHOLDER_VALUE__API endpoint URL to retrieve student answer and rubric__>"},{"id":"id-2","name":"totalMarks","type":"number","value":100},{"id":"id-3","name":"passingGrade","type":"number","value":50},{"id":"id-4","name":"slackChannel","type":"string","value":"<__PLACEHOLDER_VALUE__Slack channel ID for escalation alerts__>"},{"id":"id-5","name":"googleSheetId","type":"string","value":"<__PLACEHOLDER_VALUE__Google Sheets ID for logging results__>"},{"id":"id-6","name":"plagiarismThreshold","type":"number","value":0.7}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"81142903-b550-4145-adb6-e0404f9203dd","name":"Retrieve Student Answer and Rubric","type":"n8n-nodes-base.httpRequest","position":[-928,1256],"parameters":{"url":"={{ $('Workflow Configuration').first().json.apiEndpoint }}","options":{}},"typeVersion":4.3},{"id":"095df195-f3bd-4d71-9942-f7d50eebac0a","name":"Rubric Interpreter Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[-704,1256],"parameters":{"text":"=Student Answer: {{ $json.studentAnswer }}\n\nRubric: {{ $json.rubric }}","options":{"systemMessage":"You are a Rubric Interpreter Agent specialized in analyzing examination marking criteria.\n\nYour task is to:\n1. Parse the provided rubric and extract all marking criteria\n2. Identify the weighting/points allocation for each criterion\n3. Structure the criteria into clear, measurable components\n4. Define what constitutes different grade levels for each criterion (excellent, good, satisfactory, poor)\n5. Extract any specific requirements or constraints mentioned in the rubric\n6. Identify key terms and concepts that should be present in high-quality answers\n7. Flag any ambiguities or unclear criteria that may affect marking consistency\n\nReturn a structured JSON output with:\n- Total marks available\n- List of criteria with weightings\n- Grade descriptors for each criterion\n- Key concepts and requirements\n- Any integrity or fairness considerations"},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"4fd4d8d2-7a19-4c26-8602-1a99b81e8813","name":"Primary Marker Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[-352,1256],"parameters":{"text":"=Student Answer: {{ $('Retrieve Student Answer and Rubric').first().json.studentAnswer }}\n\nStructured Rubric: {{ $json.structuredRubric }}\n\nCriteria: {{ $json.criteria }}","options":{"systemMessage":"You are a Primary Marker Agent responsible for grading student examination answers with precision and fairness.\n\nYour task is to:\n1. Carefully read and analyze the student answer against the structured rubric criteria\n2. Evaluate each criterion independently and assign marks based on the grade descriptors\n3. Provide detailed justification for each mark awarded, citing specific evidence from the student answer\n4. Calculate subtotal marks for each criterion and overall total\n5. Identify strengths and weaknesses in the answer\n6. Flag potential integrity issues (plagiarism indicators, suspicious patterns, irrelevant content)\n7. Note any borderline decisions that may benefit from moderation\n8. Maintain objectivity and consistency in marking standards\n\nReturn structured JSON output with:\n- Marks breakdown by criterion with justifications\n- Total marks awarded\n- Strengths identified\n- Weaknesses identified\n- Integrity flags (if any)\n- Borderline decisions requiring review\n- Confidence level in marking (high/medium/low)"},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"e7ed2b7b-4933-46ec-8d3d-2782611485ef","name":"Quality Moderator Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[800,848],"parameters":{"text":"=Student Answer: {{ $('Retrieve Student Answer and Rubric').first().json.studentAnswer }}\n\nStructured Rubric: {{ $('Rubric Interpreter Agent').first().json.structuredRubric }}\n\nPrimary Marking: {{ $json }}","options":{"systemMessage":"You are a Quality Moderator Agent responsible for reviewing marking decisions to ensure fairness, consistency, and accuracy.\n\nYour task is to:\n1. Review the primary marker's assessment against the rubric criteria\n2. Verify that marks awarded align with the grade descriptors and evidence provided\n3. Check for marking consistency across different criteria\n4. Identify any potential bias, over-marking, or under-marking\n5. Assess whether borderline decisions were handled appropriately\n6. Review integrity flags and determine if they are justified\n7. Adjust marks if necessary with clear reasoning for any changes\n8. Validate that the total marks calculation is correct\n9. Provide moderation notes explaining any adjustments made\n\nReturn structured JSON output with:\n- Moderation decision (APPROVED / ADJUSTED / ESCALATE)\n- Adjusted marks breakdown (if changes made)\n- Final total marks\n- Moderation notes explaining review findings\n- Changes made with justifications\n- Fairness assessment\n- Recommendation for any follow-up actions"},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"f3414890-10be-4703-95df-d08e9bf3686e","name":"Feedback Generator Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[1152,848],"parameters":{"text":"=Student Answer: {{ $('Retrieve Student Answer and Rubric').first().json.studentAnswer }}\n\nStructured Rubric: {{ $('Rubric Interpreter Agent').first().json.structuredRubric }}\n\nFinal Marking: {{ $json }}","options":{"systemMessage":"You are a Feedback Generator Agent specialized in creating constructive, actionable feedback for students.\n\nYour task is to:\n1. Synthesize the marking and moderation results into clear, student-friendly feedback\n2. Highlight specific strengths in the student's answer with examples\n3. Identify areas for improvement with concrete suggestions\n4. Explain why marks were awarded or deducted for each criterion\n5. Provide actionable recommendations for future improvement\n6. Use encouraging and supportive language while being honest about weaknesses\n7. Structure feedback in a logical, easy-to-understand format\n8. Include specific examples from the student's answer to illustrate points\n9. Suggest resources or study areas for improvement where relevant\n\nReturn structured JSON output with:\n- Overall summary of performance\n- Detailed feedback by criterion\n- Key strengths (with examples)\n- Areas for improvement (with specific suggestions)\n- Actionable recommendations\n- Encouragement and next steps"},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"68034cc6-5449-4086-b1fa-c55ebec3b848","name":"Final Output Compilation","type":"n8n-nodes-base.set","position":[2480,864],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"studentId","type":"string","value":"={{ $('Retrieve Student Answer and Rubric').first().json.studentId || 'N/A' }}"},{"id":"id-2","name":"examTitle","type":"string","value":"={{ $('Retrieve Student Answer and Rubric').first().json.examTitle || 'N/A' }}"},{"id":"id-3","name":"totalMarksAvailable","type":"number","value":"={{ $('Workflow Configuration').first().json.totalMarks }}"},{"id":"id-4","name":"marksAwarded","type":"number","value":"={{ $('Quality Moderator Agent').first().json.finalTotalMarks }}"},{"id":"id-5","name":"percentage","type":"number","value":"={{ Math.round(($('Quality Moderator Agent').first().json.finalTotalMarks / $('Workflow Configuration').first().json.totalMarks) * 100) }}"},{"id":"id-6","name":"grade","type":"string","value":"={{ $('Quality Moderator Agent').first().json.finalTotalMarks >= $('Workflow Configuration').first().json.passingGrade ? 'PASS' : 'FAIL' }}"},{"id":"id-7","name":"marksBreakdown","type":"object","value":"={{ $('Quality Moderator Agent').first().json.adjustedMarksBreakdown || $('Primary Marker Agent').first().json.marksBreakdown }}"},{"id":"id-8","name":"moderationNotes","type":"string","value":"={{ $('Quality Moderator Agent').first().json.moderationNotes }}"},{"id":"id-9","name":"moderationDecision","type":"string","value":"={{ $('Quality Moderator Agent').first().json.moderationDecision }}"},{"id":"id-10","name":"integrityFlags","type":"array","value":"={{ $('Primary Marker Agent').first().json.integrityFlags || [] }}"},{"id":"id-11","name":"feedback","type":"object","value":"={{ $('Feedback Generator Agent').first().json }}"},{"id":"id-12","name":"markedAt","type":"string","value":"={{ new Date().toISOString() }}"}]}},"typeVersion":3.4},{"id":"51cf7982-60fa-4187-b999-fe65bb383ba7","name":"OpenAI Chat Model - Rubric","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-800,1488],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"8362c4a1-aec6-46c0-8802-e1a80b7d5f6a","name":"OpenAI Chat Model - Marker","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-344,1480],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"63bae304-c5e1-4df4-aaf5-10a6786f830b","name":"OpenAI Chat Model - Moderator","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[808,1072],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"ef4bfc22-98c3-41c7-a4fd-7246ff4407d9","name":"OpenAI Chat Model - Feedback","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1160,1072],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"ad9351ba-3fe8-49c7-8c60-4df456475fc4","name":"Structured Output Parser - Rubric","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-568,1480],"parameters":{"schemaType":"manual","inputSchema":"{\"type\": \"object\", \"properties\": {\"totalMarksAvailable\": {\"type\": \"number\"}, \"criteria\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {\"name\": {\"type\": \"string\"}, \"weighting\": {\"type\": \"number\"}, \"gradeDescriptors\": {\"type\": \"object\", \"properties\": {\"excellent\": {\"type\": \"string\"}, \"good\": {\"type\": \"string\"}, \"satisfactory\": {\"type\": \"string\"}, \"poor\": {\"type\": \"string\"}}}}}}, \"keyConcepts\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"requirements\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"ambiguities\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"structuredRubric\": {\"type\": \"string\"}}, \"required\": [\"totalMarksAvailable\", \"criteria\", \"keyConcepts\", \"requirements\", \"structuredRubric\"]}"},"typeVersion":1.3},{"id":"bdadd2d2-e661-4c08-87cc-fe7fdf65ab1d","name":"Structured Output Parser - Marker","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-176,1472],"parameters":{"schemaType":"manual","inputSchema":"{\"type\": \"object\", \"properties\": {\"marksBreakdown\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {\"criterionName\": {\"type\": \"string\"}, \"marksAwarded\": {\"type\": \"number\"}, \"marksAvailable\": {\"type\": \"number\"}, \"justification\": {\"type\": \"string\"}, \"evidenceCited\": {\"type\": \"string\"}}}}, \"totalMarksAwarded\": {\"type\": \"number\"}, \"strengths\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"weaknesses\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"integrityFlags\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"borderlineDecisions\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"confidenceLevel\": {\"type\": \"string\", \"enum\": [\"high\", \"medium\", \"low\"]}}, \"required\": [\"marksBreakdown\", \"totalMarksAwarded\", \"strengths\", \"weaknesses\", \"integrityFlags\", \"borderlineDecisions\", \"confidenceLevel\"]}"},"typeVersion":1.3},{"id":"da616f20-2853-4d0b-8026-adfe3e7acb36","name":"Structured Output Parser - Moderator","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[960,1072],"parameters":{"schemaType":"manual","inputSchema":"{\"type\": \"object\", \"properties\": {\"moderationDecision\": {\"type\": \"string\", \"enum\": [\"APPROVED\", \"ADJUSTED\", \"ESCALATE\"]}, \"adjustedMarksBreakdown\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {\"criterionName\": {\"type\": \"string\"}, \"marksAwarded\": {\"type\": \"number\"}, \"marksAvailable\": {\"type\": \"number\"}, \"justification\": {\"type\": \"string\"}}}}, \"finalTotalMarks\": {\"type\": \"number\"}, \"moderationNotes\": {\"type\": \"string\"}, \"changesMade\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {\"criterion\": {\"type\": \"string\"}, \"originalMarks\": {\"type\": \"number\"}, \"adjustedMarks\": {\"type\": \"number\"}, \"reason\": {\"type\": \"string\"}}}}, \"fairnessAssessment\": {\"type\": \"string\"}, \"recommendations\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}}, \"required\": [\"moderationDecision\", \"finalTotalMarks\", \"moderationNotes\", \"changesMade\", \"fairnessAssessment\", \"recommendations\"]}"},"typeVersion":1.3},{"id":"289604d8-44f4-4190-a30d-407308569888","name":"Structured Output Parser - Feedback","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1328,1072],"parameters":{"schemaType":"manual","inputSchema":"{\"type\": \"object\", \"properties\": {\"overallSummary\": {\"type\": \"string\"}, \"feedbackByCriterion\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {\"criterionName\": {\"type\": \"string\"}, \"feedback\": {\"type\": \"string\"}, \"marksAwarded\": {\"type\": \"number\"}, \"marksAvailable\": {\"type\": \"number\"}}}}, \"keyStrengths\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"areasForImprovement\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {\"area\": {\"type\": \"string\"}, \"suggestion\": {\"type\": \"string\"}}}}, \"actionableRecommendations\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"encouragement\": {\"type\": \"string\"}}, \"required\": [\"overallSummary\", \"feedbackByCriterion\", \"keyStrengths\", \"areasForImprovement\", \"actionableRecommendations\", \"encouragement\"]}"},"typeVersion":1.3},{"id":"24080315-fe89-465f-a948-1a51116376d4","name":"Route by Moderation Decision","type":"n8n-nodes-base.switch","position":[1504,816],"parameters":{"rules":{"values":[{"outputKey":"ADJUSTED","conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.moderationDecision }}","rightValue":"ADJUSTED"}]},"renameOutput":true},{"outputKey":"ESCALATE","conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.moderationDecision }}","rightValue":"ESCALATE"}]},"renameOutput":true},{"outputKey":"APPROVED","conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.moderationDecision }}","rightValue":"APPROVED"}]},"renameOutput":true}]},"options":{"ignoreCase":true,"fallbackOutput":"extra"}},"typeVersion":3.4},{"id":"1b2e86cf-03f2-4ff9-89db-f48152311445","name":"Check Integrity Flags","type":"n8n-nodes-base.if","position":[0,1500],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"id-1","operator":{"type":"array","operation":"lengthGt"},"leftValue":"={{ $('Primary Marker Agent').item.json.integrityFlags }}","rightValue":"0"}]}},"typeVersion":2.3},{"id":"938754da-07b0-427f-8b07-1300c454938c","name":"Calculate Statistics","type":"n8n-nodes-base.code","position":[2080,1040],"parameters":{"jsCode":"// Calculate marking statistics\nconst items = $input.all();\n\nif (items.length === 0) {\n  return [{ json: { error: 'No items to process' } }];\n}\n\n// Extract marks data\nconst marksData = items.map(item => {\n  const marksAwarded = item.json.marksAwarded || 0;\n  const totalMarksAvailable = item.json.totalMarksAvailable || 100;\n  const percentage = item.json.percentage || 0;\n  const grade = item.json.grade || 'N/A';\n  \n  return {\n    marksAwarded,\n    totalMarksAvailable,\n    percentage,\n    grade\n  };\n});\n\n// Calculate average marks\nconst totalMarks = marksData.reduce((sum, item) => sum + item.marksAwarded, 0);\nconst averageMarks = totalMarks / marksData.length;\n\n// Calculate average percentage\nconst totalPercentage = marksData.reduce((sum, item) => sum + item.percentage, 0);\nconst averagePercentage = totalPercentage / marksData.length;\n\n// Calculate standard deviation\nconst squaredDifferences = marksData.map(item => Math.pow(item.marksAwarded - averageMarks, 2));\nconst variance = squaredDifferences.reduce((sum, val) => sum + val, 0) / marksData.length;\nconst standardDeviation = Math.sqrt(variance);\n\n// Calculate grade distribution\nconst gradeDistribution = marksData.reduce((acc, item) => {\n  const grade = item.grade;\n  acc[grade] = (acc[grade] || 0) + 1;\n  return acc;\n}, {});\n\n// Calculate pass/fail counts\nconst passCount = marksData.filter(item => item.grade === 'PASS').length;\nconst failCount = marksData.filter(item => item.grade === 'FAIL').length;\nconst passRate = (passCount / marksData.length) * 100;\n\n// Find min and max marks\nconst allMarks = marksData.map(item => item.marksAwarded);\nconst minMarks = Math.min(...allMarks);\nconst maxMarks = Math.max(...allMarks);\n\n// Calculate median\nconst sortedMarks = [...allMarks].sort((a, b) => a - b);\nconst median = sortedMarks.length % 2 === 0\n  ? (sortedMarks[sortedMarks.length / 2 - 1] + sortedMarks[sortedMarks.length / 2]) / 2\n  : sortedMarks[Math.floor(sortedMarks.length / 2)];\n\n// Return statistics\nreturn [{\n  json: {\n    totalStudents: marksData.length,\n    averageMarks: Math.round(averageMarks * 100) / 100,\n    averagePercentage: Math.round(averagePercentage * 100) / 100,\n    standardDeviation: Math.round(standardDeviation * 100) / 100,\n    median: Math.round(median * 100) / 100,\n    minMarks,\n    maxMarks,\n    passCount,\n    failCount,\n    passRate: Math.round(passRate * 100) / 100,\n    gradeDistribution,\n    calculatedAt: new Date().toISOString()\n  }\n}];"},"typeVersion":2},{"id":"184ceb6b-edee-4a52-8ca1-cb973f7c5cdc","name":"Secondary Marker Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[1728,448],"parameters":{"text":"=Student Answer: {{ $('Retrieve Student Answer and Rubric').first().json.studentAnswer }}\n\nStructured Rubric: {{ $('Rubric Interpreter Agent').first().json.structuredRubric }}\n\nPrimary Marking: {{ $('Primary Marker Agent').first().json }}","options":{"systemMessage":"You are a Secondary Marker Agent providing independent assessment for adjusted cases.\n\nYour task is to:\n1. Independently mark the student answer without bias from primary marking\n2. Apply the same rubric criteria and grade descriptors\n3. Provide your own justifications and evidence citations\n4. Calculate marks independently\n5. Note any significant differences from primary marking\n\nReturn structured JSON output matching the primary marker format for comparison."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"fc286b43-a963-40a0-81fd-400d4e7cf615","name":"Plagiarism Analyzer Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[224,1624],"parameters":{"text":"=Student Answer: {{ $('Retrieve Student Answer and Rubric').first().json.studentAnswer }}\n\nIntegrity Flags: {{ $('Primary Marker Agent').first().json.integrityFlags }}","options":{"systemMessage":"You are a Plagiarism Analyzer Agent specialized in detecting academic integrity violations.\n\nYour task is to:\n1. Analyze the student answer for plagiarism indicators and integrity violations\n2. Assess text similarity patterns, unusual phrasing, and inconsistent writing styles\n3. Identify potential sources of copied content\n4. Calculate plagiarism confidence score (0-1)\n5. Determine severity level (LOW / MEDIUM / HIGH / CRITICAL)\n6. Provide specific evidence of suspected plagiarism\n7. Recommend actions (NONE / REVIEW / INVESTIGATE / REJECT)\n\nReturn structured JSON output with:\n- Plagiarism detected (boolean)\n- Confidence score\n- Severity level\n- Evidence list\n- Suspected sources\n- Recommended action\n- Detailed analysis"},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"8e696d2e-a391-4672-a88c-7b4ac402940f","name":"OpenAI Chat Model - Secondary","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1736,672],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"d5bb10b6-6f60-4615-868a-19d44662ab14","name":"OpenAI Chat Model - Plagiarism","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[232,1848],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"df0df50f-261f-4c50-9bff-3fa0d90bd37d","name":"Structured Output Parser - Secondary","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1904,672],"parameters":{"schemaType":"manual","inputSchema":"{\"type\": \"object\", \"properties\": {\"marksBreakdown\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"properties\": {\"criterionName\": {\"type\": \"string\"}, \"marksAwarded\": {\"type\": \"number\"}, \"marksAvailable\": {\"type\": \"number\"}, \"justification\": {\"type\": \"string\"}, \"evidenceCited\": {\"type\": \"string\"}}}}, \"totalMarksAwarded\": {\"type\": \"number\"}, \"strengths\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"weaknesses\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"integrityFlags\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"borderlineDecisions\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"confidenceLevel\": {\"type\": \"string\", \"enum\": [\"high\", \"medium\", \"low\"]}}, \"required\": [\"marksBreakdown\", \"totalMarksAwarded\", \"strengths\", \"weaknesses\", \"integrityFlags\", \"borderlineDecisions\", \"confidenceLevel\"]}"},"typeVersion":1.3},{"id":"e4201a43-a66c-489f-a8b3-6cd8cf9f208e","name":"Structured Output Parser - Plagiarism","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[432,1856],"parameters":{"schemaType":"manual","inputSchema":"{\"type\": \"object\", \"properties\": {\"plagiarismDetected\": {\"type\": \"boolean\"}, \"confidenceScore\": {\"type\": \"number\", \"minimum\": 0, \"maximum\": 1}, \"severity\": {\"type\": \"string\", \"enum\": [\"LOW\", \"MEDIUM\", \"HIGH\", \"CRITICAL\"]}, \"evidence\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"suspectedSources\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}, \"recommendedAction\": {\"type\": \"string\", \"enum\": [\"NONE\", \"REVIEW\", \"INVESTIGATE\", \"REJECT\"]}, \"detailedAnalysis\": {\"type\": \"string\"}}, \"required\": [\"plagiarismDetected\", \"confidenceScore\", \"severity\", \"evidence\", \"suspectedSources\", \"recommendedAction\", \"detailedAnalysis\"]}"},"typeVersion":1.3},{"id":"1f9abded-4139-47b7-97b7-fb6b08f52874","name":"Merge Marking Results","type":"n8n-nodes-base.merge","position":[576,1088],"parameters":{},"typeVersion":3.2},{"id":"a930e99c-d26a-4595-bb6f-63f5fd17a26c","name":"Log to Google Sheets","type":"n8n-nodes-base.googleSheets","position":[2704,880],"parameters":{"operation":"append","sheetName":{"__rl":true,"mode":"list","value":""},"documentId":{"__rl":true,"mode":"id","value":"={{ $('Workflow Configuration').first().json.googleSheetId }}"}},"credentials":{"googleSheetsOAuth2Api":{"id":"hQFe8XTqJEiHL03Z","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"59c32d26-1a33-4cc3-bd84-1a1da7486272","name":"Send Escalation Alert","type":"n8n-nodes-base.slack","position":[2080,848],"webhookId":"ca842e2c-7317-453e-a5b0-cc18dd80c385","parameters":{"text":"=🚨 *EXAMINATION MARKING ESCALATION*\n\n*Student ID:* {{ $json.studentId }}\n*Exam:* {{ $json.examTitle }}\n*Decision:* {{ $json.moderationDecision }}\n\n*Escalation Reason:*\n{{ $json.escalationReason }}\n\n*Timestamp:* {{ $json.timestamp }}\n\n_Requires immediate review by senior examiner_","select":"channel","channelId":{"__rl":true,"mode":"id","value":"={{ $('Workflow Configuration').first().json.slackChannel }}"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"d34b1ayEBbvZm2lT","name":"Slack account"}},"typeVersion":2.4},{"id":"db3b9c30-e433-4dcf-b96a-b6b199e9a858","name":"Prepare Escalation Data","type":"n8n-nodes-base.set","position":[1792,848],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"alertType","type":"string","value":"ESCALATION"},{"id":"id-2","name":"studentId","type":"string","value":"={{ $('Retrieve Student Answer and Rubric').first().json.studentId }}"},{"id":"id-3","name":"examTitle","type":"string","value":"={{ $('Retrieve Student Answer and Rubric').first().json.examTitle }}"},{"id":"id-4","name":"moderationDecision","type":"string","value":"={{ $('Quality Moderator Agent').first().json.moderationDecision }}"},{"id":"id-5","name":"escalationReason","type":"string","value":"={{ $('Quality Moderator Agent').first().json.moderationNotes }}"},{"id":"id-6","name":"timestamp","type":"string","value":"={{ new Date().toISOString() }}"}]}},"typeVersion":3.4},{"id":"20061d0e-8da8-4191-bd0f-c910b71cd57c","name":"Prepare Integrity Report","type":"n8n-nodes-base.set","position":[576,1624],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"integrityViolation","type":"boolean","value":true},{"id":"id-2","name":"plagiarismAnalysis","type":"object","value":"={{ $json }}"},{"id":"id-3","name":"requiresInvestigation","type":"boolean","value":"={{ $json.severity === 'HIGH' || $json.severity === 'CRITICAL' }}"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"e41ba4e5-5b18-4ff0-a12d-de9fc0d77a02","name":"Merge All Paths","type":"n8n-nodes-base.merge","position":[2304,868],"parameters":{},"typeVersion":3.2},{"id":"70e5dbde-9b66-4942-95b5-cb002b463b6e","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-96,592],"parameters":{"color":6,"width":400,"height":384,"content":"## Prerequisites\n- Google Sheets with service account credentials\n- Student answer and rubric data source (API or spreadsheet)\n## Use Cases\n- Automated essay and short-answer marking for university assessments\n## Customization\n- Replace OpenAI with Anthropic Claude for marking and moderation agents\n## Benefits\n- Automates end-to-end marking with built-in plagiarism and moderation checks"},"typeVersion":1},{"id":"6f935ec4-48a1-47cb-8a8f-2bb165914f79","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-576,688],"parameters":{"width":384,"height":272,"content":"## Setup Steps\n1. Configure manual trigger and connect student answer and rubric data sources.\n2. Add OpenAI API credentials to all OpenAI Chat Model nodes.\n3. Define moderation thresholds in the Route by Moderation Decision rules node.\n4. Configure Slack credentials and set escalation alert channel.\n5. Set plagiarism sensitivity thresholds in the Plagiarism Analyser Agent node."},"typeVersion":1},{"id":"54860cb7-23d6-4e9e-9597-a1822a42877c","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-1296,688],"parameters":{"width":672,"height":272,"content":"## How It Works\n\nThis workflow streamlines academic assessment through a multi-agent AI system that interprets rubrics, grades submissions, checks for plagiarism, performs quality moderation, generates feedback, and escalates borderline cases. Designed for educators and assessment administrators, it reduces inconsistencies in manual marking while embedding integrity checks into every evaluation cycle. A manual trigger retrieves student answers and rubrics, which are first structured before being sent to a Primary Marker Agent. If integrity concerns arise, a Plagiarism Analysis Agent runs in parallel. Results are consolidated and reviewed by a Quality Moderator Agent, followed by a Feedback Generator. Borderline cases are routed to a Secondary Marker Agent, while approved outcomes proceed to escalation preparation, Slack notifications, statistics computation, final consolidation, and logging in Google Sheets.\n"},"typeVersion":1},{"id":"e31fafed-bae9-42d5-8bd8-88181e79c41a","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[176,1600],"parameters":{"color":7,"width":704,"height":544,"content":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Plagiarism Analyser Agent\n**What** – Checks submissions for integrity flags in parallel with marking.\n**Why** – Embeds academic integrity verification without slowing the marking pipeline."},"typeVersion":1},{"id":"f409a244-2e3e-4c34-a8d3-8b1819c04197","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-400,1040],"parameters":{"color":7,"width":544,"height":768,"content":"## Primary Marker Agent\n**What** – Marks student answers against interpreted rubric criteria.\n**Why** – Delivers objective, criteria-aligned scoring at scale."},"typeVersion":1},{"id":"420f3507-dadb-4d5c-a6a5-10350b12b102","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-1312,1056],"parameters":{"color":7,"width":896,"height":848,"content":"## Trigger, Data Retrieval & Rubric Interpretation\n**What** – On manual trigger, fetches student answers and rubrics \n**Why** – Ensures marking begins with complete, validated inputs and applies consistent "},"typeVersion":1},{"id":"137c7cca-ccd0-4dc8-b812-8c8ffdd3586a","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[544,688],"parameters":{"color":7,"width":576,"height":752,"content":"\n## Quality Moderator Agent\n**What** – Reviews marking quality and routes borderline cases for secondary marking.\n**Why** – Maintains assessment reliability and flags inconsistent or marginal scores."},"typeVersion":1},{"id":"db18a757-5be1-414f-a9bf-02e6ee04f7c1","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[1136,352],"parameters":{"color":7,"width":1824,"height":1008,"content":"## Feedback Generator & Escalation\n**What** – Generates student feedback, sends Slack alerts, and logs to Google Sheets.\n**Why** – Closes the assessment loop with actionable feedback and full audit records."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"a8906d68-92a6-43fa-93d9-e823dcecf12f","connections":{"Manual Trigger":{"main":[[{"node":"Workflow Configuration","type":"main","index":0}]]},"Merge All Paths":{"main":[[{"node":"Final Output Compilation","type":"main","index":0}]]},"Calculate Statistics":{"main":[[{"node":"Merge All Paths","type":"main","index":1}]]},"Primary Marker Agent":{"main":[[{"node":"Quality Moderator Agent","type":"main","index":0},{"node":"Check Integrity Flags","type":"main","index":0},{"node":"Merge Marking Results","type":"main","index":1}]]},"Check Integrity Flags":{"main":[[{"node":"Plagiarism Analyzer Agent","type":"main","index":0}],[{"node":"Quality Moderator Agent","type":"main","index":0}]]},"Merge Marking Results":{"main":[[{"node":"Quality Moderator Agent","type":"main","index":0}]]},"Send Escalation Alert":{"main":[[{"node":"Merge All Paths","type":"main","index":0}]]},"Secondary Marker Agent":{"main":[[{"node":"Merge Marking Results","type":"main","index":0}]]},"Workflow Configuration":{"main":[[{"node":"Retrieve Student Answer and Rubric","type":"main","index":0}]]},"Prepare Escalation Data":{"main":[[{"node":"Send Escalation Alert","type":"main","index":0}]]},"Quality Moderator Agent":{"main":[[{"node":"Feedback Generator Agent","type":"main","index":0}]]},"Feedback Generator Agent":{"main":[[{"node":"Route by Moderation Decision","type":"main","index":0}]]},"Final Output Compilation":{"main":[[{"node":"Log to Google Sheets","type":"main","index":0}]]},"Prepare Integrity Report":{"main":[[{"node":"Quality Moderator Agent","type":"main","index":0}]]},"Rubric Interpreter Agent":{"main":[[{"node":"Primary Marker Agent","type":"main","index":0}]]},"Plagiarism Analyzer Agent":{"main":[[{"node":"Prepare Integrity Report","type":"main","index":0}]]},"OpenAI Chat Model - Marker":{"ai_languageModel":[[{"node":"Primary Marker Agent","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model - Rubric":{"ai_languageModel":[[{"node":"Rubric Interpreter Agent","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model - Feedback":{"ai_languageModel":[[{"node":"Feedback Generator Agent","type":"ai_languageModel","index":0}]]},"Route by Moderation Decision":{"main":[[{"node":"Secondary Marker Agent","type":"main","index":0}],[{"node":"Prepare Escalation Data","type":"main","index":0}],[{"node":"Calculate Statistics","type":"main","index":0}]]},"OpenAI Chat Model - Moderator":{"ai_languageModel":[[{"node":"Quality Moderator Agent","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model - Secondary":{"ai_languageModel":[[{"node":"Secondary Marker Agent","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model - Plagiarism":{"ai_languageModel":[[{"node":"Plagiarism Analyzer Agent","type":"ai_languageModel","index":0}]]},"Structured Output Parser - Marker":{"ai_outputParser":[[{"node":"Primary Marker Agent","type":"ai_outputParser","index":0}]]},"Structured Output Parser - Rubric":{"ai_outputParser":[[{"node":"Rubric Interpreter Agent","type":"ai_outputParser","index":0}]]},"Retrieve Student Answer and Rubric":{"main":[[{"node":"Rubric Interpreter Agent","type":"main","index":0}]]},"Structured Output Parser - Feedback":{"ai_outputParser":[[{"node":"Feedback Generator Agent","type":"ai_outputParser","index":0}]]},"Structured Output Parser - Moderator":{"ai_outputParser":[[{"node":"Quality Moderator Agent","type":"ai_outputParser","index":0}]]},"Structured Output Parser - Secondary":{"ai_outputParser":[[{"node":"Secondary Marker Agent","type":"ai_outputParser","index":0}]]},"Structured Output Parser - Plagiarism":{"ai_outputParser":[[{"node":"Plagiarism Analyzer Agent","type":"ai_outputParser","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":39,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":4},"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.merge":{"count":2},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.stickyNote":{"count":8},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-base.googleSheets":{"count":1},"n8n-nodes-base.manualTrigger":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":6},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":6},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":6}}},"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":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"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/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/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"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/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"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/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"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-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/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"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/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/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content 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/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"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/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"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/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"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/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/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"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/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"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.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"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":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using 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"},{"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/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.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"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":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"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/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/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"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"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/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/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"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","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":838,"icon":"fa:mouse-pointer","name":"n8n-nodes-base.manualTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"When clicking ‘Execute workflow’","color":"#909298"},"iconData":{"icon":"mouse-pointer","type":"icon"},"displayName":"Manual Trigger","typeVersion":1,"nodeCategories":[{"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"}]}],"categories":[{"id":35,"name":"Document Extraction"},{"id":49,"name":"AI Summarization"}],"image":[]}}