{"workflow":{"id":14237,"name":"Triage incidents and enforce SLAs with Gemini, Groq, Google Sheets and Slack","views":17,"recentViews":1,"totalViews":17,"createdAt":"2026-03-22T17:39:09.047Z","description":"### Reduce MTTR with context-aware AI severity analysis and automated SLA enforcement\n\nKnow that feeling when a \"low priority\" ticket turns into a production fire? Or when your on-call rotation starts showing signs of serious burnout from alert overload?\n\nThis workflow handles that problem. Two AI agents do the triage work—checking severity, validating against runbooks, triggering the right response.\n\n## What This Workflow Does\n\nIncident comes in through webhook → two-agent analysis kicks off:\n\n**Agent 1 (Incident Analyzer)** checks the report against your Google Sheets runbook database. Looks for matching known issues, evaluates risk signals, assigns a confidence-scored severity (P1/P2/P3). Finally stops you from trusting \"CRITICAL URGENT!!!\" subject lines.\n\n**Agent 2 (Response Planner)** builds the action plan: what to do first, who needs to know, investigation steps, post-incident tasks. Like having your most experienced engineer review every single ticket.\n\nThen routing happens:\n- **P1 incidents** → PagerDuty goes off + war room gets created + 15-min SLA timer starts\n- **P2 incidents** → Gmail alert + you've got 1 hour to acknowledge  \n- **P3 incidents** → Standard email notification\n\nNobody responds in time? Auto-escalates to management. Everything logs to Google Sheets for the inevitable post-mortem.\n\n## What Makes This Different\n\n| Feature | This Workflow | Typical AI Triage |\n|---------|--------------|-------------------|\n| **Architecture** | Two specialized agents (analyze + coordinate) | Single generic prompt |\n| **Reliability** | Multi-LLM fallback (Gemini → Groq) | Single model, fails if down |\n| **SLA Enforcement** | Auto-waits, checks, escalates autonomously | Sends alert, then done |\n| **Learning** | Feedback webhook improves accuracy over time | Static prompts forever |\n| **Knowledge Source** | Your runbooks (Google Sheets) | Generic templates |\n| **War Room Creation** | Automatic for P1 incidents | Manual |\n| **Audit Trail** | Every decision logged to Sheets | Often missing |\n\n## How It Actually Works: Real Example\n\n**Scenario:** Your monitoring system detects database errors.\n\n**Webhook receives this messy alert:**\n```json\n{\n  \"title\": \"DB Connection Pool Exhausted\",\n  \"description\": \"user-service reporting 503 errors\",\n  \"severity\": \"P3\",\n  \"service\": \"user-service\"\n}\n```\n\n**Agent 1 (Incident Analyzer) reasoning:**\n\n1. Checks Google Sheets runbook → finds entry: \"Connection pool exhaustion typically P2 if customer-facing\"\n2. Scans description for risk signals → detects \"503 errors\" = customer impact\n3. Cross-references service name → confirms user-service is customer-facing\n4. **Decision: Override P3 → P2** (confidence score: 0.87)\n5. Reasoning logged: \"Customer-facing service returning errors, matches known high-impact pattern from runbook\"\n\n**Agent 2 (Response Coordinator) builds the plan:**\n\n- **Immediate actions:** \"Check active DB connections via monitoring dashboard, restart service if pool usage &gt;90%, verify connection pool configuration\"\n- **Escalation tier:** \"team\" (not manager-level yet)\n- **SLA target:** 60 minutes\n- **War room needed:** No (P2 doesn't require it)\n- **Recommended assignee:** \"Database team\" (pulled from runbook escalation contact)\n- **Notification channels:** #incidents (not #incidents-critical)\n\n**What happens next (autonomously):**\n\n1. Slack alert posted to #incidents with full context\n2. 60-minute SLA timer starts automatically\n3. Workflow waits, then checks Google Sheets \"Acknowledged By\" column\n4. If still empty after 60 min → escalates to #engineering-leads with \"SLA BREACH\" tag\n5. Everything logged to both Incidents and AI_Audit_Log sheets\n\n**Human feedback loop (optional but powerful):**\n\nOn-call engineer reviews the decision and submits:\n```json\nPOST /incident-feedback\n{\n  \"incidentId\": \"INC-20260324-143022-a7f3\",\n  \"feedback\": \"Correct severity upgrade - good catch\",\n  \"correctSeverity\": \"P2\"\n}\n```\n\n→ This correction gets logged to AI_Audit_Log. Over time, Agent 1 learns which patterns justify severity overrides.\n\n## Key Benefits\n\n- **Stop manual triage:** What took your on-call engineer 5-10 minutes now takes 3 seconds. Agent 1 checks the runbook, Agent 2 builds the response plan.\n\n- **Severity validation = fewer false alarms:** The workflow cross-checks reported severity against runbook patterns and risk signals. That \"P1 URGENT\" email from marketing? Gets downgraded to P3 automatically.\n\n- **SLAs enforce themselves:** P1 gets 15 minutes. P2 gets 60. Timers run autonomously. If nobody acknowledges, management gets paged. No more \"I forgot to check Slack.\"\n\n- **Uses YOUR runbooks, not generic templates:** Agent 1 pulls context from your Google Sheets runbook database — known issues, escalation contacts, SLA targets. It knows your systems.\n\n- **Multi-LLM fallback = 99.9% uptime:** Primary: Gemini 2.0. Fallback: Groq. Each agent retries 3x with 5-sec intervals. Basically always works.\n\n- **Self-improving feedback loop:** Engineers can submit corrections via `/incident-feedback` webhook. The workflow logs every decision + human feedback to AI_Audit_Log. Track accuracy over time, identify patterns where AI needs tuning.\n\n- **Complete audit trail:** Every incident, every AI decision, every escalation — all in Google Sheets. Perfect for post-mortems and compliance.\n\n## Required APIs & Credentials\n\n- **Google Gemini API** (main LLM, free tier is fine)\n- **Groq API** (backup LLM, also has free tier)\n- **Google Sheets** (stores runbooks and audit trail)\n- **Gmail** (handles P2/P3 notifications)\n- **Slack OAuth2 API** (creates war rooms)\n- **PagerDuty** (P1 alerts—optional, you can just use Slack/Gmail)\n\n## Setup Complexity\n\nThis is **not** a 5-minute setup. You'll need:\n\n**Google Sheets structure:**\n\n- 3 tabs: `Runbooks`, `Incidents`, `AI_Audit_Log`\n- Pre-populated runbook data (services, known issues, escalation contacts)\n\n**Slack configuration:**\n\n- 4 channels: `#incidents-critical`, `#incidents`, `#management-escalation`, `#engineering-leads`\n- Slack OAuth2 with bot permissions\n\n**Estimated setup time:** 30-45 minutes\n\n**Quick start option:** Begin with just Slack + Google Sheets. Add PagerDuty later.\n\n## Who This Is For\n\n- DevOps engineers done being the human incident router\n- SRE teams drowning in alert fatigue\n- IT ops managers who need real accountability\n- Security analysts triaging at high volume\n- Platform engineers trying to automate the boring stuff","workflow":{"id":"TWV62FDLEPhGKx2ksidB3","meta":{"instanceId":"d1dc073e8e3059a23e2730f69cb1b90065a2ac39039fea0727fdf9bee77a9131"},"name":"Two-Agent Incident Triage with Self-Learning SLA Enforcement","tags":[{"id":"VPXQRENI2ReIyfgg","name":"incident-management","createdAt":"2026-03-22T13:48:44.450Z","updatedAt":"2026-03-22T13:48:44.450Z"},{"id":"YyXqBA5n5y8drh0d","name":"two-agent-ai","createdAt":"2026-03-22T16:05:47.293Z","updatedAt":"2026-03-22T16:05:47.293Z"},{"id":"wAOfNHQmbohYt8PV","name":"google-workspace","createdAt":"2026-03-22T13:48:44.494Z","updatedAt":"2026-03-22T13:48:44.494Z"},{"id":"K9kxoyItLOZIoq65","name":"gemini-ai","createdAt":"2026-03-22T13:48:44.497Z","updatedAt":"2026-03-22T13:48:44.497Z"},{"id":"OqWPcDDb22XcHL8l","name":"groq-fallback","createdAt":"2026-03-22T16:05:47.254Z","updatedAt":"2026-03-22T16:05:47.254Z"},{"id":"WAxTZiTiMs7bNOun","name":"devsecops","createdAt":"2026-03-22T13:48:44.542Z","updatedAt":"2026-03-22T13:48:44.542Z"},{"id":"KZmoHPtY1bPYd5uo","name":"escalation","createdAt":"2026-03-22T13:48:44.544Z","updatedAt":"2026-03-22T13:48:44.544Z"},{"id":"QDU7UL6iho5YMCPm","name":"audit-trail","createdAt":"2026-03-22T16:05:47.303Z","updatedAt":"2026-03-22T16:05:47.303Z"}],"nodes":[{"id":"8050a669-e0c8-493b-90b1-d0bf814262ea","name":"Incident Report Trigger","type":"n8n-nodes-base.webhook","position":[304,784],"webhookId":"incident-report","parameters":{"path":"incident-report","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":1.1},{"id":"94d87eba-3141-4644-b8f4-aef9a3417d9a","name":"Accept and Continue","type":"n8n-nodes-base.respondToWebhook","position":[528,784],"parameters":{"options":{"responseCode":200},"respondWith":"json","responseBody":"={\n  \"status\": \"accepted\",\n  \"message\": \"Incident report received. Processing started.\",\n  \"incidentId\": \"{{ $json.incidentId }}\"\n}"},"typeVersion":1.1},{"id":"aae43281-18fc-4170-9cce-74b52e6afb96","name":"Normalize Incident Data","type":"n8n-nodes-base.set","position":[752,784],"parameters":{"options":{},"assignments":{"assignments":[{"id":"a1","name":"incidentId","type":"string","value":"={{ 'INC-' + $now.format('yyyyMMdd-HHmmss') + '-' + Math.random().toString(36).substring(2, 6) }}"},{"id":"a2","name":"title","type":"string","value":"={{ $('Incident Report Trigger').item.json.body.title || 'Untitled Incident' }}"},{"id":"a3","name":"description","type":"string","value":"={{ $('Incident Report Trigger').item.json.body.description || 'No description provided' }}"},{"id":"a4","name":"reportedSeverity","type":"string","value":"={{ $('Incident Report Trigger').item.json.body.severity || 'P3' }}"},{"id":"a5","name":"reporter","type":"string","value":"={{ $('Incident Report Trigger').item.json.body.reporter || '' }}"},{"id":"a6","name":"service","type":"string","value":"={{ $('Incident Report Trigger').item.json.body.service || 'Unknown Service' }}"},{"id":"a7","name":"reportedAt","type":"string","value":"={{ $now.toISO() }}"},{"id":"a8","name":"status","type":"string","value":"Open"}]}},"typeVersion":3.4},{"id":"320b8d94-b185-42f7-8096-500b364c76df","name":"Fetch Runbook Context","type":"n8n-nodes-base.googleSheets","onError":"continueRegularOutput","position":[976,784],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.service }}","lookupColumn":"Service"}]},"sheetName":{"__rl":true,"mode":"name","value":"Runbooks"},"documentId":{"__rl":true,"mode":"id","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"wHDA0XakCCVOLVNe","name":"Google Sheets account 2"}},"typeVersion":4.5},{"id":"36102076-93da-4e8f-ade2-66ceff276fc6","name":"Build Runbook Context","type":"n8n-nodes-base.code","position":[1200,784],"parameters":{"jsCode":"const incident = $('Normalize Incident Data').first().json;\nconst runbookRaw = $input.first().json;\n\nlet runbookContext = '';\ntry {\n  if (runbookRaw && runbookRaw.Service) {\n    const parts = [];\n    if (runbookRaw['Known Issues']) parts.push('Known issues: ' + runbookRaw['Known Issues']);\n    if (runbookRaw['First Response Steps']) parts.push('First response: ' + runbookRaw['First Response Steps']);\n    if (runbookRaw['Escalation Contact']) parts.push('Escalation contact: ' + runbookRaw['Escalation Contact']);\n    if (runbookRaw['SLA Minutes']) parts.push('SLA target: ' + runbookRaw['SLA Minutes'] + ' minutes');\n    runbookContext = parts.join('. ');\n  }\n} catch (e) {\n  runbookContext = '';\n}\n\nreturn [{\n  json: {\n    ...incident,\n    runbookContext: runbookContext || 'No runbook found for this service.'\n  }\n}];"},"typeVersion":2},{"id":"b163f4d3-1d41-4b38-a2b6-0227906884f3","name":"Agent 1 - Incident Analyzer","type":"@n8n/n8n-nodes-langchain.agent","onError":"continueRegularOutput","position":[1424,784],"parameters":{"text":"=Analyze this incident report:\n\n**Title:** {{ $json.title }}\n**Description:** {{ $json.description }}\n**Reported Severity:** {{ $json.reportedSeverity }}\n**Service:** {{ $json.service }}\n**Runbook Context:** {{ $json.runbookContext }}","options":{"systemMessage":"You are an incident severity analyzer for a DevOps/SRE team.\n\nAnalyze the incident and return a JSON object with these fields:\n\n- severity: one of \"P1\", \"P2\", \"P3\" (P1=Critical/Production Down, P2=High/Degraded, P3=Normal/Non-urgent)\n- confidence: float 0.0-1.0 (how certain you are)\n- reasoning: string (brief explanation of severity assignment)\n- risk_indicators: array of strings (specific signals that influenced severity: e.g., \"production database mentioned\", \"customer-facing impact\", \"data loss risk\")\n- matches_known_issue: boolean (does this match a known issue from runbook context?)\n- urgency_score: integer 1-10 (1=can wait days, 10=immediate action required)\n\nCRITICAL RULES:\n1. Output ONLY valid JSON. No markdown, no explanation, no preamble.\n2. P1 severity requires BOTH high impact AND high urgency.\n3. Consider the reported severity but validate against actual impact.\n4. Use runbook context to identify known issues.\n5. Be conservative: if uncertain between P1 and P2, choose P2.\n6. Focus on business/customer impact, not just technical symptoms."},"promptType":"define","needsFallback":true,"hasOutputParser":true},"typeVersion":3.1},{"id":"4993a982-9cb9-4d4d-8a67-2fbcfa676386","name":"Analyzer LLM (Gemini)","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[1456,1008],"parameters":{"options":{}},"typeVersion":1},{"id":"bce4c7c1-6d2b-4c84-9daf-0aac5a92cd8a","name":"Analyzer Fallback (Groq)","type":"@n8n/n8n-nodes-langchain.lmChatGroq","position":[1584,1008],"parameters":{"options":{}},"typeVersion":1},{"id":"23ec7c43-174d-4710-ad80-2f1e750ba73d","name":"Parse Analyzer Output","type":"n8n-nodes-base.code","position":[1824,784],"parameters":{"jsCode":"// Updated 2026-03-22: Added robust JSON fence stripping\n// after Gemini started wrapping responses in markdown\n\nconst analyzerResponse = $input.first().json.output || $input.first().json.text || '';\n\nlet cleanedResponse = analyzerResponse.trim();\n\n// Strip markdown code fences\nif (cleanedResponse.startsWith('```json')) {\n  cleanedResponse = cleanedResponse.slice(7);\n}\nif (cleanedResponse.startsWith('```')) {\n  cleanedResponse = cleanedResponse.slice(3);\n}\nif (cleanedResponse.endsWith('```')) {\n  cleanedResponse = cleanedResponse.slice(0, -3);\n}\ncleanedResponse = cleanedResponse.trim();\n\n// Try to extract JSON from mixed text\nif (!cleanedResponse.startsWith('{')) {\n  const jsonMatch = cleanedResponse.match(/\\{[\\s\\S]*\\}/);\n  if (jsonMatch) {\n    cleanedResponse = jsonMatch[0];\n  }\n}\n\nconst incident = $('Build Runbook Context').first().json;\n\ntry {\n  const analysis = JSON.parse(cleanedResponse);\n  \n  // Validate required fields\n  const hasRequiredFields = \n    analysis.severity && \n    typeof analysis.confidence === 'number' &&\n    analysis.reasoning &&\n    Array.isArray(analysis.risk_indicators);\n  \n  if (!hasRequiredFields) {\n    throw new Error('Missing required fields in analysis');\n  }\n  \n  // Validate severity is one of P1/P2/P3\n  if (!['P1', 'P2', 'P3'].includes(analysis.severity)) {\n    throw new Error('Invalid severity value: ' + analysis.severity);\n  }\n  \n  return {\n    json: {\n      ...incident,\n      analysis: analysis,\n      parseSuccess: true,\n      analyzerModel: 'gemini'\n    }\n  };\n  \n} catch (error) {\n  // Complete fallback - use reported severity\n  return {\n    json: {\n      ...incident,\n      analysis: {\n        severity: incident.reportedSeverity,\n        confidence: 0.0,\n        reasoning: 'Analyzer failed - using reported severity. Error: ' + error.message,\n        risk_indicators: [],\n        matches_known_issue: false,\n        urgency_score: 5\n      },\n      parseSuccess: false,\n      parseError: error.message,\n      rawResponse: analyzerResponse\n    }\n  };\n}"},"typeVersion":2},{"id":"a4f2e701-5d33-4f11-8b96-d63810a7f857","name":"Agent 2 - Response Coordinator","type":"@n8n/n8n-nodes-langchain.agent","onError":"continueRegularOutput","position":[2048,784],"parameters":{"text":"=Generate a response plan for this incident:\n\n**Incident ID:** {{ $json.incidentId }}\n**Service:** {{ $json.service }}\n**Analysis:** {{ JSON.stringify($json.analysis, null, 2) }}\n**Runbook Context:** {{ $json.runbookContext }}","options":{"systemMessage":"You are a response coordinator for incident management.\n\nGiven the analyzer's assessment, generate an actionable response plan as JSON:\n\n- immediate_actions: array of strings (3-5 concrete first steps to take)\n- escalation_tier: one of \"manager\", \"team\", \"none\" (who needs to be notified)\n- notification_channels: array of strings (which Slack channels: e.g., [\"#incidents-critical\", \"#engineering\"])\n- sla_minutes: integer (response time target: 15 for P1, 60 for P2, 240 for P3)\n- root_cause_hypothesis: string (brief theory of what went wrong)\n- requires_war_room: boolean (should we create a dedicated incident Slack channel?)\n- recommended_assignee: string (team or person who should own this, based on runbook)\n\nCRITICAL RULES:\n1. Output ONLY valid JSON. No markdown, no preamble.\n2. immediate_actions should be specific and actionable, not generic.\n3. Use runbook context to populate recommended_assignee.\n4. P1 incidents ALWAYS require war_room = true.\n5. Be specific about notification channels based on severity and service."},"promptType":"define","needsFallback":true,"hasOutputParser":true},"typeVersion":3.1},{"id":"9a70ba94-5a69-4fce-820d-eb761f8152f3","name":"Coordinator LLM (Gemini)","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[1936,1008],"parameters":{"options":{}},"typeVersion":1},{"id":"c7a3ef87-a9d3-48c1-aba4-bbcbb5e5a447","name":"Coordinator Fallback (Groq)","type":"@n8n/n8n-nodes-langchain.lmChatGroq","position":[2128,1008],"parameters":{"options":{}},"typeVersion":1},{"id":"5fe845cb-cfba-47c9-99f0-7a7426be2f17","name":"Process Response Plan","type":"n8n-nodes-base.code","position":[2448,784],"parameters":{"jsCode":"// Parse Response Coordinator output\n\nconst coordinatorResponse = $input.first().json.output || $input.first().json.text || '';\n\nlet cleanedResponse = coordinatorResponse.trim();\n\n// Strip markdown fences\nif (cleanedResponse.startsWith('```json')) {\n  cleanedResponse = cleanedResponse.slice(7);\n}\nif (cleanedResponse.startsWith('```')) {\n  cleanedResponse = cleanedResponse.slice(3);\n}\nif (cleanedResponse.endsWith('```')) {\n  cleanedResponse = cleanedResponse.slice(0, -3);\n}\ncleanedResponse = cleanedResponse.trim();\n\n// Extract JSON from mixed text\nif (!cleanedResponse.startsWith('{')) {\n  const jsonMatch = cleanedResponse.match(/\\{[\\s\\S]*\\}/);\n  if (jsonMatch) {\n    cleanedResponse = jsonMatch[0];\n  }\n}\n\nconst incident = $('Parse Analyzer Output').first().json;\nconst analysis = incident.analysis;\n\ntry {\n  const plan = JSON.parse(cleanedResponse);\n  \n  // Validate required fields\n  const hasRequiredFields = \n    Array.isArray(plan.immediate_actions) &&\n    plan.escalation_tier &&\n    Array.isArray(plan.notification_channels) &&\n    typeof plan.sla_minutes === 'number';\n  \n  if (!hasRequiredFields) {\n    throw new Error('Missing required fields in response plan');\n  }\n  \n  // Calculate severity override flag\n  const severityChanged = analysis.severity !== incident.reportedSeverity;\n  \n  return {\n    json: {\n      incidentId: incident.incidentId,\n      title: incident.title,\n      description: incident.description,\n      service: incident.service,\n      reporter: incident.reporter,\n      reportedAt: incident.reportedAt,\n      status: incident.status,\n      \n      // Original data\n      reportedSeverity: incident.reportedSeverity,\n      runbookContext: incident.runbookContext,\n      \n      // AI Analysis (Agent 1)\n      severity: analysis.severity,\n      confidence: analysis.confidence,\n      reasoning: analysis.reasoning,\n      risk_indicators: analysis.risk_indicators.join('; '),\n      matches_known_issue: analysis.matches_known_issue,\n      urgency_score: analysis.urgency_score,\n      \n      // Response Plan (Agent 2)\n      immediate_actions: plan.immediate_actions.join('; '),\n      escalation_tier: plan.escalation_tier,\n      notification_channels: plan.notification_channels.join(', '),\n      sla_minutes: plan.sla_minutes,\n      root_cause_hypothesis: plan.root_cause_hypothesis || '',\n      requires_war_room: plan.requires_war_room,\n      recommended_assignee: plan.recommended_assignee || '',\n      \n      // Audit fields\n      severityOverridden: severityChanged,\n      analyzerSuccess: incident.parseSuccess,\n      coordinatorSuccess: true\n    }\n  };\n  \n} catch (error) {\n  // Fallback plan generation\n  const defaultSLA = {\n    'P1': 15,\n    'P2': 60,\n    'P3': 240\n  };\n  \n  return {\n    json: {\n      incidentId: incident.incidentId,\n      title: incident.title,\n      description: incident.description,\n      service: incident.service,\n      reporter: incident.reporter,\n      reportedAt: incident.reportedAt,\n      status: incident.status,\n      reportedSeverity: incident.reportedSeverity,\n      runbookContext: incident.runbookContext,\n      \n      severity: analysis.severity,\n      confidence: analysis.confidence,\n      reasoning: analysis.reasoning,\n      risk_indicators: analysis.risk_indicators.join('; '),\n      matches_known_issue: analysis.matches_known_issue,\n      urgency_score: analysis.urgency_score,\n      \n      // Fallback plan\n      immediate_actions: 'Investigate manually - coordinator failed',\n      escalation_tier: analysis.severity === 'P1' ? 'manager' : 'team',\n      notification_channels: analysis.severity === 'P1' ? '#incidents-critical' : '#incidents',\n      sla_minutes: defaultSLA[analysis.severity] || 60,\n      root_cause_hypothesis: 'Requires manual investigation',\n      requires_war_room: analysis.severity === 'P1',\n      recommended_assignee: 'On-call engineer',\n      \n      severityOverridden: analysis.severity !== incident.reportedSeverity,\n      analyzerSuccess: incident.parseSuccess,\n      coordinatorSuccess: false,\n      coordinatorError: error.message\n    }\n  };\n}"},"typeVersion":2},{"id":"a7410db8-807c-4864-9716-e47567e12c3c","name":"Log to Incident Tracker","type":"n8n-nodes-base.googleSheets","onError":"continueRegularOutput","position":[2672,688],"parameters":{"columns":{"value":{"Title":"={{ $json.title }}","Status":"={{ $json.status }}","Service":"={{ $json.service }}","Reporter":"={{ $json.reporter }}","Escalated":"No","Reasoning":"={{ $json.reasoning }}","Confidence":"={{ $json.confidence }}","AI Severity":"={{ $json.severity }}","Description":"={{ $json.description }}","Incident ID":"={{ $json.incidentId }}","Reported At":"={{ $json.reportedAt }}","SLA Minutes":"={{ $json.sla_minutes }}","Urgency Score":"={{ $json.urgency_score }}","Acknowledged By":"","Risk Indicators":"={{ $json.risk_indicators }}","Runbook Context":"={{ $json.runbookContext }}","Immediate Actions":"={{ $json.immediate_actions }}","Reported Severity":"={{ $json.reportedSeverity }}","Severity Overridden":"={{ $json.severityOverridden }}","Recommended Assignee":"={{ $json.recommended_assignee }}","Root Cause Hypothesis":"={{ $json.root_cause_hypothesis }}"},"mappingMode":"defineBelow"},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"name","value":"Incidents"},"documentId":{"__rl":true,"mode":"id","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"wHDA0XakCCVOLVNe","name":"Google Sheets account 2"}},"typeVersion":4.5},{"id":"65318b49-ecba-4b4c-8daa-119b444499f4","name":"Log AI Decision Audit","type":"n8n-nodes-base.googleSheets","onError":"continueRegularOutput","position":[2672,880],"parameters":{"columns":{"value":{"Override":"={{ $json.severityOverridden }}","Timestamp":"={{ $now.toISO() }}","Confidence":"={{ $json.confidence }}","AI Severity":"={{ $json.severity }}","Incident ID":"={{ $json.incidentId }}","Human Feedback":"","Analyzer Success":"={{ $json.analyzerSuccess }}","Reported Severity":"={{ $json.reportedSeverity }}","Feedback Timestamp":"","Coordinator Success":"={{ $json.coordinatorSuccess }}"},"mappingMode":"defineBelow"},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"name","value":"AI_Audit_Log"},"documentId":{"__rl":true,"mode":"id","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"wHDA0XakCCVOLVNe","name":"Google Sheets account 2"}},"typeVersion":4.5},{"id":"c516719a-4d99-4f09-84bd-77a467c09c7a","name":"Route by AI Severity","type":"n8n-nodes-base.switch","position":[2896,672],"parameters":{"rules":{"values":[{"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.severity }}","rightValue":"P1"}]},"renameOutput":true},{"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.severity }}","rightValue":"P2"}]},"renameOutput":true},{"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.severity }}","rightValue":"P3"}]},"renameOutput":true}]},"options":{"fallbackOutput":"none"}},"typeVersion":3.2},{"id":"8b3c225e-b3a4-4d25-b7fa-d5a5e348ec0d","name":"P1 - Send Critical Alert","type":"n8n-nodes-base.slack","onError":"continueRegularOutput","position":[3280,320],"webhookId":"59550cd3-24df-4eca-b583-655776dcb201","parameters":{"text":"=🚨 **CRITICAL INCIDENT - P1**\n\n**ID:** {{ $json.incidentId }}\n**Service:** {{ $json.service }}\n**Title:** {{ $json.title }}\n\n**AI Analysis:**\n• Severity: {{ $json.severity }} (Confidence: {{ Math.round($json.confidence * 100) }}%)\n• {{ $json.reasoning }}\n\n**Risk Indicators:** {{ $json.risk_indicators }}\n\n**Immediate Actions:**\n{{ $json.immediate_actions }}\n\n**Root Cause Hypothesis:** {{ $json.root_cause_hypothesis }}\n\n**Recommended Owner:** {{ $json.recommended_assignee }}\n**SLA:** {{ $json.sla_minutes }} minutes","select":"channel","channelId":{"__rl":true,"mode":"name","value":"incidents-critical"},"otherOptions":{}},"typeVersion":2.2},{"id":"65e64503-863e-4e51-871f-66eeaadd94d0","name":"P2 - Send High Alert","type":"n8n-nodes-base.slack","onError":"continueRegularOutput","position":[3264,688],"webhookId":"12b59a30-145b-43cc-bf9a-34bddd417ae0","parameters":{"text":"=⚠️ **HIGH PRIORITY INCIDENT - P2**\n\n**ID:** {{ $json.incidentId }}\n**Service:** {{ $json.service }}\n**Title:** {{ $json.title }}\n\n**AI Analysis:**\n• Severity: {{ $json.severity }} (Confidence: {{ Math.round($json.confidence * 100) }}%)\n• {{ $json.reasoning }}\n\n**Immediate Actions:**\n{{ $json.immediate_actions }}\n\n**Recommended Owner:** {{ $json.recommended_assignee }}\n**SLA:** {{ $json.sla_minutes }} minutes ({{ Math.floor($json.sla_minutes / 60) }}h {{ $json.sla_minutes % 60 }}m)","select":"channel","channelId":{"__rl":true,"mode":"name","value":"incidents"},"otherOptions":{}},"typeVersion":2.2},{"id":"fada835e-ede8-44a2-aff6-1681a91c1815","name":"P3 - Send Notification","type":"n8n-nodes-base.slack","onError":"continueRegularOutput","position":[3232,1072],"webhookId":"dd4bfe4d-e15d-4da4-ac1b-b84ff9b09e05","parameters":{"text":"=ℹ️ **Incident Logged - P3**\n\n**ID:** {{ $json.incidentId }}\n**Service:** {{ $json.service }}\n**Title:** {{ $json.title }}\n\n**Analysis:** {{ $json.reasoning }}\n\n**Recommended Owner:** {{ $json.recommended_assignee }}","select":"channel","channelId":{"__rl":true,"mode":"name","value":"incidents"},"otherOptions":{}},"typeVersion":2.2},{"id":"3635cc81-1db0-4c34-b686-4215d866bd32","name":"Needs War Room?","type":"n8n-nodes-base.if","position":[3504,320],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"boolean","operation":"true"},"leftValue":"={{ $json.requires_war_room }}","rightValue":true}]}},"typeVersion":2},{"id":"07d96783-88cc-4ce0-8aed-d2d046a63213","name":"P1 - Create War Room","type":"n8n-nodes-base.slack","onError":"continueRegularOutput","position":[3728,320],"webhookId":"1eda24e9-742d-4eff-9401-1da6040ce010","parameters":{"resource":"channel","channelId":"={{ 'incident-' + $json.incidentId.toLowerCase() }}"},"typeVersion":2.2},{"id":"f7022deb-2c83-406c-a3f0-68ee060f59f1","name":"P1 - Wait SLA Time","type":"n8n-nodes-base.wait","position":[3952,320],"webhookId":"p1-sla-wait","parameters":{"unit":"minutes","amount":"={{ $json.sla_minutes }}"},"typeVersion":1.1},{"id":"b341e408-e4ab-4d9e-9ae2-bc97848d50f8","name":"P1 - Check Acknowledgment","type":"n8n-nodes-base.googleSheets","onError":"continueRegularOutput","position":[4176,320],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.incidentId }}","lookupColumn":"Incident ID"}]},"sheetName":{"__rl":true,"mode":"name","value":"Incidents"},"documentId":{"__rl":true,"mode":"id","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"wHDA0XakCCVOLVNe","name":"Google Sheets account 2"}},"typeVersion":4.5},{"id":"979140f4-ace5-4e98-98cf-e1e6fb537fac","name":"P1 - Still unacknowledged?","type":"n8n-nodes-base.if","position":[4400,320],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"p1---still-unacknowledged?","operator":{"type":"string","operation":"empty","singleValue":true},"leftValue":"={{ $json['Acknowledged By'] }}","rightValue":""}]}},"typeVersion":2},{"id":"60371218-4e53-4e41-ba0d-2545d3959652","name":"P1 - Escalate to Manager","type":"n8n-nodes-base.slack","onError":"continueRegularOutput","position":[4640,256],"webhookId":"5a368a3f-ecce-43cc-9136-a91c248f9777","parameters":{"text":"=🔴 **ESCALATION: P1 INCIDENT UNACKNOWLEDGED**\n\n**Incident ID:** {{ $json['Incident ID'] }}\n**Service:** {{ $json.Service }}\n**Title:** {{ $json.Title }}\n\n⏰ **SLA BREACH:** {{ $json['SLA Minutes'] }} minutes have passed with no acknowledgment.\n\n**AI Assessment:**\n• Severity: {{ $json['AI Severity'] }}\n• Risk: {{ $json['Risk Indicators'] }}\n\n**Recommended Owner:** {{ $json['Recommended Assignee'] }}\n\n**Action Required:** Manager intervention needed immediately.","select":"channel","channelId":{"__rl":true,"mode":"name","value":"management-escalation"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"LYXSctL2oZ0iq2vU","name":"Slack account 2"}},"typeVersion":2.2},{"id":"b08346c0-73ef-4597-bd6c-1b79d1599dc4","name":"P1 - Flag as Escalated","type":"n8n-nodes-base.googleSheets","onError":"continueRegularOutput","position":[4640,416],"parameters":{"columns":{"value":{"Escalated":"Yes","Escalated At":"={{ $now.toISO() }}"},"mappingMode":"defineBelow"},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"name","value":"Incidents"},"documentId":{"__rl":true,"mode":"id","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"wHDA0XakCCVOLVNe","name":"Google Sheets account 2"}},"typeVersion":4.5},{"id":"3380cc33-6ca4-4f9f-aa81-8d147ef133d2","name":"P2 - Wait 1hr","type":"n8n-nodes-base.wait","position":[3488,688],"webhookId":"p2-sla-wait","parameters":{"unit":"minutes","amount":60},"typeVersion":1.1},{"id":"556140d7-12e4-431f-90d8-43646243fc81","name":"P2 - Check Acknowledgment","type":"n8n-nodes-base.googleSheets","onError":"continueRegularOutput","position":[3712,688],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.incidentId }}","lookupColumn":"Incident ID"}]},"sheetName":{"__rl":true,"mode":"name","value":"Incidents"},"documentId":{"__rl":true,"mode":"id","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"wHDA0XakCCVOLVNe","name":"Google Sheets account 2"}},"typeVersion":4.5},{"id":"1f74cc62-074a-4ae4-8c57-5ca4dd4946cc","name":"P2 - Still unacknowledged?","type":"n8n-nodes-base.if","position":[3936,688],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"p2---still-unacknowledged?","operator":{"type":"string","operation":"empty","singleValue":true},"leftValue":"={{ $json['Acknowledged By'] }}","rightValue":""}]}},"typeVersion":2},{"id":"0e814371-86a2-444d-aa97-7e109ac6bf7c","name":"P2 - Escalate to Manager","type":"n8n-nodes-base.slack","onError":"continueRegularOutput","position":[4160,688],"webhookId":"6137aa4a-d03b-4db9-9544-e9fcdd40f411","parameters":{"text":"=⚠️ **ESCALATION: P2 INCIDENT UNACKNOWLEDGED**\n\n**Incident ID:** {{ $json['Incident ID'] }}\n**Service:** {{ $json.Service }}\n**Title:** {{ $json.Title }}\n\n**SLA exceeded:** 1 hour with no acknowledgment.\n\n**Recommended Owner:** {{ $json['Recommended Assignee'] }}\n\nPlease assign or acknowledge immediately.","select":"channel","channelId":{"__rl":true,"mode":"name","value":"engineering-leads"},"otherOptions":{}},"typeVersion":2.2},{"id":"620a97f6-3060-42a6-987d-06622c1edad8","name":"Acknowledgment Trigger","type":"n8n-nodes-base.webhook","position":[320,1296],"webhookId":"incident-acknowledge","parameters":{"path":"incident-acknowledge","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":1.1},{"id":"bf4c13e9-671d-4291-81e2-d0ed730d1e13","name":"Log Acknowledgment","type":"n8n-nodes-base.googleSheets","onError":"continueRegularOutput","position":[544,1296],"parameters":{"columns":{"value":{"Status":"In Progress","Acknowledged At":"={{ $now.toISO() }}","Acknowledged By":"={{ $('Acknowledgment Trigger').item.json.body.acknowledgedBy }}"},"mappingMode":"defineBelow"},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"name","value":"Incidents"},"documentId":{"__rl":true,"mode":"id","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"wHDA0XakCCVOLVNe","name":"Google Sheets account 2"}},"typeVersion":4.5},{"id":"f5c89ff0-9447-49e9-8e27-f95579ca0be1","name":"Ack Response","type":"n8n-nodes-base.respondToWebhook","position":[768,1296],"parameters":{"options":{},"respondWith":"json","responseBody":"={\n  \"status\": \"acknowledged\",\n  \"incidentId\": \"{{ $('Acknowledgment Trigger').item.json.body.incidentId }}\",\n  \"acknowledgedBy\": \"{{ $('Acknowledgment Trigger').item.json.body.acknowledgedBy }}\"\n}"},"typeVersion":1.1},{"id":"4faafb9b-6163-4e35-9451-b601d75c5d95","name":"Human Feedback Trigger","type":"n8n-nodes-base.webhook","position":[304,1536],"webhookId":"incident-feedback","parameters":{"path":"incident-feedback","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":1.1},{"id":"e7df0656-75b0-4cd2-aca7-609b36d8372f","name":"Log Human Feedback","type":"n8n-nodes-base.googleSheets","onError":"continueRegularOutput","position":[528,1536],"parameters":{"columns":{"value":{"Human Feedback":"={{ $('Human Feedback Trigger').item.json.body.feedback }}","Correct Severity":"={{ $('Human Feedback Trigger').item.json.body.correctSeverity }}","Feedback Timestamp":"={{ $now.toISO() }}"},"mappingMode":"defineBelow"},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"name","value":"AI_Audit_Log"},"documentId":{"__rl":true,"mode":"id","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"wHDA0XakCCVOLVNe","name":"Google Sheets account 2"}},"typeVersion":4.5},{"id":"48c8b2b8-7e4d-4bdf-8300-0c672c0fd6d2","name":"Feedback Response","type":"n8n-nodes-base.respondToWebhook","position":[752,1536],"parameters":{"options":{},"respondWith":"json","responseBody":"={\n  \"status\": \"feedback_recorded\",\n  \"incidentId\": \"{{ $('Human Feedback Trigger').item.json.body.incidentId }}\",\n  \"thank_you\": \"Feedback logged. This helps improve AI accuracy.\"\n}"},"typeVersion":1.1},{"id":"caef4e0a-144a-42f0-9952-e697a64c5d6b","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-368,656],"parameters":{"width":544,"height":912,"content":"## AI Incident Triage System - Two-Agent\n\nThink of this as your automated first responder. Instead of dumping raw alerts into Slack, the system actually thinks before it speaks.\n### How it works\n\n1. Analyze: When an alert hits, Agent 1 pulls the relevant runbook and determines if it’s a \"wake-the-CEO\" P1 or a \"check-it-later\" P3.\n\n2. Coordinate: Agent 2 immediately builds a game plan, listing exactly who to call and what to check first.\n\n3. Escalate: High-priority alerts go to #incidents-critical. If a P1 isn’t acknowledged in 15 minutes, the system pings management automatically.\n\n4. Log: Every decision is tracked in Google Sheets for a perfect audit trail.\n\n### Setup \n\n- [ ] Create a Google Sheet with three tabs: Runbooks, Incidents, and AI_Audit_Log\n- [ ] Add your Google Sheets OAuth2 credentials to all five Google Sheets nodes\n- [ ] Configure Slack credentials and update channel names (#incidents-critical, #incidents, #management-escalation, #engineering-leads)\n- [ ] Add Gemini AI credentials to the two Gemini LLM nodes (or replace with OpenAI/Anthropic)\n- [ ] Add Groq credentials for the fallback LLM nodes\n- [ ] Test the three webhook endpoints: /incident-report, /incident-acknowledge, /incident-feedback\n- [ ] Populate the Runbooks sheet with your services, known issues, and escalation contacts\n\n### Customization\n\nModify severity thresholds in Agent 1's system prompt to match your organization's impact definitions. Adjust SLA timings in wait nodes (currently 15min for P1, 60min for P2). Swap Slack for PagerDuty, Teams, or SMS. Replace Gemini/Groq with OpenAI, Claude, or local models. Customize war room naming and add multi-tier escalation."},"typeVersion":1},{"id":"19281cfb-58a1-4c47-8aac-ae9ad2c86d0f","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[240,656],"parameters":{"color":7,"width":1120,"height":336,"content":"## Incident intake and normalization\n\nReceives webhook POST requests, generates unique incident IDs, normalizes data structure, and fetches runbook context from Google Sheets."},"typeVersion":1},{"id":"73f1e28a-109b-4197-a7ba-a389272d7dac","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1392,656],"parameters":{"color":7,"width":1216,"height":528,"content":"## Two-agent AI analysis\n\nAgent 1 analyzes severity with confidence scoring, risk indicators, and known issue matching. Agent 2 generates response plans with immediate actions and escalation tiers."},"typeVersion":1},{"id":"636bd630-562f-40cc-a4f4-9e806fbb7e35","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[2624,512],"parameters":{"color":7,"width":432,"height":528,"content":"## Logging and routing\n\nLogs all incidents to Incidents sheet and AI decisions to AI_Audit_Log for compliance. Routes alerts based on AI-determined severity."},"typeVersion":1},{"id":"203ff256-7644-488d-9064-865d5b5a04ac","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[3168,160],"parameters":{"color":7,"width":1696,"height":432,"content":"## P1 critical incident path\n\nSends alerts to #incidents-critical, optionally creates war room Slack channel, waits SLA time, and escalates to management if unacknowledged."},"typeVersion":1},{"id":"6913f492-d047-40de-a1fd-253edb40ba2f","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[3168,640],"parameters":{"color":7,"width":1232,"height":336,"content":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## P2 high priority path\n\nSends to #incidents channel, waits 1 hour, escalates to engineering leads if unacknowledged."},"typeVersion":1},{"id":"690b3e14-299d-4e44-be46-7a1be4c5c626","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[3168,1024],"parameters":{"color":7,"width":352,"height":352,"content":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## P3 normal priority\n\nSimple notification to #incidents. No automatic escalation."},"typeVersion":1},{"id":"7e048712-074c-449d-8d47-e86569b4ef04","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[240,1056],"parameters":{"color":7,"width":832,"height":688,"content":"## Feedback and acknowledgment webhooks\n\nSeparate endpoints for engineers to acknowledge incidents (updates status) and provide feedback on AI severity decisions (improves accuracy)."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"64e64df3-87fe-44ed-bb3c-2a505076527d","connections":{"P2 - Wait 1hr":{"main":[[{"node":"P2 - Check Acknowledgment","type":"main","index":0}]]},"Needs War Room?":{"main":[[{"node":"P1 - Create War Room","type":"main","index":0}]]},"Log Acknowledgment":{"main":[[{"node":"Ack Response","type":"main","index":0}]]},"Log Human Feedback":{"main":[[{"node":"Feedback Response","type":"main","index":0}]]},"P1 - Wait SLA Time":{"main":[[{"node":"P1 - Check Acknowledgment","type":"main","index":0}]]},"Accept and Continue":{"main":[[{"node":"Normalize Incident Data","type":"main","index":0}]]},"P1 - Create War Room":{"main":[[{"node":"P1 - Wait SLA Time","type":"main","index":0}]]},"P2 - Send High Alert":{"main":[[{"node":"P2 - Wait 1hr","type":"main","index":0}]]},"Route by AI Severity":{"main":[[{"node":"P1 - Send Critical Alert","type":"main","index":0}],[{"node":"P2 - Send High Alert","type":"main","index":0}],[{"node":"P3 - Send Notification","type":"main","index":0}]]},"Analyzer LLM (Gemini)":{"ai_languageModel":[[{"node":"Agent 1 - Incident Analyzer","type":"ai_languageModel","index":0}]]},"Build Runbook Context":{"main":[[{"node":"Agent 1 - Incident Analyzer","type":"main","index":0}]]},"Fetch Runbook Context":{"main":[[{"node":"Build Runbook Context","type":"main","index":0}]]},"Parse Analyzer Output":{"main":[[{"node":"Agent 2 - Response Coordinator","type":"main","index":0}]]},"Process Response Plan":{"main":[[{"node":"Log to Incident Tracker","type":"main","index":0},{"node":"Log AI Decision Audit","type":"main","index":0}]]},"Acknowledgment Trigger":{"main":[[{"node":"Log Acknowledgment","type":"main","index":0}]]},"Human Feedback Trigger":{"main":[[{"node":"Log Human Feedback","type":"main","index":0}]]},"Incident Report Trigger":{"main":[[{"node":"Accept and Continue","type":"main","index":0}]]},"Log to Incident Tracker":{"main":[[{"node":"Route by AI Severity","type":"main","index":0}]]},"Normalize Incident Data":{"main":[[{"node":"Fetch Runbook Context","type":"main","index":0}]]},"Analyzer Fallback (Groq)":{"ai_languageModel":[[{"node":"Agent 1 - Incident Analyzer","type":"ai_languageModel","index":1}]]},"Coordinator LLM (Gemini)":{"ai_languageModel":[[{"node":"Agent 2 - Response Coordinator","type":"ai_languageModel","index":0}]]},"P1 - Send Critical Alert":{"main":[[{"node":"Needs War Room?","type":"main","index":0}]]},"P1 - Check Acknowledgment":{"main":[[{"node":"P1 - Still unacknowledged?","type":"main","index":0}]]},"P2 - Check Acknowledgment":{"main":[[{"node":"P2 - Still unacknowledged?","type":"main","index":0}]]},"P1 - Still unacknowledged?":{"main":[[{"node":"P1 - Escalate to Manager","type":"main","index":0},{"node":"P1 - Flag as Escalated","type":"main","index":0}]]},"P2 - Still unacknowledged?":{"main":[[{"node":"P2 - Escalate to Manager","type":"main","index":0}]]},"Agent 1 - Incident Analyzer":{"main":[[{"node":"Parse Analyzer Output","type":"main","index":0}]]},"Coordinator Fallback (Groq)":{"ai_languageModel":[[{"node":"Agent 2 - Response Coordinator","type":"ai_languageModel","index":1}]]},"Agent 2 - Response Coordinator":{"main":[[{"node":"Process Response Plan","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":44,"nodeTypes":{"n8n-nodes-base.if":{"count":3},"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":3},"n8n-nodes-base.wait":{"count":2},"n8n-nodes-base.slack":{"count":6},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.webhook":{"count":3},"n8n-nodes-base.stickyNote":{"count":8},"n8n-nodes-base.googleSheets":{"count":8},"@n8n/n8n-nodes-langchain.agent":{"count":2},"n8n-nodes-base.respondToWebhook":{"count":3},"@n8n/n8n-nodes-langchain.lmChatGroq":{"count":2},"@n8n/n8n-nodes-langchain.lmChatGoogleGemini":{"count":2}}},"status":"published","readyToDemo":null,"user":{"name":"Mychel Garzon","username":"mychel-garzon","bio":"n8n Verified Creator and Junction 2025 n8n Tech Challenge Winner based in Helsinki, Finland. Full Stack Engineer specializing in AI automation workflows, multi-agent systems, RAG pipelines, and automated incident triage. Node.js, TypeScript, React, LLMs (OpenAI, Anthropic, Gemini, Groq). 99.9% production uptime.\n\nCustom n8n workflows: mychel.garzon@gmail.com","verified":true,"links":["https://mychelgarzon.com/"],"avatar":"https://gravatar.com/avatar/8937dc435f1eb7cc47cfc0139be315f5e28add64bc872edc5e5315137ee12b75?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":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":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":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"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/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"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/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/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/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/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/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/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"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/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-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"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":514,"icon":"fa:pause-circle","name":"n8n-nodes-base.wait","codex":{"data":{"alias":["pause","sleep","delay","timeout"],"resources":{"generic":[{"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/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.wait/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Wait","color":"#804050"},"iconData":{"icon":"pause-circle","type":"icon"},"displayName":"Wait","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":535,"icon":"file:webhook.svg","name":"n8n-nodes-base.respondToWebhook","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook/"}]},"categories":["Core Nodes","Utility"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"transform\"]","defaults":{"name":"Respond to Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Respond to Webhook","typeVersion":2,"nodeCategories":[{"id":7,"name":"Utility"},{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1262,"icon":"file:google.svg","name":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglegemini/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Google Gemini Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im0wIDExIDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Im0wIDM3IDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OCAxNyAyNGwtNC0zIDM1LTEweiIgY2xpcC1wYXRoPSJ1cmwoI2IpIi8+PC9zdmc+"},"displayName":"Google Gemini Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1263,"icon":"file:groq.svg","name":"@n8n/n8n-nodes-langchain.lmChatGroq","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgroq/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Groq Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgaWQ9IkxheWVyXzIiCiAgIHZpZXdCb3g9IjAgMCA0OTkuOTk5OTkgNDk5Ljk5OTk5IgogICB2ZXJzaW9uPSIxLjEiCiAgIHdpZHRoPSI1MDAiCiAgIGhlaWdodD0iNTAwIgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzCiAgICAgaWQ9ImRlZnM0IiAvPjxnCiAgICAgaWQ9IlBBR0VTIj48Y2lyY2xlCiAgICAgICBzdHlsZT0iZmlsbDojZjU0ZjM1O2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDoxLjEzNjIyIgogICAgICAgaWQ9InBhdGg0IgogICAgICAgY3g9IjI1MCIKICAgICAgIGN5PSIyNTAiCiAgICAgICByPSIyNTAiIC8+PHBhdGgKICAgICAgIGQ9Ik0gMjUwLjUzNjY0LDk3LjEyMjk5NCBDIDE5Mi43MTkzMSw5Ni41ODg2MzggMTQ1LjQ4MjIyLDE0Mi45NzA3NSAxNDQuOTQ3ODYsMjAwLjc4ODA4IGMgLTAuNTM0MzQsNTcuODE3MzMgNDUuODQ3NzcsMTA1LjA1NDQyIDEwMy42NjUxLDEwNS41ODg3NyBoIDM2LjMzNjIxIHYgLTM5LjIyMTc0IGggLTM0LjQxMjUzIGMgLTM2LjEyMjQ4LDAuNDI3NSAtNjUuNzI1OCwtMjguNTM0NjIgLTY2LjE1MzI5LC02NC42NTcwOCAtMC40Mjc0OSwtMzYuMTIyNDggMjguNTM0NjMsLTY1LjcyNTgxIDY0LjY1NzA4LC02Ni4xNTMzIGggMS40OTYyMSBjIDM2LjEyMjQ4LDAgNjUuNDA1MiwyOS4yODI3MiA2NS41MTIwNyw2NS40MDUyIHYgMCA5Ni4zOTc4MyAwIGMgMCwzNS44MDE4NyAtMjkuMTc1ODUsNjQuOTc3NzMgLTY0Ljg3MDgzLDY1LjQwNTIxIC0xNy4wOTk0MSwtMC4xMDY4OCAtMzMuNDUwNzEsLTcuMDUzNTEgLTQ1LjUyNzE3LC0xOS4xMjk5NSBsIC0yNy43ODY1LDI3Ljc4NjUxIGMgMTkuMjM2ODEsMTkuMzQzNyA0NS4zMTMzOSwzMC4zNTE0MyA3Mi41NjU1NiwzMC42NzIwNSBoIDEuMzg5MzMgYyA1Ny4wNjkyNCwtMC44NTQ5NyAxMDIuOTE3LC00Ny4xMzAyMiAxMDMuMjM3NiwtMTA0LjE5OTQ1IFYgMTk5LjI5MTg5IEMgMzUzLjY2NzM5LDE0Mi40MzYzOSAzMDcuMjg1MjcsOTcuMTIyOTk0IDI1MC41MzY2NCw5Ny4xMjI5OTQgWiIKICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjBweCIKICAgICAgIGlkPSJwYXRoMS0zIiAvPjwvZz48L3N2Zz4K"},"displayName":"Groq Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":41,"name":"Ticket Management"},{"id":49,"name":"AI Summarization"}],"image":[]}}