
Survey Analysis
Analyze survey responses into a clear summary of what respondents actually said, across both quantitative (rating/multiple-choice) and open-text questions. Scopes the questions, response types, and segments FIRST, then analyzes — tallying closed questions and theming open-text comments as a data-analyst, then writes a findings summary with the headline results, segment differences, and representative quotes. Use this for analyzing survey results, summarizing a questionnaire, NPS/feedback analysis, theming open-ended responses, or a survey readout.
Steps
Entry step: scope. Each step names the specialist role it wants; the full working prompt is expandable.
- Scope the surveydata-analystentry
lock the questions, response types, and segments to cut by
Show working prompt
Map the survey before analyzing it. Step 1: list every question, its type (single-choice, multi-select, Likert/rating, open text, NPS), and the response count / completion rate. Step 2: identify the segmentation dimensions worth cutting by (role, plan, region) and confirm the data supports them. Step 3: for rating questions decide the summary stat (mean, top-2-box %, NPS formula); for open-text plan a thematic coding pass. Step 4: flag data hygiene issues (straightliners, blank responses, low-N segments to suppress). Step 5: write an acceptance-criteria checklist ('every question summarized', 'closed questions show distribution + a headline stat', 'open-text is themed with counts and example quotes', 'segment cuts suppress low-N', 'response/completion counts stated'). Call write_task_note and write the question map + segments + checklist to notes/scope.md. - Analyze the responsesdata-analyst
tally closed questions and theme open-text comments
Show working prompt
Compute the survey results from the responses. Step 1: for each closed question, compute the full distribution and the chosen headline stat (mean, top-2-box %, or NPS), and the same per segment where N is adequate. Step 2: for each open-text question, read the comments, induce 4-8 recurring themes, code each comment to a theme, and count theme frequencies; pull 1-2 verbatim quotes per major theme. Step 3: identify the most striking segment differences and surprises with the numbers. Step 4: suppress or caveat low-N segments. Step 5: emit data/results.json (per-question distributions, headline stats, theme counts, quotes) and call write_task_note with the headline findings.
- Write the summarycopywriter
produce a findings summary with headlines, segments, and quotes
Show working prompt
Write the survey readout from the computed results — no invented numbers or quotes. Step 1: open with response counts and the 3 biggest takeaways. Step 2: one short section per key question: the headline stat, the distribution in words, and the notable segment difference. Step 3: a themes section for open-text: each theme with its frequency and a representative verbatim quote (quoted exactly). Step 4: a 'surprises / watch-outs' section. Step 5: caveat sample size and any suppressed segments. Write the summary to summary.md and call write_task_note with the path. On a loop-back, fix only the named gaps.
- Evaluatereviewer
Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.
Show working prompt
Read summary.md and cross-check against notes/scope.md and data/results.json. Verify: every survey question is summarized; closed questions show a distribution plus a headline stat; open-text is themed with frequency counts and exact verbatim quotes; segment cuts suppress low-N; and response/completion counts are stated. Re-check two headline stats (e.g. an NPS or top-2-box) against the results data, and confirm quotes are verbatim, not paraphrased. Write PASS/FAIL per criterion; any FAIL loops back to write. Then route — this is the whole point of the loop: - **Every criterion PASSES →** call `advance_task_step({ ref, stepId: "evaluate", next: "finish" })`. - **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: "evaluate", next: "write" })` to loop back. The builder fixes exactly those gaps. Never route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in. - Finishdeveloper
All acceptance criteria met. Stamp a short summary and report DONE.
Show working prompt
Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.
Triggers
Phrases that suggest this craftbook to a crew.
- analyze survey responses
- summarize a questionnaire
- survey results readout
- theme open ended answers
- nps analysis
Source
View this craftbook on GitHub · MIT license