Skip to content
cccskills
FreePublished on GitHub

nps-theme-analysis

Analyze customer recommendation and satisfaction surveys, NPS and CSAT, from Google Sheets. Group comments into themes, explain weekly score changes and low-score drivers, and post a Slack digest with representative quotes without modifying survey data.

OriginalShow the original description

Weekly NPS/CSAT theme analysis for {{survey_sheet}}. Reads survey responses from Google Sheets, clusters them into themes with sentiment and detractor drivers, tracks score movement week over week, and posts a summary with representative quotes to {{report_channel}}. Read-only on the sheet and report-only — no writes to any survey system, no respondent contact.

See how to install

Good for

  • Summarizing customer surveys each week
  • Identifying recurring complaints behind low scores
  • Comparing NPS or CSAT with the previous period
  • Sharing representative customer comments on Slack

Files included (1)

  • SKILL.md4.9 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

<skill name="nps-theme-analysis"> <overview> Turn a raw NPS/CSAT survey export into a weekly digest a customer-success team can actually read. A weekly cron spawns a fresh session — there is no memory between runs, so the Google Sheet the survey tool exports into is the only source of truth. Each run reads the full response history, clusters the free-text comments into themes, bands each response by score, isolates the drivers actually pulling detractors down this week, computes how the score has moved since the prior period, and posts one summary to Slack.

Read-only and report-only: the agent never edits the sheet and never contacts a respondent. The output is a Slack message; a human decides what to act on. </overview>

<when-to-load> - The weekly cron fires the NPS/CSAT analysis sweep. - A human asks the agent to analyze survey responses or summarize NPS/CSAT. </when-to-load> <workflow>

Step 1 — Read the survey sheet

Read {{survey_sheet}} in full through the google_sheets connector, read-only. Identify the columns: response timestamp, score (0–10 for NPS, typically 1–5 for CSAT), free-text comment, and any segment/plan column if present. If column names vary, match by content (a 0–10 numeric column next to free text is almost always the NPS score).

Step 2 — Isolate this week's window

Using the timestamp column, split responses into "this week" (since the last run, one cadence period back) and "prior periods" (everything before). Because the session is fresh each run, this split is derived entirely from the sheet's own dates — there is no external ledger to consult.

Step 3 — Band the scores and tag sentiment

For NPS: promoter (9–10), passive (7–8), detractor (0–6). For CSAT: map the top band to promoter-equivalent, middle to passive-equivalent, bottom to detractor-equivalent, using whatever scale the sheet actually uses. For each response with a comment, tag sentiment (positive / neutral / negative) from the text itself — a detractor can still leave a neutral comment, and a promoter can still flag a real complaint.

Step 4 — Cluster into themes

Group the free-text comments into themes (e.g. pricing, onboarding, support responsiveness, a missing feature, performance, a specific bug) by what the respondent means, not the exact wording, using the full response history so a theme is recognized as recurring even when no two comments phrase it the same way. For each theme, pick one or two representative quotes and note which score band they came from.

Step 5 — Isolate detractor drivers

Filter to this week's detractor responses specifically. Rank the themes that show up among detractors by frequency, and call out the top few as "detractor drivers" with a count and a quote each. Compare against prior weeks' detractor themes: flag any driver that is new this week or has grown in share.

Step 6 — Compute the score trend

Compute this week's NPS/CSAT score (using the standard formula: %promoters − %detractors for NPS, or the equivalent top-box rate for CSAT) from the full history and compare it to the prior period(s) in the same sheet. State the direction and size of the move, and attribute it: is it more detractors, fewer promoters, a shift in passives, or some combination.

Step 7 — Post the weekly summary

Post one message to {{report_channel}}:

  • This week's score and its move since last period, with the attribution.
  • Top themes overall, each with a count and a representative quote.
  • Top detractor drivers this week, each with a count, a quote, and whether it's new or growing.
  • Any notable promoter quotes worth surfacing.

Nothing else is written anywhere. The sheet is never modified, and no respondent is contacted.

</workflow> <guardrails> - **Read-only on the sheet.** The agent never edits a row, adds a column, or writes a score back to `{{survey_sheet}}`. - **Report only, no action.** The agent never emails, messages, or otherwise contacts a survey respondent, and never opens a ticket or task on their behalf. Deciding what to do about a theme stays with people. - **Single output.** The only thing that leaves the sandbox is the one weekly post to `{{report_channel}}`. - **Secrets scoped.** The Google Sheets and Slack credentials are injected at runtime; never written to disk or logged. - **Recompute, don't accumulate.** Each run is a fresh session — themes, bands, and the trend are always recomputed from the sheet's own history, not from a memory file, so there's nothing stale to carry forward or drift from. </guardrails> </skill>

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

access-policy

FreeSummary

Review Slack access requests against Okta role and team information, then prepare narrowly scoped GitHub or AWS IAM permissions. Apply changes only after an eligible person's approval and record the grant, reasoning, approver, and timestamp.

  • Reviewing GitHub repository access requests from Slack
  • Preparing AWS IAM permissions for a specific task
  • Routing sensitive access requests for additional review
kortix-ai/suna20.3KUpdated Oct 20, 2026

account-research

FreeSummary

Research companies and people before outreach or meetings. Combines business profiles, recent news, hiring signals, and key contacts into a sourced brief with talking points and suggested questions, adding relationship history when CRM data is connected.

  • Research a prospective customer before outreach
  • Prepare background information for meeting attendees
  • Compare a competitor's products and positioning
kortix-ai/suna20.3KUpdated Oct 20, 2026

Review daily Google Ads and Meta Ads results for budget pacing, declining performance, and unusual activity. Get prioritized findings with supporting numbers and concrete recommendations for a marketing team to assess and carry out.

  • Checking whether campaign budgets are being spent on schedule
  • Investigating rising acquisition costs or falling ad returns
  • Finding ads and keywords that spend without converting
kortix-ai/suna20.3KUpdated Oct 20, 2026

agent-browser

FreeSummary

Automate website tasks such as navigating pages, filling forms, clicking buttons, taking screenshots, and extracting data. The skill also supports web app testing, with specialized guides for Electron desktop apps, Slack, and cloud browsers.

  • Automate form entry and page navigation
  • Capture screenshots and extract page data
  • Explore web apps for bugs
kortix-ai/suna20.3KUpdated Oct 20, 2026

ap-invoice-match

FreeSummary

Process emailed vendor invoices by extracting details, comparing them with purchase orders and invoice history, and recording duplicates, overcharges, or missing orders. Summarize results in Slack for human review; payment approval and execution remain with people.

  • Checking incoming invoices against purchase orders
  • Finding duplicate invoices and likely resends
  • Reviewing unit prices and remaining order balances
kortix-ai/suna20.3KUpdated Oct 20, 2026

billing

FreeSummary

Guide changes to Kortix billing code, admin controls, and pricing screens. Explain how plans, trials, enterprise contracts, and access exceptions should work, where pricing is defined, and which audited routes must handle account changes.

  • Update billing logic and its specification together
  • Review how trials and enterprise contracts are handled
  • Find the code that defines prices and allowances
kortix-ai/suna20.3KUpdated Oct 20, 2026

See all skills by kortix-ai

Report a problem with this skill