{
  "id": "5rSteNyAhrhP0qM1",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Scrape industry growth signals from BrowserAct to Slack reports",
  "tags": [],
  "nodes": [
    {
      "id": "f0b354d8-13d7-4752-9c12-0a50d7ebcba1",
      "name": "OpenRouter Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        720,
        192
      ],
      "parameters": {
        "model": "openai/gpt-4o",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "abf124ff-f591-400d-aefd-bdbbee4b7847",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        944,
        208
      ],
      "parameters": {
        "autoFix": true,
        "jsonSchemaExample": "{\n  \"messages\": [\n    \"\ud83d\udea8 *Growth Report: Property Management*\\n\\n\u2022 *Company A* ($1M)\\n> Link\\n\\n\u2022 *Company B* ($500k)\\n> Link...\"\n  ]\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "28e0fbc7-df5e-4095-8a6a-8a3613772935",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1120,
        0
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "output.messages"
      },
      "typeVersion": 1
    },
    {
      "id": "5c26337c-9501-4d7f-8727-e884105ddc4c",
      "name": "Monthly Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "months"
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "8ca72c00-4d8a-410d-aa7c-19cf164250ed",
      "name": "Set Target Industry",
      "type": "n8n-nodes-base.set",
      "position": [
        208,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "cffd95c1-d05b-4589-85e1-f3e1b10a9c0c",
              "name": "Target_Industry",
              "type": "string",
              "value": "Property Management"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "3c485b3c-f0bf-40d6-afd8-8ca3eecfc3b2",
      "name": "Perform web data extraction",
      "type": "n8n-nodes-browseract.browserAct",
      "position": [
        416,
        0
      ],
      "parameters": {
        "type": "WORKFLOW",
        "timeout": 7200,
        "workflowId": "76594689776452912",
        "workflowConfig": {
          "value": {},
          "schema": [
            {
              "id": "input-growthlist",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "description": "If left blank, the default value defined in BrowserAct will be used.",
              "displayName": "growthlist",
              "defaultMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "input-growthlist"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "credentials": {
        "browserActApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0c87f5c2-01cd-48f1-a094-2e2be214365e",
      "name": "Send the report to the channel",
      "type": "n8n-nodes-base.slack",
      "position": [
        1328,
        0
      ],
      "parameters": {
        "text": "={{ $json[\"output.messages\"] }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C09KLV9DJSX",
          "cachedResultName": "all-browseract-workflow-test"
        },
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "61deb5fe-7390-479d-b37a-a2558e6b4925",
      "name": "Documentation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -464,
        -560
      ],
      "parameters": {
        "width": 380,
        "height": 520,
        "content": "## \u26a1 Workflow Overview & Setup\n\n**Summary:** This automation runs monthly to monitor growth signals (like funding rounds) for companies in a specific target industry (e.g., Property Management). It scrapes data using BrowserAct, filters for recent activity using AI, and sends a curated report to Slack.\n\n### Requirements\n* **Credentials:** BrowserAct, OpenRouter (GPT-4), Slack.\n* **Mandatory:** BrowserAct API (Template: **ABM Signal Monitor**)\n\n### How to Use\n1.  **Credentials:** Set up your BrowserAct, OpenRouter, and Slack credentials in n8n.\n2.  **BrowserAct Template:** Ensure you have the **ABM Signal Monitor** template saved in your BrowserAct account.\n3.  **Configuration:** Update the **Set Target Industry** node with your desired industry keyword (e.g., \"SaaS\", \"Fintech\").\n\n### Need Help?\n[How to Find Your BrowserAct API Key & Workflow ID](https://docs.browseract.com)\n[How to Connect n8n to BrowserAct](https://docs.browseract.com)\n[How to Use & Customize BrowserAct Templates](https://docs.browseract.com)"
      },
      "typeVersion": 1
    },
    {
      "id": "ea1ef292-8631-4781-a241-3499ebea0489",
      "name": "Step 1 Explanation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        -176
      ],
      "parameters": {
        "color": 7,
        "width": 552,
        "height": 136,
        "content": "### \ud83c\udfaf Step 1: Scheduling & Targeting\n\nThe workflow triggers automatically on a monthly schedule. It initializes by setting the specific industry you want to monitor, ensuring the subsequent scraping and filtering are focused.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "4aa5b5af-2773-4f02-8292-9b40276e5a86",
      "name": "Step 2 Explanation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        -176
      ],
      "parameters": {
        "color": 7,
        "width": 936,
        "height": 136,
        "content": "### \ud83c\udf10 \ud83e\udde0  Step 2: Data Extraction, AI Filtering & Reporting\n\nBrowserAct navigates to a data source (e.g., a funding news site or growth list) and scrapes recent company activity. This provides the raw dataset needed for analysis. An AI agent processes the raw scraped data. It filters companies based on your target industry and the date of the event (current month only). It then aggregates the valid leads into a clean, readable report format."
      },
      "typeVersion": 1
    },
    {
      "id": "313fe4f4-0a5c-42b9-944f-31b9d490dcf9",
      "name": "Analyze the leads and generate Slack report",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        768,
        0
      ],
      "parameters": {
        "text": "=Scraped Data:  {{ $json.output.string }},\nTarget Industry :{{ $('Set Target Industry').first().json.Target_Industry }}",
        "options": {
          "systemMessage": "You are a Lead Aggregation Engine. Your job is to generate a consolidated report for Slack.\n\n**INPUTS:**\n1. \"Target Industry\": The industry to filter for (e.g., \"Property Management\").\n2. \"Scraped Data\": A JSON list of companies.\n\n**LOGIC:**\n1. **FILTER:** Scan the list. Keep ONLY companies where \"Industries\" contains the \"Target Industry\". Ignore all others.\n2. **DATE CHECK:** Keep ONLY companies with \"Funding_date\" in the current month/year (January 2026).\n3. **AGGREGATE:** Combine ALL valid matches into a single formatted list. Do NOT output them one by one.\n\n**SPLITTING RULE (CRITICAL):**\nSlack has a character limit.\n- If you find 1-5 companies, return an array with **ONE** string containing the full report.\n- If you find 6+ companies, split the report into **TWO** or more strings inside the array so no single message is too long.\n\n**OUTPUT FORMAT (STRICT JSON):**\nOutput a JSON Object containing a \"messages\" array.\n{\n  \"messages\": [\n    \"\ud83d\udea8 *Growth Report: Property Management*\\n\\n\u2022 *Company A* ($1M)\\n> Link\\n\\n\u2022 *Company B* ($500k)\\n> Link...\"\n  ]\n}\n\n**MESSAGE FORMATTING:**\n- Start the first message with: \"\ud83d\udea8 *Growth Signal Report: [Target Industry]*\"\n- Use bullet points (`\u2022`) for each company.\n- Format: `\u2022 *[Name]* (Raised [Amount])`\n- Next line: `> \ud83d\udd17 [Website]`\n- Next line: `> \ud83d\udca1 *Why:* [Brief context]`"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3
    },
    {
      "id": "ae15a5c2-6a9d-4358-b4be-d047efe4c8a9",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        -528
      ],
      "parameters": {
        "color": 6,
        "width": 544,
        "height": 320,
        "content": "@[youtube](6v3BZ7fw0sI)"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "e98ff9e5-1d90-4025-b8a1-b78f39d38081",
  "connections": {
    "Split Out": {
      "main": [
        [
          {
            "node": "Send the report to the channel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Monthly Trigger": {
      "main": [
        [
          {
            "node": "Set Target Industry",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Target Industry": {
      "main": [
        [
          {
            "node": "Perform web data extraction",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Structured Output Parser",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Analyze the leads and generate Slack report",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Analyze the leads and generate Slack report",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Perform web data extraction": {
      "main": [
        [
          {
            "node": "Analyze the leads and generate Slack report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze the leads and generate Slack report": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}