Sorts each day's product feedback into your own themes, writes it to a tab and posts a rollup to Slack.
Uses
Claude
Google Sheets
Slack
Sort product feedback into themes
Every day, the feedback on your feedback tab is read and each piece is sorted by AI into one of the themes you define, with its tone judged as positive, neutral or negative. Each sorted item is written to a separate tab, and a short rollup is posted to your product channel in Slack.
You get a Slack message with two or three sentences on which themes came up most and anything that reads as urgent, followed by the full sorted list. Feedback that fits none of your themes is filed as Other rather than forced into the nearest one, and frustrated feedback is recorded as negative, not softened. Each item reaches the sorted tab before the rollup is attempted, so a failure in the summary costs you the commentary, never the sorted feedback. It posts on quiet days too, because a rollup that goes silent looks the same as one that has broken.
You need a feedback tab with a 'Feedback' column, a second tab for the sorted results, your list of themes and a Slack channel.
feedbackUrl to blank.Set feedbackUrl to blank.themes to blank.Set themes to blank.slackChannelId to blank.Set slackChannelId to blank.feedbackTab to Feedback.Set feedbackTab to Feedback.sortedTab to Sorted.Set sortedTab to Sorted.maxRows to 200.Set maxRows to 200.feedbackUrl. Save it as sheet.Read the rows of feedbackUrl. Save it as sheet.sorted to an empty list.Set sorted to an empty list.item in sheet.rows:For each item in sheet.rows:sortErrorIf a step below fails, save the error as sortErroritem.Feedback and save it as comment.Trim item.Feedback and save it as comment.comment isn't emptyIf comment isn't emptythemes
The feedback:
comment'. Save it as verdict.
Maximum response length: 40verdict.response_text and save it as sortedAs.Trim verdict.response_text and save it as sortedAs.sortedAs isn't emptyIf sortedAs isn't emptysortedAs | comment to the end of sorted and save it as sorted.Add - sortedAs | comment to the end of sorted and save it as sorted.sortedTab in feedbackUrl.Add a row to sortedTab in feedbackUrl.sortError as text.Show in the output: Could not sort a feedback row: sortError as text.sorted is emptyIf sorted is emptyslackChannelId.Send a message to slackChannelId.*Feedback rollup*
Nothing new to sort today.sorted with a new line and save it as sortedList.Join sorted with a new line and save it as sortedList.rollupErrorIf a step below fails, save the error as rollupErrorsortedList'. Save it as written.
Maximum response length: 400written.response_text and save it as rollup.Trim written.response_text and save it as rollup.slackChannelId.Send a message to slackChannelId.*Feedback rollup* (the length of sorted as text)
rollup
sortedListslackChannelId.Send a message to slackChannelId.*Feedback rollup* (the length of sorted as text)
_Rollup unavailable today._
sortedList