{
  "workflow": {
    "id": 6569,
    "name": "Monitor supply chain risks with ScrapeGraphAI alerts via Slack and email",
    "views": 388,
    "recentViews": 0,
    "totalViews": 388,
    "createdAt": "2025-07-28T10:54:59.293Z",
    "description": "# How it works\n\nThis workflow automatically monitors supplier health and supply chain risks, providing real-time alerts and daily reports to procurement teams.\n\n## Key Steps\n\n1. **Daily Risk Check** - Runs the workflow every morning at 9:00 AM to assess supplier health.\n2. **Multi-Source Data Collection** - Scrapes supplier websites, investor relations pages, and industry news for risk indicators.\n3. **AI-Powered Risk Analysis** - Uses ScrapeGraphAI to extract and analyze financial status, operational issues, and regulatory problems.\n4. **Risk Scoring Engine** - Calculates comprehensive risk scores (1-10) based on multiple factors including financial health, operational disruptions, and news sentiment.\n5. **Alternative Supplier Discovery** - Automatically searches for backup suppliers when high-risk situations are detected.\n6. **Smart Alert System** - Routes notifications based on risk levels: immediate alerts for high-risk suppliers, daily summaries for normal operations.\n7. **Multi-Channel Notifications** - Sends alerts via Slack and detailed reports via email to procurement teams.\n\n## Set up steps\n\n**Setup time: 10-15 minutes**\n\n1. **Configure ScrapeGraphAI credentials** - Add your ScrapeGraphAI API key for web scraping capabilities.\n2. **Set up Slack integration** - Connect your Slack workspace and configure the #procurement-alerts and #supply-chain-updates channels.\n3. **Configure email settings** - Set up email credentials for detailed reports to procurement teams.\n4. **Customize supplier URLs** - Update the supplier website URLs to monitor your specific suppliers.\n5. **Adjust risk thresholds** - Modify the risk scoring parameters based on your industry and risk tolerance.\n6. **Set notification preferences** - Configure alert conditions and message formatting for your team's needs.\n",
    "workflow": {
      "id": "VhEwspDqzu7ssFVE",
      "meta": {
        "instanceId": "f4b0efaa33080e7774e0d9285c40c7abcd2c6f7cf1a8b901fa7106170dd4cda3",
        "templateCredsSetupCompleted": true
      },
      "name": "My workflow 2",
      "tags": [
        {
          "id": "DxXGubfBzRKh6L8T",
          "name": "Revenue Optimization",
          "createdAt": "2025-07-25T16:24:30.370Z",
          "updatedAt": "2025-07-25T16:24:30.370Z"
        },
        {
          "id": "IxkcJ2IpYIxivoHV",
          "name": "Content Strategy",
          "createdAt": "2025-07-25T12:57:37.677Z",
          "updatedAt": "2025-07-25T12:57:37.677Z"
        },
        {
          "id": "PAKIJ2Mm9EvRcR3u",
          "name": "Trend Monitoring",
          "createdAt": "2025-07-25T12:57:37.670Z",
          "updatedAt": "2025-07-25T12:57:37.670Z"
        },
        {
          "id": "YtfXmaZk44MYedPO",
          "name": "Dynamic Pricing",
          "createdAt": "2025-07-25T16:24:30.369Z",
          "updatedAt": "2025-07-25T16:24:30.369Z"
        }
      ],
      "nodes": [
        {
          "id": "97c1e8d5-3813-4bf6-878a-2f197a7de968",
          "name": "Daily Risk Check",
          "type": "n8n-nodes-base.scheduleTrigger",
          "position": [
            -192,
            688
          ],
          "parameters": {
            "rule": {
              "interval": [
                {
                  "field": "cronExpression",
                  "expression": "0 9 * * *"
                }
              ]
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "793c2693-4f4d-45cb-8d5a-3c4db372b958",
          "name": "Scrape Supplier 1",
          "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
          "position": [
            128,
            592
          ],
          "parameters": {
            "userPrompt": "Extract supplier health indicators from this website. Look for financial news, operational updates, regulatory issues, and any risk factors. Use this schema: { \"supplier_name\": \"Company Name\", \"financial_status\": \"stable/warning/critical\", \"operational_issues\": [\"list of issues\"], \"regulatory_problems\": [\"list of problems\"], \"news_sentiment\": \"positive/neutral/negative\", \"risk_score\": \"1-10\", \"last_updated\": \"date\", \"source_url\": \"url\" }",
            "websiteUrl": "https://example-supplier-1.com/news"
          },
          "typeVersion": 1
        },
        {
          "id": "9a2d5ce5-3155-48ed-850f-37f3dd88344b",
          "name": "Scrape Supplier 2",
          "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
          "position": [
            128,
            736
          ],
          "parameters": {
            "userPrompt": "Extract supplier health indicators from this website. Look for financial news, operational updates, regulatory issues, and any risk factors. Use this schema: { \"supplier_name\": \"Company Name\", \"financial_status\": \"stable/warning/critical\", \"operational_issues\": [\"list of issues\"], \"regulatory_problems\": [\"list of problems\"], \"news_sentiment\": \"positive/neutral/negative\", \"risk_score\": \"1-10\", \"last_updated\": \"date\", \"source_url\": \"url\" }",
            "websiteUrl": "https://example-supplier-2.com/investor-relations"
          },
          "typeVersion": 1
        },
        {
          "id": "2980958d-05b9-4474-a256-fd805acdf673",
          "name": "Scrape Industry News",
          "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
          "position": [
            128,
            896
          ],
          "parameters": {
            "userPrompt": "Search for news articles about supply chain disruptions, supplier bankruptcies, regulatory issues, and industry risks. Extract relevant information using this schema: { \"headline\": \"news title\", \"summary\": \"brief summary\", \"impact_level\": \"low/medium/high\", \"affected_suppliers\": [\"list of companies\"], \"risk_category\": \"financial/operational/regulatory/geopolitical\", \"date\": \"publication date\", \"source\": \"news source\" }",
            "websiteUrl": "https://www.reuters.com/business/supply-chain/"
          },
          "typeVersion": 1
        },
        {
          "id": "9b26bc24-88ba-4a74-9481-4c960729cf38",
          "name": "Risk Scorer",
          "type": "n8n-nodes-base.code",
          "position": [
            608,
            688
          ],
          "parameters": {
            "jsCode": "// Aggregate all supplier data and calculate risk scores\nconst supplierData = $input.all();\nconst riskThresholds = {\n  low: 3,\n  medium: 6,\n  high: 8\n};\n\nfunction calculateOverallRisk(supplier) {\n  let riskScore = 0;\n  \n  // Financial status scoring\n  if (supplier.financial_status === 'critical') riskScore += 4;\n  else if (supplier.financial_status === 'warning') riskScore += 2;\n  \n  // Operational issues scoring\n  const operationalIssues = supplier.operational_issues || [];\n  riskScore += Math.min(operationalIssues.length, 3);\n  \n  // Regulatory problems scoring\n  const regulatoryProblems = supplier.regulatory_problems || [];\n  riskScore += Math.min(regulatoryProblems.length * 1.5, 3);\n  \n  // News sentiment scoring\n  if (supplier.news_sentiment === 'negative') riskScore += 2;\n  else if (supplier.news_sentiment === 'neutral') riskScore += 0.5;\n  \n  return Math.min(Math.round(riskScore), 10);\n}\n\nfunction getRiskLevel(score) {\n  if (score >= riskThresholds.high) return 'HIGH';\n  if (score >= riskThresholds.medium) return 'MEDIUM';\n  return 'LOW';\n}\n\nfunction formatRiskReport(suppliers) {\n  const highRiskSuppliers = suppliers.filter(function(s) { return s.overall_risk_score >= riskThresholds.high; });\n  const mediumRiskSuppliers = suppliers.filter(function(s) { return s.overall_risk_score >= riskThresholds.medium && s.overall_risk_score < riskThresholds.high; });\n  \n  let report = '🚨 **SUPPLY CHAIN RISK REPORT**\\n📅 Date: ' + new Date().toLocaleDateString() + '\\n\\n';\n  \n  if (highRiskSuppliers.length > 0) {\n    report += '⚠️ **HIGH RISK SUPPLIERS (' + highRiskSuppliers.length + ')**\\n';\n    for (let i = 0; i < highRiskSuppliers.length; i++) {\n      const supplier = highRiskSuppliers[i];\n      const operationalCount = (supplier.operational_issues || []).length;\n      report += '• ' + supplier.supplier_name + ' (Score: ' + supplier.overall_risk_score + '/10)\\n';\n      report += '  Status: ' + supplier.financial_status + ' | Issues: ' + operationalCount + '\\n';\n    }\n    report += '\\n';\n  }\n  \n  if (mediumRiskSuppliers.length > 0) {\n    report += '⚡ **MEDIUM RISK SUPPLIERS (' + mediumRiskSuppliers.length + ')**\\n';\n    for (let i = 0; i < mediumRiskSuppliers.length; i++) {\n      const supplier = mediumRiskSuppliers[i];\n      report += '• ' + supplier.supplier_name + ' (Score: ' + supplier.overall_risk_score + '/10)\\n';\n    }\n    report += '\\n';\n  }\n  \n  report += '📊 **SUMMARY**\\n';\n  report += 'Total Suppliers Monitored: ' + suppliers.length + '\\n';\n  report += 'High Risk: ' + highRiskSuppliers.length + '\\n';\n  report += 'Medium Risk: ' + mediumRiskSuppliers.length + '\\n';\n  report += 'Low Risk: ' + (suppliers.length - highRiskSuppliers.length - mediumRiskSuppliers.length) + '\\n';\n  \n  return report;\n}\n\n// Process each supplier's data\nconst processedSuppliers = [];\nfor (let i = 0; i < supplierData.length; i++) {\n  const item = supplierData[i];\n  const supplier = item.json.result || item.json;\n  const overallRiskScore = calculateOverallRisk(supplier);\n  const riskLevel = getRiskLevel(overallRiskScore);\n  \n  processedSuppliers.push({\n    supplier_name: supplier.supplier_name || 'Unknown Supplier',\n    financial_status: supplier.financial_status || 'stable',\n    operational_issues: supplier.operational_issues || [],\n    regulatory_problems: supplier.regulatory_problems || [],\n    news_sentiment: supplier.news_sentiment || 'neutral',\n    overall_risk_score: overallRiskScore,\n    risk_level: riskLevel,\n    needs_attention: overallRiskScore >= riskThresholds.medium,\n    assessment_date: new Date().toISOString(),\n    source_url: supplier.source_url || ''\n  });\n}\n\n// Generate summary report\nconst summaryReport = formatRiskReport(processedSuppliers);\n\nconsole.log('Processed ' + processedSuppliers.length + ' suppliers');\nconst highRiskCount = processedSuppliers.filter(function(s) { return s.risk_level === 'HIGH'; }).length;\nconsole.log('High risk suppliers: ' + highRiskCount);\n\nreturn [{\n  json: {\n    suppliers: processedSuppliers,\n    summary_report: summaryReport,\n    high_risk_count: highRiskCount,\n    medium_risk_count: processedSuppliers.filter(function(s) { return s.risk_level === 'MEDIUM'; }).length,\n    total_suppliers: processedSuppliers.length,\n    assessment_timestamp: new Date().toISOString()\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "97557200-2713-4f26-890e-c4601e203a1c",
          "name": "Find Alternatives",
          "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
          "position": [
            992,
            560
          ],
          "parameters": {
            "userPrompt": "Find alternative suppliers in manufacturing category. Extract company information using this schema: { \"company_name\": \"name\", \"location\": \"city, state/country\", \"specialties\": [\"list of services\"], \"certifications\": [\"list of certs\"], \"contact_info\": \"email or phone\", \"website\": \"url\", \"estimated_capacity\": \"small/medium/large\", \"quality_rating\": \"1-5 stars\" }",
            "websiteUrl": "https://www.thomasnet.com/suppliers/manufacturing"
          },
          "typeVersion": 1
        },
        {
          "id": "f0122ca7-ae5b-4ffe-9ac2-ce9a4f78b78d",
          "name": "Check Alert Conditions",
          "type": "n8n-nodes-base.if",
          "position": [
            1376,
            720
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 1,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "or",
              "conditions": [
                {
                  "id": "condition-high-risk",
                  "operator": {
                    "type": "number",
                    "operation": "gt"
                  },
                  "leftValue": "={{ $json.high_risk_count }}",
                  "rightValue": 0
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "0ab9cb88-eeab-431e-a04a-cd26c5300018",
          "name": "Format Alert",
          "type": "n8n-nodes-base.set",
          "position": [
            1776,
            464
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "assignment-alert",
                  "name": "alert_message",
                  "type": "string",
                  "value": "🚨 **URGENT: High Risk Suppliers Detected**\n\n{{ $json.summary_report }}\n\n⚡ **Recommended Actions:**\n• Review contracts with high-risk suppliers\n• Contact alternative suppliers\n• Assess inventory levels\n• Update contingency plans\n\n📞 **Next Steps:**\n1. Schedule emergency procurement meeting\n2. Review supplier performance metrics\n3. Initiate backup supplier evaluation\n\n🕐 Generated: {{ new Date().toLocaleString() }}"
                },
                {
                  "id": "assignment-priority",
                  "name": "priority",
                  "type": "string",
                  "value": "={{ $json.high_risk_count >= 2 ? \"CRITICAL\" : \"HIGH\" }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "b21e22c8-5c61-4416-b646-6371d46b6500",
          "name": "Send Slack Alert",
          "type": "n8n-nodes-base.slack",
          "position": [
            2096,
            368
          ],
          "webhookId": "7c498ffe-444f-4506-91a2-c8603e06427c",
          "parameters": {
            "text": "={{ $json.alert_message }}",
            "select": "channel",
            "channelId": {
              "__rl": true,
              "mode": "name",
              "value": "#procurement-alerts"
            },
            "otherOptions": {},
            "authentication": "oAuth2"
          },
          "typeVersion": 2.2
        },
        {
          "id": "ae81a56e-cb26-49ac-bb0b-19326a11c88e",
          "name": "Email Procurement Team",
          "type": "n8n-nodes-base.emailSend",
          "position": [
            2096,
            704
          ],
          "webhookId": "ea0e7113-a71a-4c87-9d94-85c347613f6b",
          "parameters": {
            "options": {
              "attachments": [
                {
                  "value": "={{ JSON.stringify($node['Risk Scorer'].json.suppliers.filter(s => s.risk_level === 'HIGH' || s.risk_level === 'MEDIUM'), null, 2) }}",
                  "property": "supply_chain_risk_data.json"
                }
              ]
            }
          },
          "typeVersion": 2.1
        },
        {
          "id": "c168f67c-910d-4ada-9377-0790745fd08f",
          "name": "Format Daily Report",
          "type": "n8n-nodes-base.set",
          "position": [
            1776,
            864
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "assignment-daily-report",
                  "name": "daily_summary",
                  "type": "string",
                  "value": "📊 **Daily Supply Chain Health Report**\n\n{{ $json.summary_report }}\n\n✅ **All systems monitored successfully**\n📈 **Trend Analysis**: Suppliers performing within acceptable risk parameters\n\n🔄 Next check: Tomorrow at 9:00 AM"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "4fbc224c-7fc7-4388-94a9-833137a571f1",
          "name": "Send Daily Report",
          "type": "n8n-nodes-base.slack",
          "position": [
            2096,
            864
          ],
          "webhookId": "2dfea5a3-4911-4f2b-8cb3-5bc33dc60112",
          "parameters": {
            "text": "={{ $json.daily_summary }}",
            "select": "channel",
            "channelId": {
              "__rl": true,
              "mode": "name",
              "value": "#supply-chain-updates"
            },
            "otherOptions": {},
            "authentication": "oAuth2"
          },
          "typeVersion": 2.2
        },
        {
          "id": "19f69bd7-d629-48ef-971f-8e0a4d59d1fa",
          "name": "Step 1 Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -368,
            -32
          ],
          "parameters": {
            "color": 4,
            "width": 400,
            "height": 1198,
            "content": "# Step 1: Daily Trigger ⏰\n\n**Purpose**: Initiates the daily supply chain risk assessment\n\n## Configuration\n- **Schedule**: Every day at 9:00 AM\n- **Timezone**: Adjust based on your business hours\n- **Frequency**: Can be modified for hourly or custom intervals\n\n## Benefits\n- Automated monitoring without manual intervention\n- Consistent daily health checks\n- Early detection of emerging risks"
          },
          "typeVersion": 1
        },
        {
          "id": "6b581da0-033c-4ce9-9113-bb50d518c2ff",
          "name": "Step 2 Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            32,
            -32
          ],
          "parameters": {
            "color": 4,
            "width": 400,
            "height": 1198,
            "content": "# Step 2: Supplier Data Collection 🔍\n\n**Purpose**: Scrapes multiple supplier websites and news sources\n\n## What it monitors\n- Financial health indicators\n- Operational disruptions\n- Regulatory compliance issues\n- Industry news and trends\n\n## Data Sources\n- Supplier corporate websites\n- Investor relations pages\n- Industry news feeds\n- Regulatory filings"
          },
          "typeVersion": 1
        },
        {
          "id": "28a20162-93f4-47ee-95ef-a31a2570e846",
          "name": "Step 3 Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            432,
            -32
          ],
          "parameters": {
            "color": 4,
            "width": 400,
            "height": 1198,
            "content": "# Step 3: Risk Analysis Engine 🧮\n\n**Purpose**: Processes collected data and calculates risk scores\n\n## Risk Scoring Factors\n- Financial status (stable/warning/critical)\n- Number of operational issues\n- Regulatory compliance problems\n- News sentiment analysis\n\n## Output\n- Individual supplier risk scores (1-10)\n- Risk level classification (LOW/MEDIUM/HIGH)\n- Comprehensive risk assessment report"
          },
          "typeVersion": 1
        },
        {
          "id": "66e6b608-9c4d-4493-be0b-90a813145cc2",
          "name": "Step 4 Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            832,
            -32
          ],
          "parameters": {
            "color": 4,
            "width": 400,
            "height": 1198,
            "content": "# Step 4: Alternative Supplier Finder 🔄\n\n**Purpose**: Identifies backup suppliers for high-risk situations\n\n## Search Criteria\n- Same industry/category as at-risk supplier\n- Geographic proximity preferences\n- Certification requirements\n- Capacity and quality ratings\n\n## Benefits\n- Proactive contingency planning\n- Faster response to supply disruptions\n- Reduced business continuity risks"
          },
          "typeVersion": 1
        },
        {
          "id": "a59c8221-0d7d-4fba-b473-55fbf02d15ec",
          "name": "Step 5 Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1232,
            -32
          ],
          "parameters": {
            "color": 4,
            "width": 400,
            "height": 1198,
            "content": "# Step 5: Alert System Logic 🚨\n\n**Purpose**: Determines when to send alerts vs daily reports\n\n## Alert Conditions\n- High-risk suppliers detected (score ≥ 8)\n- Multiple medium-risk suppliers\n- Critical financial status changes\n- Major operational disruptions\n\n## Smart Routing\n- **HIGH/CRITICAL**: Immediate Slack + Email alerts\n- **LOW risk**: Daily summary report only"
          },
          "typeVersion": 1
        },
        {
          "id": "8c6b1208-46ba-4e06-b281-3a27a4446fc6",
          "name": "Step 6 Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1632,
            -32
          ],
          "parameters": {
            "color": 4,
            "width": 688,
            "height": 1198,
            "content": "# Step 6: Multi-Channel Notifications 📢\n\n**Purpose**: Ensures critical information reaches the right people\n\n## Notification Channels\n- **Slack**: Real-time alerts to #procurement-alerts\n- **Email**: Detailed reports to procurement team\n- **Daily Reports**: Regular updates to #supply-chain-updates\n\n## Message Formatting\n- Clear priority indicators\n- Actionable recommendations\n- Alternative supplier suggestions\n- Trend analysis and next steps"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "13cec458-59b4-43fb-a10b-7bdbfa7e8fc0",
      "connections": {
        "Risk Scorer": {
          "main": [
            [
              {
                "node": "Find Alternatives",
                "type": "main",
                "index": 0
              },
              {
                "node": "Check Alert Conditions",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Format Alert": {
          "main": [
            [
              {
                "node": "Send Slack Alert",
                "type": "main",
                "index": 0
              },
              {
                "node": "Email Procurement Team",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Daily Risk Check": {
          "main": [
            [
              {
                "node": "Scrape Supplier 1",
                "type": "main",
                "index": 0
              },
              {
                "node": "Scrape Supplier 2",
                "type": "main",
                "index": 0
              },
              {
                "node": "Scrape Industry News",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Find Alternatives": {
          "main": [
            [
              {
                "node": "Check Alert Conditions",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Scrape Supplier 1": {
          "main": [
            [
              {
                "node": "Risk Scorer",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Scrape Supplier 2": {
          "main": [
            [
              {
                "node": "Risk Scorer",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Format Daily Report": {
          "main": [
            [
              {
                "node": "Send Daily Report",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Scrape Industry News": {
          "main": [
            [
              {
                "node": "Risk Scorer",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Check Alert Conditions": {
          "main": [
            [
              {
                "node": "Format Alert",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Format Daily Report",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 18,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 1
        },
        "n8n-nodes-base.set": {
          "count": 2
        },
        "n8n-nodes-base.code": {
          "count": 1
        },
        "n8n-nodes-base.slack": {
          "count": 2
        },
        "n8n-nodes-base.emailSend": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 6
        },
        "n8n-nodes-base.scheduleTrigger": {
          "count": 1
        },
        "n8n-nodes-scrapegraphai.scrapegraphAi": {
          "count": 4
        }
      }
    },
    "status": "published",
    "user": {
      "name": "vinci-king-01",
      "username": "vinci-king-01",
      "bio": "",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/marco-vinciguerra-7ba365242/"
      ],
      "avatar": "https://gravatar.com/avatar/d939eeef03a5fcb5df08bee8196f12ccb248c38209487414e419032004f0c014?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 11,
        "icon": "fa:envelope",
        "name": "n8n-nodes-base.emailSend",
        "codex": {
          "data": {
            "alias": [
              "SMTP",
              "email",
              "human",
              "form",
              "wait",
              "hitl",
              "approval"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/",
                  "icon": "👦",
                  "label": "Build your own virtual assistant with n8n: A step by step guide"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.sendemail/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/sendemail/"
                }
              ]
            },
            "categories": [
              "Communication",
              "HITL",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "HITL": [
                "Human in the Loop"
              ]
            }
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "Send Email",
          "color": "#00bb88"
        },
        "iconData": {
          "icon": "envelope",
          "type": "icon"
        },
        "displayName": "Send Email",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          },
          {
            "id": 28,
            "name": "HITL"
          }
        ]
      },
      {
        "id": 20,
        "icon": "fa:map-signs",
        "name": "n8n-nodes-base.if",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "Filter",
              "Condition",
              "Logic",
              "Boolean",
              "Branch"
            ],
            "details": "The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.",
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/",
                  "icon": "🏭",
                  "label": "Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/",
                  "icon": "🤬",
                  "label": "Create a toxic language detector for Telegram in 4 step"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/",
                  "icon": "🏷️",
                  "label": "How to automatically manage contributions to open-source projects"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "If",
          "color": "#408000"
        },
        "iconData": {
          "icon": "map-signs",
          "type": "icon"
        },
        "displayName": "If",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 38,
        "icon": "fa:pen",
        "name": "n8n-nodes-base.set",
        "codex": {
          "data": {
            "alias": [
              "Set",
              "JS",
              "JSON",
              "Filter",
              "Transform",
              "Map"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/",
                  "icon": "🏭",
                  "label": "Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/",
                  "icon": "📈",
                  "label": "Automatically pulling and visualizing data with n8n"
                },
                {
                  "url": "https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/",
                  "icon": "📡",
                  "label": "Database Monitoring and Alerting with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/",
                  "icon": "📱",
                  "label": "Building an expense tracking app in 10 minutes"
                },
                {
                  "url": "https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/",
                  "icon": "📹",
                  "label": "The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/",
                  "icon": "🧰",
                  "label": "Learn to Build Powerful API Endpoints Using Webhooks"
                },
                {
                  "url": "https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "url": "https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/",
                  "icon": "📈",
                  "label": "A low-code bitcoin ticker built with QuestDB and n8n.io"
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Edit Fields"
        },
        "iconData": {
          "icon": "pen",
          "type": "icon"
        },
        "displayName": "Edit Fields (Set)",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 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": 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"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 35,
        "name": "Document Extraction"
      },
      {
        "id": 49,
        "name": "AI Summarization"
      }
    ],
    "image": []
  }
}