Fathom records and transcribes calls. Your agent reads the transcript, pulls the summary and the action items, and writes them onto the candidate in your CRM. The debrief you were going to type up is already written.
Fathom is a read source. The transcript comes in; structured notes go out to the CRM.
the debrief written onto the candidate
source directly from what the client said on the call
interview notes onto the record
the other notetaker, if your team runs both
A skill is a whole pipeline your agent already knows. These ones call Fathom as part of the run.
Placed candidate updates LinkedIn. Track via AI Ark, log Fathom call notes, alert the original client.
Every tool ships with a written playbook, and the agent loads it before the first call. Auth, rate limits, what each call costs, which actions need your approval, and the mistakes worth avoiding. It is the difference between an agent that knows the tool and one that guesses at it.
Read the Fathom docs →HOW in lib/fathom.py. Docs: developers.fathom.ai/quickstart.
https://api.fathom.ai/external/v1 · Auth: header X-Api-Key (env FATHOM_API_KEY; never hardcode).next_cursor in the response → pass back as cursor. iter_meetings() auto-walks it.list_meetings (filters: created_after/created_before ISO 8601, recorded_by emails, include_transcript), iter_meetings (auto-paginate), get_transcript(recording_id). Meeting objects carry title, URL, timestamps, summary, action items, CRM matches.
Read source: post-interview transcript/summary → parse → write notes into the ATS (Recruit CRM / Bullhorn / Loxo …) as a candidate activity. Pairs with [[granola]] (also a notetaker) — both are API-accessible; Granola needs a Business plan.
lib/fathom.pyImport: from lib.fathom import Fathom → instantiate Fathom() (reads key from env). Base: https://api.fathom.ai/external/v1. Generic passthrough: request(method, path, *, params, json).
get_transcript(recording_id: str) -> Any — GET /recordings/{recording_id}/transcript — fetch a transcript separately.iter_meetings(**params) -> Iterator[dict] — Auto-paginate meetings via next_cursor.list_meetings(*, include_transcript: bool | None = None, recorded_by: list[str] | None = None, created_after: str | None = None, created_before: str | None = None, cursor: str | None = None, **params) -> Any — GET /meetings — filter by date (ISO 8601) / recorder email; optionally inline transcripts.