runbookify
← All plans
Customer Support & Service / CSAT / NPS Surveys & Voice of Customer

Survey Fatigue Guard: Stop Spamming the Same Customers With Surveys

A central cooldown service every survey program checks before it sends — so the same customer never gets CSAT, NPS, and a recovery survey in the same week, and a person approves every exception.

BeginnerAn afternoonBuilds onNext.jsSupabaseResend
What you'll build

A web tool where you import each survey program's send history and a proposed send list, the tool checks every recipient against your per-type cooldown rules, splits them into allowed and blocked with a plain reason, ops approves any overrides, and it exports a clean allowed-to-send list with every suppression logged.

Gated download

Enter your email — the plan downloads instantly and a copy lands in your inbox.

By submitting your email you'll also receive the weekly runbookify newsletter. You can unsubscribe at any time.

Before you start

  • A Supabase account (free)
  • A Vercel account (free)
  • A Resend account (free)
  • A CSV (or Google Sheet) of past survey sends with customer + sent date + survey type, and a CSV of the customers you're about to survey
  • Claude Code or any AI coding agent

The problem this kills

Your CSAT survey fires after every closed ticket. Your NPS survey goes out quarterly. Marketing runs a product survey. The renewals team sends a recovery survey when an account is at risk. None of these tools know the others exist — so a single customer can get pinged three times in a week, get annoyed, and either unsubscribe or stop answering anything at all. The signal you most want quietly drowns in the noise you accidentally created.

The maddening part is that the fix is simple in principle: before any program sends, check when this customer was last surveyed and skip them if they're inside a cooldown window. But that check has to live in one place that every program can call — and today it lives nowhere. So you keep over-surveying, your response rates sag, and your "voice of the customer" data gets thinner and grumpier every quarter. You do not need to be a developer to build the one shared guard that fixes this.

What you'll build

A small internal web tool that acts as the single suppression check for all your survey programs. You import each program's send history (who got surveyed, when, and what type) and the proposed send list for whatever survey is about to go out. The tool checks every proposed recipient against your cooldown rules — which you can set per survey type, because an NPS cooldown is not the same as a transactional CSAT cooldown — and splits the list into allowed and blocked, each with a plain-English reason ("last NPS sent 12 days ago, 90-day cooldown"). When a program genuinely needs to break the rule (say, a critical recovery survey for an at-risk account inside cooldown), it raises an override request that ops reviews and approves before the send is allowed. On release, the tool exports a clean allowed-to-send list in your survey tool's columns and logs every suppression with its reason.

What's inside the Implementation Plan

The downloadable plan is a step-by-step file you paste into an AI coding agent. It opens by interviewing you about your business — every survey program you run, where each one's send log lives, the exact way you identify a customer (email, account ID, contact ID), your cooldown rules per survey type, your override and approval rules, and the messy edge cases like multiple contacts at one account or duplicate emails. It reads a short spec back to you for a thumbs-up, then builds the tool around your programs and rules instead of a generic template. From there it walks the agent through the shared data model, the history and send-list imports, the cooldown check engine, the override-and-approval gate, and the allowed-list and suppression-log exports. Every step ends with a ready-to-copy prompt. Crucially, the plan builds this as a reusable check — the guard every other survey tool runs before it sends.

The governance it includes (this is the point)

This isn't a toy. The plan builds in the controls a real CX function needs: login so only your team can use it, row-level security so people only see their own organization's customers and send history, a complete audit trail of every check, override request, and approval (who, what, when, and why), a hard human-approval gate so no send-inside-cooldown is bypassed until a person signs off, and duplicate guards so the same send list can't be imported and counted twice. The whole tool exists to make a careful human decision easy — the rules raise the suppression, a person approves any exception.

Who it's for

CX and ops leaders, survey program owners, and voice-of-customer teams running multiple survey programs that don't talk to each other. If you can describe how often each survey should be allowed to reach the same customer, you can build this.

You've got this — open the plan, paste the first prompt, and you'll be running your first proposed send list through the cooldown guard this afternoon.

Gated download

Enter your email — the plan downloads instantly and a copy lands in your inbox.

By submitting your email you'll also receive the weekly runbookify newsletter. You can unsubscribe at any time.