{
  "id": "wqZWgW8ymv4cC0Dk",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Crunchbase Startup Activity Monitor",
  "tags": [],
  "nodes": [
    {
      "id": "99e036b3-48e2-401d-91aa-e16a3b1951c2",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        760,
        260
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "815b5136-f670-4302-afd2-48bb799a6085",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1000,
        260
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"subject\": \"\ud83d\ude80 Crunchbase Company Updates - June 5, 2025\",\n  \"body\": \"\ud83d\ude80 Here's a summary of recent company updates from Crunchbase:\\n\\n\ud83d\udd39 **OpenAI**\\nAI research and deployment company.\\nIndustry: Artificial Intelligence, Machine Learning\\nLocation: San Francisco, USA\\nLast Updated: June 5, 2025\\n\\n\ud83d\udd39 **DeepMind**\\nSolving intelligence to benefit humanity.\\nIndustry: Deep Learning, Healthcare\\nLocation: London, GBR\\nLast Updated: June 5, 2025\"\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "c11c92e9-6ec1-42a9-885a-636677735131",
      "name": "Trigger Manual Test",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "18b76b77-e9ec-4f57-a2d5-74d80daeaa14",
      "name": "Fetch Crunchbase Updates",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        220,
        0
      ],
      "parameters": {
        "url": "https://api.crunchbase.com/api/v4/entities/organizations",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "user_key",
              "value": "YOUR_API_KEY"
            },
            {
              "name": "updated_since",
              "value": "2025-06-05"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "5a5391e9-99f2-4658-879f-8e3c29d10511",
      "name": "Extract Company Details",
      "type": "n8n-nodes-base.set",
      "position": [
        440,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "4bebf879-2d02-4fa8-ac71-91b7d83d3ed9",
              "name": "data.items[0].properties.name",
              "type": "string",
              "value": "={{ $json.data.items[0].properties.name }}"
            },
            {
              "id": "31995946-952d-4dc3-ad4d-1bd925c11716",
              "name": "data.items[0].properties.short_description",
              "type": "string",
              "value": "={{ $json.data.items[0].properties.short_description }}"
            },
            {
              "id": "2e3bd9f3-0c2a-49f5-b556-a392bb221790",
              "name": "data.items[0].properties.categories",
              "type": "string",
              "value": "={{ $json.data.items[0].properties.categories }}"
            },
            {
              "id": "6af96090-ee35-49bd-9c08-a41b7f0c2e64",
              "name": "data.items[0].properties.city_name",
              "type": "string",
              "value": "={{ $json.data.items[0].properties.city_name }}"
            },
            {
              "id": "ccb2b151-9184-4a50-8c80-b12ba95a13b3",
              "name": "data.items[0].properties.country_code",
              "type": "string",
              "value": "={{ $json.data.items[0].properties.country_code }}"
            },
            {
              "id": "839bd2ea-e287-4fb7-902c-b7ea702692aa",
              "name": "data.items[0].properties.updated_at",
              "type": "string",
              "value": "={{ $json.data.items[0].properties.updated_at }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "76b02289-ec75-4fc1-887e-b2ba0bc4d814",
      "name": "Summarizer Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        800,
        0
      ],
      "parameters": {
        "text": "=Name: {{ $json.data.items[0].properties.name }}\nDescription: {{ $json.data.items[0].properties.short_description }}\ncategories: {{ $json.data.items[0].properties.categories }}\ncity name: {{ $json.data.items[0].properties.city_name }}\ncountry name: {{ $json.data.items[0].properties.country_code }}\nupdated at: {{ $json.data.items[0].properties.updated_at }}",
        "options": {
          "systemMessage": "You are a helpful assistant that writes email-ready summaries of recent company updates from Crunchbase. \n\nThe input contains data about recently updated organizations including their name, description, categories, location, and update time.\n\nSummarize the companies clearly in a professional tone. Include:\n- Company name (bold or highlighted)\n- One-line description\n- Industry/categories (comma-separated)\n- Location (City, Country)\n- Last updated time (formatted)\n\nFormat it for a human reader in plain text or HTML for email use. Use line breaks or bullet points to separate companies.\nAvoid repeating keys or technical jargon.\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "a6cd42af-6785-4b25-bdd9-f66badc98a65",
      "name": "Send Email with Summary",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1340,
        0
      ],
      "parameters": {
        "sendTo": "user@example.com",
        "message": "={{ $json.output.body }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "={{ $json.output.subject }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "1036ea4c-3106-406f-b0c4-6b40b70a47f1",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        -1280
      ],
      "parameters": {
        "color": 3,
        "width": 640,
        "height": 1460,
        "content": "## \ud83d\udd39 **SECTION 1: Data Collection & Preprocessing**\n\n### \ud83d\udccd Nodes Involved:\n\n* \u2705 `Trigger Manual Test`\n* \ud83c\udf10 `Fetch Crunchbase Updates`\n* \u270f\ufe0f `Extract Company Details`\n\n---\n\n### \ud83e\udde9 1. `Trigger Manual Test` \ud83d\uddb1\ufe0f\n\n**Purpose:** This node is just for testing. It lets you **manually start** your workflow with a click.\n\n> \ud83d\udca1 In production, replace this with a **cron node** \u23f0 if you want this workflow to run **automatically every day**.\n\n---\n\n### \ud83c\udf10 2. `Fetch Crunchbase Updates` (HTTP Request)\n\n**Purpose:** This node sends a request to the [Crunchbase API](https://data.crunchbase.com/docs) to **fetch companies updated in the last 24 hours**.\n\n\ud83d\udd27 Here's what it does:\n\n* Makes a **GET request** to:\n  `https://api.crunchbase.com/api/v4/entities/organizations`\n* Adds parameters:\n\n  * `user_key`: Your Crunchbase API key \ud83d\udd10\n  * `updated_since`: Yesterday\u2019s date \ud83d\udcc5\n\n> \u2705 It returns a **list of updated companies** including names, descriptions, locations, and industries.\n\n---\n\n### \u270f\ufe0f 3. `Extract Company Details`\n\n**Purpose:** Crunchbase API data can be complex. This node simplifies things.\n\n\ud83d\udee0 It:\n\n* Extracts **essential fields only** like:\n\n  * Name \ud83c\udfe2\n  * Description \ud83d\udcd6\n  * Location \ud83d\udccd\n  * Industry \ud83c\udfed\n  * Last Updated Date \ud83d\uddd3\ufe0f\n* Prepares this data for the AI summarizer in a clean format.\n\n> \ud83d\udca1 This step ensures only the relevant information is passed forward, saving processing time and cost.\n\n---\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "ccbc1ef4-0dbe-40c1-9a33-e6f6787d64d1",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        680,
        -1220
      ],
      "parameters": {
        "color": 5,
        "width": 500,
        "height": 1640,
        "content": "## \ud83e\udde0 **SECTION 2: AI Summary + Email Delivery**\n\n### \ud83e\udd16 Nodes Involved:\n\n* \ud83e\udde0 `Summarize Company Updates`\n* \ud83d\udcac `OpenAI Chat (GPT-4 or GPT-3.5)`\n* \ud83d\udd0e `Parse JSON Email Summary`\n\n---\n\n### \ud83e\udd16 4. `Summarize Company Updates` (AI Agent)\n\n**Purpose:** This is where the **magic happens**. It takes the company data and feeds it to an AI to generate a **plain-English summary**.\n\n\ud83d\udee0 It connects with:\n\n* `OpenAI Chat Model` (GPT-4 / 3.5):\n  Generates clear, readable summaries.\n* `Structured Output Parser`:\n  Forces the AI to return a **valid JSON object** with:\n\n  * `subject`: for the email subject line\n  * `body`: the plain text of the email\n\n\ud83d\udcdc **System Prompt Used**:\n\n```txt\nYou are a helpful assistant that summarizes Crunchbase company updates.\n\nOutput your response strictly as valid JSON with two properties: \n- \"subject\": a string for the email subject line.\n- \"body\": a string for the email content formatted in plain text. Use \"\\n\" for new lines inside the string.\n\nDo NOT output anything other than the JSON object.  \nEnsure the JSON is well-formed with no trailing commas or syntax errors.\n```\n\n---\n\n### \ud83d\udd0e 5. `Parse JSON Email Summary` (Structured Output Parser)\n\n**Purpose:** Ensures that the response from the AI is valid JSON and separates `subject` and `body`.\n\n\u2705 Without this, n8n can't reliably extract the email content from the AI's response.\n\n---\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "4688303f-35a1-4f0c-bdf8-c66326c46eea",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1260,
        -360
      ],
      "parameters": {
        "color": 6,
        "width": 300,
        "height": 540,
        "content": "## \ud83e\udde0 **SECTION 3: Send email with summary (Gmail)\n\n**Purpose:** Finally, this node sends you an email \ud83d\udce8 with the Crunchbase update summaries.\n\n\ud83d\udee0 It uses:\n\n* `{{$json.subject}}` for the email subject\n* `{{$json.body}}` for the content\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "735ec384-c931-4ccd-8f10-5140beee552a",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1460,
        -1280
      ],
      "parameters": {
        "color": 4,
        "width": 1300,
        "height": 320,
        "content": "=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
      },
      "typeVersion": 1
    },
    {
      "id": "208f299f-4fe1-406e-8014-82e47d0a9a2f",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1460,
        -940
      ],
      "parameters": {
        "color": 4,
        "width": 1289,
        "height": 3278,
        "content": " \ud83e\udde0 Automating Crunchbase Insights with n8n\n\n### \ud83d\udcc8 Get Daily Company Updates \u2192 \ud83e\udd16 Summarize \u2192 \ud83d\udce7 Email Digest\n\nThis workflow helps you stay informed on the latest company activity (from Crunchbase) by automating the entire process \u2014 fetching updates, summarizing them with AI, and emailing them to you daily.\n\n---\n\n## \ud83d\udd39 **SECTION 1: Data Collection & Preprocessing**\n\n### \ud83d\udccd Nodes Involved:\n\n* \u2705 `Trigger Manual Test`\n* \ud83c\udf10 `Fetch Crunchbase Updates`\n* \u270f\ufe0f `Extract Company Details`\n\n---\n\n### \ud83e\udde9 1. `Trigger Manual Test` \ud83d\uddb1\ufe0f\n\n**Purpose:** This node is just for testing. It lets you **manually start** your workflow with a click.\n\n> \ud83d\udca1 In production, replace this with a **cron node** \u23f0 if you want this workflow to run **automatically every day**.\n\n---\n\n### \ud83c\udf10 2. `Fetch Crunchbase Updates` (HTTP Request)\n\n**Purpose:** This node sends a request to the [Crunchbase API](https://data.crunchbase.com/docs) to **fetch companies updated in the last 24 hours**.\n\n\ud83d\udd27 Here's what it does:\n\n* Makes a **GET request** to:\n  `https://api.crunchbase.com/api/v4/entities/organizations`\n* Adds parameters:\n\n  * `user_key`: Your Crunchbase API key \ud83d\udd10\n  * `updated_since`: Yesterday\u2019s date \ud83d\udcc5\n\n> \u2705 It returns a **list of updated companies** including names, descriptions, locations, and industries.\n\n---\n\n### \u270f\ufe0f 3. `Extract Company Details`\n\n**Purpose:** Crunchbase API data can be complex. This node simplifies things.\n\n\ud83d\udee0 It:\n\n* Extracts **essential fields only** like:\n\n  * Name \ud83c\udfe2\n  * Description \ud83d\udcd6\n  * Location \ud83d\udccd\n  * Industry \ud83c\udfed\n  * Last Updated Date \ud83d\uddd3\ufe0f\n* Prepares this data for the AI summarizer in a clean format.\n\n> \ud83d\udca1 This step ensures only the relevant information is passed forward, saving processing time and cost.\n\n---\n\n## \ud83e\udde0 **SECTION 2: AI Summary + Email Delivery**\n\n### \ud83e\udd16 Nodes Involved:\n\n* \ud83e\udde0 `Summarize Company Updates`\n* \ud83d\udcac `OpenAI Chat (GPT-4 or GPT-3.5)`\n* \ud83d\udd0e `Parse JSON Email Summary`\n* \ud83d\udcec `Send Email with Summary`\n\n---\n\n### \ud83e\udd16 4. `Summarize Company Updates` (AI Agent)\n\n**Purpose:** This is where the **magic happens**. It takes the company data and feeds it to an AI to generate a **plain-English summary**.\n\n\ud83d\udee0 It connects with:\n\n* `OpenAI Chat Model` (GPT-4 / 3.5):\n  Generates clear, readable summaries.\n* `Structured Output Parser`:\n  Forces the AI to return a **valid JSON object** with:\n\n  * `subject`: for the email subject line\n  * `body`: the plain text of the email\n\n\ud83d\udcdc **System Prompt Used**:\n\n```txt\nYou are a helpful assistant that summarizes Crunchbase company updates.\n\nOutput your response strictly as valid JSON with two properties: \n- \"subject\": a string for the email subject line.\n- \"body\": a string for the email content formatted in plain text. Use \"\\n\" for new lines inside the string.\n\nDo NOT output anything other than the JSON object.  \nEnsure the JSON is well-formed with no trailing commas or syntax errors.\n```\n\n---\n\n### \ud83d\udd0e 5. `Parse JSON Email Summary` (Structured Output Parser)\n\n**Purpose:** Ensures that the response from the AI is valid JSON and separates `subject` and `body`.\n\n\u2705 Without this, n8n can't reliably extract the email content from the AI's response.\n\n---\n\n### \ud83d\udce7 6. `Send Email with Summary` (Gmail)\n\n**Purpose:** Finally, this node sends you an email \ud83d\udce8 with the Crunchbase update summaries.\n\n\ud83d\udee0 It uses:\n\n* `{{$json.subject}}` for the email subject\n* `{{$json.body}}` for the content\n\n> \ud83d\udca1 You can configure this to send it to your **team**, **investors**, or even yourself daily to stay updated.\n\n---\n\n## \ud83c\udfc1 What This Workflow Does for You\n\n\u2728 **Effortlessly monitor industry trends**\n\ud83d\udcec **Get a beautifully summarized digest every day**\n\u23f3 **Save hours of manual research**\n\ud83d\udca1 **Perfect for startup founders, analysts, investors, and marketers**\n\n---\n\n## \u2705 Bonus Tip for Beginners\n\nTo make this **run automatically every day**, add this node at the top:\n\n* \ud83d\udd52 `Cron Node`\n  Set schedule: every day at 8 AM (or whenever you like)\n\n---\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "5812b502-7fa9-4497-bcaa-3d0866c70c89",
  "connections": {
    "Summarizer Agent": {
      "main": [
        [
          {
            "node": "Send Email with Summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Summarizer Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Trigger Manual Test": {
      "main": [
        [
          {
            "node": "Fetch Crunchbase Updates",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Company Details": {
      "main": [
        [
          {
            "node": "Summarizer Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Crunchbase Updates": {
      "main": [
        [
          {
            "node": "Extract Company Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Summarizer Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}