Analyze open-ended answers

Turns a hundred lines of free text into a handful of themes with numbers and quotes

Free agent skill for Claude Code, Codex, Cursor and Gemini CLI. It works through the SurveyNinja MCP server, with your permissions.

Category
Understand results
Tags
open answers, report
Works with
Claude Code, Codex, Cursor, Gemini CLI
MCP tools
5, 1 of them change data
Version
1.1, October 20, 2026
Made by
SurveyNinja
Price
Free
See also
AI survey analysis
Skill file
SKILL.md

What it does

  • See what people write about most. A hundred lines of free text become a few themes, each with a count and a share.
  • Quotes stay verbatim. One or two typical quotes per theme, typos included, because a tidied quote stops being evidence.
  • No invented themes. The assistant does not make up themes or bend them to expectations, and it draws no conclusions from five answers.

Example

You type

Group the free-text answers into themes and show what comes up most

What the assistant brings back

  • Long wait 41 (43%)
  • Unclear what the price includes 18 (19%)
  • Nobody called back 12 (13%)
  • Praise for the technician 9 (9%)
  • No content 16 (17%)
“waited almost an hour even though I booked for 10:00”

Waiting is both the largest theme and the most consistent one: people name a specific time instead of complaining in general. That is something you can measure and fix.

The themes and the quote are an example. The analysis runs on your own text answers.

How it works

  1. Groups answers by meaning“Waited too long”, “waited forty minutes” and “the queue” are one theme. The words do not have to match.
  2. Counts the sharesFor each theme: how many answers and what share of everyone who wrote something. A theme without a number decides nothing.
  3. Sets aside the empty ones“No”, “all fine” and “-” go into their own group. They are not themed and not hidden either, because the size of that group says something too.
  4. Quotes verbatimOne or two characteristic quotes per theme, typos and all, with no polishing. Personal details are stripped out of the quote.

Try also

  • What are people writing in the “what could be better” question?
  • Pull themes out of the open answers with quotes

What it will not do

  • Do not mix answers to different questions
  • Do not surface quotes containing personal data
  • Do not suggest a plan upgrade or lead to payment

The skill works with your permissions. Tools that change data are marked, so you check what the assistant is about to do before you confirm. To cut access, remove the connector in the assistant or delete the API key.

In short

How does the skill find themes?

By meaning rather than wording: “waited too long”, “waited forty minutes” and “the queue” are one theme. Each theme gets the number of answers and its share of everyone who wrote something.

What happens to answers like “no” or “all fine”?

They go into a separate “no content” group. It is not split into themes and not hidden either, because its size says something too.

Can it analyze several questions at once?

One at a time. Mixing answers to different questions produces mush, so the questions are analysed one after another.

Can I analyze the answers of only some respondents?

Yes, if report filters are available on your plan. The texts follow the report's saved filters, so the assistant sets them to your condition, but asks you first: the same filters apply to the report others see.

What about personal data in the answers?

Phone numbers, email addresses and names are removed from the quotes. The skill only reads answers and changes nothing in the survey.

What do I need to use it?

A SurveyNinja survey with open questions and an assistant that supports MCP and loads skills from a folder, such as Claude Code, Codex, Cursor or Gemini CLI. The assistant connects with your own API key or through “Allow access”. The skill is a plain text file and runs nothing by itself.

The full skill

The SKILL.md file the assistant reads, exactly as it is in the archive.

Show the full text

Analysing free-text answers

Open questions give the most valuable material and the least convenient one: a hundred lines of text that appear in the report as a plain list. The job is to turn them into a few themes with numbers.

Reply to the person in the language they write in. Keep quotes in the language the respondent wrote them in.

Collect

  1. get_quiz_structure — find the open questions with their widget_id and widget_hash.
  2. get_quiz_report — gives the report_uuid.
  3. get_quiz_report_inputs with those three — the text answers for one question, 50 at a time: page with offset until nothing is left. If several questions collect text, take them one at a time: mixing answers to different questions produces mush.

The texts follow the report's saved filters (by default, completed responses only); no call parameter narrows them. To analyze only part of the respondents (one segment, one period), the saved report filters have to change: read them with get_quiz_report_filters, and before save_quiz_report_filters ask the person, because the same filters apply to the report screen, the public link and the PDF that others see. Restore them afterwards if asked. If report filters are not available on the person's plan, say so as a fact and analyze all answers.

Analyze

  1. Extract themes by meaning, not by wording: "waited long", "waited forty minutes" and "the queue" are one theme.
  2. Count. How many answers per theme and what share of those who answered.
  3. Separate the empty ones. "No", "all fine", "-" form a "no content" group: do not theme them, and do not hide them either, because the size of the group says something.
  4. Pick quotes. One or two per theme, verbatim, the most characteristic.
  5. Note sentiment where it is distinguishable: one theme can carry different attitudes.

How to present

Themes by descending frequency. For each: a theme name in your own words, the count, the share, one quote.

At the end: the two or three themes that recur most, which is what is worth acting on.

Honesty rules

  • Do not invent themes. If the answers do not group, say so.
  • Do not bend results to expectations. If they expected price complaints and people write about deadlines, report deadlines.
  • Quote verbatim, typos included: a tidied quote stops being evidence.
  • Do not conclude from five answers. Say the data is thin.

What not to do

  • Do not mix answers to different questions in one analysis.
  • Do not surface quotes containing personal data. Strip phone numbers, email addresses and names out of the quote.
  • Do not suggest a plan upgrade or lead to payment. If a limit is hit, state the fact and stop.
The SurveyNinja ninja on a rocket

Connect SurveyNinja to your assistant

The MCP server works on every plan, Free included. Sign up, allow access and ask your assistant to build the first survey.