{
  "name": "Send pre-meeting attendee context with OpenAI, Google Calendar, and Slack",
  "nodes": [
    {
      "id": "5dd6af73-03b8-4af9-b51a-488feb20226d",
      "name": "Get Message Contents",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2576,
        448
      ]
    },
    {
      "id": "5e220d55-752f-47af-8288-f7f31fa5df97",
      "name": "Simplify Emails",
      "type": "n8n-nodes-base.set",
      "position": [
        2800,
        448
      ]
    },
    {
      "id": "8cfe9075-4c20-4153-96de-5d1869c32936",
      "name": "Check For Upcoming Meetings",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        880,
        480
      ]
    },
    {
      "id": "2ad3902c-1f9f-438c-b49f-d6126e87a0b5",
      "name": "Extract Attendee Information",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        1248,
        480
      ]
    },
    {
      "id": "03f95dba-11e4-4603-ae04-50ed06c614a2",
      "name": "Get Last Correspondence",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2064,
        464
      ]
    },
    {
      "id": "62e4c7ba-e427-444b-8447-df5e6b7b84a1",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        512,
        272
      ],
      "parameters": {
        "width": 585,
        "height": 545,
        "content": "## 1. Periodically Search For Upcoming Meetings\n\nHere, we'll set it for 1 hour intervals to check for meetings scheduled in our Google Calendar. You may need to play with the intervals and frequency d"
      }
    },
    {
      "id": "41387f48-b00e-4b4e-a4e5-afc9012d1b19",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        624,
        480
      ]
    },
    {
      "id": "6fa36d5b-b60e-4385-a0c1-a184a662c5f6",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1152,
        272
      ],
      "parameters": {
        "width": 608,
        "height": 542,
        "content": "## 2. Extract Attendee Details From Invite\n[Learn more about the Information Extractor node](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.information-extractor"
      }
    },
    {
      "id": "1d226e44-bfe8-470d-ab53-ad10c045ec6a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3600,
        272
      ],
      "parameters": {
        "width": 546,
        "height": 550,
        "content": "## 5. Pre-Meeting Summary Notification\n\nUse the LLM node to summarize the discussion content and generate the pre-meeting notification."
      }
    },
    {
      "id": "4b3e30da-7c6b-4f96-9957-6e813a01f747",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4192,
        272
      ],
      "parameters": {
        "width": 435,
        "height": 550,
        "content": "## 6. Send Notification via Slack\n\nNot using Slack ? Simply swap this our for Twilio, Telegram, WhatsApp and others."
      }
    },
    {
      "id": "9b3ebb86-04bf-4eb0-895b-c7820f9d4bad",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1792,
        272
      ],
      "parameters": {
        "width": 1127,
        "height": 543,
        "content": "## 3. Fetch Last Email Correspondance\n\nFetching our attendee's last email will definitely help the user \"pick up\" from when they last last off. To do this, we'll assume a Gmail user and use the Gmail "
      }
    },
    {
      "id": "c6b5b73c-8cd6-4389-9a92-b60b3613898f",
      "name": "Return Email Success",
      "type": "n8n-nodes-base.set",
      "position": [
        3408,
        448
      ]
    },
    {
      "id": "63e85aa1-34a7-4600-bb3e-f737901d500c",
      "name": "Has Emails?",
      "type": "n8n-nodes-base.if",
      "position": [
        2304,
        464
      ]
    },
    {
      "id": "652c2a95-09f8-4373-b3db-d6f1743bbd07",
      "name": "Attendees to List",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1584,
        480
      ]
    },
    {
      "id": "0b1d4ab5-0dcb-4b8b-ab30-ccfa0fd5f2b7",
      "name": "Has Email Address?",
      "type": "n8n-nodes-base.if",
      "position": [
        1840,
        480
      ]
    },
    {
      "id": "820f3776-5bb2-419d-86ea-d0a95f2f2043",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2960,
        272
      ],
      "parameters": {
        "width": 594,
        "height": 549,
        "content": "## 4. Summarize Correspondance For Attendee\n\nNext, we'll generate a shorter version of the email(s) using the Basic LLM node - useful if the email was part of a large chain. The goal here is, if appli"
      }
    },
    {
      "id": "0056a020-7524-4ac0-bcb0-76eed8dfbfbd",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -176,
        160
      ],
      "parameters": {
        "width": 613,
        "height": 860,
        "content": "## Overiew\n\nThis workflow builds an AI meeting assistant who sends information-dense pre-meeting notifications for a user's upcoming meetings. \n\n### How It Works\n\n* A scheduled trigger fires hourly an"
      }
    },
    {
      "id": "e6b0b88b-7ef1-4b21-8ebe-8931ddf4950a",
      "name": "Correspondance Recap Agent",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        3056,
        448
      ]
    },
    {
      "id": "0ac9b108-f514-4b60-97c5-b2161dc3b95a",
      "name": "Attendee Research Agent",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        3760,
        448
      ]
    },
    {
      "id": "bf35b34c-df5b-48f1-9f47-e58da2d4f576",
      "name": "OpenAI Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1248,
        688
      ]
    },
    {
      "id": "5fd4f98d-4d0f-4bbe-8652-c499f96eb327",
      "name": "Send a message",
      "type": "n8n-nodes-base.slack",
      "position": [
        4320,
        448
      ]
    },
    {
      "id": "82e1eb7a-ffcf-4519-8120-b0ad3fd9c150",
      "name": "OpenAI Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3760,
        688
      ]
    },
    {
      "id": "2416c768-83fb-44c7-a731-1fd1fcaa5015",
      "name": "OpenAI Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3056,
        688
      ]
    },
    {
      "id": "2a1cf206-9e4f-44ca-9e40-ab63d221dd34",
      "name": "Return Email Error",
      "type": "n8n-nodes-base.set",
      "position": [
        2064,
        672
      ]
    },
    {
      "id": "f3c9b550-5a78-4c59-93d1-cb2f56e8f600",
      "name": "Return Email Error2",
      "type": "n8n-nodes-base.set",
      "position": [
        2576,
        672
      ]
    }
  ],
  "connections": {
    "Has Emails?": {
      "main": [
        [
          {
            "node": "Get Message Contents",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Return Email Error2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model": {
      "ai_languageModel": [
        [
          {
            "node": "Extract Attendee Information",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Correspondance Recap Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model3": {
      "ai_languageModel": [
        [
          {
            "node": "Attendee Research Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Simplify Emails": {
      "main": [
        [
          {
            "node": "Correspondance Recap Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Check For Upcoming Meetings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Attendees to List": {
      "main": [
        [
          {
            "node": "Has Email Address?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Has Email Address?": {
      "main": [
        [
          {
            "node": "Get Last Correspondence",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Return Email Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Message Contents": {
      "main": [
        [
          {
            "node": "Simplify Emails",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Return Email Success": {
      "main": [
        [
          {
            "node": "Attendee Research Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Attendee Research Agent": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Last Correspondence": {
      "main": [
        [
          {
            "node": "Has Emails?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Correspondance Recap Agent": {
      "main": [
        [
          {
            "node": "Return Email Success",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check For Upcoming Meetings": {
      "main": [
        [
          {
            "node": "Extract Attendee Information",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Attendee Information": {
      "main": [
        [
          {
            "node": "Attendees to List",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}