{
  "id": "IOWmWdoiFYtZFoQ7",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Auto Meeting Record, Transcribe & Email Summaries with Vexa & Llama AI",
  "tags": [],
  "nodes": [
    {
      "id": "1e744c15-6d1e-4cf6-b0fc-9a076a28f99d",
      "name": "Start Meeting Trigger\t",
      "type": "n8n-nodes-base.googleCalendarTrigger",
      "position": [
        -80,
        100
      ],
      "parameters": {
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "eventStarted",
        "calendarId": {
          "__rl": true,
          "mode": "id",
          "value": "user@example.com"
        }
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d887b73f-bae7-4ce7-b1dd-428e020eec59",
      "name": "Launch Vexa Bot for Meeting\t",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        140,
        100
      ],
      "parameters": {
        "url": "https://gateway.dev.vexa.ai/bots",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "platform",
              "value": "google_meet"
            },
            {
              "name": "native_meeting_id",
              "value": "={{ $json.conferenceData.conferenceId }}"
            },
            {
              "name": "language",
              "value": "en"
            },
            {
              "name": "bot_name",
              "value": "Oneclick Bot"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "X-API-Key",
              "value": "your_api_key_here"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "88c87165-2cf6-4e6a-95fb-414477d4c9a2",
      "name": "End Meeting Trigger\t",
      "type": "n8n-nodes-base.googleCalendarTrigger",
      "position": [
        -80,
        460
      ],
      "parameters": {
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "eventStarted",
        "calendarId": {
          "__rl": true,
          "mode": "id",
          "value": "user@example.com"
        }
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9193cf99-82ea-4cb2-a83b-d6e6543dc378",
      "name": "Stop Vexa Bot\t",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        140,
        460
      ],
      "parameters": {
        "url": "=https://gateway.dev.vexa.ai/bots/google_meet/{{ $json.conferenceData.conferenceId }}",
        "method": "DELETE",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "X-API-Key",
              "value": "your_api_key_here"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "21dbb664-4085-4a2a-8cf3-e4767f517d9d",
      "name": "Fetch Meeting Audio File\t",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        360,
        360
      ],
      "parameters": {
        "url": "=https://gateway.dev.vexa.ai/meeting_audio/google_meet/{{ $('End Meeting Trigger\t').item.json.conferenceData }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "X-API-Key",
              "value": "your_api_key_here"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "83e8a00e-874f-4447-addc-89101095a993",
      "name": "Transcribe Meeting Audio\t",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        380,
        600
      ],
      "parameters": {
        "url": "=https://gateway.dev.vexa.ai/transcripts/google_meet/{{ $('End Meeting Trigger\t').item.json.conferenceData.conferenceId }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "X-API-Key",
              "value": "your_api_key_here"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "defad130-6fbd-4cd6-8e35-deebabd6011f",
      "name": "Prepare Transcript for AI\t",
      "type": "n8n-nodes-base.set",
      "position": [
        580,
        560
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "62f25d35-d8cc-48f8-997d-97ff90368635",
              "name": "text",
              "type": "string",
              "value": "={{ $json.segments }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b4cded44-b3e1-41b4-b994-a5dcf26a65ec",
      "name": "Generate Meeting Summary\t",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        800,
        560
      ],
      "parameters": {
        "text": "=Provide a concise summary of following texts in nested bullets, using quotes only when absolutely essential for clarity. Start output directly with the response.\n\n\n{{ $json.text }}",
        "promptType": "define"
      },
      "typeVersion": 1.6
    },
    {
      "id": "efebad1b-5ebe-4491-a9e6-a0b9838815eb",
      "name": "AI Model",
      "type": "@n8n/n8n-nodes-langchain.lmOllama",
      "position": [
        888,
        780
      ],
      "parameters": {
        "model": "llama3.2-16000:latest",
        "options": {}
      },
      "credentials": {
        "ollamaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5c21a138-e2ed-4e2e-a4c2-6ddf65e85625",
      "name": "Send email",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        1176,
        560
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "options": {},
        "subject": "Meeting Summary",
        "toEmail": "user@example.com",
        "fromEmail": "user@example.com",
        "emailFormat": "text"
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "b59c01ba-f3e6-4485-bf96-684aa21a6973",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1106,
        460
      ],
      "parameters": {
        "height": 260,
        "content": "Sends the generated meeting summary to specified recipients via email, using configured SMTP settings"
      },
      "typeVersion": 1
    },
    {
      "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"
      },
      "typeVersion": 1
    },
    {
      "id": "3403ed43-201d-4ede-a736-eaaa3d6bf97b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        120,
        0
      ],
      "parameters": {
        "color": 3,
        "height": 260,
        "content": "Starts the Vexa Bot recording process using the configured API credentials or webhook"
      },
      "typeVersion": 1
    },
    {
      "id": "da19f45e-4dd3-4f78-95a6-0c0f0af63182",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -340,
        360
      ],
      "parameters": {
        "color": 5,
        "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)"
      },
      "typeVersion": 1
    },
    {
      "id": "b5bcf708-5175-440f-9028-c959ce2d5117",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        70,
        360
      ],
      "parameters": {
        "color": 4,
        "height": 260,
        "content": "Halts the Vexa Bot recording and prepares the audio file for further processing."
      },
      "typeVersion": 1
    },
    {
      "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."
      },
      "typeVersion": 1
    },
    {
      "id": "d73efff1-507a-401a-b151-44b36fffefac",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        500
      ],
      "parameters": {
        "color": 6,
        "width": 180,
        "height": 260,
        "content": "Converts the fetched audio file into text using the connected AI model."
      },
      "typeVersion": 1
    },
    {
      "id": "6bc285e7-5512-4719-ae44-f07f240826a3",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        440
      ],
      "parameters": {
        "color": 4,
        "width": 160,
        "height": 340,
        "content": "Formats the transcribed text for input into the AI model for summary generation."
      },
      "typeVersion": 1
    },
    {
      "id": "4b4ae666-3280-465c-aa4c-2011aec87247",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        780,
        420
      ],
      "parameters": {
        "color": 3,
        "height": 420,
        "content": "Creates a concise summary from the transcribed text using the AI model."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f7d7eaa4-9e40-4d89-9095-6a881320a158",
  "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
          }
        ]
      ]
    }
  }
}