synthesize_feedbackLABSCO SUMMARY
The themes your support bot quietly absorbed, counted next to the ones that became tickets.
Ticket volume undercounts everything a support bot answers, and the gap widens as the bot improves — folding chat conversations in as a third signal class is what closes it, with self_serve_failure_rate marking where the bot answers but does not resolve. Theme matching is keyword-based rather than model-based on purpose: customer text never leaves the server for an embedding API, and the same input always produces the same ranking, at a cost in recall the project measures and publishes.
What it is
A server that pulls three streams of customer signal — HelpScout tickets, ProductLift feature requests and Chatbase AI-agent conversations — matches them into themes, and scores each theme so the ranking has countable evidence under it.
What you get
- Themes ranked by priority score, each with its reactive, proactive and deflected counts, a convergence flag, an evidence summary and representative customer quotes
- A convergence rule that doubles the score of any theme showing up in both support tickets and feature requests
- The deflection signal: how many chat conversations hit a theme, plus self_serve_failure_rate — the share where the bot's answer confidence fell below 0.5
- A prioritised product plan as structured JSON or as a markdown brief, with max_priorities and detail_level controlling how much comes back
- kpi_context, which takes churn or traffic figures from another server so the plan can be weighed against real business metrics
- Raw ProductLift feature requests with their comments, a status filter and each request's public URL
- The connected sources listed — HelpScout mailboxes, ProductLift portals, Chatbase agents — so filters get the names they expect
- PII scrubbed before analysis: SSNs, Luhn-validated card numbers, emails and phone numbers redacted, agent replies and internal notes excluded outright
- preview_only, which shows exactly what data would be sent without fetching any of it
Requirements
Node 20 or newer, built from the repository with npm install and npm run build, then launched as a node process against dist/index.js. HelpScout is the one source you must configure, through HELPSCOUT_APP_ID and HELPSCOUT_APP_SECRET from a custom OAuth app. ProductLift and Chatbase are optional and the analysis adapts to whichever you configure — PRODUCTLIFT_PORTALS or the single-portal variables, and CHATBASE_API_KEY together with CHATBASE_AGENTS or CHATBASE_AGENT_ID, because a key on its own configures nothing. Chatbase API access starts at their Standard plan; below it the call returns 403 and the deflection fields arrive as a warning instead of failing the run. Themes live in themes.config.json and load at runtime, so editing them needs no rebuild.
Setup effort
Build from source — git clone https://github.com/dkships/pm-copilot.git
USE CASES
Deciding what goes into the next quarter
Cross-reference tickets, requests and chats into themes ranked by score, each with the customer quotes behind it.
Writing the plan somebody else has to read
Return the prioritised plan as a markdown brief rather than JSON, capped to the number of priorities you actually want.
Letting churn override the ranking
Pass churn and conversion figures from your analytics server in as kpi_context so the plan weighs them against the signal counts.
Finding where self-serve is failing
Read each theme's deflected count and self_serve_failure_rate to see what customers keep asking that the bot never resolves.
Checking what would leave before it does
Run the plan in preview mode to see exactly which data would be sent, without fetching it.
Getting the filter names right
List the connected HelpScout mailboxes, ProductLift portals and Chatbase agents, then narrow the analysis to one of them.
Browsing the roadmap board directly
Pull feature requests with their comments and public URLs, filtered by status.
4 tools
Listed in project docs. Your client may show a different list.
generate_product_planget_feature_requestslist_sourcesBEFORE YOU INSTALL
What to know first
Tools you get
4 tools named in the project's documentation.
Requires
- HELPSCOUT_APP_ID in your environment
- HELPSCOUT_APP_SECRET in your environment
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/dkships/pm-copilot.git
cd pm-copilot
npm install
cp .env.example .env # Edit with your credentials
npm run buildMCP Clients
Claude Desktop
{
"mcpServers": {
"pm-copilot": {
"command": "node",
"args": [
"<YOUR_PATH_TO_PM_COPILOT>/dist/index.js"
]
}
}
}The configuration on this page does not set HELPSCOUT_APP_ID and HELPSCOUT_APP_SECRET; the project's instructions put them in a .env file. Check which folder the server reads that file from before you rely on it.
Claude Code
claude mcp add pm-copilot -- node <YOUR_PATH_TO_PM_COPILOT>/dist/index.js