AutomationFlowsAI & RAG › UX Interview Analysis with Openai: Transcribe and Export to Google Sheets

UX Interview Analysis with Openai: Transcribe and Export to Google Sheets

ByGulfiia @gulfia on n8n.io

UX Interview Analysis with OpenAI: Transcipt, Summarize, and Export to Google Sheets!

Event trigger★★★★☆ complexityAI-powered14 nodesOutput Parser StructuredGoogle DriveOpenAIAgentOpenAI ChatGoogle Sheets
AI & RAG Trigger: Event Nodes: 14 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #7126 — we link there as the canonical source.

This workflow follows the Agent → Google Drive recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "e5SP66m2pNYbV2cg",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Process UX Interview Transcripts and Generate Summaries with OpenAI to Google Sheets",
  "tags": [],
  "nodes": [
    {
      "id": "c42709ac-6960-4e3b-ba1c-573b491a9ecf",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1424,
        -368
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "f49de87d-c098-4bed-8b24-993159b1d8ca",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        16,
        -160
      ],
      "parameters": {
        "jsonSchemaExample": "[\n  {\n    \"Persona\": \"Person 1\",\n    \"User needs\": \"Wants an intuitive mobile experience\",\n    \"Pain points\": \"Finds sign-up process too long\",\n    \"New feature request\": \"Wants biometric login\"\n  },\n  {\n    \"Persona\": \"Person 2\",\n    \"User needs\": \"Needs better calendar integration\",\n    \"Pain points\": \"Misses reminders frequently\",\n    \"New feature request\": \"Requests smart reminders with email sync\"\n  }\n]"
      },
      "typeVersion": 1.3
    },
    {
      "id": "61d2c83e-ff72-49ea-b84d-56b6bc509c44",
      "name": "Search Google Drive for interview files",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -1184,
        -368
      ],
      "parameters": {
        "filter": {
          "folderId": {
            "__rl": true,
            "mode": "list",
            "value": "1_HlRPRZeTx48RE95HYTpaW3YVm-Tk1EG",
            "cachedResultUrl": "https://drive.google.com/drive/folders/1_HlRPRZeTx48RE95HYTpaW3YVm-Tk1EG",
            "cachedResultName": "User testing result"
          },
          "whatToSearch": "files"
        },
        "options": {},
        "resource": "fileFolder"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "1173f8ad-9220-45ce-a308-a823b3c723ec",
      "name": "Filter by .mp3",
      "type": "n8n-nodes-base.filter",
      "position": [
        -944,
        -368
      ],
      "parameters": {
        "options": {
          "ignoreCase": true
        },
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": false,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "420e1a9c-2145-4845-b4b0-31a82855a78c",
              "operator": {
                "type": "string",
                "operation": "endsWith"
              },
              "leftValue": "={{ $json.name }}",
              "rightValue": ".mp3"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "2a966bdb-7469-461c-9d13-a8d94bfcdca5",
      "name": "Download audio file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -688,
        -368
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "d264aea8-4dc1-4c0f-b2ad-7e2226cab42c",
      "name": "Transcribe a recording",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -432,
        -368
      ],
      "parameters": {
        "options": {},
        "resource": "audio",
        "operation": "transcribe"
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "0b7f1399-f98b-4742-880d-913d560017c6",
      "name": "AI Agent for creating transcript",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -176,
        -368
      ],
      "parameters": {
        "text": "=You are an expert UX researcher assistant.\n\nI will provide you with a transcript from a user interview. Analyze the transcript and return a summary for each person as a JSON array. Each object must have these keys:\n- \"Persona\"\n- \"User needs\"\n- \"Pain points\"\n- \"New feature request\"\n\nFollow this exact format:\n[\n  {\n    \"Persona\": \"Person 1\",\n    \"User needs\": \"Describe the main needs here\",\n    \"Pain points\": \"Describe main pain points here\",\n    \"New feature request\": \"Describe new feature requests here\"\n  },\n  {\n    \"Persona\": \"Person 2\",\n    \"User needs\": \" ... \",\n    \"Pain points\": \" ... \",\n    \"New feature request\": \" ... \"\n  }\n]\n\nRules:\n- Only return valid JSON.\n- No extra text, explanations, or comments.\n- Use concise summaries.\n\nHere is the transcript:\n{{ $json.text }}",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.1,
      "alwaysOutputData": false
    },
    {
      "id": "eef35c0f-f319-4c97-880f-549f4e02dd51",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -176,
        -160
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "59b334cc-3d90-451d-a48e-0ce144daecef",
      "name": "Split Out results",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        256,
        -368
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "output"
      },
      "typeVersion": 1
    },
    {
      "id": "23effa45-8a46-4876-8d32-98b07b6cedf2",
      "name": "Insert results to Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        528,
        -368
      ],
      "parameters": {
        "columns": {
          "value": {
            "Persona": "={{ $json.Persona }}",
            "User need": "={{ $json[\"User needs\"] }}",
            "Pain points": "={{ $json[\"Pain points\"] }}",
            "New feature request": "={{ $json[\"New feature request\"] }}"
          },
          "schema": [
            {
              "id": "Persona",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Persona",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "User need",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "User need",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Pain points",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Pain points",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "New feature request",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "New feature request",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Summary"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "13tkgJh2tYslsLLKeAI_i-xFLWcFO5UzINB-g6TszzIE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/13tkgJh2tYslsLLKeAI_i-xFLWcFO5UzINB-g6TszzIE/edit?usp=drivesdk",
          "cachedResultName": "User transcript v"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "d25d0972-0afe-4380-bf27-c6906de17233",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2240,
        -624
      ],
      "parameters": {
        "color": 5,
        "width": 520,
        "height": 808,
        "content": "***UX Interview Analysis with OpenAI: Transcipt, Summarize, and Export to Google Sheets!***\n\n## About\nEasily analyze and summarize UX interviews. Just upload your files to Google Drive and get the insights directly in Google Sheets.\n\n## How It Works\n- The workflow is triggered manually with a click\n- Upload the interview recordings in MP3 format to Google Drive (or modify the node \u201cFilter by MP3\u201d to support other formats)\n- OpenAI transcribes the audio\n- An AI agent generates a summary and stores the results in Google Sheets\n\n## How To Use\n- Import the package into your n8n interface\n- Set up credentials for each node to access the required tools\n- Upload your interview files to Google Drive\n- Create a Google Sheet with the following columns:\n\t\u2022\tPersona\n\t\u2022\tUser Needs\n\t\u2022\tPain Points\n\t\u2022\tNew Feature Requests\n- Connect the Google Sheets node titled \u201cInsert results to Google Sheets\u201d to your created document\n- Start the workflow\n\n\n## Requirements\n- OpenAI for transcription and summarization (you can replace it with Gemini if preferred)\n\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "82eb2906-9b36-4f38-a5e7-b3a6b3c6a889",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1216,
        -464
      ],
      "parameters": {
        "color": 5,
        "width": 408,
        "height": 392,
        "content": "Upload your MP3 files to Google Drive and connect Google Drive to the workflow."
      },
      "typeVersion": 1
    },
    {
      "id": "456e3b63-946c-482e-ae58-f19ff964a13c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -272,
        -464
      ],
      "parameters": {
        "color": 3,
        "width": 456,
        "height": 504,
        "content": "OpenAI for summarization (you can replace it with Gemini, Claude, or any other LLM). Modify the summary requirements if needed."
      },
      "typeVersion": 1
    },
    {
      "id": "31c97015-3c07-4c89-b051-918b81b2eacc",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        432,
        -544
      ],
      "parameters": {
        "color": 4,
        "width": 392,
        "height": 584,
        "content": "Connect Google Sheets to this node. Prior create columns as:\n\u2022\tPersona\n\t\u2022\tUser Needs\n\t\u2022\tPain Points\n\t\u2022\tNew Feature Requests"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "10a06953-0799-48d2-9864-6b94f403be48",
  "connections": {
    "Filter by .mp3": {
      "main": [
        [
          {
            "node": "Download audio file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent for creating transcript",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Split Out results": {
      "main": [
        [
          {
            "node": "Insert results to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download audio file": {
      "main": [
        [
          {
            "node": "Transcribe a recording",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcribe a recording": {
      "main": [
        [
          {
            "node": "AI Agent for creating transcript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent for creating transcript",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent for creating transcript": {
      "main": [
        [
          {
            "node": "Split Out results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Search Google Drive for interview files",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Google Drive for interview files": {
      "main": [
        [
          {
            "node": "Filter by .mp3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

UX Interview Analysis with OpenAI: Transcipt, Summarize, and Export to Google Sheets!

Source: https://n8n.io/workflows/7126/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.

OpenAI, HTTP Request, Form Trigger +7
AI & RAG

Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI Chat +9
AI & RAG

This template is designed for marketers, content creators, and e-commerce brands who want to automate the creation of professional ad videos at scale. It’s ideal for teams looking to generate consiste

Telegram, Telegram Trigger, Google Drive +8
AI & RAG

This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.

OpenAI Chat, Memory Buffer Window, Output Parser Structured +11
AI & RAG

Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 48 nodes.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI Chat +8