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.

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.
NPS/CSAT theme analysis — Kortix Marketplace | Kortix