{
  "workflow": {
    "id": 6963,
    "name": "Automated construction project alerts with email notifications and data APIs",
    "views": 380,
    "recentViews": 0,
    "totalViews": 380,
    "createdAt": "2025-08-04T13:46:31.844Z",
    "description": "This n8n workflow monitors and alerts you about new construction projects in specified areas, helping you track competing builders and identify business opportunities. The system automatically searches multiple data sources and sends detailed email reports with upcoming projects.\n\n## **Good to know**\n* Email parsing accuracy depends on the consistency of request formats - use the provided template for best results.\n* The workflow includes fallback mock data for demonstration when external APIs are unavailable.\n* Government data sources may have rate limits - the workflow includes proper error handling.\n* Results are filtered to show only upcoming/recent projects (within 3 months).\n\n## **How it works**\n* **Email Trigger** - Detects new email requests with \"Construction Alert Request\" in the subject line\n* **Check Email Subject** - Validates that the email contains the correct trigger phrase\n* **Extract Location Info** - Parses the email body to extract area, city, state, and zip code information\n* **Search Government Data** - Queries government databases for public construction projects and permits\n* **Search Construction Sites** - Searches construction industry databases for private projects\n* **Process Construction Data** - Combines and filters results from both sources, removing duplicates\n* **Wait For Data** - Wait for Combines and filters results.\n* **Check If Projects Found** - Determines whether to send a results report or no-results notification\n* **Generate Email Report** - Creates a professional HTML email with project details and summaries\n* **Send Alert Email** - Delivers the construction project report to the requester\n* **Send No Results Email** - Notifies when no projects are found in the specified area\n\nThe workflow also includes a **Schedule Trigger** that can run automatically on weekdays at 9 AM for regular monitoring.\n\n## **Email Format Examples**\n\n### **Input Email Format**\n```\nTo: alerts@yourcompany.com\nSubject: Construction Alert Request\n\nArea: Downtown Chicago\nCity: Chicago  \nState: IL\nZip: 60601\n\nAdditional notes: Looking for commercial projects over $1M\n```\n\n**Alternative format:**\n```\nTo: alerts@yourcompany.com\nSubject: Construction Alert Request\n\nPlease search for construction projects in Miami, FL 33101\nFocus on residential and mixed-use developments.\n```\n\n### **Output Email Example**\n```html\nSubject: 🏗️ Construction Alert: 8 Projects Found in Downtown Chicago\n\n🏗️ Construction Project Alert Report\n\nSearch Area: Downtown Chicago\nReport Generated: August 4, 2024, 2:30 PM\n\n📊 Summary\nTotal Projects Found: 8\nSearch Query: Downtown Chicago IL construction permits\n\n🔍 Upcoming Construction Projects\n\n1. New Commercial Complex - Downtown Chicago\n   📍 Location: Downtown Chicago | 📅 Start Date: March 2024 | 🏢 Type: Mixed Development\n   Description: Mixed-use commercial and residential development\n   Source: Local Planning Department\n\n2. Office Building Construction - Chicago\n   📍 Location: Chicago, IL | 📅 Start Date: April 2024 | 🏢 Type: Commercial  \n   Description: 5-story office building with retail space\n   Source: Building Permits\n\n[Additional projects...]\n\n💡 Next Steps\n• Review each project for potential competition\n• Contact project owners for partnership opportunities  \n• Monitor progress and timeline changes\n• Update your competitive analysis\n```\n\n## **How to use**\n\n### **Setup Instructions**\n1. **Import the workflow** into your n8n instance\n2. **Configure Email Credentials:**\n   - Set up IMAP credentials for receiving emails\n   - Set up SMTP credentials for sending alerts\n3. **Test the workflow** with a sample email\n4. **Set up scheduling** (optional) for automated daily checks\n\n### **Sending Alert Requests**\n1. Send an email to your configured address\n2. Use \"Construction Alert Request\" in the subject line\n3. Include location details in the email body\n4. Receive detailed project reports within minutes\n\n## **Requirements**\n* **n8n instance** (cloud or self-hosted)\n* **Email account** with IMAP/SMTP access\n* **Internet connection** for API calls to construction databases\n* **Valid email addresses** for sending and receiving alerts\n\n## **API Integration Code Examples**\n\n### **Government Data API Integration**\n```javascript\n// Example API call to USA.gov jobs API\nconst searchGovernmentProjects = async (location) =&gt; {\n  const response = await fetch('https://api.usa.gov/jobs/search.json', {\n    method: 'GET',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n    params: {\n      keyword: 'construction permit',\n      location_name: location,\n      size: 20\n    }\n  });\n  \n  return await response.json();\n};\n```\n\n### **Construction Industry API Integration**\n```javascript\n// Example API call to construction databases\nconst searchConstructionProjects = async (area) =&gt; {\n  const response = await fetch('https://www.construction.com/api/search', {\n    method: 'GET',\n    headers: {\n      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',\n      'Accept': 'application/json'\n    },\n    params: {\n      q: `${area} construction projects`,\n      type: 'projects',\n      limit: 15\n    }\n  });\n  \n  return await response.json();\n};\n```\n\n### **Email Processing Function**\n```javascript\n// Extract location from email content\nconst extractLocationInfo = (emailBody) =&gt; {\n  const lines = emailBody.split('\\n');\n  let area = '', city = '', state = '', zipcode = '';\n  \n  for (const line of lines) {\n    if (line.toLowerCase().includes('area:')) {\n      area = line.split(':')[1]?.trim();\n    }\n    if (line.toLowerCase().includes('city:')) {\n      city = line.split(':')[1]?.trim();\n    }\n    if (line.toLowerCase().includes('state:')) {\n      state = line.split(':')[1]?.trim();\n    }\n    if (line.toLowerCase().includes('zip:')) {\n      zipcode = line.split(':')[1]?.trim();\n    }\n  }\n  \n  return { area, city, state, zipcode };\n};\n```\n\n## **Customizing this workflow**\n\n### **Adding New Data Sources**\n1. **Add HTTP Request nodes** for additional APIs\n2. **Update the Process Construction Data node** to handle new data formats\n3. **Modify the search parameters** based on API requirements\n\n### **Enhanced Email Parsing**\n```javascript\n// Custom email parsing for different formats\nconst parseEmailContent = (emailBody) =&gt; {\n  // Add regex patterns for different email formats\n  const patterns = {\n    address: /(\\d+\\s+[\\w\\s]+,\\s*[\\w\\s]+,\\s*[A-Z]{2}\\s*\\d{5})/,\n    coordinates: /(\\d+\\.\\d+),\\s*(-?\\d+\\.\\d+)/,\n    zipcode: /\\b\\d{5}(-\\d{4})?\\b/\n  };\n  \n  // Extract using multiple patterns\n  // Implementation details...\n};\n```\n\n### **Custom Alert Conditions**\n1. **Modify the Check If Projects Found node** to filter by:\n   - Project value/budget\n   - Project type (residential, commercial, etc.)\n   - Distance from your location\n   - Timeline criteria\n\n### **Advanced Scheduling**\n```javascript\n// Set up multiple schedule triggers for different areas\nconst scheduleConfigs = [\n  { area: \"Downtown\", cron: \"0 9 * * 1-5\" },    // Weekdays 9 AM\n  { area: \"Suburbs\", cron: \"0 14 * * 1,3,5\" },  // Mon, Wed, Fri 2 PM\n  { area: \"Industrial\", cron: \"0 8 * * 1\" }     // Monday 8 AM\n];\n```\n\n### **Integration with CRM Systems**\nAdd HTTP Request nodes to automatically create leads in your CRM when high-value projects are found:\n\n```javascript\n// Example CRM integration\nconst createCRMLead = async (project) =&gt; {\n  await fetch('https://your-crm.com/api/leads', {\n    method: 'POST',\n    headers: {\n      'Authorization': 'Bearer YOUR_TOKEN',\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({\n      name: project.title,\n      location: project.location,\n      value: project.estimatedValue,\n      source: 'Construction Alert System'\n    })\n  });\n};\n```\n\n## **Troubleshooting**\n* **No emails received**: Check IMAP credentials and email filters\n* **Empty results**: Verify API endpoints and add fallback data sources  \n* **Failed email delivery**: Confirm SMTP settings and recipient addresses\n* **API rate limits**: Implement delays between requests and error handling",
    "workflow": {
      "id": "tAZrn9nO8QUWfGQx",
      "meta": {
        "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
        "templateCredsSetupCompleted": true
      },
      "name": "Real-Time Competitive Construction Monitoring",
      "tags": [],
      "nodes": [
        {
          "id": "878dbf6e-dc80-457d-b212-03e98c69042f",
          "name": "Schedule Trigger",
          "type": "n8n-nodes-base.scheduleTrigger",
          "position": [
            0,
            0
          ],
          "parameters": {
            "rule": {
              "interval": [
                {}
              ]
            }
          },
          "typeVersion": 1.1
        },
        {
          "id": "bba4ec2c-854e-4c51-ba14-f19ab0af919c",
          "name": "Email Trigger",
          "type": "n8n-nodes-base.emailReadImap",
          "position": [
            0,
            180
          ],
          "parameters": {
            "options": {}
          },
          "credentials": {
            "imap": {
              "id": "credential-id",
              "name": "imap Credential"
            }
          },
          "typeVersion": 2
        },
        {
          "id": "46fdbb5a-478a-488d-ba1f-c752f1d708b9",
          "name": "Check Email Subject",
          "type": "n8n-nodes-base.if",
          "position": [
            220,
            180
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 1,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "condition1",
                  "operator": {
                    "type": "string",
                    "operation": "contains"
                  },
                  "leftValue": "={{ $json.subject }}",
                  "rightValue": "Construction Alert Request"
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "af98d975-c83d-4cf6-b060-a33f8c5d3211",
          "name": "Extract Location Info",
          "type": "n8n-nodes-base.code",
          "position": [
            440,
            80
          ],
          "parameters": {
            "jsCode": "// Extract area/location from email body\nconst emailBody = $input.first().json.text || $input.first().json.html;\nconst lines = emailBody.split('\\n');\n\nlet area = '';\nlet city = '';\nlet state = '';\nlet zipcode = '';\n\n// Look for area information in email\nfor (const line of lines) {\n  if (line.toLowerCase().includes('area:') || line.toLowerCase().includes('location:')) {\n    area = line.split(':')[1]?.trim() || '';\n  }\n  if (line.toLowerCase().includes('city:')) {\n    city = line.split(':')[1]?.trim() || '';\n  }\n  if (line.toLowerCase().includes('state:')) {\n    state = line.split(':')[1]?.trim() || '';\n  }\n  if (line.toLowerCase().includes('zip:') || line.toLowerCase().includes('zipcode:')) {\n    zipcode = line.split(':')[1]?.trim() || '';\n  }\n}\n\n// If no structured data found, try to extract from general text\nif (!area && !city) {\n  const addressRegex = /([A-Za-z\\s]+),\\s*([A-Z]{2})\\s*(\\d{5})?/;\n  const match = emailBody.match(addressRegex);\n  if (match) {\n    city = match[1];\n    state = match[2];\n    zipcode = match[3] || '';\n  }\n}\n\nreturn {\n  json: {\n    searchArea: area || city,\n    city: city,\n    state: state,\n    zipcode: zipcode,\n    originalEmail: $input.first().json,\n    searchQuery: `${area || city} ${state} construction permits`.trim()\n  }\n};"
          },
          "typeVersion": 2
        },
        {
          "id": "85f1df36-93ce-4895-bbde-022ebe40a1e7",
          "name": "Search Government Data",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            660,
            0
          ],
          "parameters": {
            "url": "https://api.usa.gov/jobs/search.json",
            "options": {},
            "sendQuery": true,
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth",
            "queryParameters": {
              "parameters": [
                {
                  "name": "keyword",
                  "value": "construction permit"
                },
                {
                  "name": "location_name",
                  "value": "={{ $json.searchArea }}"
                },
                {
                  "name": "size",
                  "value": "20"
                }
              ]
            }
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.1
        },
        {
          "id": "acc6341d-273f-4534-afb7-27771759a1df",
          "name": "Search Construction Sites",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            660,
            160
          ],
          "parameters": {
            "url": "https://www.construction.com/api/search",
            "options": {
              "timeout": 10000
            },
            "sendQuery": true,
            "sendHeaders": true,
            "queryParameters": {
              "parameters": [
                {
                  "name": "q",
                  "value": "={{ $json.searchArea }} construction projects"
                },
                {
                  "name": "type",
                  "value": "projects"
                },
                {
                  "name": "limit",
                  "value": "15"
                }
              ]
            },
            "headerParameters": {
              "parameters": [
                {
                  "name": "User-Agent",
                  "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
                },
                {
                  "name": "Accept",
                  "value": "application/json"
                }
              ]
            }
          },
          "typeVersion": 4.1
        },
        {
          "id": "f8ca860e-b794-4749-9fa9-bb340e955845",
          "name": "Process Construction Data",
          "type": "n8n-nodes-base.code",
          "position": [
            900,
            40
          ],
          "parameters": {
            "jsCode": "const governmentData = $input.all()[0]?.json?.results || [];\nconst constructionData = $input.all()[1]?.json?.projects || [];\nconst searchInfo = $('Extract Location Info').first().json;\n\n// Process government construction data\nconst govProjects = governmentData.map(item => ({\n  title: item.position_title || 'Government Construction Project',\n  location: item.locations?.[0] || searchInfo.searchArea,\n  description: item.job_summary || 'No description available',\n  source: 'Government Database',\n  url: item.url || '#',\n  startDate: item.start_date || 'TBD',\n  type: 'Public Project'\n}));\n\n// Process construction industry data (fallback mock data if API fails)\nlet constructionProjects = [];\nif (constructionData.length > 0) {\n  constructionProjects = constructionData.map(item => ({\n    title: item.name || item.title || 'Construction Project',\n    location: item.location || searchInfo.searchArea,\n    description: item.description || 'Commercial construction project',\n    source: 'Construction Industry',\n    url: item.url || '#',\n    startDate: item.start_date || 'Q2 2024',\n    type: item.type || 'Private Project'\n  }));\n} else {\n  // Fallback mock data for demo purposes\n  constructionProjects = [\n    {\n      title: `New Commercial Complex - ${searchInfo.searchArea}`,\n      location: searchInfo.searchArea,\n      description: 'Mixed-use commercial and residential development',\n      source: 'Local Planning Department',\n      url: '#',\n      startDate: 'March 2024',\n      type: 'Mixed Development'\n    },\n    {\n      title: `Office Building Construction - ${searchInfo.city}`,\n      location: `${searchInfo.city}, ${searchInfo.state}`,\n      description: '5-story office building with retail space',\n      source: 'Building Permits',\n      url: '#',\n      startDate: 'April 2024',\n      type: 'Commercial'\n    }\n  ];\n}\n\n// Combine all projects\nconst allProjects = [...govProjects, ...constructionProjects];\n\n// Filter for recent/upcoming projects\nconst recentProjects = allProjects.filter(project => {\n  const startDate = new Date(project.startDate);\n  const now = new Date();\n  const threeMonthsFromNow = new Date(now.getTime() + (90 * 24 * 60 * 60 * 1000));\n  \n  return startDate >= now || project.startDate.includes('2024') || project.startDate === 'TBD';\n});\n\nreturn {\n  json: {\n    searchArea: searchInfo.searchArea,\n    totalProjects: recentProjects.length,\n    projects: recentProjects.slice(0, 10), // Limit to top 10\n    searchQuery: searchInfo.searchQuery,\n    generatedAt: new Date().toISOString(),\n    originalEmail: searchInfo.originalEmail\n  }\n};"
          },
          "typeVersion": 2
        },
        {
          "id": "5e85f511-81ac-42bf-af01-f465531874bb",
          "name": "Check if Projects Found",
          "type": "n8n-nodes-base.if",
          "position": [
            1320,
            80
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "condition1",
                  "operator": {
                    "type": "number",
                    "operation": "gt"
                  },
                  "leftValue": "={{ $json.totalProjects }}",
                  "rightValue": 0
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "3a614463-2f2d-4d28-8761-9dcb4349b653",
          "name": "Generate Email Report",
          "type": "n8n-nodes-base.code",
          "position": [
            1540,
            0
          ],
          "parameters": {
            "jsCode": "const data = $input.first().json;\nconst projects = data.projects;\n\n// Create HTML email content\nlet htmlContent = `\n<html>\n<head>\n  <style>\n    body { font-family: Arial, sans-serif; margin: 20px; }\n    .header { background-color: #f4f4f4; padding: 20px; border-radius: 5px; }\n    .project { border: 1px solid #ddd; margin: 10px 0; padding: 15px; border-radius: 5px; }\n    .project-title { color: #333; font-weight: bold; font-size: 16px; }\n    .project-meta { color: #666; font-size: 12px; margin: 5px 0; }\n    .project-desc { margin: 10px 0; }\n    .summary { background-color: #e8f4fd; padding: 15px; border-radius: 5px; margin: 20px 0; }\n  </style>\n</head>\n<body>\n  <div class=\"header\">\n    <h2>🏗️ Construction Project Alert Report</h2>\n    <p><strong>Search Area:</strong> ${data.searchArea}</p>\n    <p><strong>Report Generated:</strong> ${new Date(data.generatedAt).toLocaleString()}</p>\n  </div>\n  \n  <div class=\"summary\">\n    <h3>📊 Summary</h3>\n    <p><strong>Total Projects Found:</strong> ${data.totalProjects}</p>\n    <p><strong>Search Query:</strong> ${data.searchQuery}</p>\n  </div>\n  \n  <h3>🔍 Upcoming Construction Projects</h3>\n`;\n\nif (projects.length === 0) {\n  htmlContent += '<p>No upcoming construction projects found in the specified area.</p>';\n} else {\n  projects.forEach((project, index) => {\n    htmlContent += `\n    <div class=\"project\">\n      <div class=\"project-title\">${project.title}</div>\n      <div class=\"project-meta\">\n        📍 Location: ${project.location} | \n        📅 Start Date: ${project.startDate} | \n        🏢 Type: ${project.type}\n      </div>\n      <div class=\"project-desc\">\n        <strong>Description:</strong> ${project.description}\n      </div>\n      <div class=\"project-meta\">\n        <strong>Source:</strong> ${project.source}\n      </div>\n    </div>\n    `;\n  });\n}\n\nhtmlContent += `\n  <div style=\"margin-top: 30px; padding: 15px; background-color: #f9f9f9; border-radius: 5px;\">\n    <h4>💡 Next Steps</h4>\n    <ul>\n      <li>Review each project for potential competition</li>\n      <li>Contact project owners for partnership opportunities</li>\n      <li>Monitor progress and timeline changes</li>\n      <li>Update your competitive analysis</li>\n    </ul>\n  </div>\n  \n  <p style=\"margin-top: 30px; color: #666; font-size: 12px;\">\n    This report was automatically generated by your Construction Alert System.<br>\n    To modify your alert preferences, reply to this email with your requirements.\n  </p>\n</body>\n</html>\n`;\n\n// Create plain text version\nlet textContent = `Construction Project Alert Report\\n\\n`;\ntextContent += `Search Area: ${data.searchArea}\\n`;\ntextContent += `Total Projects Found: ${data.totalProjects}\\n`;\ntextContent += `Report Generated: ${new Date(data.generatedAt).toLocaleString()}\\n\\n`;\n\nif (projects.length === 0) {\n  textContent += 'No upcoming construction projects found in the specified area.\\n';\n} else {\n  textContent += 'UPCOMING CONSTRUCTION PROJECTS:\\n';\n  textContent += '=' .repeat(40) + '\\n\\n';\n  \n  projects.forEach((project, index) => {\n    textContent += `${index + 1}. ${project.title}\\n`;\n    textContent += `   Location: ${project.location}\\n`;\n    textContent += `   Start Date: ${project.startDate}\\n`;\n    textContent += `   Type: ${project.type}\\n`;\n    textContent += `   Description: ${project.description}\\n`;\n    textContent += `   Source: ${project.source}\\n\\n`;\n  });\n}\n\nreturn {\n  json: {\n    subject: `🏗️ Construction Alert: ${data.totalProjects} Projects Found in ${data.searchArea}`,\n    htmlContent: htmlContent,\n    textContent: textContent,\n    recipientEmail: data.originalEmail.from,\n    searchArea: data.searchArea,\n    projectCount: data.totalProjects\n  }\n};"
          },
          "typeVersion": 2
        },
        {
          "id": "4782972d-6b57-4faf-9ce1-cedbee42ecff",
          "name": "Send Alert Email",
          "type": "n8n-nodes-base.emailSend",
          "position": [
            1760,
            0
          ],
          "webhookId": "9dae36d2-91a9-4ef4-90ae-60754055afd2",
          "parameters": {
            "html": "={{ $json.htmlContent }}",
            "options": {},
            "subject": "={{ $json.subject }}",
            "toEmail": "={{ $json.recipientEmail }}",
            "fromEmail": "user@example.com"
          },
          "credentials": {
            "smtp": {
              "id": "credential-id",
              "name": "smtp Credential"
            }
          },
          "typeVersion": 2.1
        },
        {
          "id": "49d55c27-73f1-4436-99f9-f0e4ff2cf8ac",
          "name": "Send No Results Email",
          "type": "n8n-nodes-base.emailSend",
          "position": [
            1540,
            200
          ],
          "webhookId": "5375f687-193e-403e-a599-bbba10c97977",
          "parameters": {
            "text": "No upcoming construction projects were found for the requested area: {{ $('Extract Location Info').first().json.searchArea }}\\n\\nSearch was triggered at: {{ new Date().toLocaleString() }}\\n\\nOriginal request from: {{ $('Extract Location Info').first().json.originalEmail.from }}",
            "options": {},
            "subject": "No Construction Projects Found",
            "toEmail": "user@example.com",
            "fromEmail": "user@example.com",
            "emailFormat": "text"
          },
          "credentials": {
            "smtp": {
              "id": "credential-id",
              "name": "smtp Credential"
            }
          },
          "typeVersion": 2.1
        },
        {
          "id": "9f9e205e-a6c6-4bf0-b25b-8d608eabc294",
          "name": "Wait For Data",
          "type": "n8n-nodes-base.wait",
          "position": [
            1120,
            40
          ],
          "webhookId": "fc75279b-7f48-421a-8222-b57f48dc06e2",
          "parameters": {},
          "typeVersion": 1.1
        },
        {
          "id": "e5e98309-33a4-4b60-9cd6-f51925d77d7c",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            220,
            -360
          ],
          "parameters": {
            "width": 860,
            "height": 300,
            "content": "\n## **How it works**\n* **Email Trigger** - Detects new email requests with \"Construction Alert Request\" in the subject line\n* **Check Email Subject** - Validates that the email contains the correct trigger phrase\n* **Extract Location Info** - Parses the email body to extract area, city, state, and zip code information\n* **Search Government Data** - Queries government databases for public construction projects and permits\n* **Search Construction Sites** - Searches construction industry databases for private projects\n* **Process Construction Data** - Combines and filters results from both sources, removing duplicates\n* **Wait For Data** - Wait for Combines and filters results\n* **Check If Projects Found** - Determines whether to send a results report or no-results notification\n* **Generate Email Report** - Creates a professional HTML email with project details and summaries\n* **Send Alert Email** - Delivers the construction project report to the requester\n* **Send No Results Email** - Notifies when no projects are found in the specified area\n\nThe workflow also includes a **Schedule Trigger** that can run automatically on weekdays at 9 AM for regular monitoring."
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "5e298be6-7660-412d-b5bb-15136626b35d",
      "connections": {
        "Email Trigger": {
          "main": [
            [
              {
                "node": "Check Email Subject",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Wait For Data": {
          "main": [
            [
              {
                "node": "Check if Projects Found",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Schedule Trigger": {
          "main": [
            [
              {
                "node": "Extract Location Info",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Check Email Subject": {
          "main": [
            [
              {
                "node": "Extract Location Info",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Extract Location Info": {
          "main": [
            [
              {
                "node": "Search Government Data",
                "type": "main",
                "index": 0
              },
              {
                "node": "Search Construction Sites",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Generate Email Report": {
          "main": [
            [
              {
                "node": "Send Alert Email",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Search Government Data": {
          "main": [
            [
              {
                "node": "Process Construction Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Check if Projects Found": {
          "main": [
            [
              {
                "node": "Generate Email Report",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Send No Results Email",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Process Construction Data": {
          "main": [
            [
              {
                "node": "Wait For Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Search Construction Sites": {
          "main": [
            [
              {
                "node": "Process Construction Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 13,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 2
        },
        "n8n-nodes-base.code": {
          "count": 3
        },
        "n8n-nodes-base.wait": {
          "count": 1
        },
        "n8n-nodes-base.emailSend": {
          "count": 2
        },
        "n8n-nodes-base.stickyNote": {
          "count": 1
        },
        "n8n-nodes-base.httpRequest": {
          "count": 2
        },
        "n8n-nodes-base.emailReadImap": {
          "count": 1
        },
        "n8n-nodes-base.scheduleTrigger": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Oneclick AI Squad",
      "username": "oneclick-ai",
      "bio": "The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations  from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.",
      "verified": true,
      "links": [
        "https://www.oneclickitsolution.com/"
      ],
      "avatar": "https://gravatar.com/avatar/848fca91367142f65f9e5c55d64e5c9952b160d7b060d103b52aa343c6bc7b3d?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 10,
        "icon": "fa:inbox",
        "name": "n8n-nodes-base.emailReadImap",
        "codex": {
          "data": {
            "resources": {
              "generic": [
                {
                  "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.emailimap/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/imap/"
                }
              ]
            },
            "categories": [
              "Communication",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Other Trigger Nodes"
              ]
            }
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "Email Trigger (IMAP)",
          "color": "#44AA22"
        },
        "iconData": {
          "icon": "inbox",
          "type": "icon"
        },
        "displayName": "Email Trigger (IMAP)",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          },
          {
            "id": 9,
            "name": "Core 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": 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": 514,
        "icon": "fa:pause-circle",
        "name": "n8n-nodes-base.wait",
        "codex": {
          "data": {
            "alias": [
              "pause",
              "sleep",
              "delay",
              "timeout"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers",
                "Flow"
              ]
            }
          }
        },
        "group": "[\"organization\"]",
        "defaults": {
          "name": "Wait",
          "color": "#804050"
        },
        "iconData": {
          "icon": "pause-circle",
          "type": "icon"
        },
        "displayName": "Wait",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 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"
      }
    ],
    "image": []
  }
}