Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Migrate to Granola from Otter.ai, Fireflies, Fathom, tl;dv, or manual note-taking. Covers data export from source tools, parallel-run strategy, team transition, and historical data preservation. Trigger: "migrate to granola", "switch to granola", "granola from otter", "granola from fireflies", "replace meeting tool with granola".
.claude/skills/jeremylongshore-granola-migration-deep-dive/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 55% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 58% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 40% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 73% | 0% |
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.
granola-install-auth)markdown## 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]
| 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).
For important historical meetings, archive before cutting over:
python#!/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.
Run both tools simultaneously to build confidence:
Week 1: Dual recording
| 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
Cutover day checklist:
markdownSubject: 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!
After 1 week on Granola exclusively:
granola-core-workflow-a)| 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 |
| 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 |
After migration, explore granola-performance-tuning to optimize output quality.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→pass | 15,156 | 12,097 | -20% | 1 | 1 | 0% | 2,838 | 4,412 | +55% | 0 | 0 | — |
case-03 | fail→pass | 27,909 | 25,517 | -9% | 1 | 1 | 0% | 3,357 | 5,280 | +57% | 0 | 0 | — |
case-04 | fail→pass | 18,078 | 12,173 | -33% | 1 | 1 | 0% | 2,682 | 4,228 | +58% | 0 | 0 | — |
case-05 | fail→pass | 20,045 | 18,614 | -7% | 1 | 1 | 0% | 3,057 | 4,285 | +40% | 0 | 0 | — |
case-06 | fail→pass | 13,559 | 9,544 | -30% | 1 | 1 | 0% | 2,141 | 3,701 | +73% | 0 | 0 | — |
case-07 | fail→pass | 19,842 | 12,927 | -35% | 1 | 1 | 0% | 3,974 | 4,944 | +24% | 0 | 0 | — |
case-01 | fail→fail | 21,405 | 28,254 | +32% | 1 | 1 | 0% | 3,346 | 6,897 | +106% | 0 | 0 | — |
case-08 | fail→fail | 25,806 | 20,001 | -22% | 1 | 1 | 0% | 3,247 | 5,313 | +64% | 0 | 0 | — |
case-09 | fail→pass | 14,371 | 23,554 | +64% | 1 | 1 | 0% | 2,332 | 5,346 | +129% | 0 | 0 | — |
case-10 | pass→pass | 16,592 | 20,585 | +24% | 1 | 1 | 0% | 2,736 | 5,368 | +96% | 0 | 0 | — |
case-11 | pass→pass | 18,613 | 17,742 | -5% | 1 | 1 | 0% | 2,108 | 4,312 | +105% | 0 | 0 | — |
case-12 | fail→pass | 19,321 | 16,819 | -13% | 1 | 1 | 0% | 2,056 | 4,582 | +123% | 0 | 0 | — |
case-13 | pass→fail | 19,191 | 21,414 | +12% | 1 | 1 | 0% | 2,198 | 4,803 | +119% | 0 | 0 | — |
case-14 | pass→pass | 14,999 | 4,962 | -67% | 1 | 1 | 0% | 1,551 | 3,047 | +96% | 0 | 0 | — |
case-15 | fail→pass | 20,732 | 11,321 | -45% | 1 | 1 | 0% | 2,472 | 3,285 | +33% | 0 | 0 | — |
case-16 | fail→pass | 16,693 | 16,819 | +1% | 1 | 1 | 0% | 2,633 | 4,414 | +68% | 0 | 0 | — |
case-17 | fail→pass | 19,587 | 19,928 | +2% | 1 | 1 | 0% | 2,404 | 5,033 | +109% | 0 | 0 | — |
case-18 | fail→fail | 11,220 | 10,627 | -5% | 1 | 1 | 0% | 1,457 | 3,088 | +112% | 0 | 0 | — |
case-19 | fail→pass | 13,543 | 16,078 | +19% | 1 | 1 | 0% | 2,296 | 4,032 | +76% | 0 | 0 | — |
case-20 | pass→pass | 22,276 | 16,656 | -25% | 1 | 1 | 0% | 2,572 | 4,940 | +92% | 0 | 0 | — |
case-21 | pass→pass | 19,800 | 19,754 | -0% | 1 | 1 | 0% | 2,033 | 4,459 | +119% | 0 | 0 | — |
case-22 | pass→pass | 14,023 | 19,134 | +36% | 1 | 1 | 0% | 2,055 | 4,153 | +102% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +50 percentage points is the difference between those two pass rates over the 22 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.