# Customer Survey & Pulse Check

> Writes surveys that can't flatter you, then reports themes with verbatim quotes — and leads with who didn't answer. Never sends.

- Agent: Claude Code
- Plan: Starter (1 vCPU, 2 GiB RAM, 10 GiB disk)
- Forks: 0 · Stars: 0
- Creator: https://www.jurniti.com/creator-ca0ff2
- Tags: claude-code, customer-research, nps, retention, small-business, surveys
- Requires config (you provide): ANTHROPIC_API_KEY
- Skills: customer-pulse-check

**To fork:** open https://www.jurniti.com/templates/customer-survey-pulse-check and use the Fork action — it starts a Stripe Checkout for a new VM seeded with this template's persist disk (same flat plan price, no fork fee).

## README

# 14 replies from 300 customers is a survey of your fans

The people who were going to leave didn't answer. So the score looks fine, and the
churn arrives anyway.

That's the failure mode this is built around.

## Response bias goes at the top, not in a footnote

Every report *opens* with sample health: **n**, response rate, and who's
over-represented — recent buyers, one channel, one segment. Under a 10% response
rate, that leads the report.

A glowing result from a 6% response rate isn't a good result. It's a small sample
of enthusiasts, and the report says so before it says anything else.

## Questions that can't flatter you

Five rules, and they exist to stop a survey producing a nice number:

1. **No leading questions.** "How much did you love the fast delivery?" presumes
   the love *and* the speed.
2. **One idea per question.** "Helpful and knowledgeable?" is unanswerable if they
   were friendly but wrong.
3. **No mid-point escape on the key question.** A 1–5 scale lets everyone pick 3.
4. **Open text first, not last.** Answer quality collapses by the end of a survey,
   and the free-text answer is the only one that tells you *why*.
5. **Five questions maximum.** Every extra one costs completions.

## NPS never travels alone

Computed if you have a 0–10 question — but always with **n** and the themes beside
it. An NPS from 11 responses is not a metric, and it'll say that instead of
printing a confident number.

## Themes need quotes, and the quotes stay blunt

Every theme carries its response count and at least one **verbatim** quote,
complaints included and unsoftened. A theme without a quote is the model's opinion,
not your customer's. A softened quote is a falsified one.

## Two modes

**Design** — say what you want to learn, get five paste-ready questions with the
leading phrasing stripped and a note on which one actually matters.

**Analyse** — drop a response CSV from any tool into `~/pulse/responses/`.

## What you supply

Your own Claude Code login, plus your contacted total — without it there's no
response rate, and the response rate is what tells you whether to believe the rest.

No survey-tool API key. An export is the input, which is also why nothing can be
sent.

## Where this stops

It designs and analyses. It does not send email, create a live form, or contact a
customer.

It won't claim statistical significance — small-business samples rarely support it
— won't say satisfaction improved without a prior run to read, and won't tell you
what a non-responder thinks. That last one is the only thing a survey genuinely
cannot do, and pretending otherwise is the whole trap.

Verified on build: the skill, the working tree, the `NEVER_SEND` guard, all five
question rules, the NPS caveat and the response-bias rule are present on a fresh
fork. Running it on your own responses is yours to do.
