{
  "name": "Get AI meeting briefs from Google Calendar with SerpAPI, Azure OpenAI and Slack",
  "nodes": [
    {
      "id": "9b47767f-7cc6-4d57-9437-7c03ee5668c1",
      "name": "📋 Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1408,
        160
      ],
      "parameters": {
        "width": 580,
        "height": 832,
        "content": "## 🔍 Who Am I Meeting — Research Assistant\n\n### How it works\nThis workflow automatically researches every person you are about to meet by monitoring your Google Calendar for newly created events.\n\n**S"
      }
    },
    {
      "id": "71d2751c-0af7-4c8f-afa0-cac4823257e7",
      "name": "Section: Event Detection & Filtering",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -816,
        416
      ],
      "parameters": {
        "width": 680,
        "height": 200,
        "content": "## 📅 Event Detection & Filtering\nPolls Google Calendar every minute for newly created events. Skips any event with no external attendees. Extracts the attendee name and company for downstream research"
      }
    },
    {
      "id": "de8ad929-3560-4de7-a01c-a3294d43ec88",
      "name": "Section: Parallel Web Research",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        304
      ],
      "parameters": {
        "width": 500,
        "height": 502,
        "content": "## 🔎 Parallel Web Research\nRuns two SerpAPI Google searches simultaneously — one for the attendee's personal profile and one for their company. Each result set is parsed and cleaned by a dedicated Jav"
      }
    },
    {
      "id": "a1d8ff35-a6c2-4a50-8052-13a9ba4e7ea0",
      "name": "Section: AI Briefing Generation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        384,
        432
      ],
      "parameters": {
        "width": 700,
        "height": 466,
        "content": "## 🤖 AI Briefing Generation\nMerges person and company research data, prepares a combined payload, and passes it to the Azure OpenAI agent. The AI produces a concise meeting brief covering background, "
      }
    },
    {
      "id": "f70a30ae-f091-4a5f-8e2c-0f167cc4ced3",
      "name": "Section: Slack Delivery",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        432
      ],
      "parameters": {
        "width": 460,
        "height": 488,
        "content": "## 📨 Slack Delivery\nFormats the AI-generated brief into a Slack message and delivers it as a direct message to the meeting organiser, ready before the appointment."
      }
    },
    {
      "id": "13418674-a3af-4378-a552-412ae8930531",
      "name": "⚠️ Warning: SerpAPI",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        832
      ],
      "parameters": {
        "width": 260,
        "height": 140,
        "content": "⚠️ **SerpAPI Credentials Required**\nBoth search nodes require a valid SerpAPI key. Rate limits apply — high-volume calendars may exhaust your monthly quota quickly."
      }
    },
    {
      "id": "c0a890c8-923a-4c17-9025-f997568a9875",
      "name": "⚠️ Warning: Slack DM Config",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1472,
        272
      ],
      "parameters": {
        "width": 260,
        "height": 140,
        "content": "⚠️ **Slack Channel Required**\nReplace `YOUR_SLACK_USER_ID` with a real Slack member ID (format: `U0XXXXXXX`). Leaving the placeholder will silently fail to deliver briefings."
      }
    },
    {
      "id": "c8733caf-98c8-4d3a-9149-9d4376749f98",
      "name": "New Calendar Event Trigger",
      "type": "n8n-nodes-base.googleCalendarTrigger",
      "position": [
        -720,
        544
      ]
    },
    {
      "id": "4c08919c-56d4-465a-9f6e-6565405a42f8",
      "name": "Filter: Has Attendees",
      "type": "n8n-nodes-base.if",
      "position": [
        -496,
        544
      ]
    },
    {
      "id": "1f34e7c0-0308-468b-949a-20bb88d616e1",
      "name": "Extract Attendee & Company Info",
      "type": "n8n-nodes-base.set",
      "position": [
        -272,
        544
      ]
    },
    {
      "id": "c33b1cba-c54f-4bdd-9385-f6d3dbacf82c",
      "name": "Search Person on Google",
      "type": "n8n-nodes-serpapi.serpApi",
      "position": [
        -48,
        448
      ]
    },
    {
      "id": "4dab762c-e657-421b-8dd9-36a98fa9486b",
      "name": "Search Company on Google",
      "type": "n8n-nodes-serpapi.serpApi",
      "position": [
        -48,
        640
      ]
    },
    {
      "id": "786579b9-b91f-4954-89c6-34f5ac79778b",
      "name": "Parse Person Search Results",
      "type": "n8n-nodes-base.code",
      "position": [
        176,
        448
      ]
    },
    {
      "id": "753fef5a-4130-4cae-9778-a7fff361ada8",
      "name": "Parse Company Search Results",
      "type": "n8n-nodes-base.code",
      "position": [
        176,
        640
      ]
    },
    {
      "id": "70338ed2-139e-40f0-835d-9e1710d60604",
      "name": "Merge Person & Company Data",
      "type": "n8n-nodes-base.merge",
      "position": [
        400,
        544
      ]
    },
    {
      "id": "cf1e1a1c-2cd7-4f9d-9a53-ee3e13f8538e",
      "name": "Prepare Combined Research Data",
      "type": "n8n-nodes-base.code",
      "position": [
        624,
        544
      ]
    },
    {
      "id": "e4207c66-3454-4e36-924b-12ca6b3a6ad4",
      "name": "AI Meeting Briefing Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        848,
        544
      ]
    },
    {
      "id": "5758504b-3ef4-40ff-b62d-f4a4cc5bbfd7",
      "name": "Format Slack Briefing Message",
      "type": "n8n-nodes-base.set",
      "position": [
        1200,
        544
      ]
    },
    {
      "id": "f16471af-23d0-45a8-a216-07315b9e9d12",
      "name": "Send Briefing via Slack DM",
      "type": "n8n-nodes-base.slack",
      "position": [
        1424,
        544
      ]
    },
    {
      "id": "89e31858-65a3-4634-8958-1b7705c2bcf8",
      "name": "Azure OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
      "position": [
        800,
        736
      ]
    }
  ],
  "connections": {
    "Filter: Has Attendees": {
      "main": [
        [
          {
            "node": "Extract Attendee & Company Info",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Person on Google": {
      "main": [
        [
          {
            "node": "Parse Person Search Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Azure OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Meeting Briefing Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Search Company on Google": {
      "main": [
        [
          {
            "node": "Parse Company Search Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Meeting Briefing Agent": {
      "main": [
        [
          {
            "node": "Format Slack Briefing Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "New Calendar Event Trigger": {
      "main": [
        [
          {
            "node": "Filter: Has Attendees",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Person & Company Data": {
      "main": [
        [
          {
            "node": "Prepare Combined Research Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Person Search Results": {
      "main": [
        [
          {
            "node": "Merge Person & Company Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Company Search Results": {
      "main": [
        [
          {
            "node": "Merge Person & Company Data",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Format Slack Briefing Message": {
      "main": [
        [
          {
            "node": "Send Briefing via Slack DM",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Combined Research Data": {
      "main": [
        [
          {
            "node": "AI Meeting Briefing Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Attendee & Company Info": {
      "main": [
        [
          {
            "node": "Search Person on Google",
            "type": "main",
            "index": 0
          },
          {
            "node": "Search Company on Google",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}