{
  "name": "AI Event Feedback Analyzer with Google Forms, GPT,  Slack & Docs",
  "nodes": [
    {
      "id": "926bb1d8-a233-4625-8818-6a73985ca9d9",
      "name": "Section 1: Trigger & Configuration",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -256,
        1408
      ],
      "parameters": {
        "width": 592,
        "height": 636,
        "content": "## 1. Trigger & Configuration\n\nTwo trigger options for receiving survey responses:\n- **Webhook:** Instant — Google Forms sends POST to n8n webhook URL\n- **Sheets Trigger:** Polls the responses spreads"
      }
    },
    {
      "id": "1d917b13-595d-4193-9e54-c640f077383c",
      "name": "Section 2: Normalize Survey Fields",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        352,
        1408
      ],
      "parameters": {
        "width": 348,
        "height": 632,
        "content": "## 2. Normalize Survey Fields\n\nMaps incoming survey data to a consistent schema for AI processing.\n\n**Required fields:**\n- `rating` — Numeric rating (1–10)\n- `likedMost` — What attendees enjoyed\n- `im"
      }
    },
    {
      "id": "8458e476-3bf0-4ede-8f1a-79d2aee6ccd4",
      "name": "Reference: AI Prompt Customization",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        368,
        2064
      ],
      "parameters": {
        "width": 992,
        "height": 692,
        "content": "## AI Prompt Customization\n\nCustomize the AI analysis by modifying the Information Extractor nodes:\n\n**Individual Response Analysis:**\n- Sentiment: Positive / Neutral / Negative\n- Key points liked (1–"
      }
    },
    {
      "id": "05f70e9d-9504-4878-b3c2-ba2dce51748c",
      "name": "Section 7: Aggregate All Responses",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -256,
        2064
      ],
      "parameters": {
        "width": 604,
        "height": 688,
        "content": "## 7. Aggregate All Responses\n\nTriggered when aggregation mode is enabled. Fetches all survey responses from Google Sheets, calculates the average rating, and sends the full dataset to GPT-4o for an e"
      }
    },
    {
      "id": "a8eb1faf-9e7a-4511-96a6-cff09b408f8a",
      "name": "Poll Google Sheets for Responses",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        -176,
        1872
      ]
    },
    {
      "id": "60d9c07c-f0ae-4875-9c44-f6068caffcbf",
      "name": "Set Workflow Variables",
      "type": "n8n-nodes-base.set",
      "position": [
        -16,
        1776
      ]
    },
    {
      "id": "4ee05737-ac4b-4bda-9951-1df5e2f7a548",
      "name": "Normalize Survey Response",
      "type": "n8n-nodes-base.set",
      "position": [
        448,
        1760
      ]
    },
    {
      "id": "bf62a57d-52c1-4c13-bb8c-6d2b0b51c712",
      "name": "GPT-4o-mini for Sentiment",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        784,
        1904
      ]
    },
    {
      "id": "0007bd24-57a3-4dec-8c2a-b923c1d0a281",
      "name": "Append to Google Doc",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1712,
        1744
      ]
    },
    {
      "id": "d827494d-1e7e-44a1-977d-5cf299ca09bf",
      "name": "If Single Response Mode",
      "type": "n8n-nodes-base.if",
      "position": [
        144,
        1776
      ]
    },
    {
      "id": "08e8b698-418b-466d-97e9-798f3340ea48",
      "name": "Fetch All Responses from Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -160,
        2480
      ]
    },
    {
      "id": "38792e23-8c93-401f-af9a-106b0b256b92",
      "name": "Aggregate Ratings",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        16,
        2480
      ]
    },
    {
      "id": "da10fc14-5471-466a-ba53-89945bdc6c58",
      "name": "Calculate Average Rating",
      "type": "n8n-nodes-base.set",
      "position": [
        192,
        2480
      ]
    },
    {
      "id": "01952f74-d15d-47a8-a837-a4e58758d12b",
      "name": "GPT-4o for Aggregation",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        432,
        2640
      ]
    },
    {
      "id": "22c47e65-9af8-475f-a4fd-f99c237e5883",
      "name": "AI Aggregate Summary",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        432,
        2480
      ]
    },
    {
      "id": "5ada90fb-1000-4dff-b96f-0736d4fcad77",
      "name": "Post Aggregate to Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        1440,
        2480
      ]
    },
    {
      "id": "6722b500-ddb2-4f3b-8c85-a50965dcc2f0",
      "name": "Append Aggregate to Doc",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1712,
        2480
      ]
    },
    {
      "id": "6e6c4441-cc88-42a8-b2f0-c8bf9e923315",
      "name": "Section 3: AI Sentiment Extraction",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        736,
        1408
      ],
      "parameters": {
        "width": 304,
        "height": 624,
        "content": "## 3. AI Sentiment Extraction\n\nGPT-4o-mini analyzes each individual response and returns structured JSON:\n- **Sentiment:** Positive / Neutral / Negative\n- **Key points liked** (1–2 bullets)\n- **Improv"
      }
    },
    {
      "id": "9cf73491-c5f9-4fbf-aca9-61c8f8e9a15c",
      "name": "Receive Survey Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -176,
        1664
      ]
    },
    {
      "id": "5d7ef0f2-be53-4265-bc5a-d22c54b10f20",
      "name": "AI Sentiment Analysis",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        784,
        1760
      ]
    },
    {
      "id": "f2d02082-17d7-4f5d-b352-26fe666c80d5",
      "name": "Post Feedback to Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        1440,
        1744
      ]
    },
    {
      "id": "ffa0dde1-5e31-4de9-97d5-d98f29fcb9c4",
      "name": "If AI Output Exists",
      "type": "n8n-nodes-base.if",
      "position": [
        1136,
        1760
      ]
    },
    {
      "id": "6c9b271f-3fc0-44dc-ab84-c1c6f08804fc",
      "name": "Section 4: Validate AI Output",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1056,
        1408
      ],
      "parameters": {
        "width": 300,
        "height": 616,
        "content": "## 4. Validate AI Output\n\nChecks that the AI returned a valid sentiment analysis. If the output is missing or malformed, an error alert is sent to Slack and the response is skipped."
      }
    },
    {
      "id": "121ddd4d-efd5-4538-ad16-2b596d3bd036",
      "name": "Send Error Alert to Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        1136,
        1904
      ]
    },
    {
      "id": "a9336c8c-5f18-4aef-9502-e8cafaaab1b1",
      "name": "Section 5: Post Feedback to Slack",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1376,
        1408
      ],
      "parameters": {
        "width": null,
        "height": 1344,
        "content": "## 5. Post Feedback to Slack\n\nPosts a formatted digest of each analyzed response to the configured Slack channel with sentiment emoji, key points, and attendee details."
      }
    },
    {
      "id": "57bc995f-7f90-4797-bc71-6a7b0c25234e",
      "name": "Section 6: Log to Google Doc",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1632,
        1408
      ],
      "parameters": {
        "width": null,
        "height": 1344,
        "content": "## 6. Log to Google Doc\n\nAppends each analyzed response to a running Google Doc report with rating, sentiment, role, liked points, improvements, and testimonial quotes."
      }
    },
    {
      "id": "b40e583f-46dc-43b7-aa60-efe3432ca70d",
      "name": "Intro: Post-Event Survey Analyzer",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -832,
        1408
      ],
      "parameters": {
        "width": 540,
        "height": 1340,
        "content": "## Post-Event Survey Analyzer\n\n### **What it does:**\nAnalyzes post-event survey responses in real time using AI, posts sentiment digests to Slack, logs insights to Google Docs, and can generate aggreg"
      }
    },
    {
      "id": "bc664e80-8421-4a70-af7b-efaf537c5a6d",
      "name": "Contact: Braia Labs",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1904,
        1408
      ],
      "parameters": {
        "width": 540,
        "height": 1344,
        "content": "## Was this helpful? Get in touch! \n\n[![clic](https://vptkuqoipqbebipqjnqw.supabase.co/storage/v1/object/public/Milo%20Bravo/seeAxWUupcOOXY5tntexZ_video.gif)](https://tally.so/r/EkKGgB)\n\nI really hope"
      }
    }
  ],
  "connections": {
    "Aggregate Ratings": {
      "main": [
        [
          {
            "node": "Calculate Average Rating",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If AI Output Exists": {
      "main": [
        [
          {
            "node": "Post Feedback to Slack",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Error Alert to Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Aggregate Summary": {
      "main": [
        [
          {
            "node": "Post Aggregate to Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Sentiment Analysis": {
      "main": [
        [
          {
            "node": "If AI Output Exists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT-4o for Aggregation": {
      "ai_languageModel": [
        [
          {
            "node": "AI Aggregate Summary",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Post Feedback to Slack": {
      "main": [
        [
          {
            "node": "Append to Google Doc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Receive Survey Webhook": {
      "main": [
        [
          {
            "node": "Set Workflow Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Workflow Variables": {
      "main": [
        [
          {
            "node": "If Single Response Mode",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If Single Response Mode": {
      "main": [
        [
          {
            "node": "Normalize Survey Response",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Fetch All Responses from Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post Aggregate to Slack": {
      "main": [
        [
          {
            "node": "Append Aggregate to Doc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculate Average Rating": {
      "main": [
        [
          {
            "node": "AI Aggregate Summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT-4o-mini for Sentiment": {
      "ai_languageModel": [
        [
          {
            "node": "AI Sentiment Analysis",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Normalize Survey Response": {
      "main": [
        [
          {
            "node": "AI Sentiment Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Poll Google Sheets for Responses": {
      "main": [
        [
          {
            "node": "Set Workflow Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch All Responses from Google Sheets": {
      "main": [
        [
          {
            "node": "Aggregate Ratings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}