AutomationFlowsAI & RAG › Monitor Competitor Funding with Apify, Google Gemini, Google Sheets and Slack

Monitor Competitor Funding with Apify, Google Gemini, Google Sheets and Slack

Byiamvaar @iamvaar on n8n.io

This workflow runs every Monday at 8AM to pull a competitor list from Google Sheets, scrape the latest Crunchbase data via Apify, detect new funding, generate a strategic impact summary with Google Gemini, send an alert to Slack, and update the spreadsheet with the results. Runs…

Cron / scheduled trigger★★★★☆ complexityAI-powered20 nodesGoogle SheetsHTTP RequestSlackGoogle Gemini ChatOutput Parser StructuredAgent
AI & RAG Trigger: Cron / scheduled Nodes: 20 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #17574 — we link there as the canonical source.

This workflow follows the Agent → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "aH4DrspEgLzvqOML",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Competitor Intelligence Radar",
  "tags": [],
  "nodes": [
    {
      "id": "cd7c0a2b-9c1f-44e7-8ab9-e02c3de48066",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1856,
        -336
      ],
      "parameters": {
        "width": 480,
        "height": 864,
        "content": "## Competitor Intelligence Radar\n\n### How it works\n\nThe workflow runs on a weekly schedule to retrieve a list of competitors from a Google Sheet.\\nIt builds inputs and triggers an Apify actor to scrape the latest data from Crunchbase.\\nThe new data is compared against the baseline to detect if any competitor has received new funding.\\nIf new funding is found, Google Gemini analyzes its strategic impact and outputs a structured summary.\\nThe insights are posted as a Slack alert and the spreadsheet is updated with the new funding details.\\nIf no funding changes are detected, the workflow simply logs the check in the spreadsheet.\n\n### Setup steps\n\n- [ ] Connect your Google Sheets credential and select the competitor tracking spreadsheet.\n- [ ] Configure the Apify HTTP Request node with your API token and Crunchbase actor details.\n- [ ] Add your Google Gemini API key to the AI Agent node.\n- [ ] Connect your Slack credential and specify the target channel for notifications.\n\n### Customization\n\nYou can change the schedule trigger frequency, or customize the Gemini prompt to focus on specific insights relevant to your industry."
      },
      "typeVersion": 1
    },
    {
      "id": "698f3123-6ced-49ee-b02d-d6ecaf52ab9e",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2416,
        -80
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 304,
        "content": "## Fetch competitor list\n\nTriggers weekly to retrieve the list of competitors from a spreadsheet."
      },
      "typeVersion": 1
    },
    {
      "id": "a95d6273-4041-4cf0-97cb-820c64cf826a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2864,
        -80
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 304,
        "content": "## Scrape Crunchbase data\n\nPrepares input parameters and triggers the Apify Crunchbase scraper."
      },
      "typeVersion": 1
    },
    {
      "id": "d94f34a8-a004-4225-ae93-9984230e6457",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3312,
        -80
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 304,
        "content": "## Detect new funding\n\nCompares new data against previous records to identify new funding."
      },
      "typeVersion": 1
    },
    {
      "id": "a687dce0-5930-4f26-bead-e12cb035dac7",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3760,
        -336
      ],
      "parameters": {
        "color": 7,
        "width": 544,
        "height": 512,
        "content": "## AI strategic analysis\n\nUses Google Gemini to analyze the strategic impact of the new funding."
      },
      "typeVersion": 1
    },
    {
      "id": "08b01f27-392f-4839-a542-3a69fff10428",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4336,
        -224
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 304,
        "content": "## Alert and save changes\n\nSends a Slack notification with the analysis and updates the sheet."
      },
      "typeVersion": 1
    },
    {
      "id": "212ce1a7-1408-4e8b-9fc6-d5e37cda9c6d",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3824,
        208
      ],
      "parameters": {
        "color": 7,
        "height": 320,
        "content": "## Log no change\n\nUpdates the spreadsheet to log that no new funding was detected."
      },
      "typeVersion": 1
    },
    {
      "id": "872f179c-9d44-497d-b37b-19520caf2cb2",
      "name": "Every Monday 8AM Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        2464,
        48
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 8 * * 1"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "825e3c42-6a17-488b-b4a1-ca26ef62507f",
      "name": "Read Competitors from Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2688,
        48
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1530329884,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1IEaIo3FoDDT8VcHH0jd3yjA2dCi_8xjqeCsJ7I_-cgg/edit#gid=1530329884",
          "cachedResultName": "Competitor Intelligence Radar"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1IEaIo3FoDDT8VcHH0jd3yjA2dCi_8xjqeCsJ7I_-cgg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1IEaIo3FoDDT8VcHH0jd3yjA2dCi_8xjqeCsJ7I_-cgg/edit?usp=drivesdk",
          "cachedResultName": "Competitor Intelligence Radar"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "7f5940f8-e56a-4740-ae02-ff9ebe7b4b4c",
      "name": "Prepare Scraper Input",
      "type": "n8n-nodes-base.code",
      "position": [
        2912,
        48
      ],
      "parameters": {
        "jsCode": "const urls = items\n  .filter(item => item.json['Status'] !== 'Paused' && item.json['Crunchbase URL'])\n  .map(item => ({ url: item.json['Crunchbase URL'] }));\n\nreturn [{ json: { company_urls: urls } }];"
      },
      "typeVersion": 2
    },
    {
      "id": "cec72b29-b814-47c0-91b6-c8a901913b0f",
      "name": "Post to Apify Scraper API",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "run-sync-get-dataset-items blocks until the actor finishes and returns the dataset directly, so no separate polling/wait node is needed. n8n auto-splits a top-level JSON array response into one item per company. Prefer moving the token into an HTTP Query Auth credential instead of hardcoding it here.",
      "position": [
        3136,
        48
      ],
      "parameters": {
        "url": "https://api.apify.com/v2/acts/vulnv~crunchbase-scraper-pro/run-sync-get-dataset-items",
        "method": "POST",
        "options": {
          "timeout": 300000
        },
        "jsonBody": "={{ JSON.stringify($json) }}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "notesInFlow": true,
      "typeVersion": 4.2
    },
    {
      "id": "4f2420dc-de81-472f-b94c-cafa7f091e82",
      "name": "Calculate Funding Baseline",
      "type": "n8n-nodes-base.code",
      "position": [
        3360,
        48
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// Fetch baseline from previous node\nconst baselineRows = $('Read Competitors from Sheets').all();\n\n// Apify outputs the URL as \"url\", not \"crunchbase_url\"\nconst match = baselineRows.find(b => b.json['Crunchbase URL'] === $json.url);\nconst oldFunding = match ? Number(match.json['Total Funding (Last Checked)'] || 0) : 0;\n\n// Apify doesn't output a root \"funding_total\". \n// We calculate it by summing the 'value_usd' from all funding rounds.\nlet newFunding = 0;\nif (Array.isArray($json.funding_rounds_list)) {\n  newFunding = $json.funding_rounds_list.reduce((sum, round) => {\n    return sum + (round.money_raised?.value_usd || 0);\n  }, 0);\n}\n\n// Apify outputs the company name as \"name\", not \"organization_name\"\n$json.competitor_name = $json.name || (match ? match.json['Competitor Name'] : 'Unknown');\n$json.old_funding = oldFunding;\n$json.new_funding = newFunding; // Storing the newly calculated total for reference\n$json.new_funding_detected = newFunding > oldFunding;\n$json.funding_delta = newFunding - oldFunding;\n\nreturn $input.item;"
      },
      "typeVersion": 2
    },
    {
      "id": "88b746bf-43da-4609-91ee-ba83647e8d9e",
      "name": "If New Funding Found",
      "type": "n8n-nodes-base.if",
      "position": [
        3584,
        48
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "65aa235e-4093-4c3a-9e99-4ea14b7ce9bc",
              "operator": {
                "type": "boolean",
                "operation": "true"
              },
              "leftValue": "={{ $json.new_funding_detected }}",
              "rightValue": true
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "8f06b7f6-8b70-4134-9567-4597311a5dd3",
      "name": "Parse AI Analysis Output",
      "type": "n8n-nodes-base.code",
      "position": [
        4160,
        -96
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// 1. Grab the AI analysis from the Structured Output Parser\nconst analysis = $json.output.analysis;\n\n// 2. Fetch the rich data from the scraping/baseline node\nconst originalData = $('Calculate Funding Baseline').item.json;\n\n// 3. Extract and format Investors\nconst investors = originalData.investors \n  ? originalData.investors.map(i => i.investor?.value).filter(Boolean).join(', ') \n  : 'N/A';\n\n// 4. Extract and format Tech Stack (grabbing the first 15 technologies so the sheet doesn't get too cluttered)\nconst techStack = originalData.builtwith_tech\n  ? originalData.builtwith_tech.slice(0, 15).map(tech => tech.name).join(', ')\n  : 'N/A';\n\n// 5. Format the funding amount cleanly (e.g., $2,942,208)\nconst formattedFunding = new Intl.NumberFormat('en-US', { \n  style: 'currency', \n  currency: 'USD',\n  maximumFractionDigits: 0\n}).format(originalData.new_funding || 0);\n\n// 6. Return the comprehensive payload for Slack and Google Sheets\nreturn {\n  competitor_name: originalData.competitor_name,\n  crunchbase_url: originalData.url,\n  raw_funding: originalData.new_funding,\n  formatted_funding: formattedFunding,\n  investor_names: investors,\n  tech_stack: techStack,\n  ai_analysis: analysis,\n  last_checked_date: new Date().toISOString()\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "6f0d29ae-2719-40ae-ab7b-ee674a1d6123",
      "name": "Send Slack Alert Message",
      "type": "n8n-nodes-base.slack",
      "position": [
        4384,
        -96
      ],
      "parameters": {
        "text": "=\ud83d\udea8 *COMPETITOR MOVEMENT DETECTED* \ud83d\udea8\n\n*Target:* {{$json.competitor_name}}\n*New Funding Total:* {{ $json.formatted_funding }}\n*Investors:* {{$json.investor_names || 'n/a'}}\n\n\ud83e\udd16 *AI Strategic Analysis:*\n{{$json.ai_analysis}}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C0B8VH1M5PX",
          "cachedResultName": "general"
        },
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "1e5ead27-31d6-4977-abae-f8b39a182afd",
      "name": "Update Sheet on Funding Change",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4608,
        -96
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "active",
            "Funding": "={{ $('Parse AI Analysis Output').item.json.formatted_funding }}",
            "Tech Stack": "={{ $('Parse AI Analysis Output').item.json.tech_stack }}",
            "Investor(s)": "={{ $('Parse AI Analysis Output').item.json.investor_names }}",
            "ai_analysis": "={{ $('Parse AI Analysis Output').item.json.ai_analysis }}",
            "Crunchbase URL": "={{ $('Post to Apify Scraper API').item.json.url }}",
            "Competitor Name": "={{ $('Post to Apify Scraper API').item.json.name }}",
            "Last Alert Sent": "=TRUE",
            "Last Checked Date": "={{$now}}"
          },
          "schema": [
            {
              "id": "Competitor Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Competitor Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Crunchbase URL",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Crunchbase URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ai_analysis",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ai_analysis",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Funding",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Funding",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Investor(s)",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Investor(s)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Tech Stack",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Tech Stack",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Checked Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Last Checked Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Alert Sent",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Last Alert Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Crunchbase URL"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1530329884,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1IEaIo3FoDDT8VcHH0jd3yjA2dCi_8xjqeCsJ7I_-cgg/edit#gid=1530329884",
          "cachedResultName": "Competitor Intelligence Radar"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1IEaIo3FoDDT8VcHH0jd3yjA2dCi_8xjqeCsJ7I_-cgg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1IEaIo3FoDDT8VcHH0jd3yjA2dCi_8xjqeCsJ7I_-cgg/edit?usp=drivesdk",
          "cachedResultName": "Competitor Intelligence Radar"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "3bf82336-eb71-43cf-b1a7-fc3899d1af3e",
      "name": "Update Sheet for No Changes",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3872,
        368
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "Active",
            "Crunchbase URL": "={{ $('Read Competitors from Sheets').item.json['Crunchbase URL'] }}",
            "Last Alert Sent": "FALSE",
            "Last Checked Date": "={{ $now }}"
          },
          "schema": [
            {
              "id": "Competitor Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Competitor Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Crunchbase URL",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Crunchbase URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ai_analysis",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ai_analysis",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Funding",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Funding",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Investor(s)",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Investor(s)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Tech Stack",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Tech Stack",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Checked Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Last Checked Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Alert Sent",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Last Alert Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Crunchbase URL"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1530329884,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1IEaIo3FoDDT8VcHH0jd3yjA2dCi_8xjqeCsJ7I_-cgg/edit#gid=1530329884",
          "cachedResultName": "Competitor Intelligence Radar"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1IEaIo3FoDDT8VcHH0jd3yjA2dCi_8xjqeCsJ7I_-cgg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1IEaIo3FoDDT8VcHH0jd3yjA2dCi_8xjqeCsJ7I_-cgg/edit?usp=drivesdk",
          "cachedResultName": "Competitor Intelligence Radar"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "51aafb4b-314c-43f2-a4b3-15c6dbfa50f3",
      "name": "Google Gemini Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        3808,
        16
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-3.1-flash-lite"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "45571660-7020-4517-b853-4247b6a5a0bb",
      "name": "Parse Structured AI Output",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        3952,
        16
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"analysis\": \"This is a 3-sentence string containing the strategic analysis.\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "76717c10-03e3-4329-9d00-77f6f83ddb0d",
      "name": "Strategic Analysis Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        3808,
        -208
      ],
      "parameters": {
        "text": "=You are an expert competitive intelligence analyst. \nAnalyze the following competitor funding update:\n\n- Competitor: {{ $json.competitor_name }}\n- Previous Funding: ${{ $json.old_funding }}\n- New Funding Total: ${{ $json.new_funding }}\n- Investors: {{ $json.investors ? $json.investors.map(i => i.investor?.value).filter(Boolean).join(', ') : 'unknown' }}\n\nIn exactly 3 punchy sentences, explain what this funding signals about their strategy and how we should react. Ensure the tone is analytical, urgent, and strategic.",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3.1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "2f63693b-6bf2-4da5-8cd5-c5895c8de6c1",
  "nodeGroups": [],
  "connections": {
    "Google Gemini Model": {
      "ai_languageModel": [
        [
          {
            "node": "Strategic Analysis Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "If New Funding Found": {
      "main": [
        [
          {
            "node": "Strategic Analysis Agent",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Update Sheet for No Changes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Scraper Input": {
      "main": [
        [
          {
            "node": "Post to Apify Scraper API",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Every Monday 8AM Trigger": {
      "main": [
        [
          {
            "node": "Read Competitors from Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI Analysis Output": {
      "main": [
        [
          {
            "node": "Send Slack Alert Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Slack Alert Message": {
      "main": [
        [
          {
            "node": "Update Sheet on Funding Change",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Strategic Analysis Agent": {
      "main": [
        [
          {
            "node": "Parse AI Analysis Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post to Apify Scraper API": {
      "main": [
        [
          {
            "node": "Calculate Funding Baseline",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculate Funding Baseline": {
      "main": [
        [
          {
            "node": "If New Funding Found",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Structured AI Output": {
      "ai_outputParser": [
        [
          {
            "node": "Strategic Analysis Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Read Competitors from Sheets": {
      "main": [
        [
          {
            "node": "Prepare Scraper Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow runs every Monday at 8AM to pull a competitor list from Google Sheets, scrape the latest Crunchbase data via Apify, detect new funding, generate a strategic impact summary with Google Gemini, send an alert to Slack, and update the spreadsheet with the results. Runs…

Source: https://n8n.io/workflows/17574/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Created by: Peyton Leveillee Last updated: October 2025

OpenAI Chat, Google Sheets, HTTP Request +5
AI & RAG

CV → Match → Screen → Decide, all automated

HTTP Request, Information Extractor, Google Sheets +7
AI & RAG

This workflow automates the complete blog publishing process. It removes manual work from content creation, image generation, category management, and WordPress publishing by using AI and n8n. It help

Google Gemini Chat, Output Parser Structured, Lm Chat Deep Seek +5
AI & RAG

This workflow is the AI analysis and alerting engine for a complete social media monitoring system. It's designed to work with data scraped from X (formerly Twitter) using a tool like the Apify Tweet

Google Sheets, Google Gemini Chat, Google Sheets Tool +4
AI & RAG

This workflow automates end-to-end ESG (Environmental, Social, and Governance) sustainability reporting for enterprise sustainability teams, compliance officers, and green governance leads. It solves

Agent, OpenAI Chat, Output Parser Structured +12