Mindket

Survey answers grouped with Qdrant and summarized by AI

Newversion 1 · updated

Overview

An n8n workflow that reads survey answers from Google Sheets and stores each one as a vector in Qdrant. It groups similar answers with K-means, has an OpenAI model summarize each group, and writes the insights to a new sheet.

Survey answers grouped with Qdrant and summarized by AI is an n8n workflow in the Research category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

At a glance

Runs in
  • n8n Cloud: import the file into a new workflow there, with a Qdrant that it can reach, such as Qdrant Cloud
  • Your own n8n server: the same file and steps, with Qdrant on the same network or in the cloud
  • Qdrant: the first insert creates the collection by itself
  • Another sheet: pick a different spreadsheet in Get Survey Results

Platform

Connects 3 apps

How it works

Trigger

Manual run

It starts when you press Test workflow, and there is no form:

  • A Google Sheets spreadsheet of survey answers, picked in the Get Survey Results node

Actions

  1. Every answer in the survey sheet is read and paired with its question and its participant
  2. Each answer is turned into a vector by an OpenAI embeddings model and stored in Qdrant, with its question, participant and survey name
  3. A new sheet for the insights is added to the spreadsheet
  4. The questions are taken from the header row, and each is handled in turn
  5. The stored answers to a question are sorted into up to ten groups of similar answers with K-means
  6. Each group of three or more answers is summarized by an OpenAI model, with an insight and a sentiment
  7. Each insight, or a No Insight Found line, is added as a row to the new sheet

Result

A new sheet in the survey spreadsheet with one row for each group of similar answers, holding the question, the insight, the sentiment, the number of answers, the participant IDs and the raw answers

Integrations

What you need before you start.

Google Sheets

Survey and insights

Gives the survey answers and the header row, and takes the new sheet of insights.

NeedsGoogle Sheets OAuth2 credential and a spreadsheet of survey answers

Qdrant

Vector store

Keeps each answer as a vector with its question, participant and survey name, and returns the answers of one question.

NeedsThe address of your Qdrant and its API key

OpenAI

Embeddings and summaries

Turns each answer into a vector, and writes the summary, insight and sentiment of each group.

NeedsOpenAI API key

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
26 steps, starting when another workflow calls it or by hand
AI
2 steps call an AI model: Survey Insights Agent and Qdrant Vector Store
Sign-ins
Signs in to: Google Sheets, Qdrant and OpenAI
API keys
No API key is left in the file
Step types
Mindket’s checker reads all 13 of its step types

Read from the workflow’s file, not from a run.

About

What it is

This n8n workflow turns a sheet of survey answers into a sheet of insights. It reads every answer from Google Sheets and stores each one as a vector in Qdrant, with its question and its participant. For each question it sorts the stored answers into groups of similar answers with the K-means method. An OpenAI model then summarizes each group with an insight and a sentiment, and every result is added as a row to a new sheet. Thirty nodes do the work, beside twelve sticky notes.

Who it suits

Researchers, product teams and HR teams who collect open answers and have too many to read one by one. It works best with a few dozen answers to each question, because a small sample rarely gives a group of three. You need your own Qdrant or a Qdrant Cloud account.

Who uses it, and how
IndustryWho uses itHow they use itExample
ProductProduct teamsFind the common points in open answers about a featureA team sees one group of answers asking for a dark mode and another about slow loading.
Human resourcesHR teamsRead an engagement survey by themeAn HR team sees one group that praises flexible hours and another that complains about meetings.
EducationCourse teamsSort the free text feedback on a courseA course team finds that a whole group of answers says the pace is too fast.
ResearchUX researchersGroup the answers of a study before writing it upA researcher reads six group summaries instead of three hundred raw answers.

You need some n8n: import a file, add three credentials, pick a spreadsheet and set one address.

Where to use it

Any n8n that can reach Google Sheets, OpenAI and your Qdrant will run it.

  • n8n Cloud: import the file into a new workflow there, with a Qdrant that it can reach, such as Qdrant Cloud
  • Your own n8n server: the same file and steps, with Qdrant on the same network or in the cloud
  • Qdrant: the first insert creates the collection by itself
  • Another sheet: pick a different spreadsheet in Get Survey Results

Setup

Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. You need a survey spreadsheet, a Qdrant and an OpenAI key.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
Google SheetsA spreadsheet with a Participant column and one column for each question, each header holding a question mark, and an OAuth2 credential
QdrantA server of your own or Qdrant Cloud, its address and an API key
OpenAIAn API key that can use text-embedding-3-small and gpt-6-luna
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Save the workflow. Trigger Insights starts the second part by calling the workflow by its ID.
  3. Add a Google Sheets OAuth2 credential. Select it in Get Survey Results, Get Sheet Details, Create Insights Sheet, Get Survey Headers, Export To Sheets and Export To Sheets1.
  4. In Get Survey Results, pick your spreadsheet and your sheet from the lists.
  5. Add a Qdrant credential with the address and the API key. Select it in Qdrant Vector Store, Find All Answers and Get Payload of Points.
  6. In Set Variables, replace YOUR_QDRANT_URL with the same address, with no slash at the end.
  7. Add an OpenAI credential and select it in Embeddings OpenAI and OpenAI Chat Model.
  8. Press Test workflow once. The answers are stored first, then the second part starts by itself and writes the insights to a new sheet.

How to use it

Run the workflow once for each survey. The first part stores the answers. The second part follows on its own and adds a new sheet named Insights- and the date. Each group of three or more similar answers gets one row. A question without such a group gets one row that says No Insight Found. A second run stores the answers again, so clear the Qdrant collection first.

What to change for a different result
To changeWhere
The spreadsheetThe document and the sheet in Get Survey Results
The Qdrant addressYOUR_QDRANT_URL in Set Variables
The collectioncollectionName in Set Variables and the collection in Qdrant Vector Store
The new sheet’s nameinsightsSheetName in Set Variables
The number of groupsThe 10 in Apply K-means Clustering Algorithm
The smallest groupThe test for three answers in Has Clusters? and in Only Clusters With 3+ points
What the model writesThe system prompt and the example in Survey Insights Agent
The modelOpenAI Chat Model

Example

A team surveys customers with the question “What would you change about the app?”

The answers are stored in Qdrant, and the workflow sorts them into groups. One group of answers is about slow search, and another is about a missing dark mode. The model writes one insight for each group and marks the first as negative. The new sheet holds a row for each group with the question, the insight, the sentiment, the number of answers and the participant IDs. Read a few raw answers of each group before you rely on a summary, because it comes from a model.

For newcomers and experts

If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. A vector is a list of numbers that stands for the meaning of a text. Answers that mean the same thing get vectors that sit close together, and K-means is a method that finds such groups. Qdrant is the database that keeps the vectors. Try it on a sheet with a few dozen answers first.

For experts. The groups come from the vectors, not from the model, so the model only summarizes answers that already sit together.

Where to look closer
NodeWhat it doesWhat to know
Default Data LoaderAttaches the question, the participant and the survey name to each answerThe survey name is the spreadsheet’s title, saved when you pick it from the list
Find All AnswersFetches the stored answers of one question with their vectorsIt stops at 500 answers and does not page on
Apply K-means Clustering AlgorithmSorts the answers into up to 10 groupsIt is JavaScript with a fixed seed, so a rerun gives the same groups
Has Clusters?Sends the run on when a group has three or more answersThe original copy only checked that the list was not empty
Survey Insights AgentWrites a summary, an insight and a sentiment for a groupIt sees the answers and the participant numbers of that group only
Export To SheetsAdds one row for each groupThe row also holds the number of answers, the participant IDs and the raw answers

Good to know

The clustering was rewritten, a check that stopped the run was repaired and a retired model was replaced.

  • Python: the original copy clustered in a Python node that imported numpy and sklearn and read _input. n8n’s code node documentation, read on 12 November 2026, says Pyodide is removed from n8n 2.0. The native Python that replaced it has no _input and cannot import those packages by default. This copy does the same work in JavaScript
  • Stopped run: the original copy passed on any list of groups, even when no group held three answers. The filter after it then dropped everything, and the run ended there with no row and no later question. This copy counts the groups of three or more
  • Questions with quotes: the original copy typed the question into the JSON text of Find All Answers, so a double quote broke it. This copy builds the body with JSON.stringify
  • Model: the original copy used gpt-4o-mini. OpenAI’s deprecations page, read on 12 November 2026, lists it for shutdown on 14 January 2027, with gpt-6-luna as the replacement, so OpenAI Chat Model is now version 1.2 with that model
  • Embeddings: the embeddings node names text-embedding-3-small, which is not on that deprecations page
  • Run once: a second run stores the same answers again, so every answer would count twice. Clear the Qdrant collection first
  • Small surveys: with about ten answers or fewer, almost every group holds one answer, and the question gets a No Insight Found row
  • Save first: Trigger Insights calls the workflow by its ID, so the workflow must be saved
  • Your data: every answer goes to OpenAI to make its vector, and the answers of each big group go to OpenAI again for the summary. The answers and vectors stay in your Qdrant, and the insights, the participant IDs and the raw answers go to your sheet
  • Credentials: the JSON holds none, and its author’s spreadsheet and Docker address are removed

README and files

README

Survey answers grouped with Qdrant and summarized by AI

An n8n workflow that turns a sheet of survey answers into a sheet of insights. It reads every answer from Google Sheets and
stores each one as a vector in Qdrant, with its question and its participant. For each question it sorts the stored answers
into groups of similar answers with the K-means method. An OpenAI model then summarizes each group with an insight and a
sentiment, and every result is added as a row to a new sheet.

What is inside

  • workflow.json: the workflow as n8n exports it, 30 nodes and 12 sticky notes. It holds no credential.
  • README.md: these notes.

What we changed from the original copy

  • Apply K-means Clustering Algorithm was a Python node that imported numpy and sklearn and read its input with
    _input. n8n's code node documentation, read on 12 November 2026, says Pyodide is removed from n8n 2.0. The native
    Python that replaced it offers no _input and cannot import those packages by default. The node is now JavaScript. It
    does the same job: up to 10 groups with a fixed seed, and the same output of an id, a total and the Qdrant points
    of each group.
  • Has Clusters? only checked that the list of groups was not empty. K-means always returns groups, so the check passed
    even when every answer was different. Only Clusters With 3+ points then dropped every group. Nothing reached the nodes
    after it, and the run stopped there. No row was written, and the next question never started. The check now counts the
    groups with three or more answers, and a question without one gets its No Insight Found row.
  • Find All Answers wrote the question into its JSON text by hand, so a question with a double quote broke the request.
    The body is now built with JSON.stringify.
  • Find All Answers and Get Payload of Points called qdrant:6333, the name of a Docker service on their author's
    machine. Both now take the address from the new qdrantUrl value in Set Variables, which holds YOUR_QDRANT_URL.
  • OpenAI Chat Model asked for gpt-4o-mini. OpenAI's deprecations page, read on 12 November 2026, lists it for shutdown
    on 14 January 2027, with gpt-6-luna as the replacement. The node is now version 1.2 with that model.
  • Get Survey Results pointed at its author's spreadsheet. It is empty now, and you pick yours from the list.
  • Export To Sheets carried six sample column names from its author's own run, which included answers from the sample
    survey. They are gone, and the node maps by field name like Export To Sheets1.
  • The system prompt of Survey Insights Agent had two typos, "mildy", and they are fixed.
  • The 12 sticky notes are rewritten and hold no outside links. The original copy linked to documentation pages, a sample
    sheet and a chat server.
  • Every credential reference is removed, so you pick your own.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • A Google account, a spreadsheet of survey answers and a Google Sheets OAuth2 credential. The sheet needs a Participant
    column, and every question column needs a question mark in its header. A column without one is stored in Qdrant too,
    but it is not analyzed.
  • A Qdrant server of your own or on Qdrant Cloud, with its address and an API key.
  • An OpenAI API key that can use text-embedding-3-small and gpt-6-luna.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Save the workflow. Trigger Insights starts the second part by calling the workflow by its ID.
  3. Add a Google Sheets OAuth2 credential. Select it in Get Survey Results, Get Sheet Details, Create Insights Sheet,
    Get Survey Headers, Export To Sheets and Export To Sheets1.
  4. In Get Survey Results, pick your spreadsheet and your sheet from the lists. The title of the spreadsheet becomes the
    survey name that ties the answers together.
  5. Add a Qdrant credential with the address and the API key. Select it in Qdrant Vector Store, Find All Answers and
    Get Payload of Points.
  6. In Set Variables, replace YOUR_QDRANT_URL with the same address, with no slash at the end.
  7. Add an OpenAI credential and select it in Embeddings OpenAI and OpenAI Chat Model.
  8. Press Test workflow once. The answers are stored first, then the second part starts by itself and writes the insights
    to a new sheet.

How a run goes

  1. When clicking ‘Test workflow’ starts the run and Get Survey Results reads every row of the sheet.
  2. Convert to Question Answer Pairs turns each row into one pair for every question column, with the participant, and
    QA Pairs to List makes one item of each pair.
  3. Qdrant Vector Store stores each answer. Embeddings OpenAI makes its vector, and Default Data Loader attaches the
    question, the participant and the survey name as metadata.
  4. Prep Values For Trigger passes on the spreadsheet ID and the sheet, and Trigger Insights starts the second part.
  5. Execute Workflow Trigger receives them. Get Sheet Details reads the spreadsheet's title, and Set Variables gathers
    the Qdrant address, the collection name, the survey name and the new sheet's name.
  6. Create Insights Sheet adds the sheet. Get Survey Headers reads the first two rows, Extract Questions keeps the
    headers with a question mark, and Questions to List makes one item of each.
  7. For Each Question... takes one question at a time. Find All Answers fetches its stored answers with their vectors,
    up to 500.
  8. Apply K-means Clustering Algorithm sorts them into up to 10 groups.
  9. Has Clusters? sends the run on when some group has three or more answers. Otherwise Prep Values For Export and
    Export To Sheets1 write a No Insight Found row.
  10. Clusters To List makes one item of each group, and Only Clusters With 3+ points keeps the big ones.
    Get Payload of Points fetches the answers of each, and Survey Insights Agent writes a summary, an insight and a
    sentiment.
  11. Prep Output For Export adds the number of answers, the participant IDs and the raw answers, and Export To Sheets
    adds the row. The loop then moves on to the next question.

Change the look

  • The spreadsheet: the document and the sheet in Get Survey Results.
  • The Qdrant address: YOUR_QDRANT_URL in Set Variables.
  • The collection: collectionName in Set Variables and the collection in Qdrant Vector Store. Keep them the same.
  • The name of the new sheet: insightsSheetName in Set Variables.
  • The number of groups: the 10 in Apply K-means Clustering Algorithm.
  • The smallest group: the test for three or more answers in Has Clusters? and in Only Clusters With 3+ points. Change both.
  • What the model writes: the system prompt and the example in Survey Insights Agent.
  • The model: OpenAI Chat Model.

Good to know

  • Run it once for each survey. A second run stores the same answers again, so groups would count each answer twice. Clear
    the collection in Qdrant first if you must run it again.
  • It needs many answers. With about ten answers or fewer, almost every group holds one answer, and the question gets a No
    Insight Found row. A few dozen answers to a question is a fair start.
  • Find All Answers fetches at most 500 answers for a question, and nothing pages on after that.
  • Qdrant Vector Store creates the collection on its first insert, so you do not make it by hand.
  • The embeddings node names text-embedding-3-small, which is not on OpenAI's deprecations page.
  • Your data: every answer goes to OpenAI to make its vector, and the answers of each big group go to OpenAI again for the
    summary. The answers and vectors are kept in your Qdrant. The insights and the answers behind them are
    written to your sheet. If your survey holds personal data, keep that in mind.
  • The summaries come from a model. Read a few raw answers of each group before you rely on one.
Files
NOTICE.md  674 B
README.md  8 KB
workflow.json  33 KB

3 files, 41 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-12

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

Huashu Design

alchaincyf · Skill

Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…

New29.4k

Guizang PPT Skill

op7418 · Skill

Skill that makes single-file HTML slide decks, slide illustrations and platform covers in two visual styles, with a presenter mode for rehearsal. For speakers…

New29.8k

Claude Code Skills & Plugins

alirezarezvani · Skill

Adds 411 ready-made skills for Claude Code and other coding agents, grouped by role from engineering and product to marketing, finance and compliance. Installs…

New29.8k

Similar in Research

See all in Research

EarthJev

dBenf · Kit

Answers typed questions about satellite image patches from all 12 Sentinel-2 bands, returning a probability for each option without writing text. A Qwen3.5-0.8…

New

getting-over-it-rl-jax

zimmerk4 · Kit

Plays the full game Getting Over It from the bottom to the end with a small trained policy network that learned inside a JAX physics simulator. For reinforceme…

New

ReFoCo

yuji-nozawa · Kit

Pretrained vision transformer checkpoints in three sizes from a research paper on training attention heads to focus on image regions. For researchers who extra…

New