Skip to content
Back to skills

Fathom Prod Checklist

ASecurity

'Production readiness checklist for Fathom API integrations.

  • 2,688 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added May 29, 2026
ai-agentstypescriptgoapisecurity

Works with

  • claude code
  • api

Security analysis

A100/100

Scanned May 29, 2026

npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill fathom-prod-checklist --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Fathom Prod Checklist?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Fathom Prod Checklist
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jeremylongshore-fathom-prod-checklist/badge)](https://www.skillsdirectory.com/skills/jeremylongshore-fathom-prod-checklist)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: fathom-prod-checklist
description: 'Production readiness checklist for Fathom API integrations.

  Trigger with phrases like "fathom production", "fathom go-live", "fathom checklist".

  '
allowed-tools: Read, Grep
version: 1.0.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags:
- saas
- meeting-intelligence
- ai-notes
- fathom
compatibility: Designed for Claude Code
---
# Fathom Production Checklist

## Overview

Fathom provides AI-powered meeting intelligence with automated transcription, summaries, and action item extraction. A production integration ingests meeting recordings, processes transcripts, and syncs action items to downstream systems. Failures mean lost meeting context, missed follow-ups, or transcript data leaking outside authorized channels. This checklist ensures reliable, compliant meeting data pipelines.

## Authentication & Secrets

- [ ] `FATHOM_API_KEY` stored in secrets manager (not environment files)
- [ ] OAuth app registered if building public-facing integration
- [ ] Key rotation schedule documented (90-day cycle)
- [ ] Separate credentials for dev/staging/prod environments
- [ ] Webhook signing secret configured for payload verification

## API Integration

- [ ] Production base URL configured (`https://api.fathom.video/v1`)
- [ ] Rate limit handling with backoff (60 req/min standard tier)
- [ ] Webhook endpoint registered and tested with sample payloads
- [ ] Meeting recording retrieval handles large file downloads
- [ ] Transcript pagination implemented for long meetings (>60 min)
- [ ] Action item extraction tested with various meeting formats
- [ ] Calendar integration sync verified (Google Calendar / Outlook)

## Error Handling & Resilience

- [ ] Circuit breaker configured for Fathom API outages
- [ ] Retry with exponential backoff for 429/5xx responses
- [ ] Empty or partial transcript handling (silent meetings, poor audio)
- [ ] Webhook delivery failures trigger re-fetch via polling
- [ ] Meeting data PII handling documented (GDPR consent, retention)
- [ ] Backup webhook URL configured for failover

## Monitoring & Alerting

- [ ] API latency tracked per endpoint (meetings, transcripts)
- [ ] Error rate alerts set (threshold: >5% over 10 minutes)
- [ ] Failed transcript processing triggers notification
- [ ] Webhook delivery success rate monitored
- [ ] Daily digest of processed meeting counts vs scheduled

## Validation Script

```typescript
async function checkFathomReadiness(): Promise<void> {
  const checks: { name: string; pass: boolean; detail: string }[] = [];
  // API connectivity
  try {
    const res = await fetch('https://api.fathom.video/v1/meetings?limit=1', {
      headers: { Authorization: `Bearer ${process.env.FATHOM_API_KEY}` },
    });
    checks.push({ name: 'Fathom API', pass: res.ok, detail: res.ok ? 'Connected' : `HTTP ${res.status}` });
  } catch (e: any) { checks.push({ name: 'Fathom API', pass: false, detail: e.message }); }
  // Credentials present
  checks.push({ name: 'API Key Set', pass: !!process.env.FATHOM_API_KEY, detail: process.env.FATHOM_API_KEY ? 'Present' : 'MISSING' });
  // Webhook endpoint reachable
  const webhookUrl = process.env.FATHOM_WEBHOOK_URL;
  if (webhookUrl) {
    try {
      const res = await fetch(webhookUrl, { method: 'HEAD' });
      checks.push({ name: 'Webhook Endpoint', pass: res.ok, detail: `HTTP ${res.status}` });
    } catch (e: any) { checks.push({ name: 'Webhook Endpoint', pass: false, detail: e.message }); }
  } else { checks.push({ name: 'Webhook Endpoint', pass: false, detail: 'URL not configured' }); }
  for (const c of checks) console.log(`[${c.pass ? 'PASS' : 'FAIL'}] ${c.name}: ${c.detail}`);
}
checkFathomReadiness();
```

## Error Handling

| Check | Risk if Skipped | Priority |
|-------|----------------|----------|
| API key rotation | Expired key halts transcript pipeline | P1 |
| Webhook verification | Spoofed payloads inject bad data | P1 |
| PII retention policy | GDPR/CCPA violation on meeting data | P1 |
| Empty transcript handling | Downstream systems crash on null | P2 |
| Rate limit backoff | Bulk meeting import blocked by 429 | P3 |

## Resources

- [Fathom API Docs](https://fathom.video/developers)
- [Fathom Status](https://status.fathom.video)

## Next Steps

See `fathom-security-basics` for meeting data privacy and consent patterns.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…