{"workflow":{"id":13335,"name":"Analyze public consultation data and coordinate governance with Claude AI","views":34,"recentViews":0,"totalViews":34,"createdAt":"2026-02-12T14:31:28.431Z","description":"\n## How It Works\nThis workflow automates environmental, social, and governance (ESG) data collection, compliance validation, and sustainability reporting for corporations managing complex regulatory requirements and stakeholder transparency expectations. Designed for sustainability officers, compliance teams, and investor relations departments, it solves the challenge of aggregating ESG metrics across global operations, validating data accuracy, and generating standardized reports for multiple frameworks. The system schedules regular monitoring, fetches consolidated ESG data from operational systems, generates S&D (sustainability and disclosure) submissions, validates compliance through dual AI agents (Compliance Analyzer ensures regulatory adherence, Decision Coordination orchestrates specialized sub-agents for aggregate analysis, traceability monitoring, summary generation, and governance reporting), checks star ratings for data quality, routes findings by compliance status (critical/routine), and produces standardized reports with traceability records. Organizations achieve 90% reduction in reporting cycle time, ensure multi-framework compliance, eliminate manual data aggregation errors, and maintain complete audit trails for regulatory scrutiny.\n \n## Setup Steps\n1. Connect **Schedule Trigger** for monitoring frequency \n2. Configure **ESG data sources** with API credentials\n3. Add **AI model API keys** to Compliance Analyzer and Decision Coordination Agent nodes\n4. Define **reporting frameworks** and compliance requirements in agent prompts\n5. Set **quality rating thresholds** for data completeness and materiality scoring parameters\n6. Configure **alert mechanisms** for critical compliance gaps requiring immediate remediation\n\n## Prerequisites\nESG data management system access, AI service accounts\n## Use Cases\nCarbon emissions tracking and reporting, supply chain sustainability monitoring\n## Customization\nModify agent prompts for industry-specific materiality topics\n## Benefits\nReduces reporting cycle time by 90%, ensures multi-framework compliance simultaneously","workflow":{"id":"gNbN6yVeVzGN6aTyLh1ha","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"Smart Public Consultation Analysis and Governance Coordination System","tags":[],"nodes":[{"id":"3968902b-1eed-41f5-956a-a1825d14e7e0","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-2640,192],"parameters":{"rule":{"interval":[{}]}},"typeVersion":1.3},{"id":"afc856df-dd03-49af-99d8-35faf562688e","name":"Workflow Configuration","type":"n8n-nodes-base.set","position":[-2416,192],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"consultationApiUrl","type":"string","value":"<__PLACEHOLDER_VALUE__Consultation API endpoint URL__>"},{"id":"id-2","name":"biasThreshold","type":"number","value":0.7},{"id":"id-3","name":"criticalEscalationThreshold","type":"number","value":0.8},{"id":"id-4","name":"standardReportThreshold","type":"number","value":0.5},{"id":"id-5","name":"traceabilityStorageUrl","type":"string","value":"<__PLACEHOLDER_VALUE__Traceability storage API endpoint__>"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"aad1dc82-401c-48f0-8aa4-44614c5d443b","name":"Fetch Consultation Data","type":"n8n-nodes-base.httpRequest","position":[-2192,192],"parameters":{"url":"={{ $('Workflow Configuration').first().json.consultationApiUrl }}","options":{},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.3},{"id":"f41fd7b2-ae59-4c64-9dc3-702be79246d0","name":"Split Submissions","type":"n8n-nodes-base.splitOut","position":[-1968,192],"parameters":{"include":"allOtherFields","options":{},"fieldToSplitOut":"submissions"},"typeVersion":1},{"id":"6f717f69-1a55-47f2-a8b1-ebacdb1d3c90","name":"Anthropic Model - Analysis","type":"@n8n/n8n-nodes-langchain.lmChatAnthropic","position":[-1736,416],"parameters":{"model":{"__rl":true,"mode":"list","value":"claude-sonnet-4-5-20250929","cachedResultName":"Claude Sonnet 4.5"},"options":{}},"credentials":{"anthropicApi":{"id":"S8laStQPC1u3EYuZ","name":"Anthropic account"}},"typeVersion":1.3},{"id":"7f257eb3-7e4d-412d-841e-9dea26d7ec68","name":"Analysis Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-1608,416],"parameters":{"jsonSchemaExample":"{\n  \"submissionId\": \"string\",\n  \"sentiment\": \"positive | neutral | negative | mixed\",\n  \"keyThemes\": [\"string\"],\n  \"stakeholderType\": \"individual | organization | government | advocacy_group\",\n  \"urgencyLevel\": \"low | medium | high | critical\",\n  \"policyRelevance\": \"number between 0 and 1\",\n  \"evidenceQuality\": \"low | medium | high\",\n  \"geographicScope\": \"local | regional | national | international\",\n  \"impactedPopulation\": \"string\",\n  \"recommendations\": [\"string\"],\n  \"concerns\": [\"string\"],\n  \"supportingData\": \"boolean\",\n  \"conflictingViews\": \"boolean\"\n}"},"typeVersion":1.3},{"id":"d2370967-ce59-45b9-9a9c-0b39e381ebae","name":"Consultation Analysis Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[-1744,192],"parameters":{"text":"={{ $json.submissionText || $json.content }}","options":{"systemMessage":"=You are a Consultation Analysis Agent specialized in evaluating public feedback and consultation submissions.\n\nYour task is to:\n1. Analyze the structured submission content for sentiment, themes, and stakeholder perspectives\n2. Identify key policy-relevant insights without making policy recommendations\n3. Assess the quality and credibility of evidence provided\n4. Categorize stakeholder type and geographic scope\n5. Evaluate urgency and potential impact on affected populations\n6. Extract specific concerns and recommendations made by the submitter\n7. Identify any conflicting views or supporting data\n8. Rate policy relevance on a scale of 0 to 1\n\nIMPORTANT CONSTRAINTS:\n- You analyze and categorize feedback objectively\n- You DO NOT make policy recommendations\n- You DO NOT evaluate the merit of policy positions\n- You DO NOT influence substantive policy outcomes\n- You focus on extracting, structuring, and categorizing information\n\nSubmission metadata available:\n- Submission ID: {{ $json.submissionId || \"N/A\" }}\n- Submitter type: {{ $json.submitterType || \"N/A\" }}\n- Submission date: {{ $json.submissionDate || \"N/A\" }}\n- Geographic location: {{ $json.location || \"N/A\" }}\n\nReturn your analysis in the structured format defined by the output parser."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"83c3acce-71cd-44c4-8873-ac7652ea146d","name":"Aggregate Analysis Results","type":"n8n-nodes-base.aggregate","position":[-1392,192],"parameters":{"options":{},"aggregate":"aggregateAllItemData"},"typeVersion":1},{"id":"7c62fe35-8a52-4b63-9d96-e2bb8c9cb125","name":"Anthropic Model - Governance","type":"@n8n/n8n-nodes-langchain.lmChatAnthropic","position":[-1168,416],"parameters":{"model":{"__rl":true,"mode":"list","value":"claude-sonnet-4-5-20250929","cachedResultName":"Claude Sonnet 4.5"},"options":{}},"credentials":{"anthropicApi":{"id":"S8laStQPC1u3EYuZ","name":"Anthropic account"}},"typeVersion":1.3},{"id":"0880ee7c-c9e2-465c-9380-4624d55ea800","name":"Bias Detection Tool","type":"@n8n/n8n-nodes-langchain.toolCode","position":[-1040,416],"parameters":{"jsCode":"// Bias Detection Tool for Consultation Analysis\n// Analyzes aggregated consultation data for various types of bias\n\nconst analysisData = JSON.parse(query);\nconst data = analysisData.data || analysisData;\n\n// Initialize bias detection results\nconst biasResults = {\n  biasDetected: false,\n  biasScore: 0,\n  biasDetails: [],\n  demographicBias: { detected: false, score: 0, details: [] },\n  geographicBias: { detected: false, score: 0, details: [] },\n  stakeholderBias: { detected: false, score: 0, details: [] },\n  temporalBias: { detected: false, score: 0, details: [] }\n};\n\n// Helper function to calculate distribution variance\nfunction calculateVariance(distribution) {\n  const values = Object.values(distribution);\n  const mean = values.reduce((a, b) => a + b, 0) / values.length;\n  const variance = values.reduce((sum, val) => sum + Math.pow(val - mean, 2), 0) / values.length;\n  return Math.sqrt(variance) / mean; // Coefficient of variation\n}\n\n// 1. Demographic Bias Detection\nconst stakeholderTypes = {};\ndata.forEach(item => {\n  const type = item.stakeholderType || 'unknown';\n  stakeholderTypes[type] = (stakeholderTypes[type] || 0) + 1;\n});\n\nconst totalSubmissions = data.length;\nconst stakeholderVariance = calculateVariance(stakeholderTypes);\n\nif (stakeholderVariance > 0.7) {\n  biasResults.demographicBias.detected = true;\n  biasResults.demographicBias.score = Math.min(stakeholderVariance, 1);\n  biasResults.demographicBias.details.push(\n    `Significant stakeholder imbalance detected. Distribution: ${JSON.stringify(stakeholderTypes)}`\n  );\n}\n\n// Check for over-representation\nfor (const [type, count] of Object.entries(stakeholderTypes)) {\n  const percentage = (count / totalSubmissions) * 100;\n  if (percentage > 60) {\n    biasResults.demographicBias.detected = true;\n    biasResults.demographicBias.score = Math.max(biasResults.demographicBias.score, percentage / 100);\n    biasResults.demographicBias.details.push(\n      `Over-representation of ${type}: ${percentage.toFixed(1)}% of submissions`\n    );\n  }\n}\n\n// 2. Geographic Bias Detection\nconst geographicScopes = {};\ndata.forEach(item => {\n  const scope = item.geographicScope || 'unknown';\n  geographicScopes[scope] = (geographicScopes[scope] || 0) + 1;\n});\n\nconst geoVariance = calculateVariance(geographicScopes);\n\nif (geoVariance > 0.6) {\n  biasResults.geographicBias.detected = true;\n  biasResults.geographicBias.score = Math.min(geoVariance, 1);\n  biasResults.geographicBias.details.push(\n    `Geographic representation imbalance. Distribution: ${JSON.stringify(geographicScopes)}`\n  );\n}\n\n// 3. Stakeholder Representation Bias\nconst urgencyLevels = {};\ndata.forEach(item => {\n  const urgency = item.urgencyLevel || 'unknown';\n  urgencyLevels[urgency] = (urgencyLevels[urgency] || 0) + 1;\n});\n\nconst criticalCount = urgencyLevels.critical || 0;\nconst criticalPercentage = (criticalCount / totalSubmissions) * 100;\n\nif (criticalPercentage > 40) {\n  biasResults.stakeholderBias.detected = true;\n  biasResults.stakeholderBias.score = criticalPercentage / 100;\n  biasResults.stakeholderBias.details.push(\n    `High proportion of critical urgency submissions (${criticalPercentage.toFixed(1)}%) may indicate coordinated campaign or crisis response`\n  );\n}\n\n// Check for evidence quality bias\nconst evidenceQuality = {};\ndata.forEach(item => {\n  const quality = item.evidenceQuality || 'unknown';\n  evidenceQuality[quality] = (evidenceQuality[quality] || 0) + 1;\n});\n\nconst lowEvidencePercentage = ((evidenceQuality.low || 0) / totalSubmissions) * 100;\nif (lowEvidencePercentage > 50) {\n  biasResults.stakeholderBias.detected = true;\n  biasResults.stakeholderBias.score = Math.max(biasResults.stakeholderBias.score, lowEvidencePercentage / 100);\n  biasResults.stakeholderBias.details.push(\n    `High proportion of low-evidence submissions (${lowEvidencePercentage.toFixed(1)}%)`\n  );\n}\n\n// 4. Temporal Bias Detection (if submission dates available)\nconst submissionDates = data.filter(item => item.submissionDate).map(item => new Date(item.submissionDate));\n\nif (submissionDates.length > 0) {\n  submissionDates.sort((a, b) => a - b);\n  const firstDate = submissionDates[0];\n  const lastDate = submissionDates[submissionDates.length - 1];\n  const totalDays = (lastDate - firstDate) / (1000 * 60 * 60 * 24);\n  \n  // Check for clustering (>50% of submissions in <20% of time period)\n  const midpoint = new Date(firstDate.getTime() + (lastDate - firstDate) / 5);\n  const earlySubmissions = submissionDates.filter(d => d <= midpoint).length;\n  const earlyPercentage = (earlySubmissions / submissionDates.length) * 100;\n  \n  if (earlyPercentage > 50) {\n    biasResults.temporalBias.detected = true;\n    biasResults.temporalBias.score = earlyPercentage / 100;\n    biasResults.temporalBias.details.push(\n      `Temporal clustering detected: ${earlyPercentage.toFixed(1)}% of submissions in first 20% of consultation period`\n    );\n  }\n}\n\n// Calculate overall bias score (weighted average)\nconst weights = { demographic: 0.3, geographic: 0.25, stakeholder: 0.3, temporal: 0.15 };\nbiasResults.biasScore = \n  (biasResults.demographicBias.score * weights.demographic) +\n  (biasResults.geographicBias.score * weights.geographic) +\n  (biasResults.stakeholderBias.score * weights.stakeholder) +\n  (biasResults.temporalBias.score * weights.temporal);\n\n// Determine if bias is detected (threshold: 0.4)\nbiasResults.biasDetected = biasResults.biasScore > 0.4;\n\n// Compile all bias details\nif (biasResults.demographicBias.detected) {\n  biasResults.biasDetails.push(...biasResults.demographicBias.details);\n}\nif (biasResults.geographicBias.detected) {\n  biasResults.biasDetails.push(...biasResults.geographicBias.details);\n}\nif (biasResults.stakeholderBias.detected) {\n  biasResults.biasDetails.push(...biasResults.stakeholderBias.details);\n}\nif (biasResults.temporalBias.detected) {\n  biasResults.biasDetails.push(...biasResults.temporalBias.details);\n}\n\nif (!biasResults.biasDetected) {\n  biasResults.biasDetails.push('No significant bias detected in consultation data');\n}\n\n// Return results as JSON string\nreturn JSON.stringify(biasResults, null, 2);","description":"Detects potential bias in consultation analysis including demographic bias, geographic bias, stakeholder representation bias, and temporal bias"},"typeVersion":1.3},{"id":"6085ef06-fe04-4786-a686-f26c73198909","name":"Traceability Record Tool","type":"@n8n/n8n-nodes-langchain.toolCode","position":[-912,416],"parameters":{"jsCode":"// Parse the input query which should contain governance metadata\nconst metadata = typeof query === 'string' ? JSON.parse(query) : query;\n\n// Generate a unique traceability record ID\nconst recordId = `trace-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n\n// Create comprehensive traceability record\nconst traceabilityRecord = {\n  recordId: recordId,\n  timestamp: new Date().toISOString(),\n  recordType: 'consultation_analysis_governance',\n  \n  // Analysis metadata\n  analysisMetadata: {\n    totalSubmissions: metadata.totalSubmissions || 0,\n    analysisDate: metadata.analysisDate || new Date().toISOString(),\n    analysisAgent: 'Consultation Analysis Agent',\n    governanceAgent: 'Decision Governance Agent'\n  },\n  \n  // Decision points\n  decisionPoints: {\n    governanceDecision: metadata.governanceDecision || 'unknown',\n    escalationLevel: metadata.escalationLevel || 'routine',\n    escalationReason: metadata.escalationReason || 'N/A',\n    biasDetected: metadata.biasDetected || false,\n    biasScore: metadata.biasScore || 0,\n    confidenceScore: metadata.confidenceScore || 0\n  },\n  \n  // Data lineage\n  dataLineage: {\n    sourceNode: 'Fetch Consultation Data',\n    processingNodes: [\n      'Split Submissions',\n      'Consultation Analysis Agent',\n      'Aggregate Analysis Results',\n      'Decision Governance Agent'\n    ],\n    outputDestination: 'Store Traceability Records',\n    dataTransformations: [\n      'Individual submission analysis',\n      'Sentiment and theme extraction',\n      'Aggregation of results',\n      'Bias detection',\n      'Governance decision'\n    ]\n  },\n  \n  // Governance actions\n  governanceActions: {\n    summaryGenerated: metadata.summaryGenerated || false,\n    traceabilityRecordCreated: true,\n    recommendedActions: metadata.recommendedActions || [],\n    stakeholdersToNotify: metadata.stakeholdersToNotify || [],\n    timelineForResponse: metadata.timelineForResponse || 'N/A',\n    governanceNotes: metadata.governanceNotes || ''\n  },\n  \n  // Audit trail\n  auditTrail: {\n    workflowExecutionId: $execution.id || 'unknown',\n    workflowName: 'Public Consultation Analysis and Governance Coordination System',\n    executionMode: $execution.mode || 'unknown',\n    createdBy: 'system',\n    recordStatus: 'active',\n    retentionPeriod: '7_years',\n    complianceFlags: {\n      transparencyCompliant: true,\n      accountabilityCompliant: true,\n      dataProtectionCompliant: true\n    }\n  }\n};\n\n// Return the traceability record as a JSON string\nreturn JSON.stringify(traceabilityRecord, null, 2);","description":"Creates comprehensive traceability records for audit trails including analysis metadata, decision points, data lineage, and governance actions"},"typeVersion":1.3},{"id":"6ce6d045-e433-4d5a-983b-03168843d490","name":"Summary Generation Tool","type":"@n8n/n8n-nodes-langchain.toolCode","position":[-784,416],"parameters":{"jsCode":"// Summary Generation Tool\n// Generates executive summaries, thematic summaries, and statistical summaries\n\nconst analysisData = JSON.parse(query);\n\n// Extract key statistics\nconst totalSubmissions = analysisData.data ? analysisData.data.length : 0;\nconst sentimentCounts = {};\nconst urgencyCounts = {};\nconst stakeholderCounts = {};\nconst themeFrequency = {};\n\nif (analysisData.data) {\n  analysisData.data.forEach(item => {\n    // Count sentiments\n    const sentiment = item.sentiment || 'unknown';\n    sentimentCounts[sentiment] = (sentimentCounts[sentiment] || 0) + 1;\n    \n    // Count urgency levels\n    const urgency = item.urgencyLevel || 'unknown';\n    urgencyCounts[urgency] = (urgencyCounts[urgency] || 0) + 1;\n    \n    // Count stakeholder types\n    const stakeholder = item.stakeholderType || 'unknown';\n    stakeholderCounts[stakeholder] = (stakeholderCounts[stakeholder] || 0) + 1;\n    \n    // Count themes\n    if (item.keyThemes && Array.isArray(item.keyThemes)) {\n      item.keyThemes.forEach(theme => {\n        themeFrequency[theme] = (themeFrequency[theme] || 0) + 1;\n      });\n    }\n  });\n}\n\n// Get top themes\nconst topThemes = Object.entries(themeFrequency)\n  .sort((a, b) => b[1] - a[1])\n  .slice(0, 5)\n  .map(([theme, count]) => `${theme} (${count} mentions)`);\n\n// Calculate average policy relevance\nlet avgPolicyRelevance = 0;\nif (analysisData.data && analysisData.data.length > 0) {\n  const relevanceSum = analysisData.data.reduce((sum, item) => {\n    return sum + (item.policyRelevance || 0);\n  }, 0);\n  avgPolicyRelevance = (relevanceSum / analysisData.data.length).toFixed(2);\n}\n\n// Generate executive summary\nconst executiveSummary = `\nEXECUTIVE SUMMARY\n=================\n\nTotal Submissions Analyzed: ${totalSubmissions}\n\nSENTIMENT DISTRIBUTION:\n${Object.entries(sentimentCounts).map(([k, v]) => `  - ${k}: ${v} (${((v/totalSubmissions)*100).toFixed(1)}%)`).join('\\n')}\n\nURGENCY LEVELS:\n${Object.entries(urgencyCounts).map(([k, v]) => `  - ${k}: ${v} (${((v/totalSubmissions)*100).toFixed(1)}%)`).join('\\n')}\n\nSTAKEHOLDER BREAKDOWN:\n${Object.entries(stakeholderCounts).map(([k, v]) => `  - ${k}: ${v} (${((v/totalSubmissions)*100).toFixed(1)}%)`).join('\\n')}\n\nTOP THEMES:\n${topThemes.map((theme, i) => `  ${i+1}. ${theme}`).join('\\n')}\n\nAVERAGE POLICY RELEVANCE: ${avgPolicyRelevance}/1.0\n\nKEY INSIGHTS:\n- ${urgencyCounts.critical || 0} submissions flagged as CRITICAL urgency\n- ${urgencyCounts.high || 0} submissions flagged as HIGH urgency\n- Dominant sentiment: ${Object.entries(sentimentCounts).sort((a,b) => b[1] - a[1])[0]?.[0] || 'N/A'}\n- Primary stakeholder group: ${Object.entries(stakeholderCounts).sort((a,b) => b[1] - a[1])[0]?.[0] || 'N/A'}\n\nThis summary provides an objective overview of consultation submissions for governance coordination purposes only.\n`;\n\nreturn executiveSummary;","description":"Generates executive summaries, thematic summaries, and statistical summaries of consultation analysis for policymakers"},"typeVersion":1.3},{"id":"010dd035-96fd-4c72-8656-a135e51834ec","name":"Governance Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-656,416],"parameters":{"jsonSchemaExample":"{\n  \"governanceDecision\": \"proceed | review_required | escalate | hold\",\n  \"escalationLevel\": \"routine | standard | critical\",\n  \"escalationReason\": \"string\",\n  \"biasDetected\": \"boolean\",\n  \"biasScore\": \"number between 0 and 1\",\n  \"biasDetails\": [\"string\"],\n  \"summaryGenerated\": \"boolean\",\n  \"traceabilityRecordCreated\": \"boolean\",\n  \"recommendedActions\": [\"string\"],\n  \"stakeholdersToNotify\": [\"string\"],\n  \"timelineForResponse\": \"immediate | 24_hours | 7_days | 30_days\",\n  \"confidenceScore\": \"number between 0 and 1\",\n  \"governanceNotes\": \"string\"\n}"},"typeVersion":1.3},{"id":"d2c71d38-5d2d-4459-beb1-aecb24ca8bf8","name":"Decision Governance Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[-984,192],"parameters":{"text":"={{ JSON.stringify($json) }}","options":{"systemMessage":"=You are a Decision Governance Agent responsible for coordinating consultation analysis governance without influencing substantive policy outcomes.\n\nYour task is to:\n1. Review aggregated consultation analysis results\n2. Coordinate bias detection checks using the Bias Detection Tool\n3. Generate executive summaries using the Summary Generation Tool\n4. Create traceability records using the Traceability Record Tool\n5. Determine appropriate escalation levels based on urgency, bias, and impact\n6. Identify stakeholders who need to be notified\n7. Recommend governance actions (NOT policy actions)\n8. Ensure transparency and accountability in the consultation process\n\nCRITICAL CONSTRAINTS:\n- You coordinate governance processes ONLY\n- You DO NOT make policy recommendations\n- You DO NOT evaluate the merit of policy positions\n- You DO NOT influence substantive policy outcomes\n- You focus on process integrity, transparency, and appropriate escalation\n\nEscalation criteria:\n- CRITICAL: Bias score > 0.7, or >50 critical urgency submissions, or significant stakeholder representation issues\n- STANDARD: Bias score 0.4-0.7, or 20-50 high urgency submissions, or moderate concerns\n- ROUTINE: Bias score < 0.4, standard consultation processing\n\nWorkflow:\n1. First, call the Bias Detection Tool with the aggregated analysis data\n2. Then, call the Summary Generation Tool with the aggregated analysis data\n3. Then, call the Traceability Record Tool with governance metadata\n4. Finally, determine escalation level and recommended governance actions\n\nConfiguration thresholds:\n- Bias threshold: {{ $('Workflow Configuration').first().json.biasThreshold }}\n- Critical escalation threshold: {{ $('Workflow Configuration').first().json.criticalEscalationThreshold }}\n- Standard report threshold: {{ $('Workflow Configuration').first().json.standardReportThreshold }}\n\nReturn your governance decision in the structured format defined by the output parser."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"534ba87d-c430-49a1-82ca-8561e37fa2e9","name":"Route by Escalation Level","type":"n8n-nodes-base.switch","position":[16,368],"parameters":{"rules":{"values":[{"outputKey":"Critical","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.escalationLevel }}","rightValue":"critical"}]},"renameOutput":true},{"outputKey":"Standard","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.escalationLevel }}","rightValue":"standard"}]},"renameOutput":true},{"outputKey":"Routine","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.escalationLevel }}","rightValue":"routine"}]},"renameOutput":true}]},"options":{}},"typeVersion":3.4},{"id":"143edb23-ebb6-48e8-8b3d-33fa0408f5b9","name":"Prepare Critical Escalation","type":"n8n-nodes-base.set","position":[240,192],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"escalationType","type":"string","value":"critical"},{"id":"id-2","name":"notificationPriority","type":"string","value":"immediate"},{"id":"id-3","name":"recipientGroup","type":"string","value":"senior_policymakers"},{"id":"id-4","name":"subject","type":"string","value":"CRITICAL: Public Consultation Governance Alert"},{"id":"id-5","name":"messageBody","type":"string","value":"=Critical escalation required for consultation analysis.\n\nEscalation Reason: {{ $json.escalationReason }}\n\nBias Score: {{ $json.biasScore }}\n\nRecommended Actions: {{ JSON.stringify($json.recommendedActions) }}\n\nTimeline: {{ $json.timelineForResponse }}\n\nGovernance Notes: {{ $json.governanceNotes }}"},{"id":"id-6","name":"escalationTimestamp","type":"string","value":"={{ $now.toISO() }}"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"c0eba31a-d002-495e-9cd1-9eb9ece14be8","name":"Prepare Standard Report","type":"n8n-nodes-base.set","position":[240,384],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"escalationType","type":"string","value":"standard"},{"id":"id-2","name":"notificationPriority","type":"string","value":"24_hours"},{"id":"id-3","name":"recipientGroup","type":"string","value":"policy_team"},{"id":"id-4","name":"subject","type":"string","value":"Public Consultation Analysis Report - Review Required"},{"id":"id-5","name":"messageBody","type":"string","value":"=Standard consultation analysis report ready for review.\n\nEscalation Reason: {{ $json.escalationReason }}\n\nBias Score: {{ $json.biasScore }}\n\nRecommended Actions: {{ JSON.stringify($json.recommendedActions) }}\n\nTimeline: {{ $json.timelineForResponse }}"},{"id":"id-6","name":"reportTimestamp","type":"string","value":"={{ $now.toISO() }}"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"71e47d30-8ff9-4a88-aac2-5a5e32533561","name":"Prepare Routine Update","type":"n8n-nodes-base.set","position":[240,576],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"escalationType","type":"string","value":"routine"},{"id":"id-2","name":"notificationPriority","type":"string","value":"7_days"},{"id":"id-3","name":"recipientGroup","type":"string","value":"consultation_team"},{"id":"id-4","name":"subject","type":"string","value":"Routine Public Consultation Update"},{"id":"id-5","name":"messageBody","type":"string","value":"=Routine consultation analysis completed.\n\nSummary available for review.\n\nBias Score: {{ $json.biasScore }}\n\nNo immediate action required."},{"id":"id-6","name":"updateTimestamp","type":"string","value":"={{ $now.toISO() }}"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"0f90afab-2034-47ac-a859-a97bd40a898d","name":"Store Traceability Records","type":"n8n-nodes-base.code","position":[688,384],"parameters":{"jsCode":"// Consolidate and store traceability records for all escalation paths\n// This creates a comprehensive audit trail for governance decisions\n\nconst items = $input.all();\nconst traceabilityRecords = [];\n\n// Process each escalation path item\nfor (const item of items) {\n  const record = {\n    // Core identification\n    recordId: `trace-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n    timestamp: new Date().toISOString(),\n    \n    // Escalation metadata\n    escalationType: item.json.escalationType || 'unknown',\n    escalationLevel: item.json.escalationLevel || 'routine',\n    escalationReason: item.json.escalationReason || 'N/A',\n    \n    // Governance decision details\n    governanceDecision: item.json.governanceDecision || 'N/A',\n    confidenceScore: item.json.confidenceScore || 0,\n    governanceNotes: item.json.governanceNotes || '',\n    \n    // Bias detection results\n    biasDetected: item.json.biasDetected || false,\n    biasScore: item.json.biasScore || 0,\n    biasDetails: item.json.biasDetails || [],\n    biasAlertFlag: item.json.biasAlertFlag || false,\n    \n    // Notification and action tracking\n    notificationPriority: item.json.notificationPriority || 'routine',\n    recipientGroup: item.json.recipientGroup || 'consultation_team',\n    stakeholdersToNotify: item.json.stakeholdersToNotify || [],\n    recommendedActions: item.json.recommendedActions || [],\n    timelineForResponse: item.json.timelineForResponse || '7_days',\n    \n    // Summary and reporting\n    summaryGenerated: item.json.summaryGenerated || false,\n    traceabilityRecordCreated: true,\n    \n    // Audit trail metadata\n    workflowExecutionId: $execution.id,\n    workflowName: $workflow.name,\n    nodeExecutionTime: new Date().toISOString(),\n    \n    // Full data snapshot for audit purposes\n    fullDataSnapshot: item.json\n  };\n  \n  traceabilityRecords.push(record);\n}\n\n// Prepare consolidated output\nconst consolidatedOutput = {\n  totalRecords: traceabilityRecords.length,\n  recordsCreated: new Date().toISOString(),\n  executionId: $execution.id,\n  workflowName: $workflow.name,\n  traceabilityRecords: traceabilityRecords,\n  \n  // Summary statistics\n  summary: {\n    criticalEscalations: traceabilityRecords.filter(r => r.escalationType === 'critical').length,\n    standardReports: traceabilityRecords.filter(r => r.escalationType === 'standard').length,\n    routineUpdates: traceabilityRecords.filter(r => r.escalationType === 'routine').length,\n    biasAlertsTriggered: traceabilityRecords.filter(r => r.biasAlertFlag === true).length,\n    averageBiasScore: traceabilityRecords.reduce((sum, r) => sum + (r.biasScore || 0), 0) / traceabilityRecords.length,\n    averageConfidenceScore: traceabilityRecords.reduce((sum, r) => sum + (r.confidenceScore || 0), 0) / traceabilityRecords.length\n  },\n  \n  // Storage metadata\n  storageUrl: $('Workflow Configuration').first().json.traceabilityStorageUrl || '<PLACEHOLDER>',\n  storageStatus: 'pending_api_call',\n  storageNote: 'Records prepared for storage. Implement HTTP Request to storage API endpoint.'\n};\n\n// Return consolidated traceability records\nreturn [consolidatedOutput];"},"typeVersion":2},{"id":"381c9200-224c-4301-8db7-6d27fd96f28d","name":"Check for Bias Flags","type":"n8n-nodes-base.if","position":[-448,192],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"id-1","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $('Decision Governance Agent').item.json.biasDetected }}","rightValue":"true"}]}},"typeVersion":2.3},{"id":"c48375db-44bb-4ce2-9fc8-98e8ef0117a7","name":"Flag Bias Alert","type":"n8n-nodes-base.set","position":[-208,464],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"biasAlertFlag","type":"boolean","value":true},{"id":"id-2","name":"biasScore","type":"number","value":"={{ $json.biasScore }}"},{"id":"id-3","name":"biasDetails","type":"object","value":"={{ JSON.stringify($json.biasDetails) }}"},{"id":"id-4","name":"alertTimestamp","type":"string","value":"={{ $now.toISO() }}"},{"id":"id-5","name":"requiresReview","type":"boolean","value":true}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"da89bb9e-c9f3-4d5e-932c-a53f1c2f2949","name":"Merge Escalation Paths","type":"n8n-nodes-base.merge","position":[464,368],"parameters":{"numberInputs":3},"typeVersion":3.2},{"id":"d86d15bf-1417-4830-952e-ceda3549268d","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-2672,48],"parameters":{"color":7,"width":1408,"height":592,"content":"## Automated Data Collection & Dual-Agent Validation\n**What**: Compliance Analyzer validates regulatory requirements; Decision Agent coordinates specialized ESG sub-agents  \n**Why**: Parallel compliance checking and data quality analysis ensures accuracy across multiple reporting frameworks"},"typeVersion":1},{"id":"d1dedf76-3e3b-41eb-978f-66d584a1640c","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-1424,-320],"parameters":{"color":6,"width":544,"height":336,"content":"## Prerequisites\nESG data management system access, AI service accounts\n## Use Cases\nCarbon emissions tracking and reporting, supply chain sustainability monitoring\n## Customization\nModify agent prompts for industry-specific materiality topics\n## Benefits\nReduces reporting cycle time by 90%, ensures multi-framework compliance simultaneously"},"typeVersion":1},{"id":"47dbe518-eb27-4882-8174-a2a9c6f36a62","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-1888,-256],"parameters":{"width":400,"height":288,"content":"## Setup Steps\n1. Connect **Schedule Trigger** for monitoring frequency \n2. Configure **ESG data sources** with API credentials\n3. Add **AI model API keys** to Compliance Analyzer and Decision Coordination Agent nodes\n4. Define **reporting frameworks** and compliance requirements in agent prompts\n5. Set **quality rating thresholds** for data completeness and materiality scoring parameters\n6. Configure **alert mechanisms** for critical compliance gaps requiring immediate remediation"},"typeVersion":1},{"id":"31008958-d5e6-4e4a-aa00-a0f3280a5dfc","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-2640,-336],"parameters":{"width":704,"height":352,"content":"## How It Works\nThis workflow automates environmental, social, and governance (ESG) data collection, compliance validation, and sustainability reporting for corporations managing complex regulatory requirements and stakeholder transparency expectations. Designed for sustainability officers, compliance teams, and investor relations departments, it solves the challenge of aggregating ESG metrics across global operations, validating data accuracy, and generating standardized reports for multiple frameworks. The system schedules regular monitoring, fetches consolidated ESG data from operational systems, generates S&D (sustainability and disclosure) submissions, validates compliance through dual AI agents (Compliance Analyzer ensures regulatory adherence, Decision Coordination orchestrates specialized sub-agents for aggregate analysis, traceability monitoring, summary generation, and governance reporting), checks star ratings for data quality, routes findings by compliance status (critical/routine), and produces standardized reports with traceability records. Organizations achieve 90% reduction in reporting cycle time, ensure multi-framework compliance, eliminate manual data aggregation errors, and maintain complete audit trails for regulatory scrutiny."},"typeVersion":1},{"id":"ece6cb40-4c40-4122-af8d-0ff657eca936","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-1248,64],"parameters":{"color":7,"width":928,"height":528,"content":"## Quality Rating Assessment\n**What**: Checks ESG data completeness and reliability scores against established quality thresholds  \n**Why**: Quality-based filtering identifies data gaps requiring remediation before regulatory submission deadlines"},"typeVersion":1},{"id":"90b478c1-5329-40d8-8253-4cf93b36eeba","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-288,64],"parameters":{"color":7,"width":1152,"height":720,"content":"## Intelligent Report Generation\n**What**: Routes by status—critical issues trigger immediate alerts, routine generates standard reports with traceability  \n**Why**: Risk-based workflows ensure compliance violations receive urgent attention while automating routine disclosures"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"fd0e1115-084f-4cd2-ad2e-dfec2e7411b9","connections":{"Flag Bias Alert":{"main":[[{"node":"Route by Escalation Level","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Workflow Configuration","type":"main","index":0}]]},"Split Submissions":{"main":[[{"node":"Consultation Analysis Agent","type":"main","index":0}]]},"Bias Detection Tool":{"ai_tool":[[{"node":"Decision Governance Agent","type":"ai_tool","index":0}]]},"Check for Bias Flags":{"main":[[{"node":"Flag Bias Alert","type":"main","index":0}],[{"node":"Route by Escalation Level","type":"main","index":0}]]},"Analysis Output Parser":{"ai_outputParser":[[{"node":"Consultation Analysis Agent","type":"ai_outputParser","index":0}]]},"Merge Escalation Paths":{"main":[[{"node":"Store Traceability Records","type":"main","index":0}]]},"Prepare Routine Update":{"main":[[{"node":"Merge Escalation Paths","type":"main","index":0}]]},"Workflow Configuration":{"main":[[{"node":"Fetch Consultation Data","type":"main","index":0}]]},"Fetch Consultation Data":{"main":[[{"node":"Split Submissions","type":"main","index":0}]]},"Prepare Standard Report":{"main":[[{"node":"Merge Escalation Paths","type":"main","index":0}]]},"Summary Generation Tool":{"ai_tool":[[{"node":"Decision Governance Agent","type":"ai_tool","index":0}]]},"Governance Output Parser":{"ai_outputParser":[[{"node":"Decision Governance Agent","type":"ai_outputParser","index":0}]]},"Traceability Record Tool":{"ai_tool":[[{"node":"Decision Governance Agent","type":"ai_tool","index":0}]]},"Decision Governance Agent":{"main":[[{"node":"Check for Bias Flags","type":"main","index":0}]]},"Route by Escalation Level":{"main":[[{"node":"Prepare Critical Escalation","type":"main","index":0}],[{"node":"Prepare Standard Report","type":"main","index":0}],[{"node":"Prepare Routine Update","type":"main","index":0}]]},"Aggregate Analysis Results":{"main":[[{"node":"Decision Governance Agent","type":"main","index":0}]]},"Anthropic Model - Analysis":{"ai_languageModel":[[{"node":"Consultation Analysis Agent","type":"ai_languageModel","index":0}]]},"Consultation Analysis Agent":{"main":[[{"node":"Aggregate Analysis Results","type":"main","index":0}]]},"Prepare Critical Escalation":{"main":[[{"node":"Merge Escalation Paths","type":"main","index":0}]]},"Anthropic Model - Governance":{"ai_languageModel":[[{"node":"Decision Governance Agent","type":"ai_languageModel","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":28,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":5},"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.splitOut":{"count":1},"n8n-nodes-base.aggregate":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.httpRequest":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":2},"n8n-nodes-base.scheduleTrigger":{"count":1},"@n8n/n8n-nodes-langchain.toolCode":{"count":3},"@n8n/n8n-nodes-langchain.lmChatAnthropic":{"count":2},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":2}}},"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":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":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":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule 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":1145,"icon":"file:anthropic.svg","name":"@n8n/n8n-nodes-langchain.lmChatAnthropic","codex":{"data":{"alias":["claude","sonnet","opus"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatanthropic/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Anthropic Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzdEN0Q4NyIgZD0iTTMyLjczIDBoLTYuOTQ1TDM4LjQ1IDMyaDYuOTQ1ek0xMi42NjUgMCAwIDMyaDcuMDgybDIuNTktNi43MmgxMy4yNWwyLjU5IDYuNzJoNy4wODJMMTkuOTI5IDB6bS0uNzAyIDE5LjMzNyA0LjMzNC0xMS4yNDYgNC4zMzQgMTEuMjQ2eiIvPjwvc3ZnPg=="},"displayName":"Anthropic 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":1197,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.toolCode","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"Code Tool"},"iconData":{"icon":"code","type":"icon"},"displayName":"Code Tool","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1236,"icon":"file:aggregate.svg","name":"n8n-nodes-base.aggregate","codex":{"data":{"alias":["Aggregate","Combine","Flatten","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Aggregate"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjRkY2RDVBIiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMyIDE0OGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE0NmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJINDRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNDZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDQ0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wIDk2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTQ2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg0NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGQ9Ik03NCA3NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDExNi4yMTdjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjU2YzAgMjYuOTc4IDEwLjI3MiA1MS41NTcgMjcuMTE5IDcwLjAzOSA1LjA1NSA1LjU0NSA1LjA1NSAxNC4zNzcgMCAxOS45MjItMTYuODQ3IDE4LjQ4Mi0yNy4xMTkgNDMuMDYxLTI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMySDg2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTE2LjIxN2M0NC4xODMgMCA4MC0zNS44MTcgODAtODB2LTU2YzAtMzAuOTI4IDI1LjA3Mi01NiA1Ni01NmE1Ljc4MyA1Ljc4MyAwIDAgMCA1Ljc4My01Ljc4M3YtMzYuNDM0YTUuNzgzIDUuNzgzIDAgMCAwLTUuNzgzLTUuNzgzYy0zMC45MjggMC01Ni0yNS4wNzItNTYtNTZ2LTU2YzAtNDQuMTgzLTM1LjgxNy04MC04MC04MEg4NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zNzYgMjQ0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgzODhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUxMnY1MTJIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4="},"displayName":"Aggregate","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1239,"icon":"file:splitOut.svg","name":"n8n-nodes-base.splitOut","codex":{"data":{"alias":["Split","Nested","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitout/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Split Out"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjOUI2REQ1IiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4MCAxNDhjMC02LjYyNy01LjM3My0xMi0xMi0xMkgzMjJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxNDZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDMyMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDE0NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0wIDk2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMzIyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTQ2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBkPSJNNDM4IDc2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjU2YzAgMjYuOTc4LTEwLjI3MiA1MS41NTctMjcuMTE5IDcwLjAzOS01LjA1NSA1LjU0NS01LjA1NSAxNC4zNzcgMCAxOS45MjIgMTYuODQ3IDE4LjQ4MiAyNy4xMTkgNDMuMDYxIDI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMySDQyNmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtNDQuMTgzIDAtODAtMzUuODE3LTgwLTgwdi01NmMwLTMwLjkyOC0yNS4wNzItNTYtNTYtNTZhNS43ODMgNS43ODMgMCAwIDEtNS43ODMtNS43ODN2LTM2LjQzNGE1Ljc4MyA1Ljc4MyAwIDAgMSA1Ljc4My01Ljc4M2MzMC45MjggMCA1Ni0yNS4wNzIgNTYtNTZ2LTU2YzAtNDQuMTgzIDM1LjgxNy04MCA4MC04MEg0MjZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMzYgMjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik01MTIgMEgwdjUxMmg1MTJ6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+"},"displayName":"Split Out","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":32,"name":"Market Research"},{"id":49,"name":"AI Summarization"}],"image":[]}}