Calendar Availability for Scheduling Replies

Point Owlat at a read-only calendar feed so AI scheduling replies propose your real open times instead of only echoing the sender's.

When an inbound email is a scheduling request, Owlat's suggested replies normally stay conservative: they reference the times the sender proposed and never invent availability of their own. If you connect a read-only calendar feed, those same scheduling replies can go one step further and propose your actual open slots — "Tue, Jul 8, 2:00 PM or Wed, Jul 9, 10:00 AM?" — grounded in your real free/busy.

Off by default

With no calendar feed configured, behaviour is unchanged: scheduling replies only reference the sender's proposed times. Availability grounding is purely additive.

How it works

  • Owlat reads a single read-only ICS/CalDAV subscription URL — the private iCal export most calendars offer (Google Calendar, Fastmail, Apple, Nextcloud, and any CalDAV server).
  • The feed is fetched server-side, inside your deployment — the calendar URL and its contents never reach the browser.
  • Only free/busy time ranges are used. Event titles, attendees, locations, and descriptions are ignored; they never enter a prompt.
  • Owlat looks a couple of weeks ahead and offers up to three weekday business-hours slots (09:00–17:00 in your configured timezone) that don't collide with anything on the calendar.

Configuration

Set these environment variables on the Convex backend:

VariablePurpose
CALENDAR_FREEBUSY_ICS_URLRead-only ICS/CalDAV subscription URL for the calendar to treat as busy. Unset ⇒ no availability grounding.
CALENDAR_TIMEZONEIANA timezone (e.g. America/New_York) used to compute and label open slots. Unset ⇒ UTC.

Use a private, read-only iCal export URL — Owlat only ever reads it, and only free/busy is derived.

Fail-soft

Availability grounding never blocks a reply. A missing URL, an unreachable feed, an oversized body, or an unparseable calendar all quietly degrade to exactly the previous behaviour: the reply references the sender's proposed times and proposes no availability of its own. Suggested replies remain advisory — nothing is auto-sent, and you always edit before sending.