⚡ How-to guide

Product alignment decisions, made in Slack

The demo shows what it looks like when your signal analysis lives in the channel where decisions happen — weekly digest, natural-language Q&A, and Linear ticket creation, all without leaving Slack. Here's how to build a version of this for your team.

What you're looking at

The demo simulates a #relay Slack channel where three things happen: a structured weekly digest drops Monday morning, team members ask questions about the signals and Relay responds with counts, quotes, and revenue impact, and when the team reaches a decision, Relay creates a Linear ticket pre-filled with the evidence.

The key design principle is that it meets the team where they already are. No new tool to check, no dashboard to remember. Signal intelligence surfaces into the channel where priorities get discussed — and the output (a Linear ticket with linked evidence) lands in the tool where engineers work.

Below is the no-code version (using a Claude Project as a manual stand-in) and the starting point for building the real Slack integration.

What you need

⚡ Option 1 — No code

Run a weekly signal digest manually

This uses Claude Projects to produce the same output as the demo — a structured weekly signal digest that you paste into Slack yourself. Same content, manual delivery. A good way to prove the value to your team before automating it.
1
Set up a Claude Project with your signals context
Create a Project called "Product signals — [your product]". Upload the week's call transcripts, CS notes, support tickets, or customer feedback — whatever you have. Add these instructions:
Project instruction
You are a product signal analyst. Every week I upload customer conversations, CS notes, and feedback from the last 7 days. Your job is to synthesise this into a structured Slack digest that my team can use to make prioritisation decisions. Format your weekly digest as follows: **📊 W[number] Signal Digest — [date range]** [number] signals analysed · [breakdown by type] **🔴 Priority signals:** For each signal (max 4): Feature name | Count | Status | 1-sentence insight **💰 Pipeline impact:** For each active deal affected: Company | ARR | What they need | Risk level **What to prioritise:** Recommendation with reasoning (2–3 sentences) Keep responses specific and evidence-backed. Pull verbatim quotes where possible. If asked a question about signals, answer with signal counts, specific quotes, and revenue impact.
2
Run the weekly digest
At the start of each week, start a new chat in the Project and run this prompt:
Weekly digest prompt
Generate the weekly signal digest for W[number]. Use all the files I've uploaded for this week. After the digest, answer these standing questions: 1. What's the top priority signal this week and why? 2. Any new signals that weren't present last week? 3. Any signals that dropped off — what does that mean?
💡
Paste the digest output directly into your #product or #relay Slack channel. Over time you'll build a record of weekly digests that becomes genuinely useful for retrospectives and roadmap discussions.
3
Q&A on the signals
After sharing the digest, team members often ask follow-up questions. Use this prompt pattern to answer them:
Signal Q&A prompt
Team question: "[paste the Slack message here]" Answer this with: — Signal count and source breakdown — Most relevant verbatim quotes (max 3) — Revenue or account impact if relevant — Your recommendation (1 sentence)
⚙️ Option 2 — Start building

Build the live integration

The automated version has two parts: a Slack bot that delivers digests and answers questions in a channel, and a Linear integration that creates evidence-backed tickets and compares your signals against your existing roadmap. Build them in order — Step 2 extends Step 1.
1
Build the Slack bot
Use this with Claude Code to scaffold the Slack integration. It handles the weekly digest, Q&A, and the data ingestion pipeline:
Build prompt — Slack bot
Build a Slack bot that provides product signal intelligence in a designated #relay channel. Architecture: 1. Slack bot using Bolt for JavaScript (Node.js) 2. Listens to messages in #relay channel 3. Passes questions to Claude API (claude-3-5-sonnet) with signal context 4. Posts structured responses back using Slack Block Kit formatting 5. Weekly cron: every Monday 8am, auto-posts the weekly digest Data ingestion: - Weekly: reads call transcripts and CS notes from a designated /signals folder - On-demand: team can paste text signals with /relay-add command - Signals stored in flat JSON files (upgrade to Supabase later) Response format (Block Kit): - Stats row: signal count, accounts affected, revenue impact - Evidence bullets: max 3 verbatim quotes - Recommendation: 1-sentence action - "Create Linear ticket" button on any response (wired up in Step 2) Claude system prompt: [paste your signal analysis prompt from Option 1 here] Keep it simple — MVP I can iterate on. No database required for v1.
2
Add the Linear integration
This extends the bot from Step 1 with two things: creating evidence-backed tickets directly from Relay responses, and a roadmap comparison that shows which signals have coverage in Linear and which don't. Generate a Linear API key at linear.app/settings/api and store it as LINEAR_API_KEY before running this:
Build prompt — Linear integration
Add a Linear integration to the Relay Slack bot built in Step 1. Two parts: Part A — Ticket creation: When a team member clicks "Create Linear ticket" on any Relay response: 1. A Slack modal opens pre-filled with: title (signal theme), description (signal count + verbatim quotes + revenue impact formatted as markdown), and priority 2. On submit, create the ticket via Linear API (GraphQL mutation: issueCreate) 3. Post a confirmation in #relay with the ticket ID and link 4. Store the mapping: signal theme → Linear ticket ID for use in Part B Part B — Roadmap comparison: Add a /relay-coverage slash command that: 1. Fetches all open Linear issues from the configured team (GraphQL query: issues) 2. Passes issue titles and descriptions + current signal set to Claude 3. Posts a structured coverage report in #relay: - Signals with a matching Linear ticket (covered) - Signals with no matching ticket (gaps — these become the priority discussion) - Linear tickets with no signal support (potentially stale items on the roadmap) Linear API setup: - API key stored as LINEAR_API_KEY env variable - GraphQL endpoint: https://api.linear.app/graphql - Team ID: fetch once with a teams query and hardcode for v1 Keep it additive — extends the bot without changing its core Slack behaviour.
💡
The roadmap comparison is the highest-value output — it turns your signal digest from a "interesting to know" into a "here's exactly what's missing from our current plan." Worth demoing to stakeholders before you build the rest.

Going further

Want to build something like this for your team?

I build signal intelligence tools for product teams — from Slack bots to full-stack integrations with your meeting tools, CRM, and Linear. Let's talk.