{"workflow":{"id":13644,"name":"Score and route new trial leads with Firecrawl, Scrapin.io, OpenAI, Slack and Instantly","views":555,"recentViews":2,"totalViews":555,"createdAt":"2026-02-24T04:30:14.886Z","description":"# n8n Lead Qualification & Sales Intelligence Workflow (Top of Funnel)\n\n### Overview / Purpose\nThis workflow automatically processes new free-trial / lead sign-ups in real time:\n\n- Catches a webhook from any source (Webflow form, Intercom, custom agent, etc.)\n- Filters out personal / disposable / .edu emails → only business emails continue\n- Validates the company website is live\n- Scrapes the website with Firecrawl to find the official LinkedIn company page\n- Enriches the company via AI Agent (Scrapin.io) → pulls name, follower count, headcount, HQ location, industry, and clean description\n- Runs a multi-factor scoring engine (Location + Headcount + Industry)\n- Sends a beautiful rich Slack notification to the sales team with score, rating, and quick-action buttons\n- Segments the lead by score tier (Very High / High / Mid / Low)\n- Checks if the lead already exists in Instantly\n- Adds qualified leads to the correct Instantly campaign with first/last name extracted from email\n\n### Core Flow (Step-by-Step)\n\n1. **Webhook** – Trigger (POST /new-lead)\n2. **Extract Email Root Domain** – Pulls `@company.com` part\n3. **Blacklist Regex Domains** – Blocks all personal, free, and .edu emails\n4. **Check Email Not Null** – Safety gate\n5. **Check if Website Exists** – HEAD request (continues only on 200-399)\n6. **Firecrawl Scrape** – Scrapes homepage looking for LinkedIn URL in footer/links\n7. **Extract LinkedIn Url** – Code node that finds and cleans `/company/` URL\n8. **Check LinkedIn Not Null + Is Company Page** – Rejects personal profiles\n9. **LinkedIn Agent** (AI Agent)\n   - Uses Scrapin.io enrichment tool\n   - Structured output: company_name, followers, employee_count, headquarters_location, industry, description\n10. **Audit LI Results** – Ensures all key fields returned\n11. **Sanitize Description** – Cleans Unicode, newlines, caps length for Slack\n12. **Normalize Country** – GPT-4.1-nano turns \"Sheridan, US\" → \"United States\"\n13. **Score Country** – Code node (0–10 points based on market tier)\n14. **Score Staff Count** – Code node (0–10 points based on headcount buckets)\n15. **Industry Scoring** – Code node (normalizes raw industry + 0–10 points)\n16. **Algo Score** – Final score = weighted average → 0–100 + rating label (\"Excellent Fit\", \"Good Fit\", etc.)\n17. **Send to Slack** – Rich blocks with:\n    - Email, Company Name, Location (+score), Staff Count (+score), Followers, Industry (+score)\n    - Clean description\n    - Final Score + Rating\n    - Buttons: Visit LinkedIn + Visit Website\n18. **Score-Based Routing**\n    - Very High (90–100)\n    - High (70–89)\n    - Mid (50–69)\n    - Low (0–49)\n19. **Instantly Checks** – For each tier: search if lead already exists\n20. **Extract Name From Email** (GPT) – Turns `john.smith@company.com` → First/Last Name (or \"there\")\n21. **Wait** nodes (optional delay before adding)\n22. **Add Lead to Campaign** – Pushes to Instantly with website custom field\n\n### Scoring Logic (Fully Configurable in Code Nodes)\n\nBased on your ICP, narrow down your scoring based on how you want to segment.\n\n### What Makes This Workflow Powerful\n- Zero manual work after webhook\n- Rich, actionable Slack alerts (sales team loves it)\n- Smart scoring that matches real ICP\n- Built-in deduplication with Instantly\n- Fully modular code nodes (easy to tweak scoring without breaking anything)\n- Heavy error handling and safety gates\n\n---\n\n**This is a complete, production-ready, public template.**  \nYou can import the JSON and it will run immediately after you connect your own:\n- Webhook source\n- Firecrawl API\n- Scrapin.io (or alternative)\n- OpenAI\n- Slack\n- Instantly\n\nAny questions/comments/concerns, please email brandon@topoffunnel.com\nBuilt by Brandon Charleson\nhttps://www.youtube.com/@brandoncharleson\nhttps://www.linkedin.com/in/brandon-charleson \nhttps://x.com/brandon_ai","workflow":{"id":"akQ25uAX0U54kTCW","meta":{"instanceId":"a7a8f928e4796a9ee30563d5906badeab008c065c08824bbd85b3d22ff569994","templateCredsSetupCompleted":true},"name":"TOFU Sales Intelligence","tags":[],"nodes":[{"id":"4f8ab4a4-9058-44bd-a715-0efc7bd39653","name":"Webhook","type":"n8n-nodes-base.webhook","notes":"This webhook can be from any source, which is through new trial sign ups. It could be a website lead magnet, it could be an OpenClaw/CrewAI endpoint for your agent. Recommend adding a heather auth to protect your endpoint. ","position":[-6880,1104],"webhookId":"fee744ac-9dd4-4e6b-b6b8-fcd9a574fcfc","parameters":{"path":"new-lead","options":{},"httpMethod":"POST"},"notesInFlow":true,"typeVersion":2},{"id":"89d9501f-7668-4195-96e9-b53e67fa9058","name":"Extract Email Root Domain","type":"n8n-nodes-base.set","notes":"This node will simply extract the root domain from the email address. ","position":[-6656,1008],"parameters":{"options":{},"assignments":{"assignments":[{"id":"1bfef44b-ad78-49f7-9b17-b5c0243cbe3d","name":"root_domain","type":"string","value":"={{ $json.email.split('@')[1] }}"}]}},"notesInFlow":true,"typeVersion":3.4},{"id":"666523a8-c730-468b-b32a-77067f828c90","name":"Check to make sure email is not null","type":"n8n-nodes-base.if","notes":"This node is a safety/error-handling check to ensure the email is not null/empty","position":[-6208,1008],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"8b7d6a14-7545-4684-a8a6-7fcd9543c44b","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $('Extract Email Root Domain').item.json.root_domain }}","rightValue":"null"},{"id":"72cfc6f1-f802-4abd-b98f-f7ecab73f2a3","operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $('Extract Email Root Domain').item.json.root_domain }}","rightValue":"null"}]}},"notesInFlow":true,"typeVersion":2.2},{"id":"a7105881-9d32-4500-a093-e6688b2ea386","name":"Structured Output Parser1","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-4416,1216],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"output\": {\n    \"company_name\": \"Cardinal Refer\",\n    \"followers\": 48,\n    \"employee_count\": 14,\n    \"headquarters_location\": \"Stanford, California\",\n    \"industry\": \"Healthcare\",\n    \"description\": \"Founded in 2020 by two Stanford students...\"\n  }\n}"},"typeVersion":1.2},{"id":"7afdd847-8471-4ba6-89a5-4122bfa4d066","name":"LinkedIn Agent","type":"@n8n/n8n-nodes-langchain.agent","notes":"This agent is configured to extract LinkedIn information such as followers, employee_count, headquarters_location, industry, and description. It uses scrap.io as the enrichment tool. ","position":[-4624,992],"parameters":{"text":"=Based on the input below, extract the following information from the company linkedin page and ensure numeric values are returned as numbers, not strings: \n\n- Company Name (as text)\n- Linkedin followers (as a number)\n- Number of employees or staff (as a number)\n- Company headquarters location (City and country as text)\n- Industry (extract the primary industry category as shown on LinkedIn)\n- Description or overview of the company (as text). Do not make anything up. Just extract the description that has been put into the LinkedIn company Url and make it easy to read and proper english.\n\nOutput format should maintain consistent field names:\n{\n  \"output\": {\n    \"company_name\": string,\n    \"followers\": number,\n    \"employee_count\": number,\n    \"headquarters_location\": string,\n    \"industry\": string,\n    \"description\": string\n  }\n}\n\nInput the entire URL as described below using the website scraper tool\nInput: {{ $json.debugInfo.cleanLinkedInUrl }}","options":{"systemMessage":"=You are a Linkedin data analyst and your job is to extract company information such as the followers, headquarters location, company description, industry, and staff (employee) count of a company page on linkedin and nothing else. Do not output any other numbers other than the scraped data. Use the website_tool to extract this information."},"promptType":"define","hasOutputParser":true},"notesInFlow":true,"retryOnFail":true,"typeVersion":1.7},{"id":"c03a70c8-72fa-4517-a9dc-3acb414fd22d","name":"Check if website exists","type":"n8n-nodes-base.httpRequest","notes":"This is an error handling node to ensure the website is responsive and valid.","onError":"continueRegularOutput","position":[-6000,1008],"parameters":{"url":"=https://{{ $json.root_domain }}","method":"HEAD","options":{"response":{"response":{"neverError":true,"fullResponse":true}}}},"notesInFlow":true,"retryOnFail":true,"typeVersion":4.2},{"id":"02ca2491-7ad5-48fa-a146-6fb7b8d7cb33","name":"Normalize Country","type":"@n8n/n8n-nodes-langchain.openAi","notes":"This normalizes the company location to ensure we always get structured output for scoring downstream.","position":[-3808,992],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4.1-nano","cachedResultName":"GPT-4.1-NANO"},"options":{},"messages":{"values":[{"role":"system","content":"=Given the location text: {{ $json.output.headquarters_location }}, return the official country name or \"Unknown\"."},{"content":"=You are a helpful assistant that extracts standardized country names from any location string. The user will provide a location that might be a city, state, region, or country. \n\nYour job:\n1. Identify the country the location is in. \n2. Return only the official country name in English (e.g., \"United States\", \"Canada\", \"United Kingdom\", \"India\", etc.).\n3. If the location is a city and/or state within the United States (e.g., \"Denver, CO\", \"New York, NY\", \"Texas\"), return \"United States\".\n4. If you cannot determine the country with confidence, return \"Unknown\".\n5. Do not provide any additional text or explanations—only the country name or \"Unknown\".\n\n"}]},"jsonOutput":"={{ true }}"},"credentials":{"openAiApi":{"id":"5JD7HV9E2gTKZ4R4","name":"OpenAI account"}},"notesInFlow":true,"retryOnFail":true,"typeVersion":1.8},{"id":"7834015a-904d-4acb-9e78-96429a83280b","name":"Score Country","type":"n8n-nodes-base.code","notes":"Location Score Assignment\n─────────────────────────\nPurpose:\nAssigns a numeric locationScore (0–10) to each lead based on the company's country — prioritizes high-value markets like US, UK, Canada, etc.\n\nHow it works:\n• Pulls the country from the incoming item (from previous normalization step)\n• Normalizes to lowercase + trims whitespace\n• Matches against tiered lists of countries/regions\n• Assigns score:\n  - 10: US\n  - 8: Tier 2 (UK, Canada, Australia, NZ)\n  - 7: Western Europe, Nordics, East Asia, Singapore/HK\n  - 6: Middle East (UAE, Israel, etc.)\n  - 4: Other EU\n  - 3: LatAm\n  - 2: South Asia, SE Asia, Eastern Europe\n  - 1: Africa\n  - 0: Rest of world / unknown\n\nOutput fields added:\n- normalizedCountry: original country value (for reference)\n- locationScore: integer 0–10\n\nWhy this structure?\n- Avoids node-name lookups (prevents execution hangs in recent n8n versions)\n- Uses direct input data access ($input.all() + item.json)\n- Safe fallbacks for missing/misnamed fields\n\nDebug tips:\n- If score is always 0: check upstream node outputs the country correctly (look at JSON preview)\n- To change scoring: edit the arrays or if/else conditions\n- Test with 1 item first (switch node to \"Execute Once\")\n\nThis keeps the workflow fast and reliable even with hundreds of leads.","position":[-3472,992],"parameters":{"jsCode":"/**\n * Assign location score based on country\n * Assumes the country is already available in the incoming item (from previous node)\n * This avoids node-name lookups that cause hangs in recent n8n versions\n */\n\nconst newItems = [];\n\nfor (const item of $input.all()) {\n  // Get country from incoming data - adjust field name if needed\n  // Common possibilities: item.json.country, item.json.normalizedCountry, item.json.message.content.country, etc.\n  let rawCountry = '';\n\n  // Try most common paths - pick the one that matches your upstream output\n  if (item.json.country) {\n    rawCountry = item.json.country;\n  } else if (item.json.normalizedCountry) {\n    rawCountry = item.json.normalizedCountry;\n  } else if (item.json.message?.content?.country) {\n    rawCountry = item.json.message.content.country;\n  } else if (item.json.output?.country) {\n    rawCountry = item.json.output.country;\n  }\n\n  const country = (rawCountry || '').trim().toLowerCase();\n\n  let locationScore = 0;\n\n  // Your original tier lists (unchanged)\n  const locUS = ['united states', 'usa', 'us'];\n  const locTier2 = ['united kingdom', 'uk', 'canada', 'australia', 'new zealand'];\n  const locWesternEurope = ['germany', 'france', 'netherlands', 'belgium', 'switzerland', 'austria', 'ireland', 'luxembourg'];\n  const locNordic = ['sweden', 'norway', 'denmark', 'finland', 'iceland'];\n  const locEastAsia = ['japan', 'south korea', 'korea', 'taiwan'];\n  const locSingHK = ['singapore', 'hong kong'];\n  const locMiddleEast = ['uae', 'israel', 'saudi arabia', 'qatar', 'kuwait', 'bahrain', 'oman'];\n  const locOtherEU = ['spain', 'italy', 'portugal', 'poland', 'czech republic', 'greece', 'slovakia', 'hungary', 'lithuania', 'estonia', 'latvia', 'malta'];\n  const locLatAm = ['brazil', 'mexico', 'argentina', 'chile', 'colombia', 'peru', 'uruguay', 'costa rica', 'panama'];\n  const locSouthAsia = ['india', 'bangladesh', 'pakistan', 'sri lanka', 'nepal'];\n  const locSEAsia = ['vietnam', 'indonesia', 'thailand', 'philippines', 'malaysia', 'myanmar', 'cambodia', 'laos', 'brunei'];\n  const locEasternEurope = ['russia', 'ukraine', 'romania', 'bulgaria', 'serbia', 'croatia', 'slovenia', 'moldova', 'georgia', 'armenia', 'belarus', 'albania', 'montenegro', 'bosnia & herzegovina', 'north macedonia'];\n  const locAfrica = ['south africa', 'nigeria', 'kenya', 'egypt', 'morocco', 'ghana', 'ethiopia', 'tanzania', 'tunisia', 'algeria', 'rwanda', 'botswana', 'uganda', 'senegal', 'zambia', 'namibia'];\n\n  // Scoring\n  if (locUS.includes(country)) {\n    locationScore = 10;\n  } else if (locTier2.includes(country)) {\n    locationScore = 8;\n  } else if (locWesternEurope.includes(country) ||\n             locNordic.includes(country) ||\n             locEastAsia.includes(country) ||\n             locSingHK.includes(country)) {\n    locationScore = 7;\n  } else if (locMiddleEast.includes(country)) {\n    locationScore = 6;\n  } else if (locOtherEU.includes(country)) {\n    locationScore = 4;\n  } else if (locLatAm.includes(country)) {\n    locationScore = 3;\n  } else if (locSouthAsia.includes(country) ||\n             locSEAsia.includes(country) ||\n             locEasternEurope.includes(country)) {\n    locationScore = 2;\n  } else if (locAfrica.includes(country)) {\n    locationScore = 1;\n  } else {\n    locationScore = 0;\n  }\n\n  newItems.push({\n    json: {\n      ...item.json,              // keep all previous fields\n      normalizedCountry: rawCountry,  // original value for reference\n      locationScore\n    }\n  });\n}\n\nreturn newItems;"},"notesInFlow":true,"typeVersion":2},{"id":"695c763d-faf3-4a21-b4b6-5899d747d3a0","name":"Score Staff Count","type":"n8n-nodes-base.code","notes":"Headcount Scoring (Templatized)\n───────────────────────────────\nPurpose: Scores companies by employee count (headcountScore 0–10) based on customizable ranges.\n\nCustomization (edit in code):\n• sourceNodeName / sourceFieldPath → change if upstream node/field renamed\n• defaultScore → fallback when count missing/invalid\n• scoreRanges array → add/remove/edit buckets & scores\n  Example: { min: 51, max: 200, score: 10 } = sweet spot\n\nCurrent ranges:\n- 1–10     → 3\n- 11–50    → 7\n- 51–200   → 10 (ideal target)\n- 201–500  → 9\n- 501–5000 → 8\n- 5001+    → 7\n- Missing  → 0\n\nOutput fields:\n- staffCount: cleaned number\n- headcountScore: 0–10\n\nTips:\n- Test changes with small data first\n- Use Infinity for \"and above\" ranges\n- Numbers only — non-numeric input → 0","position":[-3264,992],"parameters":{"jsCode":"/**\n * Templatized Code node: Score company headcount (staff size)\n * \n * Users can customize:\n * - The ranges and their corresponding scores\n * - The field name/path where employee_count comes from\n * - Default score for unknown/missing values\n * \n * How to customize:\n * 1. Edit the `scoreRanges` array below — add/remove/change ranges and scores\n * 2. Adjust `sourceFieldPath` if your employee_count is in a different spot\n * 3. Change `defaultScore` if you want a different fallback\n */\n\nconst newItems = [];\n\n// ────────────────────────────────────────────────\n// USER CONFIGURATION SECTION ── EDIT HERE\n// ────────────────────────────────────────────────\n\nconst sourceNodeName = \"Sanitize Description\";          // Change if upstream node renamed\nconst sourceFieldPath = \"employee_count\";               // e.g. \"output.employee_count\", \"data.staff\", etc.\n\nconst defaultScore = 0;                                 // Score when count is missing / invalid / 0\n\n// Define your scoring buckets here (lowest → highest)\n// Format: { min: number, max: number, score: number }\n// Use Infinity for \"and above\", null/undefined for open-ended\nconst scoreRanges = [\n  { min: 1,    max: 10,   score: 3 },      // Very small (1–10)\n  { min: 11,   max: 50,   score: 7 },      // Small-mid (11–50)\n  { min: 51,   max: 200,  score: 10 },     // Sweet spot (51–200)\n  { min: 201,  max: 500,  score: 9 },      // Mid-size (201–500)\n  { min: 501,  max: 5000, score: 8 },      // Large (501–5000)\n  { min: 5001, max: Infinity, score: 7 }   // Enterprise / very large (>5000)\n];\n\n// ────────────────────────────────────────────────\n// END OF USER CONFIG ── NO NEED TO EDIT BELOW\n// ────────────────────────────────────────────────\n\nfor (const item of $input.all()) {\n  // Safely retrieve the employee count (modern n8n style)\n  let staffCount = 0;\n\n  // Try to get it from the configured source\n  const sourceData = item.json;\n  if (sourceFieldPath.includes('.')) {\n    // Deep path (e.g. \"output.employee_count\")\n    const parts = sourceFieldPath.split('.');\n    let current = sourceData;\n    for (const part of parts) {\n      current = current?.[part];\n      if (current === undefined) break;\n    }\n    staffCount = Number(current) || 0;\n  } else {\n    // Simple top-level field\n    staffCount = Number(sourceData?.[sourceFieldPath]) || 0;\n  }\n\n  // Find matching range and assign score\n  let headcountScore = defaultScore;\n\n  for (const range of scoreRanges) {\n    if (staffCount >= range.min && (range.max === Infinity || staffCount <= range.max)) {\n      headcountScore = range.score;\n      break;\n    }\n  }\n\n  newItems.push({\n    json: {\n      ...item.json,\n      staffCount,           // original value (cleaned to number)\n      headcountScore\n    }\n  });\n}\n\nreturn newItems;"},"notesInFlow":true,"typeVersion":2},{"id":"0a58f859-e986-4566-84d9-a0d20dfc3d1c","name":"Sanitize Description","type":"n8n-nodes-base.code","notes":"Sanitize Description\n───────────────────\nPurpose:\nCleans up the raw LinkedIn company description from the \"LinkedIn Agent\" node so it's Slack-friendly, readable, and short.\n\nWhat it does:\n• Safely grabs the description (handles missing data gracefully)\n• Replaces fancy/smart quotes with normal ones\n• Converts dashes/ellipses/newlines into clean single spaces\n• Collapses extra whitespace\n• Trims leading/trailing spaces\n• Caps length at ~280 chars (optional, good for messaging)\n\nWhy we need this:\nRaw LinkedIn descriptions often contain weird Unicode characters, multiple newlines, and promotional fluff that looks terrible in Slack notifications or short-form outputs.\n\nTips for debugging:\n- If the node hangs: double-check the upstream node is exactly named \"LinkedIn Agent\" (no extra spaces).\n- Test with a minimal version first: return items with hardcoded \"TEST OK\" to confirm execution.\n- Output includes original data + new field: sanitized_description\n\nExpected output field: sanitized_description (string)","position":[-4032,992],"parameters":{"jsCode":"// Clean LinkedIn company description for Slack / short use\n// Safe access + aggressive sanitization\n\nconst newItems = [];\n\nfor (const item of $input.all()) {\n  let desc = \"\";\n\n  // Safe path: get description from upstream \"LinkedIn Agent\" node\n  const agentOutput = $(\"LinkedIn Agent\").first()?.json?.output;\n  if (agentOutput?.description) {\n    desc = agentOutput.description;\n  } else {\n    // Fallback: try current item's json if description is already there\n    desc = item.json.description || \"\";\n  }\n\n  // Sanitize for clean text output\n  desc = desc\n    .replace(/[\\u2018\\u2019\\u201C\\u201D]/g, \"'\")     // fancy quotes → normal\n    .replace(/[\\u2013\\u2014]/g, \"-\")                 // dashes\n    .replace(/\\u2026/g, \"...\")                       // ellipsis\n    .replace(/\\r\\n|\\r|\\n/g, \" \")                     // newlines → space\n    .replace(/\\s+/g, \" \")                            // collapse whitespace\n    .trim();\n\n  // Optional: cap length for Slack-ish contexts\n  if (desc.length > 280) {\n    desc = desc.slice(0, 277) + \"...\";\n  }\n\n  // Pass through original data + add cleaned field\n  newItems.push({\n    json: {\n      ...item.json,\n      sanitized_description: desc\n    }\n  });\n}\n\nreturn newItems;"},"notesInFlow":true,"typeVersion":2},{"id":"e8652025-9325-4ad9-815e-6612288f3af0","name":"OpenAI Chat Model1","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-4736,1232],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-5.2","cachedResultName":"gpt-5.2"},"options":{}},"credentials":{"openAiApi":{"id":"5JD7HV9E2gTKZ4R4","name":"OpenAI account"}},"typeVersion":1.2},{"id":"9b1bbf8e-ecca-4bf7-baa4-27c95f0e1f3b","name":"Execution Data","type":"n8n-nodes-base.executionData","position":[-6656,1280],"parameters":{"dataToSave":{"values":[{"key":"email","value":"={{ $item(\"0\").$node[\"Webhook\"].json[\"body\"][\"data\"][\"item\"][\"email\"] }}"}]}},"typeVersion":1},{"id":"804917d6-6098-4723-a3f3-ff37f891716e","name":"Industry Scoring","type":"n8n-nodes-base.code","notes":"Industry Normalization & Scoring (Templatized)\n──────────────────────────────────────────────\nPurpose: Converts raw industry strings → clean category + numeric score (higher = better fit).\n\nCustomization (edit in code):\n• sourceFieldPath → change if industry is nested (e.g. \"data.industry\")\n• fallbackCategory → default when no match\n• industryCategories array:\n  - Add/remove categories\n  - Change score (0–10 recommended)\n  - Edit keywords (partial, case-insensitive matches)\n  - Order matters: higher-priority categories first\n\nCurrent top priorities:\n- Technology/Media → 10\n- Financial/Fintech → 9\n- Most others → 6 or lower\n\nOutput fields added:\n- normalizedIndustry: clean category name\n- originalIndustry: raw input for reference\n- industryScore: numeric score\n\nTips:\n- Test with varied industries first\n- Use broad keywords to catch variations\n- If too many \"Other\", add more specific keywords\n- First match wins — reorder array for priority\n\nKeeps workflow flexible for different lead criteria!","position":[-3024,992],"parameters":{"jsCode":"/**\n * Templatized Code node: Normalize & Score Company Industry\n * \n * Maps raw industry strings to broader categories and assigns scores.\n * \n * Customization guide (edit in USER CONFIG section below):\n * 1. Add/remove/edit entries in `industryCategories`\n * 2. Adjust keyword matches (case-insensitive partial matches)\n * 3. Change fallback category & score\n * 4. Modify source field/path if needed\n */\n\nconst newItems = [];\n\n// ────────────────────────────────────────────────\n// USER CONFIGURATION SECTION ── EDIT HERE\n// ────────────────────────────────────────────────\n\nconst sourceFieldPath = \"output.industry\";              // Path in incoming json, e.g. \"industry\", \"output.industry\", \"data.company.industry\"\n\nconst fallbackCategory = {\n  category: \"Other Industries\",\n  score: 3,\n  note: \"No strong match found\"\n};\n\nconst industryCategories = [\n  {\n    category: \"Technology, Information and Media\",\n    score: 10,\n    keywords: [\n      \"technology\", \"software\", \"it \", \"information technology\", \"saas\", \"cloud\",\n      \"cybersecurity\", \"artificial intelligence\", \"data\", \"internet\", \"computer\",\n      \"digital\", \"tech\", \"ai\", \"ml\", \"platform\", \"it services\", \"it consulting\"\n    ]\n  },\n  {\n    category: \"Financial Services\",\n    score: 9,\n    keywords: [\n      \"financial\", \"fintech\", \"insurance\", \"investment\", \"wealth management\",\n      \"capital markets\", \"venture capital\", \"private equity\"\n    ]\n  },\n  {\n    category: \"Healthcare\",\n    score: 6,\n    keywords: [\n      \"healthcare\", \"health\", \"medical\", \"biotech\", \"pharmaceutical\", \"life sciences\",\n      \"hospital\", \"clinical\", \"wellness\"\n    ]\n  },\n  {\n    category: \"Retail & E-commerce\",\n    score: 6,\n    keywords: [\n      \"retail\", \"e-commerce\", \"ecommerce\", \"shop\", \"store\", \"marketplace\",\n      \"commerce\", \"online shopping\"\n    ]\n  },\n  {\n    category: \"Manufacturing\",\n    score: 6,\n    keywords: [\n      \"manufacturing\", \"industrial\", \"production\", \"factory\", \"fabrication\",\n      \"assembly\", \"engineering\"\n    ]\n  },\n  {\n    category: \"Professional Services / Consulting\",\n    score: 5,\n    keywords: [\n      \"professional services\", \"consulting\", \"management consulting\", \"strategy consulting\",\n      \"business consulting\", \"advisory\", \"accounting\"\n    ]\n  },\n  {\n    category: \"Advertising & Marketing\",\n    score: 6,\n    keywords: [\n      \"advertising\", \"marketing\", \"ad tech\", \"ad agency\", \"digital marketing\",\n      \"marketing agency\", \"branding\"\n    ]\n  },\n  {\n    category: \"Education\",\n    score: 4,\n    keywords: [\n      \"education\", \"learning\", \"training\", \"school\", \"university\", \"academic\",\n      \"edtech\", \"teaching\"\n    ]\n  },\n  {\n    category: \"Travel & Hospitality\",\n    score: 4,\n    keywords: [\n      \"travel\", \"hospitality\", \"hotel\", \"tourism\", \"airline\", \"vacation\",\n      \"accommodation\"\n    ]\n  },\n  {\n    category: \"Consumer Goods\",\n    score: 3,\n    keywords: [\n      \"consumer goods\", \"fmcg\", \"consumer products\", \"packaged goods\",\n      \"consumer brands\"\n    ]\n  },\n  {\n    category: \"Real Estate\",\n    score: 3,\n    keywords: [\n      \"real estate\", \"property\", \"realty\", \"housing\", \"commercial property\"\n    ]\n  },\n  {\n    category: \"Entertainment & Media\",\n    score: 3,\n    keywords: [\n      \"entertainment\", \"gaming\", \"games\", \"music\", \"movies\", \"media production\",\n      \"film\", \"video\", \"broadcasting\"\n    ]\n  }\n  // Add more categories here as needed, highest priority first\n];\n\n// ────────────────────────────────────────────────\n// END OF USER CONFIG ── NO NEED TO EDIT BELOW\n// ────────────────────────────────────────────────\n\nfor (const item of $input.all()) {\n  // Safely extract raw industry\n  let rawIndustry = '';\n\n  if (sourceFieldPath.includes('.')) {\n    const parts = sourceFieldPath.split('.');\n    let current = item.json;\n    for (const part of parts) {\n      current = current?.[part];\n      if (current === undefined) break;\n    }\n    rawIndustry = (current || '').toString();\n  } else {\n    rawIndustry = (item.json?.[sourceFieldPath] || '').toString();\n  }\n\n  const normalized = rawIndustry.trim().toLowerCase();\n\n  // Find best match (first match wins - order in array matters!)\n  let matched = { ...fallbackCategory, originalIndustry: rawIndustry };\n\n  for (const cat of industryCategories) {\n    for (const kw of cat.keywords) {\n      if (normalized.includes(kw)) {\n        matched = {\n          category: cat.category,\n          score: cat.score,\n          originalIndustry: rawIndustry\n        };\n        break; // Stop at first match\n      }\n    }\n    if (matched.category !== fallbackCategory.category) break;\n  }\n\n  newItems.push({\n    json: {\n      ...item.json,\n      normalizedIndustry: matched.category,\n      originalIndustry: matched.originalIndustry,\n      industryScore: matched.score\n    }\n  });\n}\n\nreturn newItems;"},"notesInFlow":true,"typeVersion":2},{"id":"ae55a0b9-6acb-42df-a1b5-e9773fda2e8d","name":"Algo Score","type":"n8n-nodes-base.code","notes":"Final Lead Scoring (Templatized)\n────────────────────────────────\nPurpose: Combines 3 sub-scores (each 0–10) → final 0–100 score + rating label.\n\nCustomization (edit config object in code):\n• sources → update node/field names if upstream changes\n• weights → adjust relative importance (e.g. {headcount: 1.5, location: 1, industry: 2})\n• ratingTiers → change thresholds/labels (highest first)\n• defaultSubScore → fallback when data missing\n\nCurrent setup:\n- Equal weights (1:1:1)\n- Max per sub-score = 10\n- Ratings: ≥80 Excellent, ≥60 Good, ≥40 Moderate, else Poor\n\nOutput structure:\noutput.scores: {\n  headcount, location, industry,\n  totalRaw, finalScore (0–100), rating\n}\n\nTips:\n- Test with known good/bad leads\n- To emphasize one factor → increase its weight\n- Add new sub-scores by extending config.sources & weights","position":[-2800,992],"parameters":{"jsCode":"/**\n * Final Lead Scoring (Templatized)\n * Combines headcount, location, and industry scores into a 0–100 final score + qualitative rating.\n * \n * Customization guide (edit in USER CONFIG section):\n * - Change weights for each component (they auto-normalize to 100)\n * - Adjust rating thresholds and labels\n * - Modify node names or field paths if upstream nodes change\n * - Add more sub-scores later if needed\n */\n\nconst newItems = [];\n\n// ────────────────────────────────────────────────\n// USER CONFIGURATION SECTION ── EDIT HERE\n// ────────────────────────────────────────────────\n\nconst config = {\n  // Source node names and field paths (update if renamed)\n  sources: {\n    headcount: { node: \"Score Staff Count\",   field: \"headcountScore\" },\n    location:  { node: \"Score Country\",       field: \"locationScore\"  },\n    industry:  { node: \"Industry Scoring\",    field: \"industryScore\"  }\n  },\n\n  // Weights (higher = more important) — will be normalized to total 100\n  weights: {\n    headcount: 1,   // e.g. give headcount more/less emphasis\n    location:  1,\n    industry:  1\n  },\n\n  // Rating tiers (thresholds from high → low)\n  ratingTiers: [\n    { min: 80, label: \"Excellent Fit\" },\n    { min: 60, label: \"Good Fit\"      },\n    { min: 40, label: \"Moderate Fit\"  },\n    { min:  0, label: \"Poor Fit\"      }\n  ],\n\n  // Fallback if a score is missing/invalid\n  defaultSubScore: 0\n};\n\n// ────────────────────────────────────────────────\n// END OF USER CONFIG ── NO NEED TO EDIT BELOW\n// ────────────────────────────────────────────────\n\nfor (const item of $input.all()) {\n  // Helper to safely get a score from upstream\n  const getScore = (source) => {\n    try {\n      return Number(item.json?.[source.field]) || config.defaultSubScore;\n    } catch (e) {\n      return config.defaultSubScore;\n    }\n  };\n\n  // Extract individual scores (using incoming data, not node lookups)\n  const headcountScore = getScore(config.sources.headcount);\n  const locationScore  = getScore(config.sources.location);\n  const industryScore  = getScore(config.sources.industry);\n\n  // Weighted total (raw points)\n  const totalRaw = \n    headcountScore * config.weights.headcount +\n    locationScore  * config.weights.location  +\n    industryScore  * config.weights.industry;\n\n  // Normalize to max possible raw = sum of max scores × weights\n  const maxPossible = \n    10 * config.weights.headcount +\n    10 * config.weights.location  +\n    10 * config.weights.industry;\n\n  const finalScore = maxPossible > 0 ? Math.round((totalRaw / maxPossible) * 100) : 0;\n\n  // Find matching rating\n  let rating = config.ratingTiers[config.ratingTiers.length - 1].label; // fallback\n  for (const tier of config.ratingTiers) {\n    if (finalScore >= tier.min) {\n      rating = tier.label;\n      break;\n    }\n  }\n\n  newItems.push({\n    json: {\n      output: {\n        scores: {\n          headcount: headcountScore,\n          location:  locationScore,\n          industry:  industryScore,\n          totalRaw,\n          finalScore,\n          rating\n        }\n      }\n    }\n  });\n}\n\nreturn newItems;"},"notesInFlow":true,"typeVersion":2},{"id":"143888a2-a992-4e54-bb87-a5152512bdfd","name":"Extract Name From Email","type":"@n8n/n8n-nodes-langchain.openAi","position":[-1648,976],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4.1-nano","cachedResultName":"GPT-4.1-NANO"},"options":{},"messages":{"values":[{"role":"system","content":"You are an AI assistant that extracts names from email addresses. You receive an email address and should look at the part before the “@” to determine if it is a person’s first name or first and last name.\n\t1.\tIf you are extremely confident it is a real first name (e.g., “john”), output the first name only (e.g., “John”).\n\t2.\tIf you are extremely confident it is a real first and last name (e.g., “john.smith”), output both (e.g., “John Smith”).\n\t3.\tIf there is any doubt—meaning it looks like a role, department, organization, or anything that is not clearly a person’s name (e.g., “support,” “admin,” “info,” etc.)—output the word \"there\" as the Name and First Name without the quotes.\n\nCapitalize names properly. Output only the name or there, with no additional text or punctuation.\n\nOutput the following:\n- Name\n- First Name\n- Last Name"},{"content":"=Email: {{ $item(\"0\").$node[\"Webhook\"].json[\"email\"] }}"}]},"jsonOutput":true},"credentials":{"openAiApi":{"id":"5JD7HV9E2gTKZ4R4","name":"OpenAI account"}},"typeVersion":1.8},{"id":"36a13dec-7a3e-49af-9e37-fc51ab70f921","name":"Wait","type":"n8n-nodes-base.wait","position":[-1280,976],"webhookId":"cd6f95fb-1a2f-47d5-81ef-b83c43d80d6d","parameters":{"unit":"minutes"},"typeVersion":1.1},{"id":"b33a8eb7-390f-4951-97bf-58667ea434df","name":"Extract LinkedIn Url","type":"n8n-nodes-base.code","notes":"This node will extract the LI profile URL","position":[-5344,1008],"parameters":{"jsCode":"const data = $input.item.json;\n\n// Step 1: Recursively search for the first LinkedIn URL\nfunction findLinkedInUrl(obj, path = '') {\n  if (!obj || typeof obj !== 'object') return null;\n\n  if (Array.isArray(obj)) {\n    for (const item of obj) {\n      if (typeof item === 'string' && item.includes('linkedin.com')) {\n        return item;\n      }\n    }\n    for (let i = 0; i < obj.length; i++) {\n      const result = findLinkedInUrl(obj[i], `${path}[${i}]`);\n      if (result) return result;\n    }\n  } else {\n    for (const [key, value] of Object.entries(obj)) {\n      if (typeof value === 'string' && value.includes('linkedin.com')) {\n        return value;\n      }\n      const result = findLinkedInUrl(value, path ? `${path}.${key}` : key);\n      if (result) return result;\n    }\n  }\n\n  return null;\n}\n\nconst rawLinkedInUrl = findLinkedInUrl(data);\n\n// Step 2: Normalize the LinkedIn URL (vanity or numeric company page)\nlet cleanLinkedInUrl = null;\nif (typeof rawLinkedInUrl === 'string') {\n  // Match pattern like: https://www.linkedin.com/company/zeva-global-inc or /company/98872926\n  const match = rawLinkedInUrl.match(/https?:\\/\\/(www\\.)?linkedin\\.com\\/company\\/[a-zA-Z0-9-]+/);\n  if (match) {\n    cleanLinkedInUrl = match[0].replace(/\\/+$/, '') + '/'; // Ensure single trailing slash\n  }\n}\n\n// Step 3: Fallback in case no valid LinkedIn URL is found\nconst safeLinkedInUrl = cleanLinkedInUrl || null;\nconst hasLinkedIn = safeLinkedInUrl !== null;\n\nreturn {\n  json: {\n    domain: data.metadata?.sourceURL?.replace(/^https?:\\/\\//, '').split('/')[0] || '',\n    originalUrl: data.metadata?.sourceURL || '',\n    linkedInUrl: safeLinkedInUrl,\n    hasLinkedIn,\n    debugInfo: {\n      rawLinkedInUrl,\n      cleanLinkedInUrl,\n      dataKeys: Object.keys(data),\n      searchComplete: true\n    }\n  }\n};"},"notesInFlow":true,"typeVersion":2},{"id":"99f68bfa-6dc8-4a55-a930-f7fa24fe78aa","name":"Check if Company or Personal LI Profile","type":"n8n-nodes-base.if","notes":"This node only passes through company LI profiles (and not personal LI profiles). If personal LI profiles still fits your ICP, route that via the 'False' branch.","position":[-4896,1008],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c60eb149-fdda-4d58-b9ef-1dbc21472c63","operator":{"type":"string","operation":"contains"},"leftValue":"={{ $json.debugInfo.cleanLinkedInUrl }}","rightValue":"linkedin.com/company"}]}},"notesInFlow":true,"typeVersion":2.2},{"id":"f46b91bc-f5b5-43e6-8055-089bc7932dcc","name":"Check root URL","type":"n8n-nodes-base.if","notes":"This node checks the status code to ensure the domain is healthy and responsive (so it does not waste any credits/scraping efforts).","position":[-5808,1008],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"47b571c7-b3de-4b32-a11d-acc68379f8a6","operator":{"type":"number","operation":"gte"},"leftValue":"={{ $json.statusCode }}","rightValue":200},{"id":"7b8e4747-cbc4-467a-a84a-7557b70dcc64","operator":{"type":"number","operation":"lte"},"leftValue":"={{ $json.statusCode }}","rightValue":399}]}},"notesInFlow":true,"typeVersion":2.2},{"id":"6e209053-4c83-4106-b1c0-fae7e3734d0f","name":"Extract Name From Email2","type":"@n8n/n8n-nodes-langchain.openAi","position":[-1648,1200],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4.1-nano","cachedResultName":"GPT-4.1-NANO"},"options":{},"messages":{"values":[{"role":"system","content":"You are an AI assistant that extracts names from email addresses. You receive an email address and should look at the part before the “@” to determine if it is a person’s first name or first and last name.\n\t1.\tIf you are extremely confident it is a real first name (e.g., “john”), output the first name only (e.g., “John”).\n\t2.\tIf you are extremely confident it is a real first and last name (e.g., “john.smith”), output both (e.g., “John Smith”).\n\t3.\tIf there is any doubt—meaning it looks like a role, department, organization, or anything that is not clearly a person’s name (e.g., “support,” “admin,” “info,” etc.)—output the word there as the Name and First Name\n\nCapitalize names properly. Output only the name or there, with no additional text or punctuation.\n\nOutput the following:\n- Name\n- First Name\n- Last Name"},{"content":"=Email: {{ $item(\"0\").$node[\"Webhook\"].json[\"email\"] }}"}]},"jsonOutput":true},"credentials":{"openAiApi":{"id":"5JD7HV9E2gTKZ4R4","name":"OpenAI account"}},"typeVersion":1.8},{"id":"7f9f9d1c-1c04-4d46-afb4-403b5c7b8938","name":"Wait2","type":"n8n-nodes-base.wait","position":[-1280,1200],"webhookId":"cd6f95fb-1a2f-47d5-81ef-b83c43d80d6d","parameters":{"unit":"minutes"},"typeVersion":1.1},{"id":"fdcd7556-4857-4b4f-a4d4-715b2f79d41c","name":"High Value Trials (70-89)","type":"n8n-nodes-base.if","position":[-2336,1200],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c27a01a4-5ae8-4870-9024-5d427cb38b69","operator":{"type":"number","operation":"gte"},"leftValue":"={{ $json.output.scores.finalScore }}","rightValue":70},{"id":"c56c2b84-b4c9-4710-aa3e-c3da6fe4cd39","operator":{"type":"number","operation":"lte"},"leftValue":"={{ $json.output.scores.finalScore }}","rightValue":89}]}},"typeVersion":2.2},{"id":"5a0bde80-7bb5-4a13-a27c-2807500a1614","name":"Very High Value Trials (90-100)","type":"n8n-nodes-base.if","position":[-2336,992],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c27a01a4-5ae8-4870-9024-5d427cb38b69","operator":{"type":"number","operation":"gte"},"leftValue":"={{ $json.output.scores.finalScore }}","rightValue":90}]}},"typeVersion":2.2},{"id":"ba99157b-07de-4114-b34c-c7f1a16186c5","name":"Extract Name From Email3","type":"@n8n/n8n-nodes-langchain.openAi","position":[-1648,1408],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4.1-nano","cachedResultName":"GPT-4.1-NANO"},"options":{},"messages":{"values":[{"role":"system","content":"You are an AI assistant that extracts names from email addresses. You receive an email address and should look at the part before the “@” to determine if it is a person’s first name or first and last name.\n\t1.\tIf you are extremely confident it is a real first name (e.g., “john”), output the first name only (e.g., “John”).\n\t2.\tIf you are extremely confident it is a real first and last name (e.g., “john.smith”), output both (e.g., “John Smith”).\n\t3.\tIf there is any doubt—meaning it looks like a role, department, organization, or anything that is not clearly a person’s name (e.g., “support,” “admin,” “info,” etc.)—output the word there as the Name and First Name\n\nCapitalize names properly. Output only the name or there, with no additional text or punctuation.\n\nOutput the following:\n- Name\n- First Name\n- Last Name"},{"content":"=Email: {{ $item(\"0\").$node[\"Webhook\"].json[\"email\"] }}"}]},"jsonOutput":true},"credentials":{"openAiApi":{"id":"5JD7HV9E2gTKZ4R4","name":"OpenAI account"}},"typeVersion":1.8},{"id":"5139ced2-e900-4503-b469-2f7a90cd82cf","name":"Wait3","type":"n8n-nodes-base.wait","position":[-1280,1408],"webhookId":"cd6f95fb-1a2f-47d5-81ef-b83c43d80d6d","parameters":{"unit":"minutes"},"typeVersion":1.1},{"id":"30002cb6-a5d2-42be-a59c-0f38a870b398","name":"Mid Value Trials (50-69)","type":"n8n-nodes-base.if","position":[-2336,1408],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c27a01a4-5ae8-4870-9024-5d427cb38b69","operator":{"type":"number","operation":"gte"},"leftValue":"={{ $json.output.scores.finalScore }}","rightValue":50},{"id":"c56c2b84-b4c9-4710-aa3e-c3da6fe4cd39","operator":{"type":"number","operation":"lte"},"leftValue":"={{ $json.output.scores.finalScore }}","rightValue":69}]}},"typeVersion":2.2},{"id":"3a0d54c5-9fa9-46b5-a4e0-36dd36669660","name":"Extract Name From Email4","type":"@n8n/n8n-nodes-langchain.openAi","position":[-1648,1648],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4.1-nano","cachedResultName":"GPT-4.1-NANO"},"options":{},"messages":{"values":[{"role":"system","content":"You are an AI assistant that extracts names from email addresses. You receive an email address and should look at the part before the “@” to determine if it is a person’s first name or first and last name.\n\t1.\tIf you are extremely confident it is a real first name (e.g., “john”), output the first name only (e.g., “John”).\n\t2.\tIf you are extremely confident it is a real first and last name (e.g., “john.smith”), output both (e.g., “John Smith”).\n\t3.\tIf there is any doubt—meaning it looks like a role, department, organization, or anything that is not clearly a person’s name (e.g., “support,” “admin,” “info,” etc.)—output the word there as the Name and First Name\n\nCapitalize names properly. Output only the name or there, with no additional text or punctuation.\n\nOutput the following:\n- Name\n- First Name\n- Last Name"},{"content":"=Email: {{ $item(\"0\").$node[\"Webhook\"].json[\"email\"] }}"}]},"jsonOutput":true},"credentials":{"openAiApi":{"id":"5JD7HV9E2gTKZ4R4","name":"OpenAI account"}},"typeVersion":1.8},{"id":"9c75d444-52e6-4362-a6c3-62f8c1025408","name":"Wait4","type":"n8n-nodes-base.wait","disabled":true,"position":[-1280,1664],"webhookId":"cd6f95fb-1a2f-47d5-81ef-b83c43d80d6d","parameters":{"unit":"minutes","amount":20},"typeVersion":1.1},{"id":"44b49fca-6879-48d8-b045-98532f2b6aad","name":"Low Value Trials (0-49)","type":"n8n-nodes-base.if","position":[-2336,1648],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c27a01a4-5ae8-4870-9024-5d427cb38b69","operator":{"type":"number","operation":"gte"},"leftValue":"={{ $json.output.scores.finalScore }}","rightValue":0},{"id":"c56c2b84-b4c9-4710-aa3e-c3da6fe4cd39","operator":{"type":"number","operation":"lte"},"leftValue":"={{ $json.output.scores.finalScore }}","rightValue":49}]}},"typeVersion":2.2},{"id":"7d39e660-97e4-4856-8a25-c83b0cecd437","name":"Blacklist Regex Domains","type":"n8n-nodes-base.if","notes":"This removes trash emails, personal emails, employee emails and only passes through good B2B emails.","position":[-6432,1008],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"445af0a5-1a1b-4afe-9730-12af901491ec","operator":{"type":"string","operation":"notRegex"},"leftValue":"={{ $json.root_domain }}","rightValue":"=^(gmail\\.com|yahoo\\.com|ymail\\.com|rocketmail\\.com|hotmail\\.com|aol\\.com|outlook\\.com|icloud\\.com|protonmail\\.com|pm\\.me|proton\\.me|zoho\\.com|yandex\\.com|mail\\.com|gmx\\.com|me\\.com|mac\\.com|sbcglobal\\.net|verizon\\.net|bellsouth\\.net|comcast\\.net|cox\\.net|earthlink\\.net|charter\\.net|att\\.net|frontier\\.com|optonline\\.net|shaw\\.ca|sympatico\\.ca|rogers\\.com|fastmail\\.com|qq\\.com|guerrillamail\\.com|10minutemail\\.com|maildrop\\.cc|anonaddy\\.com|live\\.com|msn\\.com|tutanota\\.com|hushmail\\.com|aol\\.co\\.uk|btinternet\\.com|sky\\.com|temp-mail\\.org|yopmail\\.com|throwawaymail\\.com|sharklasers\\.com|getnada\\.com|dispostable\\.com|trashmail\\.com|mohmal\\.com|inbox\\.com|rediffmail\\.com|naver\\.com|163\\.com|126\\.com|sina\\.com|wp\\.pl|seznam\\.cz|libero\\.it|mail\\.ru|centurylink\\.net|windstream\\.net|suddenlink\\.net|spectrum\\.net|telus\\.net|videotron\\.ca|bigpond\\.com|virginmedia\\.com|talktalk\\.co\\.uk|telenet\\.be|tempmail\\.com|burnermail\\.io|emailondeck\\.com|fakeinbox\\.com|mailinator\\.com|byom\\.de|inbox\\.lv|protonmail\\.ch|grr\\.la|spambox\\.us|.*\\.edu(\\.co)?)$"},{"id":"40046651-a329-464d-ace0-17dde2f4ade3","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"","rightValue":""}]}},"notesInFlow":true,"typeVersion":2.2},{"id":"7f567204-a733-4afd-9987-f023c250ff3b","name":"Check LinkedIn is not null","type":"n8n-nodes-base.if","notes":"Checks to make sure the LinkedIn profile is not empty/null.","position":[-5120,1008],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"19aa2caa-6e6c-4b99-a41d-1512446dba5f","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.debugInfo.cleanLinkedInUrl }}","rightValue":""},{"id":"fb63985f-9a93-44d9-817d-20575375bd90","operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.debugInfo.cleanLinkedInUrl }}","rightValue":"null"},{"id":"5846c30a-6a75-4e8a-96be-fbbbe634a8cd","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.debugInfo.cleanLinkedInUrl }}","rightValue":""}]}},"notesInFlow":true,"typeVersion":2.2},{"id":"f301371e-132f-4df0-be6b-c4496ccd8723","name":"Audit LI Results","type":"n8n-nodes-base.if","notes":"This node audits the LI output from the agent to ensure there is a quality LI company profile (to continue the workflow). \n\nThis implies that any company that has a complete LI profile is likely worth it whereas if they do not have a complete profile they are likely not a good fit. ","position":[-4272,992],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"6886a47a-cc73-465e-aae4-e7a808b1ae9f","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.output.company_name }}","rightValue":""},{"id":"94a016a0-a9a2-4991-8fb5-7986be143042","operator":{"type":"number","operation":"exists","singleValue":true},"leftValue":"={{ $json.output.followers }}","rightValue":""},{"id":"bce36df9-ea31-49e2-908b-5975cdef410f","operator":{"type":"number","operation":"exists","singleValue":true},"leftValue":"={{ $json.output.employee_count }}","rightValue":""},{"id":"65251c39-1576-4302-ae17-e6c07d8f8bfb","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.output.headquarters_location }}","rightValue":""}]}},"notesInFlow":true,"typeVersion":2.2},{"id":"64331374-3051-4f88-b124-a9341d3193e3","name":"Firecrawl Scrape","type":"@mendable/n8n-nodes-firecrawl.firecrawl","notes":"This uses Firecrawl to scrape the website and extract LinkedIn URL. Typically websites will have their social profiles on their website (namely the footer) and this will extract the LinkedIn. Can also be used to extract other channels (such as YouTube, 𝕏, etc.). ","position":[-5568,992],"parameters":{"url":"={{ $('Extract Email Root Domain').item.json.root_domain }}","operation":"scrape","scrapeOptions":{"options":{"formats":{"format":[{"type":"links"},{"type":"json","prompt":"Find the LinkedIn company profile URL for this organization. Look everywhere on the page, including the footer, header, about us section, and contact us page. Return only the complete LinkedIn URL."}]},"headers":{},"onlyMainContent":false}},"requestOptions":{}},"credentials":{"firecrawlApi":{"id":"te3Zl0VLI7eyqPEC","name":"Firecrawl account"}},"notesInFlow":true,"typeVersion":1},{"id":"6a2758d6-9ce5-4fa1-b09d-ab9834145086","name":"website_tool","type":"n8n-nodes-base.httpRequestTool","notes":"This enriches company LI data.","position":[-4560,1216],"parameters":{"url":"https://api.scrapin.io/v1/enrichment/company","options":{},"sendQuery":true,"authentication":"genericCredentialType","genericAuthType":"httpQueryAuth","queryParameters":{"parameters":[{"name":"linkedInUrl","value":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', ``, 'string') }}"},{"name":"cacheDuration","value":"4h"}]},"toolDescription":"Use this tool to get LinkedIn company information"},"credentials":{"httpQueryAuth":{"id":"PusshAJW9AwWrUNb","name":"Scrapin.io"}},"typeVersion":4.4},{"id":"25313025-7254-451f-bb73-61056cd973ff","name":"Consider adding to your CRM","type":"n8n-nodes-base.noOp","position":[-2336,320],"parameters":{},"typeVersion":1},{"id":"d9504d0e-a964-4873-bd45-b4db2ed65e0b","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-6704,864],"parameters":{"width":624,"height":320,"content":"## Email handling\n### This extracts the root domain and omits personal/trash emails"},"typeVersion":1},{"id":"6c0a5144-3084-45f4-8278-c4352375555d","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-6064,864],"parameters":{"color":4,"width":640,"height":320,"content":"## Check if website exists and scrape\n### This does a HEAD request to check if successful. If successful then scrapes"},"typeVersion":1},{"id":"457131a6-5955-4d71-b252-05f48fe7e71f","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-5408,864],"parameters":{"color":6,"width":1280,"height":560,"content":"## Extract company LinkedIn URL & enrich company info\nThis extracts the LI URL from the footer of the site, omits personal LI profiles and enriches with followers, headcount, HQ location, description.\nUses scrapin.io as an enrichment tool for the AI Agent."},"typeVersion":1},{"id":"1766dc8b-c6a5-43ab-9288-494154d8bcea","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-4112,864],"parameters":{"color":2,"width":1440,"height":336,"content":"## Sanitize data for Slack, run scoring algo checks for qual and quant scores (based on ICP).\nThis ensures that data can be sent to Slack for notification and scores the country, headcount, industry, for a total qual/quant score. "},"typeVersion":1},{"id":"e9f6f511-00e7-4036-9427-d27206dff609","name":"Send to slack","type":"n8n-nodes-base.slack","notes":"Sends to new-trials channel","position":[-2352,576],"webhookId":"76c31fd8-1811-4bbd-9652-ea14bb1d399d","parameters":{"text":"=New Free Trial Lead!","select":"channel","blocksUi":"={\n  \"blocks\": [\n    {\n      \"type\": \"section\",\n      \"text\": {\n        \"type\": \"mrkdwn\",\n        \"text\": \":zap: *New Scored Lead!*\"\n      }\n    },\n    {\n      \"type\": \"context\",\n      \"elements\": [\n        {\n          \"type\": \"mrkdwn\",\n          \"text\": \"This report provides insights into the company's online presence.\"\n        }\n      ]\n    },\n    {\n      \"type\": \"divider\"\n    },\n    {\n      \"type\": \"section\",\n      \"text\": {\n        \"type\": \"mrkdwn\",\n        \"text\": \"*Email:* {{ $item(\"0\").$node[\"Webhook\"].json[\"email\"] }}\\n*Company Name:* {{ $item(\"0\").$node[\"Sanitize Description\"].json[\"output\"][\"company_name\"] }}\\n*Company Location:* {{ $item(\"0\").$node[\"Sanitize Description\"].json[\"output\"][\"headquarters_location\"] }} ({{ $json.output.scores.location }}/10 points)\\n*Staff Count:* {{ $item(\"0\").$node[\"Sanitize Description\"].json[\"output\"][\"employee_count\"] }} ({{ $json.output.scores.headcount }}/10 points)\\n*Follower Count:* {{ $item(\"0\").$node[\"Sanitize Description\"].json[\"output\"][\"followers\"] }}\\n*Industry:* {{ $('Industry Scoring').item.json.normalizedIndustry }} ({{ $json.output.scores.industry }}/10)\"\n      }\n    },\n    {\n      \"type\": \"divider\"\n    },\n    {\n      \"type\": \"section\",\n      \"text\": {\n        \"type\": \"mrkdwn\",\n        \"text\": \"*Description:* {{ $item(\"0\").$node[\"Sanitize Description\"].json[\"sanitized_description\"] }}\"\n      }\n    },\n    {\n      \"type\": \"section\",\n      \"text\": {\n        \"type\": \"mrkdwn\",\n        \"text\": \"*Lead Score:* {{ $json.output.scores.finalScore }}/100\\n*Rating:* {{ $json.output.scores.rating }}\"\n      }\n    },\n    {\n      \"type\": \"actions\",\n      \"elements\": [\n        {\n          \"type\": \"button\",\n          \"text\": {\n            \"type\": \"plain_text\",\n            \"text\": \"Visit LinkedIn\",\n            \"emoji\": true\n          },\n          \"url\": \"{{ $item(\"0\").$node[\"Extract LinkedIn Url\"].json[\"linkedInUrl\"] }}\"\n        },\n        {\n          \"type\": \"button\",\n          \"text\": {\n            \"type\": \"plain_text\",\n            \"text\": \"Visit Website 🌐\",\n            \"emoji\": true\n          },\n          \"url\": \"https://{{ $item(0).$node['Extract Email Root Domain'].json['root_domain'] }}\"\n        }\n      ]\n    }\n  ]\n}","channelId":{"__rl":true,"mode":"list","value":"C08HPT21153","cachedResultName":"brandon-automation-alerts"},"messageType":"block","otherOptions":{"includeLinkToWorkflow":false}},"credentials":{"slackApi":{"id":"nI1Bithpkjvx7YtM","name":"Slack account"}},"notesInFlow":true,"typeVersion":2.3},{"id":"b842f55d-1a78-4e24-b476-457e9baceead","name":"Search Instantly Database","type":"CUSTOM.instantly","position":[-2080,1648],"parameters":{"filters":{"search":"={{ $item(\"0\").$node[\"Webhook\"].json[\"email\"] }}"},"resource":"lead","operation":"getMany"},"credentials":{"instantlyApi":{"id":"vkfbtXaDFQZMo61F","name":"TOFUInstantly account"}},"typeVersion":1},{"id":"9be4f1ff-e104-430a-8ae5-1fdbe16e7e1c","name":"Search Instantly Database1","type":"CUSTOM.instantly","position":[-2080,1408],"parameters":{"filters":{"search":"={{ $item(\"0\").$node[\"Webhook\"].json[\"email\"] }}"},"resource":"lead","operation":"getMany"},"credentials":{"instantlyApi":{"id":"vkfbtXaDFQZMo61F","name":"TOFUInstantly account"}},"typeVersion":1},{"id":"4ba1060a-2068-418b-8408-39c43c040075","name":"Search Instantly Database2","type":"CUSTOM.instantly","position":[-2080,1200],"parameters":{"filters":{"search":"={{ $item(\"0\").$node[\"Webhook\"].json[\"email\"] }}"},"resource":"lead","operation":"getMany"},"credentials":{"instantlyApi":{"id":"vkfbtXaDFQZMo61F","name":"TOFUInstantly account"}},"typeVersion":1},{"id":"344273d0-7b5a-4c1c-bb11-40b8fc3ede49","name":"Search Instantly Database3","type":"CUSTOM.instantly","position":[-2080,976],"parameters":{"filters":{"search":"={{ $item(\"0\").$node[\"Webhook\"].json[\"email\"] }}"},"resource":"lead","operation":"getMany"},"credentials":{"instantlyApi":{"id":"gjFQUT9V9nl2tI1E","name":"Instantly account"}},"typeVersion":1},{"id":"81032a55-cd19-4003-b5b5-35b793ca56f7","name":"Check if in db","type":"n8n-nodes-base.if","position":[-1872,976],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c5e43ac5-660f-4e26-8d54-9a4e18f397e4","operator":{"type":"array","operation":"empty","singleValue":true},"leftValue":"={{ $json.items }}","rightValue":""}]}},"typeVersion":2.2},{"id":"920913de-572c-405a-b805-03ffa76edcaf","name":"Check if in db1","type":"n8n-nodes-base.if","position":[-1872,1200],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c5e43ac5-660f-4e26-8d54-9a4e18f397e4","operator":{"type":"array","operation":"empty","singleValue":true},"leftValue":"={{ $json.items }}","rightValue":""}]}},"typeVersion":2.2},{"id":"d325ee41-7766-4313-8010-329cfeedd145","name":"Check if in db2","type":"n8n-nodes-base.if","position":[-1872,1408],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c5e43ac5-660f-4e26-8d54-9a4e18f397e4","operator":{"type":"array","operation":"empty","singleValue":true},"leftValue":"={{ $json.items }}","rightValue":""}]}},"typeVersion":2.2},{"id":"66dbdb48-47a4-488a-ac4d-4f8324200aae","name":"Check if in db3","type":"n8n-nodes-base.if","position":[-1872,1648],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c5e43ac5-660f-4e26-8d54-9a4e18f397e4","operator":{"type":"array","operation":"empty","singleValue":true},"leftValue":"={{ $json.items }}","rightValue":""}]}},"typeVersion":2.2},{"id":"9e30ef1d-56bc-4b4c-a654-e7d58e33b745","name":"Add lead to campaign","type":"CUSTOM.instantly","position":[-1056,1664],"parameters":{"email":"={{ $item(\"0\").$node[\"Webhook\"].json[\"email\"] }}","campaign":{"__rl":true,"mode":"list","value":"29951765-b0e9-4f18-8c8e-cb1c71d656d4","cachedResultName":"TEST"},"lastName":"={{ $('Extract Name From Email4').item.json.message.content['Last Name'] }}","resource":"lead","firstName":"={{ $('Extract Name From Email4').item.json.message.content['First Name'] }}","operation":"addToCampaign","customFields":{"customFieldValues":{"field":[{"key":"website","value":"=https://{{ $item(\"0\").$node[\"Check to make sure email is not null\"].json[\"root_domain\"] }}"}]}}},"credentials":{"instantlyApi":{"id":"W000EmozRpmXBbdA","name":"Instantly Partnerships"}},"typeVersion":1},{"id":"ecf898ff-20b3-4f3e-ba6e-aa3285d2f989","name":"Add lead to campaign1","type":"CUSTOM.instantly","position":[-1056,976],"parameters":{"email":"={{ $item(\"0\").$node[\"Webhook\"].json[\"email\"] }}","campaign":{"__rl":true,"mode":"list","value":"29951765-b0e9-4f18-8c8e-cb1c71d656d4","cachedResultName":"TEST"},"lastName":"={{ $('Extract Name From Email').item.json.message.content['Last Name'] }}","resource":"lead","firstName":"={{ $('Extract Name From Email').item.json.message.content['First Name'] }}","operation":"addToCampaign","customFields":{"customFieldValues":{"field":[{"key":"website","value":"=https://{{ $item(\"0\").$node[\"Check to make sure email is not null\"].json[\"root_domain\"] }}"}]}}},"credentials":{"instantlyApi":{"id":"W000EmozRpmXBbdA","name":"Instantly Partnerships"}},"typeVersion":1},{"id":"d9c3dd3e-56fc-4603-8ef8-71e4a56f8b53","name":"Add lead to campaign2","type":"CUSTOM.instantly","position":[-1056,1408],"parameters":{"email":"={{ $item(\"0\").$node[\"Webhook\"].json[\"email\"] }}","campaign":{"__rl":true,"mode":"list","value":"29951765-b0e9-4f18-8c8e-cb1c71d656d4","cachedResultName":"TEST"},"lastName":"={{ $('Extract Name From Email3').item.json.message.content['Last Name'] }}","resource":"lead","firstName":"={{ $('Extract Name From Email3').item.json.message.content['First Name'] }}","operation":"addToCampaign","customFields":{"customFieldValues":{"field":[{"key":"website","value":"=https://{{ $item(\"0\").$node[\"Check to make sure email is not null\"].json[\"root_domain\"] }}"}]}}},"credentials":{"instantlyApi":{"id":"W000EmozRpmXBbdA","name":"Instantly Partnerships"}},"typeVersion":1},{"id":"b361feef-367e-4c41-9194-f37eaccb8258","name":"Add lead to campaign3","type":"CUSTOM.instantly","position":[-1056,1200],"parameters":{"email":"={{ $item(\"0\").$node[\"Webhook\"].json[\"email\"] }}","campaign":{"__rl":true,"mode":"list","value":"29951765-b0e9-4f18-8c8e-cb1c71d656d4","cachedResultName":"TEST"},"lastName":"={{ $('Extract Name From Email2').item.json.message.content['Last Name'] }}","resource":"lead","firstName":"={{ $('Extract Name From Email2').item.json.message.content['First Name'] }}","operation":"addToCampaign","customFields":{"customFieldValues":{"field":[{"key":"website","value":"=https://{{ $item(\"0\").$node[\"Check to make sure email is not null\"].json[\"root_domain\"] }}"}]}}},"credentials":{"instantlyApi":{"id":"W000EmozRpmXBbdA","name":"Instantly Partnerships"}},"typeVersion":1},{"id":"2007817e-f527-46b1-8c1a-6b77898cfe88","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[-2416,864],"parameters":{"color":5,"width":1600,"height":1024,"content":"## Segment scores, verify lead is not already in Instantly, then add to campaign\n### Breaks out into scoring ranges (Very High, High, Mid, Low. Then adds them to campaigns"},"typeVersion":1},{"id":"d5fe5be4-f3c8-4164-b998-2d0d05dca4bf","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-7984,528],"parameters":{"color":7,"width":704,"height":1968,"content":"# n8n Lead Qualification & Sales Intelligence Workflow (Top of Funnel)\n\n### Overview / Purpose\nThis workflow automatically processes new free-trial / lead sign-ups in real time:\n\n- Catches a webhook from any source (Webflow form, Intercom, custom agent, etc.)\n- Filters out personal / disposable / .edu emails → only business emails continue\n- Validates the company website is live\n- Scrapes the website with Firecrawl to find the official LinkedIn company page\n- Enriches the company via AI Agent (Scrapin.io) → pulls name, follower count, headcount, HQ location, industry, and clean description\n- Runs a multi-factor scoring engine (Location + Headcount + Industry)\n- Sends a beautiful rich Slack notification to the sales team with score, rating, and quick-action buttons\n- Segments the lead by score tier (Very High / High / Mid / Low)\n- Checks if the lead already exists in Instantly\n- Adds qualified leads to the correct Instantly campaign with first/last name extracted from email\n\n### Core Flow (Step-by-Step)\n\n1. **Webhook** – Trigger (POST /new-lead)\n2. **Extract Email Root Domain** – Pulls `@company.com` part\n3. **Blacklist Regex Domains** – Blocks all personal, free, and .edu emails\n4. **Check Email Not Null** – Safety gate\n5. **Check if Website Exists** – HEAD request (continues only on 200-399)\n6. **Firecrawl Scrape** – Scrapes homepage looking for LinkedIn URL in footer/links\n7. **Extract LinkedIn Url** – Code node that finds and cleans `/company/` URL\n8. **Check LinkedIn Not Null + Is Company Page** – Rejects personal profiles\n9. **LinkedIn Agent** (AI Agent)\n   - Uses Scrapin.io enrichment tool\n   - Structured output: company_name, followers, employee_count, headquarters_location, industry, description\n10. **Audit LI Results** – Ensures all key fields returned\n11. **Sanitize Description** – Cleans Unicode, newlines, caps length for Slack\n12. **Normalize Country** – GPT-4.1-nano turns \"Sheridan, US\" → \"United States\"\n13. **Score Country** – Code node (0–10 points based on market tier)\n14. **Score Staff Count** – Code node (0–10 points based on headcount buckets)\n15. **Industry Scoring** – Code node (normalizes raw industry + 0–10 points)\n16. **Algo Score** – Final score = weighted average → 0–100 + rating label (\"Excellent Fit\", \"Good Fit\", etc.)\n17. **Send to Slack** – Rich blocks with:\n    - Email, Company Name, Location (+score), Staff Count (+score), Followers, Industry (+score)\n    - Clean description\n    - Final Score + Rating\n    - Buttons: Visit LinkedIn + Visit Website\n18. **Score-Based Routing**\n    - Very High (90–100)\n    - High (70–89)\n    - Mid (50–69)\n    - Low (0–49)\n19. **Instantly Checks** – For each tier: search if lead already exists\n20. **Extract Name From Email** (GPT) – Turns `john.smith@company.com` → First/Last Name (or \"there\")\n21. **Wait** nodes (optional delay before adding)\n22. **Add Lead to Campaign** – Pushes to Instantly with website custom field\n\n### Scoring Logic (Fully Configurable in Code Nodes)\n\nBased on your ICP, narrow down your scoring based on how you want to segment.\n\n### What Makes This Workflow Powerful\n- Zero manual work after webhook\n- Rich, actionable Slack alerts (sales team loves it)\n- Smart scoring that matches real ICP\n- Built-in deduplication with Instantly\n- Fully modular code nodes (easy to tweak scoring without breaking anything)\n- Heavy error handling and safety gates\n\n---\n\n**This is a complete, production-ready, public template.**  \nYou can import the JSON and it will run immediately after you connect your own:\n- Webhook source\n- Firecrawl API\n- Scrapin.io (or alternative)\n- OpenAI\n- Slack\n- Instantly\n\nAny questions/comments/concerns, please email brandon@topoffunnel.com\nBuilt by Brandon Charleson\nhttps://www.youtube.com/@brandoncharleson\nhttps://www.linkedin.com/in/brandon-charleson \nhttps://x.com/brandon_ai"},"typeVersion":1}],"active":false,"pinData":{"Webhook":[{"json":{"email":"brandon@instantly.ai"}}],"Algo Score":[{"json":{"output":{"scores":{"rating":"Moderate Fit","industry":3,"location":10,"totalRaw":13,"headcount":0,"finalScore":100}}}}],"Score Country":[{"json":{"index":0,"message":{"role":"assistant","content":{"country":"United States"},"refusal":null,"annotations":[]},"logprobs":null,"finish_reason":"stop","locationScore":10,"normalizedCountry":"United States"},"pairedItem":{"item":0}}],"Send to slack":[{"json":{"ok":true,"channel":"C08HPT21153","message":{"ts":"1771864356.669349","team":"T06F2FTGZFH","text":"New Free Trial Lead!","type":"message","user":"U07CGE0L4CD","app_id":"A07CMQXBTA8","blocks":[{"text":{"text":":zap: *New Scored Lead!*","type":"mrkdwn","verbatim":false},"type":"section","block_id":"ABiyQ"},{"type":"context","block_id":"RLy69","elements":[{"text":"This report provides insights into the company's online presence.","type":"mrkdwn","verbatim":false}]},{"type":"divider","block_id":"3717+"},{"text":{"text":"*Email:* <mailto:brandon@instantly.ai|brandon@instantly.ai>\n*Company Name:* <http://Instantly.ai|Instantly.ai>\n*Company Location:* Sheridan, US (10/10 points)\n*Staff Count:* 215 (0/10 points)\n*Follower Count:* 55291\n*Industry:* Other Industries (3/10)","type":"mrkdwn","verbatim":false},"type":"section","block_id":"uPCdN"},{"type":"divider","block_id":"OJS1+"},{"text":{"text":"*Description:* All-in-one outreach platform for business growth. Easily find, reach, and convert prospects with AI-powered automation, high deliverability, and a built-in lead database. No extra tools or complicated setup. Get started for free and launch your first cold email campaign today.","type":"mrkdwn","verbatim":false},"type":"section","block_id":"q3ri6"},{"text":{"text":"*Lead Score:* 43/100\n*Rating:* Moderate Fit","type":"mrkdwn","verbatim":false},"type":"section","block_id":"b0G1q"},{"type":"actions","block_id":"pz0j5","elements":[{"url":"https://www.linkedin.com/company/instantlyapp/","text":{"text":"Visit LinkedIn","type":"plain_text","emoji":true},"type":"button","action_id":"dWr2Q"},{"url":"https://instantly.ai","text":{"text":"Visit Website :globe_with_meridians:","type":"plain_text","emoji":true},"type":"button","action_id":"TSott"}]}],"bot_id":"B07D84YMUJC","bot_profile":{"id":"B07D84YMUJC","name":"TOFU Automation","icons":{"image_36":"https://avatars.slack-edge.com/2025-01-30/8375478404882_8586ad8cd4ed5c09a0fd_36.png","image_48":"https://avatars.slack-edge.com/2025-01-30/8375478404882_8586ad8cd4ed5c09a0fd_48.png","image_72":"https://avatars.slack-edge.com/2025-01-30/8375478404882_8586ad8cd4ed5c09a0fd_72.png"},"app_id":"A07CMQXBTA8","deleted":false,"team_id":"T06F2FTGZFH","updated":1738255992,"user_id":"U07CGE0L4CD"}},"message_timestamp":"1771864356.669349"},"pairedItem":{"item":0}}],"LinkedIn Agent":[{"json":{"output":{"industry":"Software Development","followers":55291,"description":"All-in-one outreach platform for business growth.\n\nEasily find, reach, and convert prospects with AI-powered automation, high deliverability, and a built-in lead database. No extra tools or complicated setup.\n\nGet started for free and launch your first cold email campaign today.","company_name":"Instantly.ai","employee_count":215,"headquarters_location":"Sheridan, US"}},"pairedItem":{"item":0}}],"Firecrawl Scrape":[{"json":{"data":{"links":["https://instantly.ai/","https://instantly.ai/email-accounts","https://instantly.ai/b2b-lead-finder","https://instantly.ai/email-verification","https://instantly.ai/email-warmup","https://instantly.ai/inbox-placement","https://instantly.ai/crm","https://instantly.ai/copilot","https://instantly.ai/website-visitors","https://instantly.ai/demo","https://instantly.ai/agency","https://instantly.ai/sales","https://instantly.ai/founders","https://instantly.ai/sales-development","https://instantly.ai/marketers","https://instantly.ai/enterprise","https://instantly.ai/freelancers","https://instantly.ai/vip","https://instantly.ai/blog","https://app.instantly.ai/app/accelerator","https://instantly.ai/review","https://www.facebook.com/groups/coldemailmasterclass","https://instantly.ai/affiliate","https://help.instantly.ai/en/","https://instantly.ai/experts","https://instantly.ai/careers","https://developer.instantly.ai/","https://instantly.ai/slack-community","https://instantly.ai/refer-a-friend","https://instantly.ai/marketplace","https://instantly.ai/integrations-application","https://instantly.ai/pricing","https://app.instantly.ai/auth/login","https://app.instantly.ai/auth/signup","https://instantly.ai/#","https://www.linkedin.com/company/instantlyapp/","https://www.youtube.com/@InstantlyAI","https://instantly.ai/drafts/pricing2","https://instantly.ai/about","https://instantly.ai/wall-of-love","https://instantly.ai/case-study","https://instantly-docs.vercel.app/","https://instantly.ai/terms","https://instantly.ai/privacy","https://app.instantly.ai/privacy/opt-out","https://app.instantly.ai/privacy/info","https://instantly.ai/cookie-notice"],"metadata":{"url":"https://instantly.ai/","title":"Instantly.ai - Sales Engagement & Lead Intelligence","favicon":"https://cdn.prod.website-files.com/63860c8c65e7bef4a1eeebeb/63f62e4f7dc7e3426e9b7874_cleaned_rounded_favicon.png","og:type":"website","ogImage":"https://cdn.prod.website-files.com/63860c8c65e7bef4a1eeebeb/68bfa9a2f510c2f697a9a4f1_Frame%202147228399%201%20(3).webp","ogTitle":"Instantly.ai - Sales Engagement & Lead Intelligence","language":"en","og:image":"https://cdn.prod.website-files.com/63860c8c65e7bef4a1eeebeb/68bfa9a2f510c2f697a9a4f1_Frame%202147228399%201%20(3).webp","og:title":"Instantly.ai - Sales Engagement & Lead Intelligence","scrapeId":"019c8b36-c318-76bc-b56e-ad916d7151f5","timezone":"America/New_York","viewport":"width=device-width, initial-scale=1","proxyUsed":"basic","sourceURL":"instantly.ai","statusCode":200,"contentType":"text/html; charset=utf-8","creditsUsed":5,"description":"Instantly turns leads into clients with Automated Outreach, Deliverability Network, Sales Engagement, B2B Lead Database & AI-Powered CRM","twitter:card":"summary_large_image","ogDescription":"Instantly turns leads into clients with Automated Outreach, Deliverability Network, Sales Engagement, B2B Lead Database & AI-Powered CRM","twitter:image":"https://cdn.prod.website-files.com/63860c8c65e7bef4a1eeebeb/68bfa9a2f510c2f697a9a4f1_Frame%202147228399%201%20(3).webp","twitter:title":"Instantly.ai - Sales Engagement & Lead Intelligence","og:description":"Instantly turns leads into clients with Automated Outreach, Deliverability Network, Sales Engagement, B2B Lead Database & AI-Powered CRM","concurrencyLimited":false,"twitter:description":"Instantly turns leads into clients with Automated Outreach, Deliverability Network, Sales Engagement, B2B Lead Database & AI-Powered CRM","facebook-domain-verification":"zxoeh3b1hyocuadwpy1f68i9x36oco","norton-safeweb-site-verification":"3ft-9ti4a9-spork1kids6lehhu1y4dxr9eh55zwnv68e1y1lm64jp6q6-un5f9gmipamxpiw83yidi6tr0kmuv3guyl05gabz7jov4n8ft3wx9of7bnsbhfrykse1xz"}},"success":true},"pairedItem":{"item":0}}],"Industry Scoring":[{"json":{"index":0,"message":{"role":"assistant","content":{"country":"United States"},"refusal":null,"annotations":[]},"logprobs":null,"staffCount":0,"finish_reason":"stop","industryScore":3,"locationScore":10,"headcountScore":0,"originalIndustry":"","normalizedCountry":"United States","normalizedIndustry":"Other Industries"},"pairedItem":{"item":0}}],"Normalize Country":[{"json":{"index":0,"message":{"role":"assistant","content":{"country":"United States"},"refusal":null,"annotations":[]},"logprobs":null,"finish_reason":"stop"},"pairedItem":{"item":0}}],"Score Staff Count":[{"json":{"index":0,"message":{"role":"assistant","content":{"country":"United States"},"refusal":null,"annotations":[]},"logprobs":null,"staffCount":0,"finish_reason":"stop","locationScore":10,"headcountScore":0,"normalizedCountry":"United States"},"pairedItem":{"item":0}}],"Extract LinkedIn Url":[{"json":{"domain":"","debugInfo":{"dataKeys":["success","data"],"rawLinkedInUrl":"https://www.linkedin.com/company/instantlyapp/","searchComplete":true,"cleanLinkedInUrl":"https://www.linkedin.com/company/instantlyapp/"},"hasLinkedIn":true,"linkedInUrl":"https://www.linkedin.com/company/instantlyapp/","originalUrl":""},"pairedItem":{"item":0}}],"Sanitize Description":[{"json":{"output":{"industry":"Software Development","followers":55291,"description":"All-in-one outreach platform for business growth.\n\nEasily find, reach, and convert prospects with AI-powered automation, high deliverability, and a built-in lead database. No extra tools or complicated setup.\n\nGet started for free and launch your first cold email campaign today.","company_name":"Instantly.ai","employee_count":215,"headquarters_location":"Sheridan, US"},"sanitized_description":"All-in-one outreach platform for business growth. Easily find, reach, and convert prospects with AI-powered automation, high deliverability, and a built-in lead database. No extra tools or complicated setup. Get started for free and launch your first cold email campaign today."},"pairedItem":{"item":0}}],"Check if website exists":[{"json":{"headers":{"age":"473369","date":"Mon, 23 Feb 2026 15:55:37 GMT","vary":"accept-encoding","cf-ray":"9d27e8953d925cfb-SJC","server":"cloudflare","connection":"close","set-cookie":["_cfuvid=p_l_NjU8H.TmjIC1otQuihbWI2wZS_ONuJyfO5PxdlY-1771862137200-0.0.1.1-604800000; path=/; domain=.instantly.ai; HttpOnly; Secure; SameSite=None"],"x-lambda-id":"87505c28-a11d-41da-9cb9-15ae37d1af04","content-type":"text/html; charset=utf-8","last-modified":"Wed, 18 Feb 2026 04:26:07 GMT","surrogate-key":"instantly.ai 63860c8c65e7bef4a1eeebeb pageId:64a085fb5ce2fe576969a987","cf-cache-status":"DYNAMIC","x-frame-options":"SAMEORIGIN","o2o-cache-status":"HIT","surrogate-control":"max-age=2147483647","content-security-policy":"frame-ancestors 'self'","strict-transport-security":"max-age=31536000; includeSubDomains; preload"},"statusCode":200,"statusMessage":"OK"},"pairedItem":{"item":0}}],"Extract Name From Email":[{"json":{"index":0,"message":{"role":"assistant","content":{"Name":"Brandon","Last Name":"","First Name":"Brandon"},"refusal":null,"annotations":[]},"logprobs":null,"finish_reason":"stop"},"pairedItem":{"item":0}}],"Extract Name From Email4":[{"json":{"index":0,"message":{"role":"assistant","content":{"Name":"Brandon","Last Name":"","First Name":"Brandon"},"refusal":null,"annotations":[]},"logprobs":null,"finish_reason":"stop"},"pairedItem":{"item":0}}],"Extract Email Root Domain":[{"json":{"root_domain":"instantly.ai"},"pairedItem":{"item":0}}],"Search Instantly Database3":[{"json":{"items":[]},"pairedItem":{"item":0}}]},"settings":{"executionOrder":"v1"},"versionId":"2e10ae45-6406-4ed8-85ce-6df5fb64de25","connections":{"Wait":{"main":[[{"node":"Add lead to campaign1","type":"main","index":0}]]},"Wait2":{"main":[[{"node":"Add lead to campaign3","type":"main","index":0}]]},"Wait3":{"main":[[{"node":"Add lead to campaign2","type":"main","index":0}]]},"Wait4":{"main":[[{"node":"Add lead to campaign","type":"main","index":0}]]},"Webhook":{"main":[[{"node":"Extract Email Root Domain","type":"main","index":0},{"node":"Execution Data","type":"main","index":0}]]},"Algo Score":{"main":[[{"node":"Send to slack","type":"main","index":0},{"node":"Very High Value Trials (90-100)","type":"main","index":0},{"node":"High Value Trials (70-89)","type":"main","index":0},{"node":"Mid Value Trials (50-69)","type":"main","index":0},{"node":"Low Value Trials (0-49)","type":"main","index":0},{"node":"Consider adding to your CRM","type":"main","index":0}]]},"website_tool":{"ai_tool":[[{"node":"LinkedIn Agent","type":"ai_tool","index":0}]]},"Score Country":{"main":[[{"node":"Score Staff Count","type":"main","index":0}]]},"Check if in db":{"main":[[{"node":"Extract Name From Email","type":"main","index":0}]]},"Check root URL":{"main":[[{"node":"Firecrawl Scrape","type":"main","index":0}]]},"LinkedIn Agent":{"main":[[{"node":"Audit LI Results","type":"main","index":0}]]},"Check if in db1":{"main":[[{"node":"Extract Name From Email2","type":"main","index":0}]]},"Check if in db2":{"main":[[{"node":"Extract Name From Email3","type":"main","index":0}]]},"Check if in db3":{"main":[[{"node":"Extract Name From Email4","type":"main","index":0}]]},"Audit LI Results":{"main":[[{"node":"Sanitize Description","type":"main","index":0}]]},"Firecrawl Scrape":{"main":[[{"node":"Extract LinkedIn Url","type":"main","index":0}]]},"Industry Scoring":{"main":[[{"node":"Algo Score","type":"main","index":0}]]},"Normalize Country":{"main":[[{"node":"Score Country","type":"main","index":0}]]},"Score Staff Count":{"main":[[{"node":"Industry Scoring","type":"main","index":0}]]},"OpenAI Chat Model1":{"ai_languageModel":[[{"node":"LinkedIn Agent","type":"ai_languageModel","index":0}]]},"Add lead to campaign":{"main":[[]]},"Extract LinkedIn Url":{"main":[[{"node":"Check LinkedIn is not null","type":"main","index":0}]]},"Sanitize Description":{"main":[[{"node":"Normalize Country","type":"main","index":0}]]},"Blacklist Regex Domains":{"main":[[{"node":"Check to make sure email is not null","type":"main","index":0}]]},"Check if website exists":{"main":[[{"node":"Check root URL","type":"main","index":0}]]},"Extract Name From Email":{"main":[[{"node":"Wait","type":"main","index":0}]]},"Low Value Trials (0-49)":{"main":[[{"node":"Search Instantly Database","type":"main","index":0}]]},"Extract Name From Email2":{"main":[[{"node":"Wait2","type":"main","index":0}]]},"Extract Name From Email3":{"main":[[{"node":"Wait3","type":"main","index":0}]]},"Extract Name From Email4":{"main":[[{"node":"Wait4","type":"main","index":0}]]},"Mid Value Trials (50-69)":{"main":[[{"node":"Search Instantly Database1","type":"main","index":0}]]},"Extract Email Root Domain":{"main":[[{"node":"Blacklist Regex Domains","type":"main","index":0}]]},"High Value Trials (70-89)":{"main":[[{"node":"Search Instantly Database2","type":"main","index":0}]]},"Search Instantly Database":{"main":[[{"node":"Check if in db3","type":"main","index":0}]]},"Structured Output Parser1":{"ai_outputParser":[[{"node":"LinkedIn Agent","type":"ai_outputParser","index":0}]]},"Check LinkedIn is not null":{"main":[[{"node":"Check if Company or Personal LI Profile","type":"main","index":0}]]},"Search Instantly Database1":{"main":[[{"node":"Check if in db2","type":"main","index":0}]]},"Search Instantly Database2":{"main":[[{"node":"Check if in db1","type":"main","index":0}]]},"Search Instantly Database3":{"main":[[{"node":"Check if in db","type":"main","index":0}]]},"Very High Value Trials (90-100)":{"main":[[{"node":"Search Instantly Database3","type":"main","index":0}]]},"Check to make sure email is not null":{"main":[[{"node":"Check if website exists","type":"main","index":0}]]},"Check if Company or Personal LI Profile":{"main":[[{"node":"LinkedIn Agent","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":54,"nodeTypes":{"CUSTOM.instantly":{"count":8},"n8n-nodes-base.if":{"count":14},"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":6},"n8n-nodes-base.noOp":{"count":1},"n8n-nodes-base.wait":{"count":4},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-base.executionData":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.httpRequestTool":{"count":1},"@n8n/n8n-nodes-langchain.openAi":{"count":5},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":1},"@mendable/n8n-nodes-firecrawl.firecrawl":{"count":1},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Brandon Charleson","username":"brandoncharleson","bio":"Automation architect specializing in enterprise n8n workflows for B2B GTM. CEO of Top of Funnel. Built 100+ integrations & MCP servers (Instantly/HeyReach). Forbes Top 100. Track: 10K+ executions/week, 306hrs saved, $5.92M pipelines, 20.8% reply rates (7x industry avg). Services: end-to-end automation across sales, marketing, ops. From web scraping to AI agents—no workflow impossible. The \"automation wizard.\" LinkedIn: /in/brandon-charleson","verified":false,"links":["http://www.topoffunnel.com"],"avatar":"https://gravatar.com/avatar/c2add4c4eeef9f3fc91fae5abb8665bb850173275f3818f52f7d0dfbbc23fe85?r=pg&d=retro&size=200"},"nodes":[{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":26,"icon":"fa:arrow-right","name":"n8n-nodes-base.noOp","codex":{"data":{"alias":["nothing"],"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/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/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/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/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.noop/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"organization\"]","defaults":{"name":"No Operation, do nothing","color":"#b0b0b0"},"iconData":{"icon":"arrow-right","type":"icon"},"displayName":"No Operation, do nothing","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":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":846,"icon":"fa:tasks","name":"n8n-nodes-base.executionData","codex":{"data":{"alias":["Filter","_Set","Data"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Execution Data","color":"#29A568"},"iconData":{"icon":"tasks","type":"icon"},"displayName":"Execution Data","typeVersion":1,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1250,"icon":"file:openAi.svg","name":"@n8n/n8n-nodes-langchain.openAi","codex":{"data":{"alias":["LangChain","ChatGPT","Sora","DallE","whisper","audio","transcribe","tts","assistant"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Miscellaneous","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg1IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NiAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MSA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K"},"displayName":"OpenAI","typeVersion":2,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":37,"name":"Lead Generation"},{"id":49,"name":"AI Summarization"}],"image":[]}}