Practice suite
FPPC deadlines, session dates, tracked-bill hearings, and fundraisers β pushed into your real calendar, with travel time blocked. Two-way when it counts, read-only where your life lives.
Step 1 Β· Connections
Direct Google/Outlook sync needs OAuth app verification, which is on Johnny's go-live task list. Until then, this page works in manual-export mode: it builds a .ics file you import into Google Calendar, Outlook, or Apple Calendar in one click. SILobbyist never stores OAuth tokens in localStorage β when the connection goes live, refresh tokens will live server-side only, never in your browser.
Not connected
OAuth via the Google Calendar API. Requires app verification β pending.
Not connected
OAuth via Microsoft Graph. Requires app registration β pending.
Working now
Import into Google, Outlook, or Apple Calendar. Same events, same travel blocks.
Step 2 Β· Event sources
Toggle each source. SILobbyist only pushes what you enable β nothing is read back into the site.
Step 3 Β· Travel time
Events with a location get travel blocks before and after. Cap-to-Cal-Access runs on Capitol time β your calendar should know that.
All-day events (filing deadlines) don't get travel blocks β there's no driving to a deadline. In manual-export mode the blocks are separate .ics entries; with direct sync they'll be native calendar blocks.
Conflict rules
| Event type | Winner on conflict | Why |
|---|---|---|
| FPPC filing deadlines | SILobbyist wins | Dates are authoritative under the Political Reform Act β your calendar is a reminder, not the source of truth. |
| Session deadlines, hearings, floor sessions | SILobbyist wins | Same principle: the official calendar outranks a manually edited copy. Sync refreshes them from the source. |
| Fundraisers (from your CRM) | Your calendar wins | SILobbyist never overwrites an event you edited or moved β it only re-syncs fundraiser entries you changed inside the CRM. |
| Your personal events | Your calendar wins | Sync never touches events it didn't create. It can't β it only writes events tagged silobbyist-*. |
Duplicate-proofing: every synced event carries a stable ID (silobbyist-{source}-{key}), so re-syncs update instead of duplicating. Delete a SILobbyist event in your calendar and the next sync recreates it β that's "SILobbyist wins" for deadline events, by design.
Upcoming events
Loadingβ¦
Sync log
data/compliance.json, data/legislative-calendar.json) β verify any filing against fppc.ca.gov and the house Daily Files before you rely on it. SILobbyist never transmits your data anywhere; manual export hands you a file, nothing uploads. Tokens, when OAuth goes live, are server-side only β never localStorage.