Agent Skills: Granola Migration Deep Dive

|

UncategorizedID: jeremylongshore/claude-code-plugins-plus-skills/granola-migration-deep-dive

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/tree/HEAD/plugins/saas-packs/granola-pack/skills/granola-migration-deep-dive

Skill Files

Browse the full folder contents for granola-migration-deep-dive.

Download Skill

Loading file tree…

plugins/saas-packs/granola-pack/skills/granola-migration-deep-dive/SKILL.md

Skill Metadata

Name
granola-migration-deep-dive
Description
|

Granola Migration Deep Dive

Overview

Comprehensive guide for migrating to Granola from competing meeting note tools. Covers source-specific export procedures, historical data preservation, parallel-run strategy, team transition, and cutover execution. Granola's key differentiator — no bot joins meetings — means the migration also changes the user experience fundamentally.

Prerequisites

  • Access to source tool with export capability
  • Granola workspace configured (see granola-install-auth)
  • Migration timeline agreed with stakeholders
  • Budget approved for Granola licenses

Instructions

Step 1 — Assess Migration Scope

## Migration Assessment

Source tool: [Otter.ai / Fireflies / Fathom / tl;dv / Manual / Other]
Total meetings in source: [____]
Date range: [____] to [____]
Active users to migrate: [____]
Integrations to recreate: [Slack, Notion, CRM, etc.]
Historical data priority: [Archive all / Selective / Fresh start]
Target cutover date: [____]
Parallel run duration: [1 week / 2 weeks]

Step 2 — Source-Specific Export

From Otter.ai

  • Export format: TXT, SRT (subtitles), PDF
  • Bulk export: Otter Pro/Business: Settings > Export > Download All
  • Limitations: Free plan only exports individual notes
  • Key data: Transcripts with timestamps, speaker labels, action items

From Fireflies.ai

  • Export format: TXT, JSON, PDF, SRT
  • Bulk export: Admin > Data Management > Export
  • Limitations: Custom fields may not export
  • Key data: Transcripts, AI summaries, custom topics

From Fathom

  • Export format: Markdown, CSV, video clips
  • Bulk export: Settings > Data > Export All
  • Limitations: Video clips don't transfer
  • Key data: Meeting summaries, action items, highlights

From tl;dv

  • Export format: TXT, video recordings
  • Bulk export: Settings > Data Export
  • Limitations: AI highlights may not transfer
  • Key data: Transcripts, timestamps, meeting recordings

From Manual Notes (Google Docs, Notion, Confluence)

  • Already in accessible format
  • No export needed — archive in place
  • Focus on establishing the Granola workflow going forward

Step 3 — Choose Migration Strategy

| Strategy | When to Use | Data Handling | Effort | |----------|------------|--------------|--------| | Fresh Start | <100 historical meetings, or meetings have low reference value | Archive source data externally, start fresh in Granola | Low | | Selective Migration | 100-1000 meetings, some have ongoing reference value | Export key meetings (client calls, decisions, contracts) | Medium | | Full Archive | Enterprise with compliance requirements, everything must be searchable | Export all data, archive in Notion/Drive/cloud storage | High |

Recommended for most teams: Fresh Start or Selective. Granola doesn't import historical data from other tools — there's no import feature. Historical data lives in your archive (Notion, Google Drive, local files).

Step 4 — Archive Historical Data

For important historical meetings, archive before cutting over:

#!/usr/bin/env python3
"""Organize exported meeting notes for archival."""
import os
from pathlib import Path

EXPORT_DIR = Path("~/Downloads/otter-export").expanduser()  # Adjust for your source
ARCHIVE_DIR = Path("~/Documents/meeting-archive").expanduser()

# Create organized archive structure
categories = {
    "client": ["client", "customer", "deal", "sales", "demo"],
    "engineering": ["sprint", "standup", "architecture", "review", "retro"],
    "product": ["product", "prd", "design", "feedback", "roadmap"],
    "leadership": ["all-hands", "board", "strategy", "planning"],
    "general": [],  # catch-all
}

ARCHIVE_DIR.mkdir(parents=True, exist_ok=True)
for cat in categories:
    (ARCHIVE_DIR / cat).mkdir(exist_ok=True)

for file in EXPORT_DIR.glob("*.txt"):
    filename_lower = file.name.lower()
    placed = False
    for cat, keywords in categories.items():
        if any(kw in filename_lower for kw in keywords):
            dest = ARCHIVE_DIR / cat / file.name
            file.rename(dest)
            placed = True
            break
    if not placed:
        (ARCHIVE_DIR / "general" / file.name).rename(file)

print(f"Archived to {ARCHIVE_DIR}")

Alternatively, upload the archive to Notion or Google Drive for team-wide searchability.

Step 5 — Parallel Run (2 Weeks)

Run both tools simultaneously to build confidence:

Week 1: Dual recording

  • Keep source tool active (bot still joins or captures)
  • Enable Granola on all meetings (system audio capture)
  • Compare output quality daily:

| Metric | Source Tool | Granola | Winner | |--------|-----------|---------|--------| | Transcription accuracy | ___% | ___% | | | Action item detection | ___/total | ___/total | | | Summary quality | ___/5 | ___/5 | | | Processing time | ___ min | ___ min | | | User experience (no bot) | N/A | Yes | Granola |

Week 2: Granola primary

  • Keep source tool as backup only (disable auto-record if possible)
  • All sharing and distribution via Granola integrations
  • Team members report any quality issues

Step 6 — Cutover Execution

Cutover day checklist:

  • [ ] Final export from source tool (last day of data)
  • [ ] Verify archive is complete and accessible
  • [ ] Disable source tool recording/bot
  • [ ] Remove source tool bot from calendar (if applicable)
  • [ ] Cancel source tool subscription (save on unused billing)
  • [ ] Announce to team via email/Slack:
Subject: Meeting Notes Migration Complete — Granola is Now Primary

Team,

As of today, we've completed our migration to Granola for meeting notes.

What's changed:
- No more [Otter/Fireflies/etc.] bot joining meetings
- Granola captures audio directly from your device (no bot visible to participants)
- Notes are auto-enhanced with AI summaries and action items

What you need to do:
1. Ensure Granola is running on your device
2. Verify your calendar is connected (Settings > Calendar)
3. Check that microphone + Screen & System Audio permissions are granted

Historical notes: Archived at [Notion link / Drive folder]
Support: Post in #granola-support

Thank you for the smooth transition!
  • [ ] Monitor for 3 days:
    • Capture rate (% of meetings recorded)
    • Support ticket volume
    • User feedback
    • Integration sync health

Step 7 — Post-Migration Optimization

After 1 week on Granola exclusively:

  • [ ] Configure templates for each meeting type (see granola-core-workflow-a)
  • [ ] Set up Zapier automation for recurring workflows
  • [ ] Create custom recipes for team-specific post-meeting tasks
  • [ ] Establish folder structure matching team workflow
  • [ ] Delete source tool accounts and data (if no longer needed)

Key Differences from Bot-Based Tools

| Feature | Bot-Based (Otter, Fireflies, tl;dv) | Granola | |---------|--------------------------------------|---------| | Meeting join | Bot joins as participant | No bot — system audio capture | | Participant awareness | "Bot is recording" banner | No banner (still announce recording for consent) | | Platform support | Platform-specific integrations | Any platform (captures system audio) | | Typed notes | Separate app | Built-in notepad merges with transcript | | Enhancement | Auto-generated | User-controlled (click Enhance) | | Templates | Limited | 29 built-in + custom | | Chat | Limited or none | Full Granola Chat with Recipes | | Built-in CRM | No | People & Companies |

Output

  • Source data exported and archived
  • Parallel run completed with quality validation
  • Team migrated and recording in Granola
  • Source tool deactivated and subscription cancelled
  • Historical data accessible in archive

Error Handling

| Error | Cause | Fix | |-------|-------|-----| | Source export incomplete | Free plan limits bulk export | Upgrade source plan temporarily for export, then cancel | | Team resistance to change | Comfort with existing tool | Share quality comparison data from parallel run | | Missing historical context | No import feature in Granola | Point team to archived data (Notion/Drive) | | Audio quality different than bot | System audio vs. platform API | Optimize audio setup (see granola-performance-tuning) | | Low adoption post-migration | Setup issues | Run drop-in support sessions, share quick-start guide |

Resources

Next Steps

After migration, explore granola-performance-tuning to optimize output quality.