Product Performance Analysis
Comprehensive analysis framework for evaluating product and engineering team performance across meetings, communications, goals, and key metrics.
What This Skill Does
- Meeting Analysis - Analyze Fireflies transcripts for patterns, effectiveness, recurring themes
- Communication Patterns - Track Slack activity, sentiment, engagement across team members
- Goal Tracking - Compare stated OKRs against actual achievement
- KPI Monitoring - Evaluate performance against key metrics
- Cross-Analysis - Identify disconnects between what's discussed and what's delivered
- Executive Reporting - Generate formatted Google Docs with insights and recommendations
When to Use
- "Analyze product scrub meetings over the last 6 months"
- "How is the engineering team performing against OKRs?"
- "What are recurring themes in our product discussions?"
- "Compare meeting topics with actual KPI performance"
- "Generate a performance report for the product team"
Curacel-Specific Context
When analyzing Curacel product/engineering performance, read curacel-context.md first.
This file contains:
- Product names (Auto, Health, Pay, Grow)
- Key customers/partners (AXA, Germania, etc.)
- Meeting patterns (Product Scrub, Engineering Standup, etc.)
- Slack channels to monitor
- Google Sheet IDs for OKRs and KPIs
- Team member names and roles
- Common themes and blockers
- Output preferences
With this context loaded, you'll know exactly which meetings to search for, which sheets to pull from, and which patterns to look for without asking.
Data Sources Required
-
Fireflies API - Meeting transcripts
- Key:
~/clawd/secrets/fireflies-team.key(or specify account) - GraphQL endpoint:
https://api.fireflies.ai/graphql
- Key:
-
Google Workspace - OKRs and KPIs from Sheets
- Service account (DWD):
~/clawd/secrets/google-superada.json - User:
henry@curacel.ai
- Service account (DWD):
-
Slack (optional) - Communication patterns
- Tokens:
~/clawd/secrets/slack-super-ada.json
- Tokens:
Analysis Components
1. Meeting Effectiveness
Query Fireflies for meeting transcripts matching criteria (title pattern, date range, participants).
Key metrics:
- Meeting frequency and duration
- Participant attendance patterns
- Action item distribution
- Recurring discussion themes
- Keywords and sentiment
Sample query:
{
transcripts(limit: 100) {
id
title
date
duration
participants
summary {
action_items
overview
shorthand_bullet
keywords
}
}
}
2. Communication Patterns (Slack)
Analyze message frequency, tone, engagement across channels and team members.
Key metrics:
- Messages per person per month
- Proactive vs reactive communication
- Frustration vs positive sentiment
- Channel participation
3. OKR Analysis
Pull goal data from Google Sheets, calculate achievement percentages, identify gaps.
Key metrics:
- Overall achievement rate
- Progress by product/team
- Features delivered vs revenue achieved
- Goal-setting vs execution gaps
4. KPI Tracking
Extract performance metrics from tracking sheets, compare against targets.
Key metrics:
- Performance vs target (%)
- Trend analysis (improving/declining)
- Outliers and variances
5. Cross-Analysis
Critical insights:
- Products discussed most ≠ products performing best
- Meeting topics missing from OKRs
- Technical delivery focus vs commercial outcomes
- Action items without owners
Output Format
Google Docs Report
Use rich text formatting:
- Font: Century Gothic (Henry's preference)
- Structure: Executive summary → Findings → Recommendations → Appendix
- Tables: For metrics, comparisons, action items
- Highlights: Color-coded sections (concerns = red, wins = green, actions = blue)
Template structure:
# [Analysis Title] - [Date]
## Executive Summary
[3-4 sentence overview of key findings]
## Analysis
### [Section 1: e.g., Meeting Effectiveness]
[Findings with supporting data]
### [Section 2: e.g., OKR Performance]
[Achievement rates, gaps identified]
### [Section 3: e.g., Cross-Analysis]
[Disconnects and patterns]
## Recommendations
1. [Immediate actions]
2. [Strategic changes]
3. [Process improvements]
## Appendix
### Data Sources
[List of all data pulled]
### Methodology
[How analysis was conducted]
Local Files
Save for programmatic access and future reference:
-
Structured JSON -
~/clawd/output/[analysis-name]-data.json{ "meetings": [...], "okrs": {...}, "kpis": {...}, "insights": [...] } -
Markdown Report -
~/clawd/output/[analysis-name]-report.md- Full detailed report in markdown
- Include all data tables and findings
-
Raw Data -
~/clawd/output/[analysis-name]-raw.json- Complete unprocessed data for audit trail
Workflow
-
Scope the analysis
- Time range (e.g., last 6 months)
- Meeting types (e.g., "Product Scrub")
- Data sources needed
- Specific questions to answer
-
Data collection
- Pull Fireflies transcripts matching criteria
- Extract OKR data from specified sheet
- Extract KPI data from specified sheet
- (Optional) Pull Slack messages from relevant channels
-
Analysis
- Calculate metrics for each component
- Identify patterns and anomalies
- Cross-reference data sources
- Generate insights
-
Report generation
- Create HTML for Google Docs
- Upload to Google Docs with rich formatting
- Save structured JSON locally
- Save markdown report locally
-
Delivery
- Share Google Doc link
- Brief executive summary
- Highlight top 3-5 insights
Best Practices
Small vs Big Updates
- Small updates (minor corrections, added detail) → Modify existing doc in place
- Big updates (new analysis, major sections) → Create new tab or new doc
Analysis Depth
Balance comprehensiveness with clarity:
- Focus on actionable insights
- Use data to support recommendations
- Avoid overwhelming with raw numbers
- Tell a story with the data
Recommendations
Make them SMART:
- Specific - Name owners, define actions
- Measurable - Include success metrics
- Achievable - Consider constraints
- Relevant - Tied to business goals
- Time-bound - Set deadlines (e.g., 30 days, next quarter)
Example Queries
Find all Product Scrub meetings (last 6 months)
{
transcripts(limit: 200) {
id
title
date
participants
summary {
action_items
overview
keywords
}
}
}
Filter client-side for title contains "Product Scrub" and date within range.
Get OKR data
const sheets = google.sheets({ version: 'v4', auth: jwt });
const response = await sheets.spreadsheets.values.get({
spreadsheetId: '[SHEET_ID]',
range: '[TAB_NAME]!A1:Z100'
});
Cross-reference example
// Meetings discussing "AXA"
const axaMeetings = transcripts.filter(t =>
t.summary.keywords.includes('AXA') ||
t.title.includes('AXA')
);
// AXA-related KPIs
const axaKPIs = kpis.filter(k => k.product === 'AXA');
// Insight: High meeting activity, low KPI performance
if (axaMeetings.length > 10 && axaKPIs.avgPerformance < 60) {
insights.push({
type: 'disconnect',
message: 'AXA heavily discussed but underperforming'
});
}
Common Pitfalls
- Too much raw data - Synthesize into insights, don't dump numbers
- Vague recommendations - Always name owners and deadlines
- Analysis paralysis - Set time limits, ship insights iteratively
- Ignoring context - Consider external factors (market, team changes)
- Missing follow-through - Build action tracking into recommendations
Dependencies
- Node.js (for Google Workspace scripts)
google-auth-library,googleapis(npm packages)- curl (for Fireflies API)
- jq (for JSON processing)
See Also
meeting-notesskill - For individual meeting summariesgoogle-workspaceskill - For Sheets/Docs operationsslackskill - For Slack data access
