{
  "name": "Automated meeting recording & AI summaries with Google Calendar, Vexa & Llama 3.2",
  "nodes": [
    {
      "id": "1e744c15-6d1e-4cf6-b0fc-9a076a28f99d",
      "name": "Start Meeting Trigger\t",
      "type": "n8n-nodes-base.googleCalendarTrigger",
      "position": [
        -80,
        100
      ]
    },
    {
      "id": "d887b73f-bae7-4ce7-b1dd-428e020eec59",
      "name": "Launch Vexa Bot for Meeting\t",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        140,
        100
      ]
    },
    {
      "id": "88c87165-2cf6-4e6a-95fb-414477d4c9a2",
      "name": "End Meeting Trigger\t",
      "type": "n8n-nodes-base.googleCalendarTrigger",
      "position": [
        -80,
        460
      ]
    },
    {
      "id": "9193cf99-82ea-4cb2-a83b-d6e6543dc378",
      "name": "Stop Vexa Bot\t",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        140,
        460
      ]
    },
    {
      "id": "21dbb664-4085-4a2a-8cf3-e4767f517d9d",
      "name": "Fetch Meeting Audio File\t",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        360,
        360
      ]
    },
    {
      "id": "83e8a00e-874f-4447-addc-89101095a993",
      "name": "Transcribe Meeting Audio\t",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        380,
        600
      ]
    },
    {
      "id": "defad130-6fbd-4cd6-8e35-deebabd6011f",
      "name": "Prepare Transcript for AI\t",
      "type": "n8n-nodes-base.set",
      "position": [
        580,
        560
      ]
    },
    {
      "id": "b4cded44-b3e1-41b4-b994-a5dcf26a65ec",
      "name": "Generate Meeting Summary\t",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        800,
        560
      ]
    },
    {
      "id": "efebad1b-5ebe-4491-a9e6-a0b9838815eb",
      "name": "AI Model",
      "type": "@n8n/n8n-nodes-langchain.lmOllama",
      "position": [
        888,
        780
      ]
    },
    {
      "id": "5c21a138-e2ed-4e2e-a4c2-6ddf65e85625",
      "name": "Send email",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        1176,
        560
      ]
    },
    {
      "id": "b59c01ba-f3e6-4485-bf96-684aa21a6973",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1106,
        460
      ],
      "parameters": {
        "width": null,
        "height": 260,
        "content": "Sends the generated meeting summary to specified recipients via email, using configured SMTP settings"
      }
    },
    {
      "id": "db5a2b78-d7d0-4aa9-af65-db586650977b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -210,
        0
      ],
      "parameters": {
        "width": 300,
        "height": 260,
        "content": "Initiates workflow when meeting begins, triggered by eventStarted signal from the meeting platform. Configure with Google Meet webhook and API credentials"
      }
    },
    {
      "id": "3403ed43-201d-4ede-a736-eaaa3d6bf97b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        120,
        0
      ],
      "parameters": {
        "width": null,
        "height": 260,
        "content": "Starts the Vexa Bot recording process using the configured API credentials or webhook"
      }
    },
    {
      "id": "da19f45e-4dd3-4f78-95a6-0c0f0af63182",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -340,
        360
      ],
      "parameters": {
        "width": 400,
        "height": 260,
        "content": "Detects meeting end event and triggers next step to stop recording. Configure with Google Meet webhook for eventEnded and fix authentication (e.g., verify client credentials)"
      }
    },
    {
      "id": "b5bcf708-5175-440f-9028-c959ce2d5117",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        70,
        360
      ],
      "parameters": {
        "width": null,
        "height": 260,
        "content": "Halts the Vexa Bot recording and prepares the audio file for further processing."
      }
    },
    {
      "id": "9fd34341-9e6f-428d-bf7a-058ae1881a77",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        270,
        320
      ],
      "parameters": {
        "width": 280,
        "height": 200,
        "content": "Retrieves the recorded audio file from Vexa Bot for transcription."
      }
    },
    {
      "id": "d73efff1-507a-401a-b151-44b36fffefac",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        500
      ],
      "parameters": {
        "width": 180,
        "height": 260,
        "content": "Converts the fetched audio file into text using the connected AI model."
      }
    },
    {
      "id": "6bc285e7-5512-4719-ae44-f07f240826a3",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        440
      ],
      "parameters": {
        "width": 160,
        "height": 340,
        "content": "Formats the transcribed text for input into the AI model for summary generation."
      }
    },
    {
      "id": "4b4ae666-3280-465c-aa4c-2011aec87247",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        780,
        420
      ],
      "parameters": {
        "width": null,
        "height": 420,
        "content": "Creates a concise summary from the transcribed text using the AI model."
      }
    }
  ],
  "connections": {
    "AI Model": {
      "ai_languageModel": [
        [
          {
            "node": "Generate Meeting Summary\t",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Stop Vexa Bot\t": {
      "main": [
        [
          {
            "node": "Fetch Meeting Audio File\t",
            "type": "main",
            "index": 0
          },
          {
            "node": "Transcribe Meeting Audio\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "End Meeting Trigger\t": {
      "main": [
        [
          {
            "node": "Stop Vexa Bot\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start Meeting Trigger\t": {
      "main": [
        [
          {
            "node": "Launch Vexa Bot for Meeting\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Meeting Audio File\t": {
      "main": [
        []
      ]
    },
    "Generate Meeting Summary\t": {
      "main": [
        [
          {
            "node": "Send email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcribe Meeting Audio\t": {
      "main": [
        [
          {
            "node": "Prepare Transcript for AI\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Transcript for AI\t": {
      "main": [
        [
          {
            "node": "Generate Meeting Summary\t",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}