AgentSkillsCN

meeting-synthesis

在对战略选项或路线图项目进行排序时使用——采用加权评分公式(0.2×信号强度 + 0.4×战略契合度 + 0.3×影响程度 - 0.1×复杂度),确保优先级的一致性与合理性。

SKILL.md
--- frontmatter
name: meeting-synthesis
description: Use when extracting product signals from meeting transcripts - systematically identifies asks, problems, quotes, and evidence across time windows with customer attribution
allowed-tools: Read, Grep, Glob

Meeting Synthesis

Purpose

Extract actionable product signals from meeting transcripts:

  • Feature requests and capability asks
  • Pain points and friction areas
  • Customer quotes and verbatim feedback
  • Evidence for epic creation and prioritization
  • Pattern detection across multiple customers

When to Use This Skill

Activate automatically when:

  • product-planning workflow gathers signals for epics
  • cs-prep workflow compiles customer context for QBRs
  • strategy-session workflow needs customer insights
  • User explicitly requests meeting synthesis
  • Any workflow requires customer evidence extraction

Signal Types

1. Feature Requests ("Asks")

Explicit requests for new capabilities or enhancements.

Indicators:

  • "We need..."
  • "Can you build..."
  • "It would be great if..."
  • "Our team wants..."

Extract:

  • What capability is requested?
  • Why is it needed? (business impact)
  • Who requested it? (customer, role)
  • When? (meeting date)

2. Pain Points ("Problems")

Friction, blockers, or inefficiencies users experience.

Indicators:

  • "It's frustrating that..."
  • "We struggle with..."
  • "The current process is..."
  • "Our team spends too much time..."

Extract:

  • What is the pain point?
  • How does it impact workflow/outcomes?
  • Frequency/severity?
  • Who experiences it?

3. Onboarding Friction

Specific difficulties during setup or first value realization.

Indicators:

  • "Setup was confusing..."
  • "Took us X weeks to..."
  • "Couldn't figure out how to..."
  • "Documentation unclear on..."

Extract:

  • What step caused friction?
  • How long did it take?
  • Was it eventually resolved?
  • Suggestions for improvement?

4. Integration Gaps

Missing connectors or data sync capabilities.

Indicators:

  • "We use [Tool X] but can't connect..."
  • "Data sync with [Platform Y]..."
  • "Export to [System Z]..."

Extract:

  • What integration is needed?
  • What data needs to flow?
  • Current workaround (if any)?
  • Business impact of gap?

5. Performance Needs

Speed, scale, or reliability requirements.

Indicators:

  • "Too slow when..."
  • "Times out on..."
  • "Can't handle X records..."
  • "Need real-time..."

Extract:

  • What operation is slow?
  • Current performance vs. needed?
  • Scale requirements?
  • Impact on usage?

Synthesis Process

1. Determine Time Window

Inputs:

  • days: Explicit lookback window (e.g., 7, 14, 30)
  • last_run: Timestamp from state file (e.g., datasets/product/.meetings-to-backlog-state.json)
  • Default: 3 days if no inputs provided

Calculate cutoff date:

code
If days provided:
  cutoff_date = current_date - days
Else if last_run exists:
  cutoff_date = last_run timestamp
Else:
  cutoff_date = current_date - 3 days

2. Collect Meeting Files

Scan paths:

code
datasets/meetings/Customers/**/YYYY/*.md  (where date >= cutoff_date)
datasets/meetings/Internal/Product/YYYY/*.md  (where date >= cutoff_date)

Use Glob to find files:

code
Glob pattern: datasets/meetings/Customers/**/2025/*.md
Glob pattern: datasets/meetings/Internal/Product/2025/*.md

Filter by date:

  • Extract date from filename (YYYY-MM-DD prefix)
  • Compare to cutoff_date
  • Keep only files >= cutoff_date

3. Extract Signals from Each Meeting

For each meeting file:

A. Parse frontmatter:

yaml
date: "YYYY-MM-DD"
type: "sales|product|customersuccess|..."
customer: "Company Name"
participants: ["Person A", "Person B"]
tags: ["2025Q3", "keyword"]

B. Read sections:

  • ## ⬇️ AI Summary → High-level signals
  • ## ⬇️ Action Items → Commitments and follow-ups
  • ## ⬇️ Full Transcript → Detailed context and quotes

C. Identify signal candidates: Use pattern matching:

code
Feature requests: grep -i "we need\|can you\|would be great\|want to" transcript
Pain points: grep -i "frustrat\|struggle\|difficult\|problem\|issue" transcript
Onboarding: grep -i "setup\|onboard\|getting started\|first" transcript
Integrations: grep -i "integrat\|connect\|sync\|export" transcript
Performance: grep -i "slow\|timeout\|performance\|scale" transcript

D. Extract verbatim quotes:

  • Capture 1-3 sentence snippets around signal indicators
  • Preserve exact wording for evidence
  • Include speaker attribution if available

E. Record metadata: For each signal:

code
{
  "signal_text": "Verbatim quote or paraphrase",
  "signal_type": "ask|problem|friction|integration|performance",
  "customer": "Company Name",
  "date": "YYYY-MM-DD",
  "meeting_type": "sales|product|customersuccess",
  "source_file": "/path/to/meeting.md",
  "section": "AI Summary|Action Items|Full Transcript"
}

4. Cluster Signals

Semantic clustering:

  • Group similar signals across customers
  • Identify common themes
  • Label clusters with action-style names (Verb + Object + Outcome)

Examples:

  • "Revamp onboarding to reduce TTFV" (multiple onboarding friction signals)
  • "Add Google Sheets export capability" (multiple export/integration requests)
  • "Improve dashboard load performance" (multiple performance complaints)

For each cluster:

code
{
  "cluster_label": "Action-style theme name",
  "mention_count": N,  # Total signal occurrences
  "unique_accounts": N,  # Distinct customers
  "unique_functions": N,  # Customer vs. internal sources
  "signals": [array of signal objects],
  "recentness_weight": calculated_score  # Newer = higher
}

5. Compute Signal Metrics

For each cluster:

A. Mention count: Total occurrences across all meetings.

B. Unique accounts: Distinct customer names in signal sources.

C. Unique functions: Count of different source types:

  • External customers
  • Internal product team
  • Partner/agency feedback

D. Recentness weight:

code
For each signal in cluster:
  days_ago = current_date - signal.date
  recentness_score = max(0, 30 - days_ago) / 30  # Linear decay over 30 days
Average recentness across all signals in cluster

E. Source diversity: Mix of meeting types:

  • Sales calls
  • Product feedback sessions
  • Customer success check-ins
  • Onboarding calls

Higher diversity = stronger signal.

6. Output Synthesized Data

Return structured object:

code
{
  "time_window": {
    "start_date": "YYYY-MM-DD",
    "end_date": "YYYY-MM-DD",
    "days_scanned": N,
    "meetings_processed": N
  },
  "clusters": [
    {
      "label": "Cluster name",
      "mention_count": N,
      "unique_accounts": N,
      "unique_functions": N,
      "recentness_weight": 0.0-1.0,
      "source_diversity": 0.0-1.0,
      "signals": [
        {
          "text": "Quote or paraphrase",
          "customer": "Company",
          "date": "YYYY-MM-DD",
          "meeting_type": "...",
          "source_file": "..."
        }
      ]
    }
  ],
  "raw_signals": [all unclustered signals for reference]
}

Filtering and Scoping

Customer Filter

Input: include_customers (comma-separated list)

Behavior:

  • If provided: Only process meetings where customer field matches list
  • If not provided: Process all customers

Example:

code
include_customers: "PrettyBoy,CompoundStudio,Joy Organics"
→ Only synthesize signals from these three customers

Function Filter

Input: include_internal_functions (comma-separated list)

Behavior:

  • If provided: Only process internal meetings from specified functions
  • Functions: Product, CS, Sales, Marketing, Ops

Example:

code
include_internal_functions: "Product,CS"
→ Process internal Product and CS meetings, skip Sales/Marketing/Ops

Signal Thresholds

Input filters:

  • min_mentions: Minimum total mentions to qualify (default: 1)
  • min_sources: Minimum distinct sources (customers/functions) to qualify (default: 1)

Application: After clustering, filter out clusters that don't meet thresholds:

code
Keep cluster if:
  cluster.mention_count >= min_mentions AND
  cluster.unique_accounts + cluster.unique_functions >= min_sources

Type Exclusions

Input: exclude_types (comma-separated list)

Behavior: Ignore signals matching certain categories.

Default exclusions:

code
exclude_types: "bugs,housekeeping"

Examples:

  • "bugs": Bug reports (should go to issue tracker, not epics)
  • "housekeeping": Internal cleanup tasks
  • "research": Exploratory ideas (not ready for roadmap)

Integration with Workflows

Product Planning Integration

Invoked by:

  • product-planning workflow

Inputs:

  • Time window (days or last_run)
  • Customer filter (optional)
  • Function filter (optional)
  • Thresholds (min_mentions, min_sources)

Outputs:

  • Clustered signals ready for epic creation
  • Evidence for epic "Why now" sections
  • Customer quotes for epic proposals

CS Prep Integration

Invoked by:

  • cs-prep workflow

Inputs:

  • Specific customer name
  • Time window (typically 30-90 days for QBR prep)

Outputs:

  • Customer-specific signal history
  • Pain points and friction areas
  • Feature requests and timeline
  • Quotes for QBR discussion

Strategy Session Integration

Invoked by:

  • strategy-session workflow

Inputs:

  • Time window (often broader, e.g., 90 days)
  • Optional topic filter

Outputs:

  • Cross-customer patterns
  • Market trends from customer feedback
  • Evidence for strategic decisions

Success Criteria

Meeting synthesis complete when:

  • All meetings in time window processed
  • Signals extracted and categorized
  • Clustering applied (semantic grouping)
  • Metrics computed (mentions, accounts, recency)
  • Output structured for consuming workflows
  • Verbatim quotes preserved for evidence

Common Mistakes

MistakeFix
Paraphrasing customer quotesPreserve verbatim text for accuracy
Ignoring meeting date filtersRespect cutoff_date strictly
Missing signal categorizationTag each signal as ask/problem/friction/etc.
Not recording source file pathsTrack every signal back to source meeting
Skipping semantic clusteringGroup similar signals for pattern detection

Related Skills

  • meeting-schema-validation: Validates meetings before synthesis
  • priority-scoring: Uses synthesis output for epic prioritization
  • product-planning: Primary consumer of synthesis output

Anti-Rationalization Blocks

Common excuses that are explicitly rejected:

RationalizationReality
"Close enough" on quotesPreserve exact wording or mark as paraphrase.
"Skip old meetings"Process all meetings in time window.
"This signal doesn't fit categories"Categorize as best match or flag as uncategorized.
"Single mention isn't worth tracking"Track all signals, filter by thresholds later.