# Process Transcript

> Process a VTT transcript into a comprehensive, multi-tab HTML dashboard using specialized analysis agents. Use when the user provides a .vtt file, has a transcript to process, or mentions a meeting recording. This is the PRIMARY skill for handling transcripts.

- Skill: `sswconsulting/process-transcript` (Agent Skill)
- Install (CLI): `npx skillmds@latest add sswconsulting/process-transcript`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sswconsulting/process-transcript/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: sswconsulting (https://skillmd.com/u/sswconsulting)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/sswconsulting/process-transcript

---


# Process Transcript to Dashboard (Advanced)

Convert a .vtt meeting transcript into a comprehensive, deployed HTML dashboard using multiple specialized analyzers.

## CRITICAL: What This Skill Does

1. ✅ Orchestrates **5 specialized analysis agents**
2. ✅ Runs **consolidation** to ensure consistency
3. ✅ Creates a **multi-tab HTML dashboard** with rich insights
4. ✅ Generates a deployable dashboard (deploy via `deploy-dashboard` skill or `node processor/deploy-local.js`)
5. ✅ Returns a **public URL**

## NEVER DO

- ❌ Create markdown (.md) files
- ❌ Skip any analysis phase
- ❌ Skip the consolidation step
- ❌ Generate a simple single-page summary
- ❌ Deploy the dashboard directly (use the deploy-dashboard skill or deploy-local.js instead)

## Pipeline Steps

### Step 1: Setup
- Determine project name and date
- Create folder structure
- Copy transcript to `projects/{project}/transcripts/{date}.vtt`

### Step 2: Run Analysis Agents (IN PARALLEL if possible)

Delegate to each specialized agent in `.claude/agents/`:

1. **timeline-analyzer** → `analysis/timeline.json`
   - Identifies meeting segments (review, retro, planning)
   - Creates timeline with timestamps and summaries

2. **people-analyzer** → `analysis/people.json`
   - Analyzes each participant's contributions
   - Calculates speaking time vs. value contributed
   - Provides constructive feedback

3. **insights-generator** → `analysis/insights.json`
   - Finds non-obvious patterns and observations
   - Identifies risks, opportunities, team health signals
   - Generates ad-hoc creative insights

4. **analytics-generator** → `analysis/analytics.json`
   - Produces data-driven metrics and statistics
   - Creates chart-ready data
   - Calculates efficiency scores

5. **longitudinal-analyzer** → `analysis/longitudinal.json`
   - Compares with previous meetings (if available)
   - Identifies trends and patterns over time
   - Tracks improvement and recurring issues

### Step 3: CONSOLIDATION (Critical Quality Step)

Run the **consolidator** agent to:

1. **Normalize names**
   - Create canonical name mapping
   - If "Alice" is identified as "Product Owner", use "Alice" everywhere
   - Replace role references with actual names where known

2. **Cross-reference validation**
   - Verify consistency between agent outputs
   - Resolve metric discrepancies
   - Link action items to owners

3. **Deduplicate**
   - Remove redundant insights
   - Merge duplicate action items
   - Consolidate repeated quotes

4. **Enrich data**
   - Connect decisions to timeline segments
   - Link insights to relevant participants
   - Add IDs for cross-referencing

5. **Quality check**
   - Flag unidentified participants
   - Note action items without owners
   - Document all changes made

Output: `analysis/consolidated.json`

### Step 4: Generate Multi-Tab Dashboard

Create `projects/{project}/dashboards/{date}/index.html` using the **consolidated** data:

#### Tab 1: Overview
- Meeting summary (factual bullets)
- Key decisions (max 3 bullet points)
- Done This Sprint (outcomes, completed work — excluding decisions)
- Next Steps / action items with owners (canonical names)
- Hard truths (max 2, residual only)

#### Tab 2: Timeline
- Visual timeline of meeting segments
- Duration bars
- Key moments highlighted
- Participants (by canonical name)
- Energy level indicators

#### Tab 3: People & Roles
- Participant cards with **profile photos from SSW People** (with fallback initials for non-SSW)
- Canonical names with roles as subtitle
- Speaking time visualization
- Value contribution ratings
- Strengths and feedback for each person
- Team dynamics summary

#### Tab 4: Insights
- Ad-hoc observations
- Risk signals
- Opportunity spotting
- Team health indicators
- Notable quotes (attributed to canonical names)

#### Tab 5: Trends (if historical data exists)
- Week-over-week comparisons
- Recurring themes
- Improvement tracking
- Trajectory visualizations

### Step 5: Deploy Dashboard

After generating the dashboard, offer deployment options:

1. **Ask Claude:** "deploy the dashboard" → triggers the `deploy-dashboard` skill
2. **Run manually:** `node processor/deploy-local.js {project} {meeting-id}`

The deployed URL will be: `https://dashboards.sswtiger.com/{project}/{meeting-id}`

> **Note:** When running under `processor.js` (Azure pipeline), deployment is handled automatically by `deployer.js`. Do NOT deploy from within this skill in that context.

### Step 6: Report Success
```
✓ Analysis complete:
  - Timeline: 5 segments identified
  - People: 6 participants analyzed  
  - Insights: 8 observations generated
  - Analytics: 12 metrics calculated
  - Trends: Compared with 3 previous meetings

✓ Consolidation:
  - Normalized 12 name references
  - Merged 2 duplicate action items
  - Identified 2 unidentified speakers
  - Quality score: 92/100

✓ Dashboard generated: projects/{project}/dashboards/{date}/index.html
✓ Deployed to: https://dashboards.sswtiger.com/{project}/{meeting-id}
```

## File Structure

```
projects/{project}/
├── transcripts/{date}.vtt
├── analysis/
│   ├── timeline.json          # From timeline-analyzer
│   ├── people.json            # From people-analyzer
│   ├── insights.json          # From insights-generator
│   ├── analytics.json         # From analytics-generator
│   ├── longitudinal.json      # From longitudinal-analyzer
│   └── consolidated.json      # From consolidator (USED FOR DASHBOARD)
└── dashboards/{date}/
    └── index.html             # THE DELIVERABLE
```

## Dashboard Quality Standards

The dashboard should be:
- **Consistent** - Same names/terms throughout all tabs
- **Beautiful** - Modern, polished design with Tailwind CSS
- **Interactive** - Tabs, hover effects, expandable sections
- **Data-rich** - Charts, metrics, visualizations
- **Actionable** - Clear next steps and recommendations
- **Insightful** - Goes beyond obvious observations
- **Human** - Recognizes individual contributions by name

## Technology Stack

- Tailwind CSS (CDN) - Styling
- Chart.js (CDN) - Data visualizations
- Alpine.js (CDN) - Tab interactivity
- Vanilla JS - Additional interactions

## Consolidation Examples

### Name Normalization
```
BEFORE (inconsistent):
- Timeline: "Product Owner presented..."
- People: "Alice spoke for 15 minutes..."
- Action Items: "PO to follow up..."

AFTER (consolidated):
- Timeline: "Alice (Product Owner) presented..."
- People: "Alice spoke for 15 minutes..."
- Action Items: "Alice to follow up..."
```

### Cross-Reference
```
BEFORE (disconnected):
- Decision: "Decided to postpone feature X"
- Timeline: Segment 3 mentions postponement
- Person: Bob raised the concern

AFTER (connected):
- Decision: "Decided to postpone feature X" 
  - Decided during: Segment 3 (Sprint Planning)
  - Raised by: Bob
  - Related insight: Technical debt concern #2
```

