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…
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.
Manual run
It starts when you press Test workflow, and there is no form:
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
What you need before you start.
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
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
Embeddings and summaries
Turns each answer into a vector, and writes the summary, insight and sentiment of each group.
NeedsOpenAI API key
Checked by Mindket on 13 Nov 2026
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.
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.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Product | Product teams | Find the common points in open answers about a feature | A team sees one group of answers asking for a dark mode and another about slow loading. |
| Human resources | HR teams | Read an engagement survey by theme | An HR team sees one group that praises flexible hours and another that complains about meetings. |
| Education | Course teams | Sort the free text feedback on a course | A course team finds that a whole group of answers says the pace is too fast. |
| Research | UX researchers | Group the answers of a study before writing it up | A 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.
Any n8n that can reach Google Sheets, OpenAI and your Qdrant will run it.
Get Survey ResultsDownload 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.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| Google Sheets | A spreadsheet with a Participant column and one column for each question, each header holding a question mark, and an OAuth2 credential |
| Qdrant | A server of your own or Qdrant Cloud, its address and an API key |
| OpenAI | An API key that can use text-embedding-3-small and gpt-6-luna |
workflow.json.Trigger Insights starts the second part by calling the workflow by its ID.Get Survey Results, Get Sheet Details, Create Insights Sheet, Get Survey Headers, Export To Sheets and Export To Sheets1.Get Survey Results, pick your spreadsheet and your sheet from the lists.Qdrant Vector Store, Find All Answers and Get Payload of Points.Set Variables, replace YOUR_QDRANT_URL with the same address, with no slash at the end.Embeddings OpenAI and OpenAI Chat Model.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.
| To change | Where |
|---|---|
| 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 |
| The new sheet’s name | insightsSheetName in Set Variables |
| The number of groups | The 10 in Apply K-means Clustering Algorithm |
| The smallest group | The test for three answers in Has Clusters? and in Only Clusters With 3+ points |
| What the model writes | The system prompt and the example in Survey Insights Agent |
| The model | OpenAI Chat Model |
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.
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.
| Node | What it does | What to know |
|---|---|---|
Default Data Loader | Attaches the question, the participant and the survey name to each answer | The survey name is the spreadsheet’s title, saved when you pick it from the list |
Find All Answers | Fetches the stored answers of one question with their vectors | It stops at 500 answers and does not page on |
Apply K-means Clustering Algorithm | Sorts the answers into up to 10 groups | It 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 answers | The original copy only checked that the list was not empty |
Survey Insights Agent | Writes a summary, an insight and a sentiment for a group | It sees the answers and the participant numbers of that group only |
Export To Sheets | Adds one row for each group | The row also holds the number of answers, the participant IDs and the raw answers |
The clustering was rewritten, a check that stopped the run was repaired and a retired model was replaced.
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 JavaScriptFind All Answers, so a double quote broke it. This copy builds the body with JSON.stringifygpt-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 modeltext-embedding-3-small, which is not on that deprecations pageTrigger Insights calls the workflow by its ID, so the workflow must be savedAn 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.
workflow.json: the workflow as n8n exports it, 30 nodes and 12 sticky notes. It holds no credential.README.md: these notes.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_input and cannot import those packages by default. The node is now JavaScript. Itid, a total and the Qdrant pointsHas Clusters? only checked that the list of groups was not empty. K-means always returns groups, so the check passedOnly Clusters With 3+ points then dropped every group. Nothing reached the nodesFind All Answers wrote the question into its JSON text by hand, so a question with a double quote broke the request.JSON.stringify.Find All Answers and Get Payload of Points called qdrant:6333, the name of a Docker service on their author'sqdrantUrl 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 shutdowngpt-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 sampleExport To Sheets1.Survey Insights Agent had two typos, "mildy", and they are fixed.Participanttext-embedding-3-small and gpt-6-luna.workflow.json.Trigger Insights starts the second part by calling the workflow by its ID.Get Survey Results, Get Sheet Details, Create Insights Sheet,Get Survey Headers, Export To Sheets and Export To Sheets1.Get Survey Results, pick your spreadsheet and your sheet from the lists. The title of the spreadsheet becomes theQdrant Vector Store, Find All Answers andGet Payload of Points.Set Variables, replace YOUR_QDRANT_URL with the same address, with no slash at the end.Embeddings OpenAI and OpenAI Chat Model.When clicking ‘Test workflow’ starts the run and Get Survey Results reads every row of the sheet.Convert to Question Answer Pairs turns each row into one pair for every question column, with the participant, andQA Pairs to List makes one item of each pair.Qdrant Vector Store stores each answer. Embeddings OpenAI makes its vector, and Default Data Loader attaches thePrep Values For Trigger passes on the spreadsheet ID and the sheet, and Trigger Insights starts the second part.Execute Workflow Trigger receives them. Get Sheet Details reads the spreadsheet's title, and Set Variables gathersCreate Insights Sheet adds the sheet. Get Survey Headers reads the first two rows, Extract Questions keeps theQuestions to List makes one item of each.For Each Question... takes one question at a time. Find All Answers fetches its stored answers with their vectors,Apply K-means Clustering Algorithm sorts them into up to 10 groups.Has Clusters? sends the run on when some group has three or more answers. Otherwise Prep Values For Export andExport To Sheets1 write a No Insight Found row.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 aPrep Output For Export adds the number of answers, the participant IDs and the raw answers, and Export To SheetsGet Survey Results.YOUR_QDRANT_URL in Set Variables.collectionName in Set Variables and the collection in Qdrant Vector Store. Keep them the same.insightsSheetName in Set Variables.10 in Apply K-means Clustering Algorithm.Has Clusters? and in Only Clusters With 3+ points. Change both.Survey Insights Agent.OpenAI Chat Model.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.text-embedding-3-small, which is not on OpenAI's deprecations page.NOTICE.md 674 B README.md 8 KB workflow.json 33 KB
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…
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…
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…
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…
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…
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…