CedarCopilot wants to merge 0 commits into staging from fix/fathom-meeting-window-fetch
Live on prod, no production signal yet
Libra has verdicts on 0 of 3 tracked behaviors on prod; 3 are still being checked. Libra checks hourly for 3 days after each deploy.
getAllMeetings only ever passed days_back to the fathom-get-meetings Superglue tool, which defaults max_results to 200. For high-volume reps this silently capped the fetch at the 200 most-recent recordings (~4 months back), so any backfill over an older window returned nothing before that point. It looked like Fathom retention but was a fetch cap , the recordings were there all along.
The tool already supports created_after / created_before + cursor pagination; the only reason a naive full-window fetch fails is that a single wide request trips the Superglue timeout on volume.
getAllClariMeetings)getAllMeetings accepts an explicit { startDate, endDate, maxResults } window, splits it into 30-day chunks (newest-first), fetches each with created_after/created_before, and merges (dedup by externalId).days_back path now chunks too, so an existing --meeting-days-back 370 sync also reaches the full window instead of the 200-cap.listMeetings threads the window through, for parity with the Clari driver.Ran against two live reps (Vooma pilot):
| Rep | before | after | earliest |
|---|---|---|---|
| Jesse Taylor | 200 | 524 | 2025-08-15 |
| Jason Conlow | 200 | 463 | 2025-08-14 |
Meetings now present in every month back to the window start (Aug 2025). No behavior change for callers that pass a small days_back (one chunk).
🤖 Generated with Claude Code
The PR replaces Fathom’s single capped meeting request with newest-first, 30-day created-date chunks and deduplicates merged recordings by external ID. It also threads explicit date-window options through the Fathom driver.
created_after/created_before requests for each 30-day chunk.fathomDriver.listMeetings.The explicit Fathom window path should validate date values and ordering before this PR is merged.
The newly consumed date options are reachable from a route accepting arbitrary strings, allowing malformed dates to throw during ISO conversion and reversed dates to reach Superglue as inverted bounds.
Files Needing Attention: apps/server/src/services/integrations/meetings/fathom.ts
| Filename | Overview |
|---|---|
| apps/server/src/services/integrations/meetings/fathom.ts | Adds chunked date-window retrieval and deduplication, but consumes unvalidated date options that can throw or generate inverted provider bounds. |
### Issue 1
apps/server/src/services/integrations/meetings/fathom.ts:428-429
**Invalid date windows reach Fathom**
When `meetings.listMeetings` supplies an invalid or reversed date pair, this code either throws `RangeError: Invalid time value` during `toISOString()` or sends inverted `created_after` and `created_before` bounds, causing the request to fail or return no meetings.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.
Reviews (1): Last reviewed commit: ["fix(fathom): fetch meetings by created-d..."](https://github.com/cedarcopilot/cedar-mail/commit/ce093f683695431e19f91084
Libra has not measured any production surfaces for this change yet.