Automated weekly analysis of customer feedback that processes 1,000+ entries and surfaces actionable insights to product teams via Slack.
My team receives 1,000+ customer feedback entries weekly from our checkout flow. Manual review was consuming 2+ hours every Monday, and critical technical issues were getting lost in the noise.
Built a Python automation that:
- Reads weekly feedback exports (CSV format)
- Uses Claude API to analyze sentiment and extract themes
- Applies signal detection to filter high-priority issues
- Categorizes by urgency (P0/P1/P2) and domain
- Auto-posts formatted summaries to Slack
- Excel-based keyword weighting
- Manual preprocessing required
- Good proof-of-concept
- See:
analyzer.pyandsrc/slack_poster.py
- Zero manual preprocessing
- Claude AI performs automatic analysis
- SQLite for historical trends
- Production-ready at scale
- See:
v2/feedback_analyser.py
Now in production: Processing 1,050+ weekly feedback entries across 7 product teams.
V2 automated one team. V3 is a platform:
- 7 teams running in parallel with team-specific configs
- 4 Slack channels with automated routing
- Week-over-week trends with historical comparison
- Scheduled automation (Monday 10am, zero manual triggering)
- Config-driven (add teams without code changes)
- Saves 8-12 hours/month of manual analysis
- Consistent quality across all product teams
- Historical trend visibility for the first time
- Costs $2-3/month to operate
See v3/ for full code, architecture docs, and deployment guide.
| Version | Key Innovation | Teams | Time Investment |
|---|---|---|---|
| V1 | Proved AI could replace manual analysis | 1 | 2 hours/week |
| V2 | Eliminated manual keyword weighting | 1 | 10 min/week |
| V3 | Multi-tenant platform with automation | 7 | 5 min/week |
| V4 | Full end-to-end automation (in progress) | 7+ | 0 min/week |
Each version solved a real bottleneck. Each iteration de-risked the next step.
Migration path: V1 validated the concept for my pitch to the VP of Product,Design and Technology, Head of Engineering and the Head of Product. V2 removed the manual bottleneck while adding intelligence and storage. V3 made it ready for productization which was approved
- ⏱️ Time saved: 2-3 hours → 15 minutes per week
- 🐛 Critical bugs found: Payment processing issue discovered in week 1
- 📊 Scale: Processes 100k+ entries annually with consistent quality
- 💰 Cost efficiency: ~$1/week in API calls vs 5 hours of PM time
- 🔄 Adoption v2: will aim to launch across other 4 other tech squads once V2 pitch is successful (Claude Team Plan and Enterprise needed for PII protection).
- Adoption v3: It was accepted as a rolled out pilot so I built it to expand across all the teams to their own channels and create a process out of it. Yay!
CSV Export → Python Parser → Claude API Analysis
↓
Signal Filtering
↓
Category Grouping
↓
Slack Formatting
↓
Team Channel Post
- Language: Python 3.11
- AI Integration: Anthropic Claude API
- Communication: Slack Webhooks/Bolt SDK
- Data Processing: Pandas
- Configuration: Environment variables
API Integration at Scale:
- Hit rate limits at 2,000 entries (implemented batching strategy)
- Cost optimization: batch analysis vs per-item processing
- Error handling for malformed CSV data
Slack Integration:
- Block Kit for rich, interactive formatting
- Threading for detailed breakdowns
- @mentions for urgent P0 issues
Production Readiness:
- Virtual environment management
- Secrets management with .env files
- Comprehensive logging for debugging
- Graceful failure handling
v2:
- Version management and branching
- Reference kept and maintained across publicly and to my private repos to run the code
- Good documentation is KEY!
- Roadmapping an internal tool from conception to pitching and to iterative development as a solopreneur
# Clone repository
git clone [repo-url]
cd voc-portfolio-clean
# Install dependencies
pip install -r requirements.txt
# Configure environment
cp .env.example .env
# Add your ANTHROPIC_API_KEY and SLACK_WEBHOOK_URL
# Run analysis (with sample data)
python src/analyzer.py sample_data/sample_feedback.csvvoc-portfolio-clean/
├── README.md
├── requirements.txt
├── .env.example
├── .gitignore
├── src/
│ ├── analyzer.py # Core analysis logic
│ └── slack_poster.py # Slack integration
└── sample_data/
└── sample_feedback.csv # Demo dataset
- Real-time analysis (vs weekly batch)
- Trend tracking across weeks
- Integration with Jira for automatic ticket creation
- Custom alert thresholds per team
Note: This is a portfolio version with sanitized data and generic business logic. The production version processes real customer feedback for internal team use.
Built with: Claude AI • Python • Slack API • Pandas
Author: Dimos Papadopoulos
Role: PM & Builder
Copyright (c) [2026], [Dimos Papadopoulos]. All rights reserved.