← Back
Analysis Case Study · 05 Published March 2026

A Feature Request Trends Dashboard from 2,099 Sales Calls

An automated pipeline that exports Kaia transcripts, uses Claude Haiku to score each against 15 product features (distinguishing client requests from rep mentions), and renders an interactive HTML dashboard with release-date markers and linear-regression trend lines.

TL;DR

We built an automated pipeline that exports 2,099 Kaia sales call transcripts from the Outreach API, uses Claude AI (Haiku) to score each transcript against 15 product features, uploads the scored data to a Notion database, and generates an interactive HTML dashboard showing how client feature requests trend over time. The goal: validate whether shipping a feature actually reduces the number of times clients ask for it on demo calls.


The Problem

Phorest's product team ships features on a regular cadence, but had no quantitative way to measure whether a release actually reduced client demand for that feature. The only signal was anecdotal, reps saying "people ask about X a lot" in Slack.

Meanwhile, every sales demo is recorded via Outreach Kaia, producing full transcripts with timestamps and speaker labels. Thousands of these were sitting untapped.


The Solution: Four-Stage Pipeline

Stage 1, Outreach API Export

Connects via OAuth2 refresh-token flow, queries /api/v2/kaiaRecordings, and exports all qualifying recordings to a CSV. Filters: startTime Nov 2024–Apr 2026, duration ≥30 min, provider = Zoom or Google Meet.

Output: kaia-transcripts.csv, 224 MB, 2,099 rows. export-transcripts.mjs handles pagination, rate limiting, and streaming CSV output with embedded newlines.

Stage 2, AI Scoring with Claude API

For each of the 2,099 transcripts, sends the full text to Claude Haiku with a structured scoring prompt. The AI returns a 0/1 score for each of 15 tracked features, a call overview, and specific client quotes for any feature scored 1.

Score = 1 only if a client genuinely requests or expresses need for the feature. If only the sales rep mentions it during a demo walkthrough, score = 0.

This distinction is essential, we're measuring unmet client demand, not rep pitch frequency.

The 15 features tracked

Send Payment Links · Memberships 2.0 · Add-ons & Zero-minute services · Send Consultation Form on booking · OB Strict Gap Time · Custom Break Blocks · Print Travelers for stylists · Gift Voucher Commissions · Business Level Commission · Log of notifications in Go · Finishing time for a single service · Additional Gender Settings · Go, restrict 'my numbers' history · Aveda+ Rewards Integration · Sell memberships online

Stage 3, Notion Database Population

For each scored transcript, creates a Notion page with the call title, date, recording ID, 15 number columns (0/1) per feature, and a 2–4 sentence call overview. For any feature scored 1, the exact client quote and context are appended.

This works as both a filterable dashboard (sort/group by feature, filter by month) and a drill-down tool, click any row to read what the client actually said.

Stage 4, Interactive HTML Dashboard

Trend calculation: linear regression across all months (not just first vs last). The slope is expressed as a % change relative to the mean, giving an accurate "is demand actually rising or falling" signal that accounts for month-to-month noise.


Results

BeforeAfter
No data on what clients actually ask for on calls2,099 transcripts scored across 15 features with client quotes
Anecdotal "reps say people want X"Quantified: exact % of calls per month per feature
No way to measure feature release impactBefore/after trend lines with release-date markers
Would take weeks to read transcripts manuallyAI scored all 2,099 in ~4.5 hours for ~$2
One-off analysisRepeatable pipeline, re-run anytime with new data

What We Learned


Tech Stack