Skip to content

Syncing & backfill

Sync pulls meetings into D1; extraction turns them into follow-ups. Both run on a schedule and can be driven on demand.

Schedules register the first time a Durable Object starts, so a freshly deployed instance has no registered crons until you wake the agents:

Terminal window
notewright start

This wakes every DO and prints the schedule each one registered. Confirm the crons afterward:

Terminal window
notewright schedules

Trigger a sync immediately:

Terminal window
notewright sync

With the Granola provider this forwards to GranolaSyncAgent, which also runs on its registered cron (0 0 * * 2-6, weekday evenings). Inspect what was synced:

Terminal window
notewright meetings list --limit 25
notewright meetings get <meetingId> --transcript

Extraction runs automatically: the follow-up agent has a backstop cron that re-scans recent meetings so nothing is missed. You can also drive it directly.

Run extraction for one meeting:

Terminal window
notewright follow-ups run <meetingId>
notewright follow-ups run <meetingId> --force # clear failure/run marker, keep mappings

Backfill a date range (for example after first deploy, or after changing the extraction model):

Terminal window
notewright follow-ups backfill --since 2026-05-01T00:00:00Z
notewright follow-ups backfill --since 2026-05-01T00:00:00Z --force

--since is an ISO8601 lower bound; omit it to use the server’s default backfill window. Both run and backfill enqueue work and return 202; the agent processes the queue in the background.

Terminal window
notewright follow-ups runs --limit 20 # processed meetings + task counts
notewright follow-ups mappings <meetingId> # the tasks created for a meeting
notewright follow-ups health # agent state + unresolved failures

When something fails, see Monitoring health and Troubleshooting.