TL;DR
Built the VoC Agent, a Notion AI agent that synthesises qualitative customer signal across Zendesk, Canny, Outreach Kaia transcripts, Slack, and public Notion pages in one place. Product, Operations, and Research teams can ask on-demand questions about feature requests, support trends, churn risks, and customer sentiment, and the agent connects the dots across sources to surface patterns, with citations back to the original quote. Available directly in Notion and via the dedicated #voc-agent Slack channel.
The Problem
Customer signal at Phorest is rich but scattered. Product talks to Zendesk for support trends, Canny for feature requests, Outreach Kaia for sales-call objections, and Slack for the daily drumbeat, and each team ends up rebuilding the same ingest, filter, and summarise pipeline by hand.
- No single place to ask "what are clients saying about X this month?" across all qualitative sources at once.
- Repeated extraction work, each PM, researcher, and CSM was manually trawling individual tools.
- Inconsistent conclusions, different people querying different slices of the same data reached different answers.
- No way to scale Kaia transcripts, Outreach charges ~€190/user/month plus 8–12k for agent-level access, and Notion has no native Kaia connector. Eighteen months of demo-call data was effectively locked away.
- Reporting was ad-hoc, leadership wanted monthly themed reporting on customer asks, churn risks, and production issues, but no one owned the rollup.
The Solution: One Agent, Five Sources
A single Notion AI agent with two modes, discovery (natural-language Q&A) and reporting (scheduled monthly synthesis), backed by five governed data sources.
Connected sources
| Source | What it covers | How it's connected |
|---|---|---|
| Zendesk | Support tickets, escalations, recurring issues | Notion connector |
| Canny | Public feature requests, vote counts, comment threads | Notion connector |
| Outreach Kaia | ~2,099 calls / 18 months | Custom MCP server (in-house) wrapping the Kaia recording API |
| Slack | Product, churn-risk, beta-feedback, competitive channels | Notion ↔ Slack integration (incl. private channels) |
| Notion | All public-facing Phorest pages, research, discovery, releases | Native |
Two modes of use
- Discovery mode, instructions tuned for back-and-forth Q&A. Used by Product, Research, and CS leadership to interrogate themes, pull quotes, stress-test hypotheses.
- Reporting mode, instructions tuned to generate a fixed monthly report template covering top feature requests, support trends, churn signals, production issues, broken down by team / region / vertical.
Distribution
- Notion, agent available to anyone in the workspace.
- Slack, dedicated
#voc-agentpublic channel where any teammate can ping the agent. - Beta channels (
whatsapp-beta-support-queries,add-ons-feedback, etc.) added as live sources.
Key Challenges
Getting access to Kaia
Outreach's commercial model made direct Kaia access expensive and slow. We bypassed it by building our own MCP server against the public Kaia recording API, exporting 18 months of transcripts directly. Same end result, no per-user licence cost.
Splitting one agent into two modes
The original VoC agent was instructed as a report generator. When PMs started asking it ad-hoc questions in Slack, the answers came back stiff and report-shaped. Solution: refactor instructions so the same agent supports both report generation and discovery Q&A, picking up the right behaviour from the prompt.
Volume vs. context window
The agent can't load 2,099 transcripts into a single context. For deep 18-month analysis we ran a one-off batch export offline; for ongoing use the agent queries shorter periods or specific accounts on demand.
Trust and provenance
Every claim the agent makes is auditable back to the original Zendesk ticket, Canny post, Slack message, or transcript timestamp. The agent always cites, no synthesis without a source.
What the Agent Can Do
| Capability | Example question |
|---|---|
| Cross-source theme synthesis | "What are clients saying about Phorest Pay this month?" |
| Feature-request trend tracking | "Top feature requests not on our roadmap in the last 30 days" |
| Quote retrieval | "Pull a client quote for each support theme this week" |
| Churn signal surfacing | "Which accounts have shown churn risk language in the last 60 days?" |
| Beta feedback rollup | "What is beta feedback saying about WhatsApp and AI features?" |
| Monthly report generation | Scheduled VoC report, themes, asks, churn signals, production issues |
| Region / vertical filtering | "Top medspa requests in UK & Ireland over the last quarter" |
What We Learned
- One agent, two modes is better than two agents. Splitting reporting and discovery into separate agents fragments the source list and the maintenance overhead.
- MCP unlocks closed ecosystems. Outreach Kaia had no Notion connector; building a small MCP server made the data accessible to every Notion agent we'll ever build.
- Public Slack channels beat DMs for adoption. Once
#voc-agentwas public, usage went from a handful of leadership testers to daily questions from PMs, CSMs, and support leads. - Reports + Q&A is the right shape. Scheduled monthly reports give leadership rhythm; on-demand Q&A gives PMs depth. Either alone is half the value.
- Provenance is non-negotiable. Every answer cites its source. Without that, no one trusts a synthesis across five tools.
- Beta channels should plug in early. Adding beta feedback Slack channels as sources gave us real-time sentiment on shipping features without any extra tooling.
Tech Stack
- Notion AI Agents, orchestration, instructions, Slack distribution
- Custom MCP Server, Kaia recording API wrapper (Node.js, hosted on Heroku)
- Notion connectors, Zendesk, Canny, Slack, Notion
- Slack,
#voc-agentchannel + beta-feedback channels as live sources