Feedback Pipeline Setup Guide
Before running your feedback pipeline, connect these sources:
From this piece
The template
Feedback Pipeline Setup Guide
Data Source Checklist
Before running your feedback pipeline, connect these sources:
- Intercom or Zendesk (support tickets & customer messages)
- Slack (your feedback or #feedback channel)
- Google Forms / Typeform (in-app surveys or NPS)
- LinkedIn / Twitter mentions (if monitoring social)
- Customer calls (export transcripts if you record)
- Email (customer success team notes)
- Product analytics (user behavior data from Amplitude/Mixpanel)
Setup time: 30 minutes to gather links and export most recent feedback (last 30 days)
AI Categorization Prompt
Use this prompt weekly to organize incoming feedback:
Organize this customer feedback into themes.
[PASTE YOUR FEEDBACK HERE - copy-paste from Intercom, Slack, surveys, or email]
For each theme:
1. Theme name
2. How many times mentioned (frequency)
3. Sentiment (positive / neutral / negative)
4. Impact type (feature request / bug / UX issue / compliment)
5. Key quotes (2-3 most representative)
Rank themes by: (frequency × impact)
Flag the top 3 themes that need immediate action.
Output as a prioritized list.
Frequency: Run weekly (Monday morning is ideal) Time: 10 minutes to paste + 5 minutes to review output Output location: Save to a shared doc or Notion database
Sample Python Script (for engineers)
# Feedback Pipeline Skeleton
# Use this to auto-collect and tag feedback
import requests
from datetime import datetime, timedelta
class FeedbackPipeline:
def __init__(self, api_keys):
self.intercom_key = api_keys['intercom']
self.slack_token = api_keys['slack']
def fetch_intercom_feedback(self, days=7):
"""Fetch messages from Intercom from last N days"""
url = "https://api.intercom.io/conversations"
params = {
'created_after': int((datetime.now() - timedelta(days=days)).timestamp())
}
headers = {'Authorization': f'Bearer {self.intercom_key}'}
response = requests.get(url, params=params, headers=headers)
return response.json()
def fetch_slack_feedback(self, channel, days=7):
"""Fetch messages from a Slack feedback channel"""
# Similar pattern - fetch from Slack API
pass
def compile_feedback(self):
"""Combine all sources into one list"""
intercom = self.fetch_intercom_feedback()
slack = self.fetch_slack_feedback('#feedback')
return intercom + slack
def generate_categorization_prompt(self, feedback_list):
"""Format feedback for the AI categorization prompt"""
formatted = "\n".join([f"{item['source']}: {item['text']}" for item in feedback_list])
return f"""
Categorize this feedback:
{formatted}
"""
def run(self):
"""Run the full pipeline"""
feedback = self.compile_feedback()
prompt = self.generate_categorization_prompt(feedback)
print(prompt)
# Send to Claude API or similar
return prompt
# Usage:
# keys = {'intercom': 'your-key', 'slack': 'your-token'}
# pipeline = FeedbackPipeline(keys)
# pipeline.run()
Daily Digest Prompt Template
Run this every morning to surface urgent feedback:
Here's customer feedback from the last 24 hours:
[PASTE FEEDBACK]
Identify:
1. Any critical bugs mentioned (need immediate fix)
2. Feature requests that match our roadmap
3. Churn signals (unhappy customers)
4. One surprising insight we missed
Format: Slack-friendly message (under 200 words)
Tone: matter-of-fact, highlight urgency
Tag @[PM_NAME] if churn signal detected.
Weekly Workflow
Monday 9am: Run categorization prompt (30 min, output to Notion) Daily: Run digest prompt (5 min, Slack to #product) Friday 4pm: Review top themes, add to backlog Monthly: Deep dive: conduct 3-5 customer calls on top theme
Total time investment: ~1 hour/week ROI: Never miss critical feedback, always know customer priorities