{
  "workflow": {
    "id": 6448,
    "name": "Automated dynamic pricing with AI competitor monitoring & revenue optimization",
    "views": 571,
    "recentViews": 0,
    "totalViews": 571,
    "createdAt": "2025-07-25T16:34:35.146Z",
    "description": "*This workflow contains community nodes that are only compatible with the self-hosted version of n8n.*\n\n# How it works\n\nThis workflow automatically monitors competitor prices, analyzes market demand, and optimizes product pricing in real-time for maximum profitability using advanced AI algorithms.\n\n## Key Steps\n\n1. **Hourly Trigger** - Runs automatically every hour for real-time price optimization and competitive response.\n2. **Multi-Platform Competitor Monitoring** - Uses AI-powered scrapers to track prices from Amazon, Best Buy, Walmart, and Target.\n3. **Market Demand Analysis** - Analyzes Google Trends data to understand search volume trends and seasonal patterns.\n4. **Customer Sentiment Analysis** - Reviews customer feedback to assess price sensitivity and value perception.\n5. **AI Pricing Optimization** - Calculates optimal prices using weighted factors including competitor positioning, demand indicators, and inventory levels.\n6. **Automated Price Updates** - Directly updates e-commerce platform prices when significant opportunities are identified.\n7. **Comprehensive Analytics** - Logs all pricing decisions and revenue projections to Google Sheets for performance tracking.\n\n## Set up steps\n\n**Setup time: 15-20 minutes**\n\n1. **Configure ScrapeGraphAI credentials** - Add your ScrapeGraphAI API key for AI-powered competitor and market analysis.\n2. **Set up e-commerce API connection** - Connect your e-commerce platform API for automated price updates.\n3. **Configure Google Sheets** - Set up Google Sheets connections for pricing history and revenue analytics logging.\n4. **Set up Slack notifications** - Connect your Slack workspace for real-time pricing alerts and team updates.\n5. **Customize product catalog** - Modify the product configuration with your actual products, costs, and pricing constraints.\n6. **Adjust monitoring frequency** - Change the trigger timing based on your business needs (hourly, daily, etc.).\n7. **Configure competitor platforms** - Update competitor URLs and selectors for your target market.\n\n## What you get\n\n- **Real-time price optimization** with 15-25% potential revenue increase through intelligent pricing\n- **Competitive intelligence** with automated monitoring of major e-commerce platforms\n- **Market demand insights** with seasonal and trend-based pricing adjustments\n- **Customer sentiment analysis** to understand price sensitivity and value perception\n- **Automated price updates** when significant opportunities are identified (&gt;2% change, &gt;70% confidence)\n- **Comprehensive analytics** with pricing history, revenue projections, and performance tracking\n- **Team notifications** with detailed market analysis and pricing recommendations\n- **Margin protection** with intelligent constraints to maintain profitability\n",
    "workflow": {
      "id": "VhEwspDqzu7ssFVE",
      "meta": {
        "instanceId": "f4b0efaa33080e7774e0d9285c40c7abcd2c6f7cf1a8b901fa7106170dd4cda3",
        "templateCredsSetupCompleted": true
      },
      "name": "My workflow 2",
      "tags": [
        {
          "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"
        },
        {
          "id": "DxXGubfBzRKh6L8T",
          "name": "Revenue Optimization",
          "createdAt": "2025-07-25T16:24:30.370Z",
          "updatedAt": "2025-07-25T16:24:30.370Z"
        }
      ],
      "nodes": [
        {
          "id": "a6fbe4c4-1091-432d-b21a-9bdc41133bb2",
          "name": "Hourly Pricing Monitor Trigger",
          "type": "n8n-nodes-base.scheduleTrigger",
          "notes": "Triggers every hour for real-time price optimization",
          "position": [
            -2896,
            -160
          ],
          "parameters": {
            "rule": {
              "interval": [
                {
                  "field": "hours"
                }
              ]
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "ad01958e-33d3-4b19-95c3-302b57b0e309",
          "name": "Pricing Configuration Processor",
          "type": "n8n-nodes-base.code",
          "position": [
            -2208,
            -32
          ],
          "parameters": {
            "jsCode": "// Dynamic Pricing Configuration & Product Management\n// Created: 25/7/2025\n\nconst pricingConfig = {\n  // Product catalog with pricing parameters\n  products: [\n    {\n      id: 'PROD-001',\n      name: 'Wireless Bluetooth Headphones',\n      category: 'Electronics',\n      current_price: 79.99,\n      cost_price: 35.00,\n      min_margin: 0.25, // 25% minimum margin\n      max_margin: 0.65, // 65% maximum margin\n      min_price: 45.00,\n      max_price: 120.00,\n      inventory_level: 150,\n      monthly_sales: 45,\n      competitor_products: [\n        'Sony WH-CH720N',\n        'JBL Tune 760NC',\n        'Sennheiser HD 450BT'\n      ],\n      search_keywords: ['wireless headphones', 'bluetooth headphones', 'noise canceling']\n    },\n    {\n      id: 'PROD-002',\n      name: 'Smart Fitness Tracker',\n      category: 'Wearables',\n      current_price: 149.99,\n      cost_price: 65.00,\n      min_margin: 0.30,\n      max_margin: 0.70,\n      min_price: 85.00,\n      max_price: 200.00,\n      inventory_level: 75,\n      monthly_sales: 28,\n      competitor_products: [\n        'Fitbit Charge 5',\n        'Garmin Vivosmart 4',\n        'Samsung Galaxy Fit2'\n      ],\n      search_keywords: ['fitness tracker', 'smart watch', 'activity monitor']\n    },\n    {\n      id: 'PROD-003',\n      name: 'Portable Phone Charger',\n      category: 'Accessories',\n      current_price: 29.99,\n      cost_price: 12.00,\n      min_margin: 0.20,\n      max_margin: 0.60,\n      min_price: 15.00,\n      max_price: 45.00,\n      inventory_level: 300,\n      monthly_sales: 120,\n      competitor_products: [\n        'Anker PowerCore 10000',\n        'RAVPower 20000mAh',\n        'Belkin Boost Charge'\n      ],\n      search_keywords: ['power bank', 'portable charger', 'phone battery']\n    }\n  ],\n  \n  // Competitor monitoring configuration\n  competitors: {\n    'Amazon': {\n      base_url: 'https://www.amazon.com/s?k=',\n      price_selector: '.a-price-whole',\n      weight: 0.35 // Influence on pricing decisions\n    },\n    'Best Buy': {\n      base_url: 'https://www.bestbuy.com/site/searchpage.jsp?st=',\n      price_selector: '.visually-hidden',\n      weight: 0.25\n    },\n    'Walmart': {\n      base_url: 'https://www.walmart.com/search?q=',\n      price_selector: '[data-automation-id=\"product-price\"]',\n      weight: 0.20\n    },\n    'Target': {\n      base_url: 'https://www.target.com/s?searchTerm=',\n      price_selector: '[data-test=\"product-price\"]',\n      weight: 0.20\n    }\n  },\n  \n  // Pricing strategy parameters\n  strategies: {\n    aggressive: {\n      description: 'Beat competitor prices by 5-10%',\n      price_adjustment: -0.075, // Average 7.5% below competitors\n      margin_tolerance: 0.15, // Accept 15% margin reduction\n      inventory_threshold: 100 // Use when inventory > 100\n    },\n    competitive: {\n      description: 'Match competitor average prices',\n      price_adjustment: 0.00, // Match competitor average\n      margin_tolerance: 0.05, // Accept 5% margin reduction\n      inventory_threshold: 50 // Use when inventory 50-100\n    },\n    premium: {\n      description: 'Price 10-20% above competitors',\n      price_adjustment: 0.15, // 15% above competitors\n      margin_tolerance: -0.10, // Allow 10% margin increase\n      inventory_threshold: 0 // Use when inventory < 50\n    }\n  },\n  \n  // Market demand indicators\n  demand_factors: {\n    seasonality: {\n      'Q4': 1.3, // Holiday season boost\n      'Q1': 0.8, // Post-holiday decline\n      'Q2': 1.0, // Normal demand\n      'Q3': 1.1  // Back-to-school boost\n    },\n    day_of_week: {\n      'Monday': 0.9,\n      'Tuesday': 0.95,\n      'Wednesday': 1.0,\n      'Thursday': 1.05,\n      'Friday': 1.2, // Weekend shopping\n      'Saturday': 1.3,\n      'Sunday': 1.1\n    },\n    time_of_day: {\n      'morning': 0.8,   // 6AM-12PM\n      'afternoon': 1.2, // 12PM-6PM\n      'evening': 1.4,   // 6PM-10PM\n      'night': 0.6      // 10PM-6AM\n    }\n  },\n  \n  // Revenue optimization settings\n  optimization: {\n    revenue_weight: 0.6,  // 60% focus on revenue\n    margin_weight: 0.25,  // 25% focus on margin\n    velocity_weight: 0.15, // 15% focus on sales velocity\n    \n    // Price change constraints\n    max_price_change: 0.15, // Maximum 15% price change per hour\n    min_change_threshold: 0.02, // Only change price if >2% difference\n    price_change_frequency: 1, // Hours between price changes\n    \n    // Performance thresholds\n    low_performance_threshold: 0.7, // Sales velocity < 70% of target\n    high_performance_threshold: 1.3  // Sales velocity > 130% of target\n  }\n};\n\n// Get current market context\nconst now = new Date();\nconst currentHour = now.getHours();\nconst currentDay = now.toLocaleDateString('en-US', { weekday: 'long' });\nconst currentQuarter = Math.ceil((now.getMonth() + 1) / 3);\n\n// Determine time-based demand factors\nlet timeOfDay = 'night';\nif (currentHour >= 6 && currentHour < 12) timeOfDay = 'morning';\nelse if (currentHour >= 12 && currentHour < 18) timeOfDay = 'afternoon';\nelse if (currentHour >= 18 && currentHour < 22) timeOfDay = 'evening';\n\nconst demandMultiplier = \n  pricingConfig.demand_factors.seasonality[`Q${currentQuarter}`] *\n  pricingConfig.demand_factors.day_of_week[currentDay] *\n  pricingConfig.demand_factors.time_of_day[timeOfDay];\n\n// Generate competitor monitoring tasks\nconst monitoringTasks = [];\nconst competitors = Object.keys(pricingConfig.competitors);\n\n// Create monitoring tasks for each product-competitor combination\npricingConfig.products.forEach(product => {\n  competitors.forEach(competitor => {\n    product.search_keywords.forEach(keyword => {\n      monitoringTasks.push({\n        product_id: product.id,\n        product_name: product.name,\n        competitor: competitor,\n        search_keyword: keyword,\n        search_url: pricingConfig.competitors[competitor].base_url + encodeURIComponent(keyword),\n        competitor_weight: pricingConfig.competitors[competitor].weight,\n        current_price: product.current_price,\n        cost_price: product.cost_price,\n        inventory_level: product.inventory_level,\n        monthly_sales: product.monthly_sales\n      });\n    });\n  });\n});\n\n// Session tracking\nconst sessionId = `pricing_${Date.now()}`;\nconst timestamp = now.toISOString();\n\n// Generate comprehensive monitoring configuration\nreturn [{\n  json: {\n    sessionId: sessionId,\n    timestamp: timestamp,\n    market_context: {\n      current_hour: currentHour,\n      current_day: currentDay,\n      current_quarter: currentQuarter,\n      time_of_day: timeOfDay,\n      demand_multiplier: demandMultiplier\n    },\n    config: pricingConfig,\n    monitoring_tasks: monitoringTasks,\n    total_monitoring_tasks: monitoringTasks.length,\n    products_count: pricingConfig.products.length,\n    competitors_count: competitors.length\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "5da725c9-5cf0-406e-a929-a5eaf7d86e10",
          "name": "Split Monitoring Tasks",
          "type": "n8n-nodes-base.splitInBatches",
          "position": [
            -1616,
            -96
          ],
          "parameters": {
            "options": {}
          },
          "typeVersion": 3
        },
        {
          "id": "1d1e1e73-96ed-48a1-b35f-c6763c7432fc",
          "name": "Task Processor",
          "type": "n8n-nodes-base.code",
          "position": [
            -1056,
            -160
          ],
          "parameters": {
            "jsCode": "// Task Processing and Competitor URL Generation\nconst items = $input.all();\nconst configData = items[0].json;\nconst batchData = $('Split Monitoring Tasks').item.json;\n\n// Get current monitoring task\nconst currentTask = configData.monitoring_tasks[batchData.index];\n\n// Add market context to current task\nconst enhancedTask = {\n  ...currentTask,\n  ...configData.market_context,\n  config: configData.config,\n  batchIndex: batchData.index,\n  totalBatches: configData.monitoring_tasks.length\n};\n\nreturn [{\n  json: enhancedTask\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "44854565-bda3-4823-b8aa-221c9d0862aa",
          "name": "AI Competitor Price Scraper",
          "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
          "position": [
            -448,
            192
          ],
          "parameters": {
            "userPrompt": "Extract competitor pricing data from this e-commerce search results page. Focus on products similar to our target product and their pricing information. Use this schema: { \"competitor\": \"Amazon\", \"search_keyword\": \"wireless headphones\", \"products_found\": [{ \"product_name\": \"Sony WH-CH720N Wireless Headphones\", \"brand\": \"Sony\", \"price\": 89.99, \"original_price\": 129.99, \"discount_percentage\": 31, \"rating\": 4.5, \"review_count\": 1247, \"availability\": \"In Stock\", \"shipping_info\": \"Free shipping\", \"seller\": \"Amazon\", \"product_url\": \"https://amazon.com/dp/B09XXXX\", \"features\": [\"Noise Canceling\", \"30hr Battery\"], \"similar_to_target\": true, \"relevance_score\": 0.85 }], \"price_statistics\": { \"min_price\": 45.99, \"max_price\": 199.99, \"avg_price\": 92.45, \"median_price\": 89.99, \"price_range\": 154.00 }, \"market_insights\": { \"total_products\": 12, \"brands_found\": [\"Sony\", \"JBL\", \"Bose\"], \"avg_rating\": 4.3, \"price_trend\": \"stable\", \"promotion_frequency\": \"high\" } }",
            "websiteUrl": "={{ $json.search_url }}"
          },
          "typeVersion": 1
        },
        {
          "id": "8ef3100b-2c01-403d-8d51-15fc3bed6ee3",
          "name": "AI Demand Analysis Scraper",
          "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
          "position": [
            -448,
            -32
          ],
          "parameters": {
            "userPrompt": "Analyze search demand trends for this product keyword to assess market demand and pricing opportunities. Extract trend data and demand indicators. Schema: { \"keyword\": \"wireless headphones\", \"search_volume_trend\": \"rising\", \"interest_score\": 78, \"related_queries\": [{ \"query\": \"best wireless headphones\", \"growth\": \"+25%\" }, { \"query\": \"cheap bluetooth headphones\", \"growth\": \"+15%\" }], \"geographic_interest\": [{ \"region\": \"United States\", \"interest\": 100 }, { \"region\": \"Canada\", \"interest\": 67 }], \"seasonal_patterns\": { \"current_vs_avg\": 1.15, \"peak_months\": [\"November\", \"December\"], \"low_months\": [\"January\", \"February\"] }, \"demand_indicators\": { \"price_sensitivity\": \"medium\", \"brand_loyalty\": \"low\", \"purchase_urgency\": \"medium\", \"comparison_shopping\": \"high\" }, \"market_saturation\": \"medium\", \"growth_opportunity\": \"high\" }",
            "websiteUrl": "={{ 'https://trends.google.com/trends/explore?q=' + encodeURIComponent($json.search_keyword) + '&date=now%201-d' }}"
          },
          "typeVersion": 1
        },
        {
          "id": "08667817-4134-4999-a74f-a83cf0080614",
          "name": "AI Customer Sentiment Scraper",
          "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
          "position": [
            -448,
            416
          ],
          "parameters": {
            "userPrompt": "Analyze customer reviews and sentiment for products in this category to understand price sensitivity and value perception. Extract customer insights that inform pricing decisions. Schema: { \"category\": \"wireless headphones\", \"total_reviews_analyzed\": 156, \"sentiment_analysis\": { \"positive\": 0.68, \"neutral\": 0.22, \"negative\": 0.10 }, \"price_mentions\": [{ \"price_point\": \"$50-80\", \"sentiment\": \"positive\", \"frequency\": 45, \"context\": \"good value for money\" }, { \"price_point\": \"$80-120\", \"sentiment\": \"mixed\", \"frequency\": 32, \"context\": \"expensive but worth it\" }], \"value_drivers\": [{ \"feature\": \"battery life\", \"importance\": 0.85, \"satisfaction\": 0.78 }, { \"feature\": \"sound quality\", \"importance\": 0.92, \"satisfaction\": 0.81 }], \"price_complaints\": [{ \"issue\": \"overpriced for features\", \"frequency\": 23 }, { \"issue\": \"better alternatives available\", \"frequency\": 18 }], \"purchase_drivers\": [\"sound quality\", \"brand reputation\", \"battery life\", \"comfort\"], \"price_elasticity_indicators\": { \"willingness_to_pay_premium\": 0.34, \"price_sensitivity_score\": 0.67, \"brand_premium_acceptance\": 0.45 } }",
            "websiteUrl": "={{ 'https://www.amazon.com/s?k=' + encodeURIComponent($json.search_keyword + ' reviews') + '&sort=review-rank' }}"
          },
          "typeVersion": 1
        },
        {
          "id": "28f0d262-548e-4f3d-b979-dd3f7a83a723",
          "name": "Merge Pricing Data",
          "type": "n8n-nodes-base.merge",
          "position": [
            160,
            -160
          ],
          "parameters": {
            "mode": "combine",
            "options": {},
            "mergeByFields": {
              "values": [
                {}
              ]
            }
          },
          "typeVersion": 2.1
        },
        {
          "id": "1f84e997-4771-42fb-bb6e-b9d38693e80e",
          "name": "Pricing Optimization Engine",
          "type": "n8n-nodes-base.code",
          "position": [
            784,
            -16
          ],
          "parameters": {
            "jsCode": "// Advanced Pricing Optimization Algorithm\nconst allData = $input.all();\nconst taskData = allData[0].json;\nconst competitorData = allData[1]?.json?.result || {};\nconst demandData = allData[2]?.json?.result || {};\nconst sentimentData = allData[3]?.json?.result || {};\n\n// Advanced pricing optimization engine\nconst pricingOptimizer = {\n  // Calculate optimal price based on multiple factors\n  calculateOptimalPrice(currentPrice, competitorPrices, demandFactors, customerSentiment, productData) {\n    const factors = {\n      competitor_influence: 0.35,\n      demand_influence: 0.25,\n      sentiment_influence: 0.20,\n      inventory_influence: 0.10,\n      margin_influence: 0.10\n    };\n    \n    // Competitor pricing analysis\n    const competitorScore = this.analyzeCompetitorPricing(currentPrice, competitorPrices);\n    \n    // Demand analysis\n    const demandScore = this.analyzeDemand(demandFactors, taskData.demand_multiplier);\n    \n    // Customer sentiment analysis\n    const sentimentScore = this.analyzeSentiment(customerSentiment, currentPrice);\n    \n    // Inventory level analysis\n    const inventoryScore = this.analyzeInventory(productData.inventory_level, productData.monthly_sales);\n    \n    // Margin protection analysis\n    const marginScore = this.analyzeMargin(currentPrice, productData.cost_price);\n    \n    // Calculate weighted optimization score\n    const optimizationScore = \n      (competitorScore * factors.competitor_influence) +\n      (demandScore * factors.demand_influence) +\n      (sentimentScore * factors.sentiment_influence) +\n      (inventoryScore * factors.inventory_influence) +\n      (marginScore * factors.margin_influence);\n    \n    // Convert score to price adjustment\n    const priceAdjustment = this.scoreToPrice(optimizationScore, currentPrice, productData);\n    \n    return {\n      current_price: currentPrice,\n      recommended_price: priceAdjustment.new_price,\n      price_change: priceAdjustment.change_amount,\n      price_change_percentage: priceAdjustment.change_percentage,\n      optimization_score: optimizationScore,\n      factor_scores: {\n        competitor: competitorScore,\n        demand: demandScore,\n        sentiment: sentimentScore,\n        inventory: inventoryScore,\n        margin: marginScore\n      },\n      confidence_level: this.calculateConfidence(competitorPrices, demandFactors, customerSentiment),\n      strategy_recommendation: this.recommendStrategy(optimizationScore, productData)\n    };\n  },\n  \n  // Analyze competitor pricing impact\n  analyzeCompetitorPricing(currentPrice, competitorData) {\n    if (!competitorData.price_statistics) return 0;\n    \n    const avgCompetitorPrice = competitorData.price_statistics.avg_price;\n    const minCompetitorPrice = competitorData.price_statistics.min_price;\n    const maxCompetitorPrice = competitorData.price_statistics.max_price;\n    \n    // Calculate position relative to competitors\n    const relativePosition = (currentPrice - avgCompetitorPrice) / avgCompetitorPrice;\n    \n    // Score based on competitive position\n    if (relativePosition > 0.15) return -0.8; // Too expensive, reduce price\n    if (relativePosition > 0.05) return -0.4; // Slightly expensive\n    if (relativePosition > -0.05) return 0.0; // Competitive\n    if (relativePosition > -0.15) return 0.3; // Good value\n    return 0.6; // Excellent value, can increase\n  },\n  \n  // Analyze demand factors\n  analyzeDemand(demandData, demandMultiplier) {\n    let demandScore = 0;\n    \n    // Search volume trend impact\n    if (demandData.search_volume_trend === 'rising') demandScore += 0.4;\n    else if (demandData.search_volume_trend === 'falling') demandScore -= 0.4;\n    \n    // Interest score impact\n    const interestScore = (demandData.interest_score || 50) / 100;\n    demandScore += (interestScore - 0.5) * 0.6;\n    \n    // Seasonal/time-based demand multiplier\n    demandScore += (demandMultiplier - 1.0) * 0.5;\n    \n    return Math.max(-1, Math.min(1, demandScore));\n  },\n  \n  // Analyze customer sentiment\n  analyzeSentiment(sentimentData, currentPrice) {\n    if (!sentimentData.price_elasticity_indicators) return 0;\n    \n    const priceElasticity = sentimentData.price_elasticity_indicators;\n    let sentimentScore = 0;\n    \n    // Price sensitivity analysis\n    const priceSensitivity = priceElasticity.price_sensitivity_score || 0.5;\n    sentimentScore -= (priceSensitivity - 0.5) * 0.8;\n    \n    // Willingness to pay premium\n    const premiumWillingness = priceElasticity.willingness_to_pay_premium || 0.3;\n    sentimentScore += (premiumWillingness - 0.3) * 0.6;\n    \n    // Brand premium acceptance\n    const brandPremium = priceElasticity.brand_premium_acceptance || 0.4;\n    sentimentScore += (brandPremium - 0.4) * 0.4;\n    \n    return Math.max(-1, Math.min(1, sentimentScore));\n  },\n  \n  // Analyze inventory levels\n  analyzeInventory(inventoryLevel, monthlySales) {\n    const monthsOfInventory = inventoryLevel / (monthlySales || 1);\n    \n    if (monthsOfInventory > 6) return -0.6; // Excess inventory, reduce price\n    if (monthsOfInventory > 3) return -0.3; // High inventory\n    if (monthsOfInventory > 1) return 0.0;  // Normal inventory\n    if (monthsOfInventory > 0.5) return 0.4; // Low inventory, increase price\n    return 0.8; // Very low inventory\n  },\n  \n  // Analyze margin protection\n  analyzeMargin(currentPrice, costPrice) {\n    const currentMargin = (currentPrice - costPrice) / currentPrice;\n    \n    if (currentMargin < 0.2) return 0.8;  // Low margin, increase price\n    if (currentMargin < 0.3) return 0.4;  // Acceptable margin\n    if (currentMargin < 0.5) return 0.0;  // Good margin\n    if (currentMargin < 0.6) return -0.2; // High margin, can reduce\n    return -0.4; // Very high margin\n  },\n  \n  // Convert optimization score to price adjustment\n  scoreToPrice(score, currentPrice, productData) {\n    // Base price adjustment percentage\n    const baseAdjustment = score * 0.15; // Max 15% adjustment\n    \n    // Apply constraints\n    const maxChange = taskData.config.optimization.max_price_change;\n    const constrainedAdjustment = Math.max(-maxChange, Math.min(maxChange, baseAdjustment));\n    \n    // Calculate new price\n    const newPrice = currentPrice * (1 + constrainedAdjustment);\n    \n    // Apply product-specific constraints\n    const finalPrice = Math.max(\n      productData.min_price || 0,\n      Math.min(productData.max_price || 9999, newPrice)\n    );\n    \n    // Check minimum change threshold\n    const changeAmount = finalPrice - currentPrice;\n    const changePercentage = changeAmount / currentPrice;\n    \n    if (Math.abs(changePercentage) < taskData.config.optimization.min_change_threshold) {\n      return {\n        new_price: currentPrice, // No change\n        change_amount: 0,\n        change_percentage: 0\n      };\n    }\n    \n    return {\n      new_price: Math.round(finalPrice * 100) / 100, // Round to 2 decimals\n      change_amount: Math.round(changeAmount * 100) / 100,\n      change_percentage: Math.round(changePercentage * 10000) / 100 // Percentage with 2 decimals\n    };\n  },\n  \n  // Calculate confidence level\n  calculateConfidence(competitorData, demandData, sentimentData) {\n    let confidence = 0.5; // Base confidence\n    \n    // More data = higher confidence\n    if (competitorData.products_found?.length > 5) confidence += 0.2;\n    if (demandData.interest_score > 70) confidence += 0.15;\n    if (sentimentData.total_reviews_analyzed > 100) confidence += 0.15;\n    \n    return Math.min(1.0, confidence);\n  },\n  \n  // Recommend pricing strategy\n  recommendStrategy(optimizationScore, productData) {\n    const inventory = productData.inventory_level;\n    const strategies = taskData.config.strategies;\n    \n    if (optimizationScore < -0.3 && inventory > strategies.aggressive.inventory_threshold) {\n      return 'aggressive';\n    } else if (optimizationScore > 0.3 && inventory < strategies.premium.inventory_threshold) {\n      return 'premium';\n    } else {\n      return 'competitive';\n    }\n  }\n};\n\n// Execute pricing optimization\nconst productData = {\n  inventory_level: taskData.inventory_level,\n  monthly_sales: taskData.monthly_sales,\n  cost_price: taskData.cost_price,\n  min_price: taskData.config.products.find(p => p.id === taskData.product_id)?.min_price,\n  max_price: taskData.config.products.find(p => p.id === taskData.product_id)?.max_price\n};\n\nconst pricingRecommendation = pricingOptimizer.calculateOptimalPrice(\n  taskData.current_price,\n  competitorData,\n  demandData,\n  sentimentData,\n  productData\n);\n\n// Calculate revenue projections\nconst revenueProjection = {\n  current_revenue_estimate: taskData.current_price * taskData.monthly_sales,\n  projected_revenue_estimate: pricingRecommendation.recommended_price * taskData.monthly_sales * (1 + (demandData.interest_score || 50) / 500),\n  revenue_change_estimate: 0\n};\nrevenueProjection.revenue_change_estimate = revenueProjection.projected_revenue_estimate - revenueProjection.current_revenue_estimate;\n\n// Compile comprehensive pricing analysis\nconst pricingAnalysis = {\n  session_id: taskData.sessionId,\n  timestamp: new Date().toISOString(),\n  product_info: {\n    id: taskData.product_id,\n    name: taskData.product_name,\n    category: taskData.config.products.find(p => p.id === taskData.product_id)?.category,\n    current_price: taskData.current_price,\n    cost_price: taskData.cost_price\n  },\n  market_analysis: {\n    competitor: taskData.competitor,\n    search_keyword: taskData.search_keyword,\n    competitor_data: competitorData,\n    demand_data: demandData,\n    sentiment_data: sentimentData\n  },\n  pricing_recommendation: pricingRecommendation,\n  revenue_projection: revenueProjection,\n  market_context: taskData.market_context || {},\n  batch_info: {\n    batch_index: taskData.batchIndex,\n    total_batches: taskData.totalBatches\n  }\n};\n\nreturn [{ json: pricingAnalysis }];"
          },
          "typeVersion": 2
        },
        {
          "id": "863baca7-51c3-4e8e-9f26-b8ac88f722b3",
          "name": "Price Change Filter",
          "type": "n8n-nodes-base.if",
          "position": [
            1424,
            -80
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "significant-price-change",
                  "operator": {
                    "type": "number",
                    "operation": "gt"
                  },
                  "leftValue": "={{ Math.abs($json.pricing_recommendation.price_change_percentage) }}",
                  "rightValue": 2
                },
                {
                  "id": "high-confidence",
                  "operator": {
                    "type": "number",
                    "operation": "gte"
                  },
                  "leftValue": "={{ $json.pricing_recommendation.confidence_level }}",
                  "rightValue": 0.7
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "0a6015f3-9594-43f6-aadb-24b1272078a4",
          "name": "Price Update API Call",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            2080,
            -80
          ],
          "parameters": {
            "url": "={{ 'https://your-ecommerce-api.com/products/' + $json.product_info.id + '/price' }}",
            "options": {},
            "sendBody": true,
            "sendHeaders": true,
            "bodyParameters": {
              "parameters": [
                {
                  "name": "price",
                  "value": "={{ $json.pricing_recommendation.recommended_price }}"
                },
                {
                  "name": "previous_price",
                  "value": "={{ $json.product_info.current_price }}"
                },
                {
                  "name": "change_reason",
                  "value": "={{ 'Automated optimization: ' + $json.pricing_recommendation.strategy_recommendation + ' strategy' }}"
                },
                {
                  "name": "confidence_score",
                  "value": "={{ $json.pricing_recommendation.confidence_level }}"
                },
                {
                  "name": "effective_date",
                  "value": "={{ new Date().toISOString() }}"
                }
              ]
            },
            "headerParameters": {
              "parameters": [
                {
                  "name": "Authorization",
                  "value": "Bearer YOUR_TOKEN_HERE"
                },
                {
                  "name": "Content-Type",
                  "value": "application/json"
                }
              ]
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "f48d631a-3296-4815-a462-c6c83c3f282a",
          "name": "Pricing History Logger",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            2128,
            128
          ],
          "parameters": {
            "columns": {
              "value": {
                "Strategy": "={{ $json.pricing_recommendation.strategy_recommendation }}",
                "New_Price": "={{ $json.pricing_recommendation.recommended_price }}",
                "Timestamp": "={{ $json.timestamp }}",
                "Competitor": "={{ $json.market_analysis.competitor }}",
                "Confidence": "={{ $json.pricing_recommendation.confidence_level }}",
                "Product_ID": "={{ $json.product_info.id }}",
                "Session_ID": "={{ $json.session_id }}",
                "Demand_Score": "={{ $json.pricing_recommendation.factor_scores.demand }}",
                "Price_Change": "={{ $json.pricing_recommendation.price_change }}",
                "Product_Name": "={{ $json.product_info.name }}",
                "Market_Context": "={{ $json.market_context.time_of_day + ' - ' + $json.market_context.current_day }}",
                "Previous_Price": "={{ $json.product_info.current_price }}",
                "Revenue_Change": "={{ $json.revenue_projection.revenue_change_estimate }}",
                "Sentiment_Score": "={{ $json.pricing_recommendation.factor_scores.sentiment }}",
                "Change_Percentage": "={{ $json.pricing_recommendation.price_change_percentage }}",
                "Revenue_Projection": "={{ $json.revenue_projection.projected_revenue_estimate }}",
                "Competitor_Avg_Price": "={{ $json.market_analysis.competitor_data.price_statistics?.avg_price || 'N/A' }}"
              },
              "mappingMode": "defineBelow"
            },
            "options": {},
            "operation": "append",
            "sheetName": {
              "__rl": true,
              "mode": "name",
              "value": "Pricing_History"
            },
            "documentId": {
              "__rl": true,
              "mode": "url",
              "value": "1your-pricing-dashboard-sheet-id"
            }
          },
          "typeVersion": 4.5
        },
        {
          "id": "c033cad3-3efe-4504-9c48-56ffb6efdc0a",
          "name": "Revenue Analytics Logger",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            2112,
            272
          ],
          "parameters": {
            "columns": {
              "value": {
                "Date": "={{ new Date().toISOString().split('T')[0] }}",
                "Hour": "={{ new Date().getHours() }}",
                "Product_ID": "={{ $json.product_info.id }}",
                "Session_ID": "={{ $json.session_id }}",
                "Revenue_Impact": "={{ $json.revenue_projection.revenue_change_estimate }}",
                "Inventory_Level": "={{ $json.product_info.inventory_level || 0 }}",
                "Strategy_Applied": "={{ $json.pricing_recommendation.strategy_recommendation }}",
                "Demand_Multiplier": "={{ $json.market_context.demand_multiplier || 1 }}",
                "Price_Sensitivity": "={{ $json.market_analysis.sentiment_data.price_elasticity_indicators?.price_sensitivity_score || 0.5 }}",
                "Optimization_Score": "={{ $json.pricing_recommendation.optimization_score }}",
                "Competitor_Price_Avg": "={{ $json.market_analysis.competitor_data.price_statistics?.avg_price || 0 }}",
                "Current_Revenue_Rate": "={{ $json.revenue_projection.current_revenue_estimate }}",
                "Projected_Revenue_Rate": "={{ $json.revenue_projection.projected_revenue_estimate }}"
              },
              "mappingMode": "defineBelow"
            },
            "options": {},
            "operation": "append",
            "sheetName": {
              "__rl": true,
              "mode": "name",
              "value": "Revenue_Analytics"
            },
            "documentId": {
              "__rl": true,
              "mode": "url",
              "value": "1your-revenue-analytics-sheet-id"
            }
          },
          "typeVersion": 4.5
        },
        {
          "id": "ba6667ca-f603-4a50-a7cd-5242dd8a35f5",
          "name": "Pricing Alert Sender",
          "type": "n8n-nodes-base.slack",
          "position": [
            2144,
            480
          ],
          "parameters": {
            "text": "=💰 **Price Optimization Alert**\n\n📦 **Product**: {{ $json.product_info.name }} ({{ $json.product_info.id }})\n💵 **Price Change**: ${{ $json.product_info.current_price }} → ${{ $json.pricing_recommendation.recommended_price }}\n📈 **Change**: {{ $json.pricing_recommendation.price_change_percentage > 0 ? '+' : '' }}{{ $json.pricing_recommendation.price_change_percentage }}%\n\n🎯 **Strategy**: {{ $json.pricing_recommendation.strategy_recommendation.toUpperCase() }}\n📊 **Confidence**: {{ Math.round($json.pricing_recommendation.confidence_level * 100) }}%\n\n**Market Analysis**:\n• 🏪 Competitor Avg: ${{ $json.market_analysis.competitor_data.price_statistics?.avg_price || 'N/A' }}\n• 📈 Demand Score: {{ Math.round($json.pricing_recommendation.factor_scores.demand * 100) }}/100\n• 💭 Sentiment Score: {{ Math.round($json.pricing_recommendation.factor_scores.sentiment * 100) }}/100\n\n💡 **Revenue Impact**: {{ $json.revenue_projection.revenue_change_estimate > 0 ? '+' : '' }}${{ Math.round($json.revenue_projection.revenue_change_estimate) }}/month",
            "channel": "pricing-alerts",
            "attachments": [],
            "otherOptions": {
              "icon_emoji": ":money_with_wings:"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "092569d1-062b-4065-8fd8-5d4620889402",
          "name": "Pricing Report Sender",
          "type": "n8n-nodes-base.emailSend",
          "position": [
            2320,
            48
          ],
          "webhookId": "db7ac9a0-5d67-48b8-bc71-4349335ee9f1",
          "parameters": {
            "options": {
              "allowUnauthorizedCerts": false
            },
            "subject": "=🎯 Dynamic Pricing Update - {{ $json.product_info.name }}"
          },
          "typeVersion": 2.1
        },
        {
          "id": "4b29177c-0f1a-4e04-8f42-e98a24771777",
          "name": "Workflow Overview",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -3136,
            416
          ],
          "parameters": {
            "color": 2,
            "width": 580,
            "height": 656,
            "content": "# 💰 AI-Powered Dynamic Pricing Optimizer\n\n**Created: July 25, 2025**\n\nThis comprehensive workflow automatically monitors competitor prices, analyzes market demand, and optimizes product pricing in real-time for maximum profitability.\n\n## 🚀 Key Features\n- **Hourly Price Monitoring**: Real-time competitor price tracking\n- **Multi-Platform Analysis**: Amazon, Best Buy, Walmart, Target\n- **AI-Powered Optimization**: Advanced pricing algorithms\n- **Demand Analysis**: Google Trends and search volume insights\n- **Customer Sentiment**: Review analysis for price sensitivity\n- **Revenue Projections**: Profit impact calculations\n- **Automated Updates**: Direct e-commerce platform integration\n\n## 📊 Benefits\n- **15-25% Revenue Increase** through optimal pricing\n- **Real-Time Market Response** to competitor changes\n- **Margin Protection** with intelligent constraints\n- **24/7 Automation** without manual intervention\n- **Data-Driven Decisions** with comprehensive analytics"
          },
          "typeVersion": 1
        },
        {
          "id": "c6823f8e-b8c0-4664-a8f1-a41f85875bb1",
          "name": "Step 1: Hourly Trigger Guide",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -3120,
            -832
          ],
          "parameters": {
            "color": 4,
            "width": 584,
            "height": 882,
            "content": "# ⏱️ Step 1: Hourly Pricing Monitor Trigger\n\n**This Node**: Automatically triggers every hour for real-time pricing optimization\n\n## Why Hourly Monitoring?\n- **Competitive Advantage**: Respond to competitor price changes immediately\n- **Market Dynamics**: Capture demand fluctuations throughout the day\n- **Revenue Optimization**: Maximize profits during peak demand periods\n- **Inventory Management**: Adjust prices based on stock levels\n\n## Configuration Options\n- **Frequency**: Adjustable from every 15 minutes to daily\n- **Business Hours Only**: Optional limitation to business hours\n- **Weekend Scheduling**: Configure weekend vs. weekday strategies\n- **Holiday Handling**: Special pricing during sales events\n\n## Performance Considerations\n- **API Rate Limits**: Manages scraping frequency to avoid blocks\n- **Cost Optimization**: Balances monitoring frequency with API costs\n- **Error Handling**: Continues operation despite individual failures\n- **Scalability**: Supports hundreds of products simultaneously"
          },
          "typeVersion": 1
        },
        {
          "id": "0e01fd2d-66b2-40f3-9a4b-71ef34e5964e",
          "name": "Step 2: Configuration Processor",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -2400,
            -848
          ],
          "parameters": {
            "width": 524,
            "height": 1016,
            "content": "# 🔧 Step 2: Pricing Configuration Processor\n\n**This Node**: Processes product catalog, competitor settings, and market context for pricing optimization\n\n## Product Catalog Management\n- **Product Profiles**: Complete pricing parameters per product\n- **Cost Integration**: Real-time cost price updates\n- **Margin Controls**: Min/max margin protection\n- **Inventory Sync**: Stock level-based pricing strategies\n\n## Competitor Monitoring Setup\n- **Multi-Platform**: Amazon, Best Buy, Walmart, Target\n- **Weighted Influence**: Different competitor impact levels\n- **Product Matching**: AI-powered similar product identification\n- **Price Point Tracking**: Multiple price variants per product\n\n## Market Context Analysis\n- **Seasonality Factors**: Q1-Q4 demand multipliers\n- **Day-of-Week Patterns**: Weekend vs. weekday pricing\n- **Time-of-Day Optimization**: Peak shopping hour adjustments\n- **Demand Correlation**: Multiple factor impact modeling\n\n## Strategy Configuration\n- **Aggressive**: Beat competitors by 5-10% (high inventory)\n- **Competitive**: Match market average (normal inventory)\n- **Premium**: 10-20% above market (low inventory)\n- **Dynamic Switching**: Auto-strategy selection based on conditions"
          },
          "typeVersion": 1
        },
        {
          "id": "795704cb-5998-44d5-a28b-dba4d61ecfa3",
          "name": "Step 3: Task Splitting",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1808,
            -848
          ],
          "parameters": {
            "color": 6,
            "width": 520,
            "height": 972,
            "content": "# 🔄 Step 3: Split Monitoring Tasks\n\n**This Node**: Breaks down the monitoring process into individual product-competitor combinations for parallel processing\n\n## Task Distribution\n- **Batch Processing**: Handles multiple products simultaneously\n- **Load Balancing**: Distributes scraping tasks evenly\n- **Parallel Execution**: Enables concurrent data collection\n- **Error Isolation**: Prevents single failures from stopping entire process\n\n## Efficiency Benefits\n- **Faster Processing**: Multiple scrapers run simultaneously\n- **Resource Optimization**: Better utilization of API limits\n- **Scalability**: Easy to add more products or competitors\n- **Reliability**: Independent processing reduces failure points\n\n## Task Structure\n- **Product Information**: ID, name, current price, costs\n- **Competitor Mapping**: Platform URLs and search terms\n- **Market Context**: Time-based demand factors\n- **Batch Tracking**: Progress monitoring and session management"
          },
          "typeVersion": 1
        },
        {
          "id": "a5ac5442-b660-4b05-bfd3-6e1e09599ec6",
          "name": "Step 4: Task Processing",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1232,
            -848
          ],
          "parameters": {
            "width": 520,
            "height": 908,
            "content": "# 🎛️ Step 4: Task Processor\n\n**This Node**: Prepares individual monitoring tasks with enhanced context data for the AI scrapers\n\n## Task Enhancement\n- **URL Generation**: Creates specific search URLs for each competitor platform\n- **Context Addition**: Adds market timing and demand factors\n- **Data Structuring**: Formats data for optimal AI scraper performance\n- **Session Tracking**: Maintains batch progress and correlation\n\n## Data Preparation\n- **Product Context**: Current pricing and inventory data\n- **Market Timing**: Hour, day, season, and demand multipliers\n- **Competitor Focus**: Platform-specific search parameters\n- **Quality Controls**: Data validation and error handling\n\n## Output Optimization\n- **Structured Queries**: Consistent format for AI scrapers\n- **Batch Correlation**: Links tasks to overall session\n- **Performance Tracking**: Monitors processing efficiency\n- **Error Handling**: Graceful failure management"
          },
          "typeVersion": 1
        },
        {
          "id": "00f15e33-1fdd-42b0-9ee2-3fab33578d0a",
          "name": "Steps 5-7: AI Scraping Network",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -672,
            -880
          ],
          "parameters": {
            "color": 3,
            "width": 560,
            "height": 1528,
            "content": "# 🤖 Steps 5-7: Multi-Source AI Scraping Network\n\n**These Nodes**: Three specialized AI scrapers running in parallel for comprehensive market analysis\n\n## 💵 Competitor Price Scraper (Step 5)\n- **Platforms**: Amazon, Best Buy, Walmart, Target\n- **Data Points**: Prices, discounts, ratings, availability\n- **Intelligence**: Product matching, price statistics, market trends\n- **Output**: Min/max/avg prices, promotion frequency, brand analysis\n\n## 📈 Demand Analysis Scraper (Step 6)\n- **Source**: Google Trends and search volume data\n- **Metrics**: Search trends, related queries, geographic interest\n- **Intelligence**: Seasonal patterns, demand indicators, growth opportunities\n- **Output**: Interest scores, trend velocity, market saturation analysis\n\n## 💭 Customer Sentiment Scraper (Step 7)\n- **Source**: Product reviews and customer feedback\n- **Analysis**: Price sensitivity, value perception, satisfaction\n- **Intelligence**: Purchase drivers, price complaints, elasticity indicators\n- **Output**: Sentiment scores, willingness to pay premium, brand loyalty\n\n## 🧠 AI Processing Benefits\n- **Real-Time Analysis**: Fresh market data every hour\n- **Structured Output**: Consistent JSON schemas for analysis\n- **Quality Filtering**: Relevance scoring and data validation\n- **Market Intelligence**: Context-aware pricing insights"
          },
          "typeVersion": 1
        },
        {
          "id": "9ce3e860-67ae-4aab-b9cd-c6269bd454a2",
          "name": "Step 8: Data Merging",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -32,
            -880
          ],
          "parameters": {
            "color": 5,
            "width": 520,
            "height": 972,
            "content": "# 🔗 Step 8: Merge Pricing Data\n\n**This Node**: Combines data from all three AI scrapers into a unified dataset for analysis\n\n## Data Integration\n- **Multi-Source Combination**: Merges competitor, demand, and sentiment data\n- **Data Correlation**: Links related information across different sources\n- **Quality Validation**: Ensures data consistency and completeness\n- **Structure Standardization**: Creates uniform data format for analysis\n\n## Merge Strategy\n- **Position-Based Combination**: Aligns data from parallel scraper executions\n- **Error Handling**: Manages missing or incomplete data gracefully\n- **Data Enrichment**: Adds metadata and processing timestamps\n- **Performance Optimization**: Efficient data structure for analysis engine\n\n## Output Preparation\n- **Unified Dataset**: Single comprehensive data object\n- **Analysis Ready**: Structured for optimization algorithm\n- **Context Preservation**: Maintains market timing and product information\n- **Quality Metrics**: Includes data confidence and completeness scores"
          },
          "typeVersion": 1
        },
        {
          "id": "4e7939e9-7ce9-494a-b3eb-3196401be13f",
          "name": "Step 9: Optimization Engine",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            576,
            -896
          ],
          "parameters": {
            "color": 5,
            "width": 560,
            "height": 1130,
            "content": "# 🧠 Step 9: Pricing Optimization Engine\n\n**This Node**: Advanced AI algorithm that calculates optimal pricing based on all market factors\n\n## Optimization Factors (Weighted)\n- **Competitor Analysis (35%)**: Position relative to market average\n- **Demand Indicators (25%)**: Search trends and seasonal patterns\n- **Customer Sentiment (20%)**: Price sensitivity and satisfaction\n- **Inventory Levels (10%)**: Stock-based pricing adjustments\n- **Margin Protection (10%)**: Profitability safeguards\n\n## Advanced Algorithms\n- **Competitive Positioning**: Smart pricing relative to market leaders\n- **Demand Elasticity**: Price sensitivity impact modeling\n- **Inventory Optimization**: Stock velocity pricing adjustments\n- **Revenue Maximization**: Profit vs. volume optimization\n- **Risk Assessment**: Confidence scoring for price changes\n\n## Price Change Controls\n- **Maximum Change**: 15% per hour to prevent market shock\n- **Minimum Threshold**: Only change prices >2% difference\n- **Margin Protection**: Never go below minimum margin requirements\n- **Price Constraints**: Respect min/max price boundaries\n\n## Strategy Selection Logic\n- **Aggressive**: High inventory + competitive pressure\n- **Premium**: Low inventory + strong demand\n- **Competitive**: Normal conditions + market alignment"
          },
          "typeVersion": 1
        },
        {
          "id": "072f6675-ad8c-4817-8cce-809410a2dc5b",
          "name": "Step 10: Price Change Filter",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1232,
            -896
          ],
          "parameters": {
            "color": 6,
            "width": 520,
            "height": 1010,
            "content": "# 🎯 Step 10: Price Change Filter\n\n**This Node**: Intelligent filtering system that determines which price changes should be implemented\n\n## Filtering Criteria\n- **Significance Threshold**: Only process changes >2% to avoid noise\n- **Confidence Gating**: Require >70% confidence for implementation\n- **Market Validation**: Cross-reference multiple data sources\n- **Risk Assessment**: Evaluate potential negative impacts\n\n## Quality Gates\n- **Data Quality Check**: Ensure all required data is present\n- **Margin Verification**: Confirm profitability is maintained\n- **Competitive Position**: Validate market positioning makes sense\n- **Revenue Impact**: Estimate financial consequences\n\n## Decision Logic\n- **AND Condition**: Both significance AND confidence must be met\n- **Safety Override**: Manual controls can bypass filters\n- **Test Mode**: Option to simulate without actual changes\n- **Approval Workflow**: Optional human review for large changes\n\n## Output Routing\n- **Approved Changes**: Route to price update API and notifications\n- **Rejected Changes**: Log for analysis but don't implement\n- **All Changes**: Log to analytics regardless of approval status"
          },
          "typeVersion": 1
        },
        {
          "id": "762ffd8e-29a7-4758-a952-806937912878",
          "name": "Steps 11-15: Analytics & Communication",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1872,
            -928
          ],
          "parameters": {
            "color": 7,
            "width": 864,
            "height": 1588,
            "content": "# 📊 Steps 11-15: Analytics & Communication\n\n**These Nodes**: Comprehensive tracking, reporting, and team communication system\n\n## Step 11: Price Update API Call\n- **E-commerce Integration**: Direct price updates to your platform\n- **API Authentication**: Secure connection to pricing system\n- **Batch Processing**: Efficient bulk price updates\n- **Error Handling**: Retry logic and failure management\n\n## Steps 12-13: Google Sheets Logging\n- **Pricing History**: Every change logged with full context\n- **Revenue Analytics**: Performance tracking and projections\n- **Trend Analysis**: Historical patterns and insights\n- **Dashboard Integration**: Real-time reporting capabilities\n\n## Step 14: Slack Notifications\n- **Instant Alerts**: Immediate notifications for price changes\n- **Smart Formatting**: Rich context with market analysis\n- **Team Coordination**: Channel-based communication\n- **Performance Metrics**: Summary statistics and trends\n\n## Step 15: Email Reports\n- **Executive Summaries**: HTML-formatted comprehensive reports\n- **Market Intelligence**: Competitor analysis and insights\n- **Revenue Impact**: Financial performance and projections\n- **Strategic Recommendations**: Next steps and opportunities\n\n## Success Tracking\n- **Real-Time Monitoring**: Continuous performance measurement\n- **ROI Analysis**: Revenue impact and optimization effectiveness\n- **Market Position**: Competitive advantage tracking"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "c1049f9a-f6ff-4423-aae3-8f7b17f5e238",
      "connections": {
        "Task Processor": {
          "main": [
            [
              {
                "node": "AI Competitor Price Scraper",
                "type": "main",
                "index": 0
              },
              {
                "node": "AI Demand Analysis Scraper",
                "type": "main",
                "index": 0
              },
              {
                "node": "AI Customer Sentiment Scraper",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Merge Pricing Data": {
          "main": [
            [
              {
                "node": "Pricing Optimization Engine",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Price Change Filter": {
          "main": [
            [
              {
                "node": "Price Update API Call",
                "type": "main",
                "index": 0
              },
              {
                "node": "Pricing Alert Sender",
                "type": "main",
                "index": 0
              },
              {
                "node": "Pricing Report Sender",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Split Monitoring Tasks": {
          "main": [
            [
              {
                "node": "Task Processor",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "AI Demand Analysis Scraper": {
          "main": [
            [
              {
                "node": "Merge Pricing Data",
                "type": "main",
                "index": 1
              }
            ]
          ]
        },
        "AI Competitor Price Scraper": {
          "main": [
            [
              {
                "node": "Merge Pricing Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Pricing Optimization Engine": {
          "main": [
            [
              {
                "node": "Price Change Filter",
                "type": "main",
                "index": 0
              },
              {
                "node": "Pricing History Logger",
                "type": "main",
                "index": 0
              },
              {
                "node": "Revenue Analytics Logger",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "AI Customer Sentiment Scraper": {
          "main": [
            [
              {
                "node": "Merge Pricing Data",
                "type": "main",
                "index": 1
              }
            ]
          ]
        },
        "Hourly Pricing Monitor Trigger": {
          "main": [
            [
              {
                "node": "Pricing Configuration Processor",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Pricing Configuration Processor": {
          "main": [
            [
              {
                "node": "Split Monitoring Tasks",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 62,
    "workflowInfo": {
      "nodeCount": 25,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 1
        },
        "n8n-nodes-base.code": {
          "count": 3
        },
        "n8n-nodes-base.merge": {
          "count": 1
        },
        "n8n-nodes-base.slack": {
          "count": 1
        },
        "n8n-nodes-base.emailSend": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 10
        },
        "n8n-nodes-base.httpRequest": {
          "count": 1
        },
        "n8n-nodes-base.googleSheets": {
          "count": 2
        },
        "n8n-nodes-base.splitInBatches": {
          "count": 1
        },
        "n8n-nodes-base.scheduleTrigger": {
          "count": 1
        },
        "n8n-nodes-scrapegraphai.scrapegraphAi": {
          "count": 3
        }
      }
    },
    "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": 18,
        "icon": "file:googleSheets.svg",
        "name": "n8n-nodes-base.googleSheets",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Sheet",
              "Spreadsheet",
              "GS"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/",
                  "icon": "❤️",
                  "label": "Love at first sight: Ricardo’s n8n journey"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/",
                  "icon": "⏲",
                  "label": "Creating triggers for n8n workflows using polling"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/",
                  "icon": "📈",
                  "label": "Migrating Community Metrics to Orbit using n8n"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/",
                  "icon": "🍔",
                  "label": "How Honest Burgers Use Automation to Save $100k per year"
                },
                {
                  "url": "https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\",\"output\"]",
        "defaults": {
          "name": "Google Sheets"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="
        },
        "displayName": "Google Sheets",
        "typeVersion": 5,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          },
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "id": 19,
        "icon": "file:httprequest.svg",
        "name": "n8n-nodes-base.httpRequest",
        "codex": {
          "data": {
            "alias": [
              "API",
              "Request",
              "URL",
              "Build",
              "cURL"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/",
                  "icon": "📈",
                  "label": "Automatically pulling and visualizing data with n8n"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/",
                  "icon": "✍️",
                  "label": "Learn how to automatically cross-post your content with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/",
                  "icon": "🛳",
                  "label": "Running n8n on ships: An interview with Maranics"
                },
                {
                  "url": "https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/",
                  "icon": " 🪢",
                  "label": "What are APIs and how to use them with no code"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/world-poetry-day-workflow/",
                  "icon": "📜",
                  "label": "Celebrating World Poetry Day with a daily poem in Telegram"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/",
                  "icon": "🎨",
                  "label": "Automate Designs with Bannerbear and n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/",
                  "icon": "📱",
                  "label": "Building an expense tracking app in 10 minutes"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/",
                  "icon": "🧰",
                  "label": "How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/",
                  "icon": "🦄",
                  "label": "Learn how to use webhooks with Mattermost slash commands"
                },
                {
                  "url": "https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "url": "https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/",
                  "icon": "📈",
                  "label": "A low-code bitcoin ticker built with QuestDB and n8n.io"
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/automations-for-activists/",
                  "icon": "✨",
                  "label": "How Common Knowledge use workflow automation for activism"
                },
                {
                  "url": "https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/",
                  "icon": "🤟",
                  "label": "Creating scheduled text affirmations with n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "HTTP Request",
          "color": "#0004F5"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="
        },
        "displayName": "HTTP Request",
        "typeVersion": 4,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 20,
        "icon": "fa:map-signs",
        "name": "n8n-nodes-base.if",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "Filter",
              "Condition",
              "Logic",
              "Boolean",
              "Branch"
            ],
            "details": "The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.",
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/",
                  "icon": "🏭",
                  "label": "Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/",
                  "icon": "🤬",
                  "label": "Create a toxic language detector for Telegram in 4 step"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/",
                  "icon": "🏷️",
                  "label": "How to automatically manage contributions to open-source projects"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "If",
          "color": "#408000"
        },
        "iconData": {
          "icon": "map-signs",
          "type": "icon"
        },
        "displayName": "If",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 24,
        "icon": "file:merge.svg",
        "name": "n8n-nodes-base.merge",
        "codex": {
          "data": {
            "alias": [
              "Join",
              "Concatenate",
              "Wait"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/how-to-sync-data-between-two-systems/",
                  "icon": "🏬",
                  "label": "How to synchronize data between two systems (one-way vs. two-way sync"
                },
                {
                  "url": "https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/",
                  "icon": "📈",
                  "label": "Migrating Community Metrics to Orbit using n8n"
                },
                {
                  "url": "https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/",
                  "icon": "👦",
                  "label": "Build your own virtual assistant with n8n: A step by step guide"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.merge/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Merge"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="
        },
        "displayName": "Merge",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 39,
        "icon": "fa:sync",
        "name": "n8n-nodes-base.splitInBatches",
        "codex": {
          "data": {
            "alias": [
              "Loop",
              "Concatenate",
              "Batch",
              "Split",
              "Split In Batches"
            ],
            "resources": {
              "generic": [
                {
                  "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/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"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"organization\"]",
        "defaults": {
          "name": "Loop Over Items",
          "color": "#007755"
        },
        "iconData": {
          "icon": "sync",
          "type": "icon"
        },
        "displayName": "Loop Over Items (Split in Batches)",
        "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": 32,
        "name": "Market Research"
      },
      {
        "id": 49,
        "name": "AI Summarization"
      }
    ],
    "image": []
  }
}