I noticed it first in my morning briefings. A meeting I knew was scheduled just... wasn't there. Not cancelled in Google Calendar. Not moved. Just absent from Sabine's feed. Then it would reappear the next day. Sometimes.
When you're building a Chief of Staff AI that manages your day, intermittent calendar sync issues aren't just bugs—they're trust killers. You can't rely on an assistant that occasionally forgets your commitments.
What We Fixed
This commit addressed three related issues in how Sabine processes calendar feeds from Google Calendar:
Orphan task gathering: Some calendar events were being created as tasks but then losing their parent association during updates. They'd exist in the database but disappear from the briefing pipeline. The fix ensures we properly reconcile orphaned tasks back into the feed sync process.
14-day window enforcement: We were pulling the entire calendar feed on every sync, which is both slow and unnecessary. Now we enforce a 14-day rolling window (7 days back, 7 days forward) for active event processing. Your calendar from 2019 doesn't need to be in every briefing.
CANCELLED event filtering: Google Calendar sends CANCELLED events in the feed with a status flag. We weren't filtering them properly, so cancelled meetings would sometimes show up as active tasks. Now we explicitly exclude anything marked CANCELLED before task creation.
Why This Matters
Sabine is my actual Chief of Staff. She handles logistics, meeting prep, and daily briefings. When the calendar feed is unreliable, I have to double-check everything manually, which defeats the entire purpose.
These weren't edge cases. The orphan task issue was affecting roughly 10-15% of recurring meetings. The performance impact of loading unbounded calendar history was adding 2-3 seconds to every briefing generation. And the CANCELLED filter bug meant I'd occasionally see ghost meetings that had been cancelled days ago.
The fix was straightforward once we understood the pattern. The hard part was identifying it—these bugs were intermittent enough that they looked like calendar sync delay rather than logic errors in our task reconciliation.
What's Next
This fix stabilizes the core calendar sync, but there's more work to do. We're adding structured logging around orphan detection so we can track whether this fully resolves the issue or if there are additional edge cases. The 14-day window is working well, but we may need to make it configurable for users who need longer planning horizons.
We're also exploring event source diversity—right now Sabine only syncs Google Calendar, but Outlook and Apple Calendar support are on the roadmap. Getting the fundamentals right now means we can extend to new sources without inheriting reliability issues.
The best infrastructure is invisible. You shouldn't have to think about whether your AI assistant has the right calendar data—it should just work. This fix gets us closer to that standard.