{
  "name": "Convert meeting recordings to notes & action items with AssemblyAI, GPT-4 & Sheets",
  "nodes": [
    {
      "id": "7bc7e484-565f-4087-a7fb-96509d275997",
      "name": "Recording Ready Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        720,
        368
      ]
    },
    {
      "id": "47ea3cb0-9fbb-4caf-8cb4-a675947aa7d6",
      "name": "Workflow Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        944,
        368
      ]
    },
    {
      "id": "3c94853b-123c-4bab-9850-c22a34507d08",
      "name": "Download Recording",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1168,
        368
      ]
    },
    {
      "id": "cec09e80-4207-4c28-9c1a-35907ed8c194",
      "name": "AssemblyAI Transcription",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1392,
        368
      ]
    },
    {
      "id": "71f0c2dd-fa5f-4345-9d75-49be4620c401",
      "name": "Prepare Meeting Notes Input",
      "type": "n8n-nodes-base.set",
      "position": [
        752,
        864
      ]
    },
    {
      "id": "9c990ce9-541c-4a3d-94af-8b7ba5471b54",
      "name": "Generate Meeting Notes",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        944,
        864
      ]
    },
    {
      "id": "727d6f68-1328-4903-9c2e-71572cd9d0b8",
      "name": "OpenAI Model - Meeting Notes",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        944,
        1088
      ]
    },
    {
      "id": "c1bcdb2b-6337-4348-a892-f11168f8b593",
      "name": "Meeting Notes Schema",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1072,
        1088
      ]
    },
    {
      "id": "d96778b5-82ea-4f2a-a3f6-71cd6a8d23df",
      "name": "Extract Action Items",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1296,
        864
      ]
    },
    {
      "id": "2ce0909b-9af9-4481-bc20-d9c50c8ac0b8",
      "name": "OpenAI Model - Action Items",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1296,
        1088
      ]
    },
    {
      "id": "aa3050cc-1150-4652-bafa-775b89b3a0dd",
      "name": "Action Items Schema",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1424,
        1088
      ]
    },
    {
      "id": "e26229ca-e27b-498b-aadb-4cc3f9098744",
      "name": "Parse and Validate Action Items",
      "type": "n8n-nodes-base.code",
      "position": [
        1648,
        864
      ]
    },
    {
      "id": "416d4f21-4984-4ebc-aaf9-baf74834c8b3",
      "name": "Check If Action Items Exist",
      "type": "n8n-nodes-base.if",
      "position": [
        1872,
        864
      ]
    },
    {
      "id": "be0a3b37-9680-4c81-9f08-bd23c54052c1",
      "name": "Log Meeting to Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2320,
        880
      ]
    },
    {
      "id": "251b57ce-c5c6-4d74-9ca4-1c8cbfbf7ab0",
      "name": "Process All Action Items",
      "type": "n8n-nodes-base.code",
      "position": [
        2096,
        784
      ]
    },
    {
      "id": "56f5bf14-59f8-4689-860e-33097a979448",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -416,
        448
      ],
      "parameters": {
        "width": 944,
        "height": 448,
        "content": "## How it works\nThis workflow turns meeting recordings into structured notes and action items, then logs everything to Google Sheets.\n\nIt starts from a “recording ready” webhook, loads your config, th"
      }
    },
    {
      "id": "e454e683-23c6-4209-98ed-45a010460105",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        176
      ],
      "parameters": {
        "width": 384,
        "height": 352,
        "content": "## Webhook & Config\n\nReceives “recording ready” events and loads core settings: AssemblyAI key, Sheet IDs, default due-date rules, and other constants used across the flow."
      }
    },
    {
      "id": "3631e1c1-085d-4bc4-9398-d0d6bfbfab10",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        176
      ],
      "parameters": {
        "width": 400,
        "height": 352,
        "content": "## Transcription\n\nDownloads the meeting audio using the URL from the webhook and sends it to AssemblyAI to get a full text transcript of the conversation."
      }
    },
    {
      "id": "9cf2a1be-af67-4e85-96c6-612a401b1a0e",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        720
      ],
      "parameters": {
        "width": 832,
        "height": 528,
        "content": "## AI Notes & Actions\n\nBuilds a structured payload from the transcript, then uses AI to generate meeting notes and extract action items. Both outputs are validated against JSON schemas."
      }
    },
    {
      "id": "5c90c6f2-4d4f-4f8b-a056-e1043c13f008",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1616,
        688
      ],
      "parameters": {
        "width": 896,
        "height": 352,
        "content": "## Validate & Log\n\nCleans and validates all action items, optionally processes them, then logs the meeting summary and counts into Google Sheets for tracking."
      }
    }
  ],
  "connections": {
    "Download Recording": {
      "main": [
        [
          {
            "node": "AssemblyAI Transcription",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Action Items Schema": {
      "ai_outputParser": [
        [
          {
            "node": "Extract Action Items",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Extract Action Items": {
      "main": [
        [
          {
            "node": "Parse and Validate Action Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Meeting Notes Schema": {
      "ai_outputParser": [
        [
          {
            "node": "Generate Meeting Notes",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Generate Meeting Notes": {
      "main": [
        [
          {
            "node": "Extract Action Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Workflow Configuration": {
      "main": [
        [
          {
            "node": "Download Recording",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Recording Ready Webhook": {
      "main": [
        [
          {
            "node": "Workflow Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AssemblyAI Transcription": {
      "main": [
        [
          {
            "node": "Prepare Meeting Notes Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Process All Action Items": {
      "main": [
        [
          {
            "node": "Log Meeting to Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check If Action Items Exist": {
      "main": [
        [
          {
            "node": "Process All Action Items",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Log Meeting to Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model - Action Items": {
      "ai_languageModel": [
        [
          {
            "node": "Extract Action Items",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Meeting Notes Input": {
      "main": [
        [
          {
            "node": "Generate Meeting Notes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model - Meeting Notes": {
      "ai_languageModel": [
        [
          {
            "node": "Generate Meeting Notes",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Parse and Validate Action Items": {
      "main": [
        [
          {
            "node": "Check If Action Items Exist",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}