The short version:
That is the whole model. Details below for the curious.
| Data | Sent where |
|---|---|
| Screenshot or photo | To the vision model (Gemini 3 Flash via OpenRouter) for one extraction call. Not retained by us afterwards. |
| Extracted event | Written to your calendar with EventKit, which follows your own iCloud or account sync settings. |
| Diagnostics (timing, confidence) |
Nowhere. A local file on your device only, visible under Settings › Debug log. |
| Your API key | Stored in the device Keychain. Sent only as the authorisation header to openrouter.ai. |
ZipCal requests write-only calendar access, the narrowest permission iOS offers. It can create events. It cannot list, read or modify anything already in your calendar, and it never sees your existing appointments.
Extraction needs a model provider. You can supply your own OpenRouter key, which is kept in the device Keychain and sent only to OpenRouter. Their handling of request data is covered by OpenRouter's privacy policy.
ZipCal is not directed at children and collects no personal information from anyone.
If this policy changes in a way that affects what leaves your device, the date at the top of this page changes with it. The app is open source, so you can always verify the behaviour described here against the code.
Questions: open an issue on GitHub.