Daily voice-of-customer review digest with Linear triage

By General Input

Every weekday at 8am ET, sweep G2, Trustpilot, and Capterra for new reviews of your product, post a tagged Slack digest, and open a Linear ticket for anything 3 stars or lower.

Integrations

  • TinyFish
  • Google Sheets
  • Slack
  • Linear

Type

Agentic Task

Categories

  • Customer Support
  • Product

Build me an agent workflow that monitors public review sites for my product (and any competitors I list) and triages new reviews each morning.

Trigger: cron, every weekday at 8am America/New_York.

Inputs I will configure when I install it: a list of review URLs grouped by site and brand (mine vs competitor), the spreadsheet ID and tab name of my review log, the Slack channel for the digest (default #voice-of-customer), and the Linear team that should own low-star reviews.

Step 1. Read the existing review log from Google Sheets using Get Values on the 'seen reviews' tab so the agent has the set of review IDs we have already processed. Treat this as the dedupe set for the rest of the run.

Step 2. For each URL in my watch list, use TinyFish Run Automation to have a web agent visit the page and return every visible review on the first results page as structured data. For each review capture: site (g2 / trustpilot / capterra / other), brand (mine or the competitor name), a stable review ID (the site's review URL or hash), rating, title, body, reviewer handle or display name, and posted date. Use the synchronous Run Automation for short runs and the async variant if any single site is slow.

Step 3. Drop any review whose ID already appears in the dedupe set from step 1. Only genuinely new reviews continue. If zero new reviews remain across all sites, end the run without posting to Slack or creating any Linear issues.

Step 4. For each remaining new review, classify sentiment (positive, neutral, negative) and pick a single top theme from this list: pricing, onboarding, performance, reliability, support, feature gap, UX, integrations, value. Also flag churn_risk = true if the review explicitly mentions cancelling, switching, or asking for a refund. Suggest an owning team for each review (CX, Product, Engineering, Growth) based on the theme.

Step 5. Append one row per new review to the Google Sheet using Append Values, with columns: timestamp, site, brand, review_id, rating, title, body, reviewer, posted_date, sentiment, theme, churn_risk, suggested_team, review_url.

Step 6. Post one consolidated Slack digest to the configured channel using Send a Message. Structure it as: a one-line headline with the total count and a star breakdown, then a 'Needs attention' section that lists all 1 to 3 star reviews and anything flagged churn_risk at the top with the quote, rating, source link, and the Linear ticket link from step 7. Below that, group the remaining new reviews by site, then by brand (mine first, competitors after), each entry a one-line summary with rating, theme, and a link. Keep the formatting clean and scannable.

Step 7. For every new review that is 3 stars or lower OR has churn_risk = true, use Linear Create Issue on the configured team. Title: 'Review: <rating>★ <site> — <short title or first 8 words of body>'. Description: include the full review body as a quote block, the reviewer, posted date, sentiment, theme, churn_risk flag, the source URL, and the suggested owning team. Set priority to High when rating <= 2 or churn_risk is true, Medium otherwise. Return the issue URL so step 6 can link to it inline.

Behavior rules. If a site fails to load, skip that site for the run and note it in the digest under a small 'Could not check' footer, but still process the sites that did work. Never re-post a review across runs (dedupe must be honored). Never post an empty digest. Keep the Slack message under Slack's block limits by truncating long review bodies to about 280 characters with a 'read full review' link.

Output: one Slack message, one Google Sheet row per new review, and one Linear issue per low-star or churn-risk review, each run.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageWin back LiveChat visitors whose chats went unansweredLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardChat quality review board for LiveChat support leadsLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seats