// diagnose
Customer Survey Design
Use when the user wants to design a customer or market survey — choosing the questions, structure, scales, and sample size to get unbiased, decision-useful answers. Also use when the user mentions survey, questionnaire, NPS, customer feedback, market research survey, product-market fit survey, sample size, margin of error, "how many responses do I need," or "what should I ask my customers." Produces a structured survey with unbiased questions mapped to decisions, plus computed sample-size, invite, and segment-readability numbers from a runnable engine.
npx skills add sarojkjha/aaj-marketing-skills --skill customer-survey-designHow to install and run this
Install it in your project:
npx skills add sarojkjha/aaj-marketing-skills --skill customer-survey-designNo install? Add https://aaj-engines-mcp.sarojkjha10.workers.dev/mcp as a custom connector in Claude, ChatGPT or any MCP client.
https://aaj-engines-mcp.sarojkjha10.workers.dev/mcpThen ask: Use the AAJ customer-survey-design skill on my numbers.
Step-by-step for every agent, Windows, Mac and Linux →Claude Code
/plugin marketplace add sarojkjha/aaj-marketing-skills/plugin install aaj-marketing-skills@aajOpenAI Codex
codex plugin marketplace add sarojkjha/aaj-marketing-skillscodex plugin add aaj-marketing-skills@aajClaude or ChatGPT — no install
Add this as a custom connector:
https://aaj-engines-mcp.sarojkjha10.workers.dev/mcp// when to use it
Use when the user wants to design a customer or market survey — choosing the questions, structure, scales, and sample size to get unbiased, decision-useful answers. Also use when the user mentions survey, questionnaire, NPS, customer feedback, market research survey, product-market fit survey, sample size, margin of error, "how many responses do I need," or "what should I ask my customers." Produces a structured survey with unbiased questions mapped to decisions, plus computed sample-size, invite, and segment-readability numbers from a runnable engine.
// what you give
The decision the survey should inform, who you'll ask, audience size and expected response rate if known, and the segment cuts you plan to report
// what you get
A structured survey — questions, types, scales, and order — designed to avoid bias, plus required completes, invites, and a per-segment readability verdict from the engine
Engine spec
// decision it supports
How many responses do we need, and which segment cuts will our sample be able to read?
// inputs
The decision the survey should inform, who you'll ask, audience size and expected response rate if known, and the segment cuts you plan to report
// output
A structured survey — questions, types, scales, and order — designed to avoid bias, plus required completes, invites, and a per-segment readability verdict from the engine
// acts or analyzes
Analyzes onlyMakes no network calls, writes no files and changes nothing in your tools.
// where your information goes
| How you run it | Where your inputs go |
|---|---|
| Skill installed in your agent, or the local MCP server | The engine runs on your machine and AAJ receives nothing. Your AI agent still sends what you give it to its model provider (Anthropic, OpenAI and so on), under your own account's terms. |
| Hosted MCP server | Your agent's model provider, as above, plus AAJ's server on Cloudflare, which receives the engine inputs over HTTPS, runs them in memory and keeps no copy. Cloudflare keeps error logs (no inputs) for up to 7 days. |
No engine needs customer names, emails or other personal data; leave them out.
// limitations
- It sizes the sample, not the questions. It cannot spot leading or double-barrelled wording; pilot the survey with a few people first.
- Invites are completes divided by the response rate you enter. An optimistic rate makes an infeasible plan look feasible.
- Segment margins are worst case per cell, and the READ, CAUTION and DON'T READ cut-offs (5 and 8 points) are working labels, not laws.
- It sizes survey reads, not experiments. Whether variant B beat variant A belongs in ab-test-significance.
// review before acting
// setup
npx skills add sarojkjha/aaj-marketing-skills --skill customer-survey-designhttps://aaj-engines-mcp.sarojkjha10.workers.dev/mcpAgents listed: Claude Code, Cursor, OpenAI Codex, Windsurf, Cline. Tested and recorded: Claude Code, OpenAI Codex (Windows, ab-test-significance only).
Customer Survey Design
Design surveys that produce answers you can act on, not vanity data. The discipline is starting from the decision the survey must inform and writing questions that don't lead the respondent — most surveys fail by asking biased questions that confirm what the author hoped.
The second, quieter failure mode is fielding a survey that can't answer its own question: 60 responses split across five segments, then decisions made on ±13-point noise. This skill computes what a readable survey actually requires before anything is sent — and refuses to bless segment cuts the sample can't support.
When to use
The user is about to field a survey and needs the questions, structure, and sample plan to be right before it goes out.
Before you start
- Name the decision. What will you do differently based on the results? If a question doesn't inform a decision, cut it.
- Identify the respondents and how you'll reach them (existing customers, churned users, prospects, market panel) — this shapes wording and length. Get the reachable audience size and a realistic response rate if known.
- List the cuts you'll report. If the readout says "by segment," the sample must be sized for the smallest cell, not the total.
- Pick the survey type to match: PMF ("how would you feel if you could no longer use this?"), NPS + why, onboarding/CSAT, churn reason, or discovery.
Method
The engine (resources/survey-design.js, Node, stdlib only) computes:
- Required completes — n₀ = z²·p(1−p)/e², with finite-population correction n = n₀/(1+(n₀−1)/N) when the audience is finite. Worked check: ±5pp at 95% (z=1.96, p=0.5) → n₀ = 384.16 → 385; corrected for N=2,000 → 323.
- Invites — completes ÷ response rate, with a feasibility verdict against the audience size (loosen the margin, lift response, or run a census and report the achieved ±).
- Segment readability — worst-case margin per cell, e = z·√(0.25/n_cell), labelled READ (≤±5pp), CAUTION (±5–8pp, directional), DON'T READ (wider). Thresholds are working labels, not laws.
Modes: sample '<json>' and segments '<json>'. --demo runs both worked examples with no arguments; --help prints the schema.
Workflow
- Size the survey first — run
node resources/survey-design.js sample '<json>'with the margin, confidence, audience, and response rate. If it's not feasible, fix the plan before writing a single question. - Check the cuts — run
segmentsmode with planned segment shares. Merge or oversample any DON'T READ cell now, not after fielding. - Map questions to decisions — list the decisions, then write the minimum questions that inform each.
- Choose question types and scales using
resources/survey-template.md(open-ended for discovery, closed/scale for measurement; consistent scale direction). - Write unbiased wording — neutral, one idea per question, no leading or loaded phrasing, balanced options.
- Order for flow and low drop-off — easy/engaging first, sensitive/demographic last, group by topic, keep it short.
- Add the key open-ended "why" after rating questions — that's where the actionable insight lives.
Present the result
Lead with the sample plan (completes, invites, feasibility, and the segment-readability table from the engine), then the survey in order (question, type, scale/options) with the decision each informs, an estimated completion time, and the recommended channel/timing.
Show where it came from. Open your answer with "AAJ customer-survey-design engine result:" and print the engine's output block exactly as it returned it, then add the line Method: https://skills.aajconsult.com/skills/customer-survey-design. Say the numbers come from the AAJ engine, not from the model. Put your interpretation under that block. Do not retype the figures from memory. If you could not run the engine, say so and label any numbers as your own estimate, not an AAJ result.
Guardrails & common mistakes
- Don't promise segment reads the sample can't support. If a cell says DON'T READ, either resize or drop the cut from the readout.
- No leading questions. "How much did you love our amazing onboarding?" yields noise. Ask neutrally.
- One idea per question. Double-barreled questions ("Was it fast and easy?") can't be answered cleanly.
- Keep it short. Every extra question lowers completion and data quality.
- Balance the scale. Offer as many negative as positive options; include a neutral where appropriate.
- Pilot first. Test with a few people to catch confusing wording before fielding.
- Survey sampling ≠ experiment significance. Testing whether variant B beat variant A belongs in
ab-test-significance; this engine sizes reads, not experiments.
Related AAJ resources
- Interactive tool: https://aajconsult.com/tools/survey-studio
Related skills
persona-builder (turn answers into personas) · positioning-statement (questions that test messaging) · lifecycle-and-retention (churn-reason surveys feed the retention diagnosis) · ab-test-significance (experiments, not survey reads).
// see it run
Examples
// prompt
node resources/survey-design.js --demo
// result
▸ DEMO 1 — sample mode (Brightlane onboarding NPS-driver survey) AAJ · SURVEY SAMPLE SIZE ──────────────────────────────────────────────────────── Target read ±5.0pp at 95% confidence (z=1.96) Assumed proportion 50% (worst case — safest) Completes needed 323 (infinite-population n=385, corrected for N=2000) Invites needed 1615 (at 20% response rate) ▲ FEASIBLE — 1615 invites fits inside your 2000-person audience. ▸ DEMO 2 — segments mode (can we read Enterprise separately?) AAJ · SEGMENT READABILITY ──────────────────────────────────────────────────────────────── Total completes 323 · 95% confidence · worst-case p=50% Segment n ±MoE Verdict SMB 178 ±7.3pp ██████░░░░░░ CAUTION (directional only) Mid-Market 97 ±10.0pp ████████░░░░ DON’T READ (noise at this size) Enterprise 48 ±14.1pp ███████████░ DON’T READ (noise at this size) ▼ 3 cut(s) below a clean read. Smallest cell "Enterprise" (n=48) is ±14.1pp. A ±5pp read needs ~385 completes per cell at 95% — either boost total n, oversample the small segment, or merge it into a wider cut before fielding.
// faq
// install
npx skills add sarojkjha/aaj-marketing-skills --skill customer-survey-design// run it
node .agents/skills/customer-survey-design/resources/survey-design.js --demo// worked example
Get the worked example for Customer Survey Design
One email. The filled-in config, the output, and how to read it.
// sprint
Positioning & Message Sprint — $3,500, 10 business days
This skill is one of the engines behind the Positioning & Message Sprint — $3,500, ten business days.
Positioning, copy, and voice governance — every claim defensible.
// human in the loop
Need a human in the loop?
AAJ builds the strategies, tools, and playbooks these skills are made of — with engagements for growth-stage and enterprise teams.
