Privacy Policy
Kairos · kairosplanner.tech · Last updated 20 September 2026
Kairos is a scheduling planner. This page describes the main categories of data it stores, where, and why. The short version: you can sign in with Google or a verified email and password; your planner is held in your browser and a copy is kept on our servers so it survives a lost device. Connected-calendar data is processed only to provide calendar features. Full connected-calendar events are not included in your server-saved planner. Some preferences, such as event buffers, can include an event reference, as described below. Connected-calendar data is not sold or used for advertising.
What Kairos stores, and where
- Your planner, on your device. Tasks, projects, schedules, settings, and time-tracking entries are held in your browser's local storage, which is what makes Kairos fast and usable while your connection comes and goes.
- Your planner, on our servers. Kairos requires an account, and a copy of your planner is saved to our database so it survives a lost or wiped device and follows you between them. It is transmitted over HTTPS and stored in a database reached through Kairos's server after checking your sign-in. Kairos processes this copy only to sync, restore, and protect your planner; it is not used for advertising or analytics.
- Recovery copies. When a server save replaces your planner, Kairos keeps its previous version so you can recover an accidental change. Settings → Data → Saved copies lets you download or review a restore. Automatic history keeps up to 20 recent versions regardless of age, plus daily copies from the last seven days, subject to a 32 MB limit per account. Older protected recovery copies, if present, remain until account deletion. These copies are in the same database as your planner, not an independent offsite backup, and are deleted with your account.
- Your account. Google sign-in gives us your Google account identifier, email address, and, if Google supplies it, display name. Email sign-in gives us your verified email address and a Supabase Auth identity identifier. Your password passes through Kairos's server over HTTPS to Supabase Auth for verification or password setup. Supabase stores a password hash. Kairos does not save readable passwords in its application database or application logs. These details identify your account and its backup.
- Your subscription. If you use Kairos Pro, Kairos stores identifiers and status information for your Stripe customer, checkout, and subscription so it can provide paid features and prevent duplicate subscriptions. Stripe collects payment-card and billing details on Kairos's behalf. Kairos application servers do not receive or store your full card number or security code.
- Interrupted setup. When you add password sign-in or start a payment checkout, Kairos keeps an operation record so a lost response does not create a duplicate account or checkout. While setup is unresolved, it can contain your account and provider identifiers, email address, and the settings needed to retry that request. It does not contain your password or payment-card details. Retry details are cleared when the operation completes or is cancelled; the remaining record is eligible for routine cleanup after 30 days. Unresolved records remain until they can be safely reconciled, and these records are removed when account deletion completes.
- Service and security records. Kairos and its infrastructure providers may process ordinary request and security information such as IP address, device or browser details, timestamps, delivery records, and error logs to operate, secure, and troubleshoot the service. Retention is limited by operational, security, legal, and provider needs.
- Deletion progress. If an account deletion is interrupted, Kairos keeps a record of the remaining steps so it can retry safely. This includes the account and provider identifiers needed for cleanup, not the planner contents or password. Provider identifiers are removed when deletion completes. A short-lived completion record allows safe retries after a lost response; it becomes eligible for routine cleanup after 24 hours.
- Cookies. Kairos sets only functional, httpOnly cookies: your account session; short-lived sign-in, email-recovery, calendar-connection, and deletion-status cookies; and, where available, an encrypted Microsoft calendar credential when you connect that provider. An older Google connection may temporarily retain an encrypted credential cookie while Kairos moves it to the account connection described below. Production cookies carrying a session or calendar credential are marked Secure, and browser scripts cannot read their httpOnly values. There are no advertising cookies or tracking pixels. Optional analytics uses browser storage, described below, only after you allow it.
How Kairos protects your data
- Kairos uses HTTPS to protect data while it moves between your browser, Kairos, and connected providers.
- Account sessions use random credentials in httpOnly cookies. Kairos stores only a one-way hash of each session credential in its database, and expired or revoked sessions are rejected.
- Calendar connections and planner backups are available only through routes that first verify the signed-in Kairos account. Requests that change account or connection data also require a same-origin browser request.
- Google and Microsoft authorization use provider-specific one-time state checks and PKCE code challenges to bind each callback to the browser and provider that started it.
Google Calendar data and security
If you choose to connect Google Calendar, Kairos requests Google's read-onlyCalendar permission. Kairos uses calendar names, identifiers, display colors, and primary status; and event identifiers, titles, cancellation status, start and end times, recurrence identifiers, and busy/free status only to show your events and schedule your work around them. Kairos does not create, edit, or delete Google Calendar events.
Google provides Kairos with a refresh credential so the connection can continue without asking you to reconnect each time. Kairos encrypts and authenticates that credential with AES-256-GCM before storing it with your Kairos account in our Supabase database. The encryption keys are held separately in server configuration. This account connection lets your signed-in devices update Google Calendar without reconnecting each browser. Older encrypted browser credentials may be transferred to this account connection after Kairos verifies their ownership, then removed from that browser. Every calendar request also requires a valid, unexpired, non-revoked Kairos session. Short-lived Google access tokens are created on the server only when needed for a sync and are not written to Kairos's database or browser storage.
Kairos's production server temporarily processes Google's response so it can return the requested calendar information to your authenticated browser. Its Calendar API requests ask Google to return only the fields Kairos uses. Kairos application code does not persist full Google Calendar events or calendar-list data in its database, server backup, or application logs. Your browser keeps a copy of these events and your selected calendar identifiers in storage for this website, so the calendar remains available across reloads and temporary connection failures. A successful sync replaces this event copy; it has no fixed time-based expiry.
Two planner preferences can retain limited Google-derived references in the server backup. If you add a buffer before or after a Google event, Kairos may store that event's or recurring series's identifier with the buffer minutes and a planner last-change timestamp used to merge settings between devices. If you dismiss a scheduling conflict, Kairos may store the event identifier with the affected task occurrence. These records do not contain the Google event's title, description, attendees, location, or start and end times. An identifier can remain in records used to sync your planner after its buffer or related task is removed.
Disconnecting Google Calendar disables the connection for your Kairos account across devices and removes its credential from the active database record. The browser that requested the disconnect clears its cached event mirror after confirmation; other devices learn the connection status when they next check. Kairos keeps selected calendar identifiers locally so a later reconnect can restore your choices. Disconnecting from Kairos does not guarantee that Google's own authorization record has been revoked; you can revoke it separately from your Google Account permissions page. Disconnect alone does not remove the limited buffer and conflict identifiers described above. Kairos may prune obsolete conflict references earlier; the identifiers are removed when the planner is reset or replaced, or when the Kairos account is deleted.
Encrypted Google credentials and connection metadata may be included in database backups. After disconnect or account deletion, earlier encrypted copies can remain until those backups expire under the database provider's retention settings. They are not a live calendar connection. Account deletion removes the active connection and its credential along with your other account records.
If paid access to Google Calendar ends, Kairos pauses Google sync and removes cached Google events from each browser when it next checks your access. Your calendar selections stay on that device. The encrypted Google credential stays with your Kairos account so sync can resume if access returns and Google still permits the connection. You can remove the saved Google credential with Disconnect, or by deleting your Kairos account.
Kairos's use of information received from Google APIs adheres to the Google API Services User Data Policy, including its Limited Use requirements.
Microsoft Calendar data and security
When Microsoft Calendar connection is available and you choose to connect it, Kairos requests Microsoft Graph's read-only Calendars.Read permission. Kairos uses calendar names, identifiers, display colors, and default-calendar status; and event identifiers, titles, cancellation and all-day status, start and end times, recurring-series identifiers, and busy/free status only to show your events and schedule your work around them. Kairos does not create, edit, move, or delete Microsoft Outlook or Microsoft 365 calendar events.
Microsoft provides Kairos with a refresh credential so the connection can continue across visits. Kairos encrypts and authenticates it with AES-256-GCM before storing it with your Kairos account in our Supabase database, using a separate server-only encryption key. Your signed-in devices can update Outlook without reconnecting each browser. Older browser-held credentials can be migrated after account ownership is verified, then removed from that browser. Short-lived Microsoft access tokens are created only on Kairos's server when needed and are not stored in Kairos's database or browser storage. A revoked credential requires reconnection; a temporary Microsoft outage or rate limit does not cause Kairos to delete the saved connection.
If paid access to Microsoft Calendar ends, Kairos pauses Microsoft sync when it next checks your access. Previously loaded Microsoft events remain on that device as a saved display, not verified current availability. Your calendar selections stay on that device. The encrypted Microsoft credential stays with your Kairos account so sync can resume if access returns and Microsoft still permits the connection. Disconnect removes the active credential and clears cached events when each device next checks the connection.
Vercel temporarily processes the Microsoft token exchange and Graph responses in Kairos's authenticated server runtime. Your browser keeps the selected calendar identifiers and a local event mirror so events remain visible across reloads and temporary connection failures. Full Microsoft calendar lists and event mirrors are not written to Kairos's database backup or application logs. As with Google events, user-created buffer and dismissed-conflict preferences can retain only the related Microsoft event or recurring-series identifier in the planner backup; they do not retain the event title, attendees, description, location, or start and end times.
Kairos does not sell, rent, advertise with, or use Microsoft calendar data to train a generalized AI model. Microsoft receives the authorization, token, calendar identifier, time-window, and Graph requests needed to provide the feature. Kairos does not send Microsoft calendar contents or credentials to Stripe, Resend, or Supabase Auth. Supabase stores the encrypted Microsoft credential and connection metadata separately from the Kairos account's planner backup. The planner backup may include only the limited event identifiers described above, never the connection credential.
Disconnecting Microsoft Calendar in Settings disables the connection for your Kairos account across devices and removes its credential from the active database record. The requesting browser clears cached Microsoft events after confirmation; other devices learn the disconnected status when they next check. Chosen calendar identifiers stay locally for a later reconnect. You can also revoke Kairos directly from Microsoft's account or work-account application permissions pages; limited planner references remain until their planner records are reset, replaced, pruned, or deleted with the Kairos account.
Encrypted Microsoft credentials and connection metadata may be included in database backups. After disconnect or account deletion, earlier encrypted copies can remain until those backups expire under the database provider's retention settings. They are not a live calendar connection. Account deletion removes the active connection and its credential.
How Google user data is shared, transferred, or disclosed
Kairos does not sell or rent Google user data, disclose it to other users, or share it with advertisers, analytics providers, data brokers, or information resellers. Kairos does not use or transfer Google Workspace API data to develop, improve, or train generalized or non-personalized artificial intelligence or machine-learning models.
Kairos permits the following recipients to process only the Google user data needed for the purposes stated here:
- Google receives the OAuth authorization and token requests, refresh credential, selected calendar identifiers, requested time window, and authenticated Calendar API requests needed to sign you in, maintain the connection, and return the calendars and events you ask Kairos to display.
- Vercel, Kairos's hosting provider, processes Google sign-in details, OAuth credentials, Calendar API requests, and Calendar API responses in Kairos's server runtime so it can authenticate you and return the calendar information you requested to your signed-in browser.
- Supabase, Kairos's database provider, stores the Google account identifier, email address, and optional display name used for your Kairos account, along with account sessions, the planner backup, and encrypted Google refresh credentials and connection metadata, including in database backups. Supabase does not receive full Google Calendar event mirrors through this connection. The planner backup may contain the limited event or recurring-series identifiers in user-created buffer and dismissed conflict records described above.
- Stripe receives your Kairos account email address if you start checkout or subscribe, together with Kairos billing and subscription identifiers. Kairos does not send Stripe Google Calendar contents or Google OAuth credentials.
- Supabase Auth processes your account email address when you create, add, use, verify, or recover email-and-password sign-in. Kairos does not send Supabase Auth Google Calendar contents or Google OAuth credentials.
- Resend, Kairos's transactional-email provider, receives the destination email address and account-email content only to deliver a requested verification, password setup, or recovery message. Kairos does not send Resend Google Calendar contents or Google OAuth credentials.
- Your authenticated browser receives the selected Calendar data and keeps the local mirror described above. Kairos does not make that mirror available to other Kairos users.
These providers may use subprocessors under their service agreements to deliver the services described above. Kairos may also disclose Google user data when necessary to investigate abuse or protect the service, or to comply with applicable law. A transfer as part of a merger, acquisition, or sale of assets would occur only after obtaining the user's explicit prior consent. Human access to specific Google user data is allowed only with the user's affirmative permission, or when necessary for security or legal compliance, as permitted by Google's Limited Use requirements.
Outside these recipients, purposes, and permitted circumstances, Kairos does not transfer or disclose Google user data to third parties. Each provider receives only the categories needed to deliver the service described in this policy.
Other service providers
Kairos runs on Vercel (hosting) and Supabase (database and password authentication). Account emails are delivered by Resend through Supabase's configured email service. Stripe processes checkout, subscription management, invoices, payments, fraud prevention, and applicable tax information for Pro subscribers. These companies process the data needed to provide their services. The calendar-specific limits for each recipient are stated above; Kairos does not allow these providers to use calendar or planner data for advertising.
Optional usage analytics
If you choose Allow analytics, Kairos sends limited usage signals to PostHog (US Cloud): page categories, selected marketing-source labels, registration progress, a newly created task reaching the schedule, and saved task activity. We use these signals to understand which marketing channels help people find Kairos and where the product needs improvement. Analytics is off until you choose to allow it, and remains off when your browser sends Do Not Track or Global Privacy Control. Your planner works normally if you decline.
We store a random browser identifier, session identifier, your choice, and limited counting markers in this browser. These are separate from planner exports and imports. Reports are browser-based, not a complete count of people across devices. We do not send your email, name, account identifier, task or project text, Google or Microsoft Calendar contents, passwords, sign-in links, full referring URLs, or raw query strings. There are no session recordings, automatic click recording, or advertising pixels. Kairos forwards an explicit allowlist of fields through its server without forwarding your IP address or browser User-Agent to PostHog; location enrichment and person profiles are disabled.
PostHog processes these pseudonymous usage records in the United States. The configured free plan retains analytics for up to one year. Withdrawing permission stops future collection and removes the analytics identifiers from this browser; it does not automatically erase records already sent. For deletion of those records, contact us before clearing browser data so we can use the random analytics identifier to locate them. Account deletion alone cannot identify all browser-only analytics records. See PostHog's privacy policy.
Optional analytics on this browser: Not chosen.
A Do Not Track or Global Privacy Control signal keeps analytics off. Declining does not affect your planner.
Your choices
- Export your full planner at any time from Settings → Your data.
- Disconnect Google Calendar from Settings — after the server confirms the disconnect, the account connection is disabled across devices and that browser clears its cached events. The encrypted credential is removed from the active database record; earlier backup copies expire as described above. You can also revoke Kairos's access at myaccount.google.com/permissions.
- Disconnect Microsoft Calendar, where the connection is available in Settings, to disable the account connection across devices and remove its active encrypted credential. Cached events clear when each device next checks; earlier database backups expire as described above. You can also revoke Kairos for a personal Microsoft account or from My Apps for a work or school account.
- Sign out to revoke the session on the server, not just in your browser. Signing out also removes the planner held in that browser, after saving a copy to your account — so a shared or borrowed computer is not left holding your data.
- Delete your account and server data from Settings → Account. Kairos stops active billing and removes your sign-in identity, account record, server planner copies, sessions, and the active Google Calendar connection and credential. Interrupted steps are retried rather than reported as complete. Once confirmed, the browser removes the deleted account's current planner and cached events where browser storage allows it. To avoid erasing another account's data in an open tab, Kairos may leave an older browser recovery copy untouched; the completion page tells you when manual site-data cleanup is still needed. Any remaining encrypted calendar cookie can no longer be used through Kairos because the account's sessions are invalid; it expires or is replaced on a later connection. You can also clear this site's browser data and revoke access in your provider account. Stripe may retain transaction, invoice, fraud-prevention, or tax records for legal and accounting obligations. Browser-only copies on other devices cannot be erased remotely; clear this site's browser data on those devices too.
Contact
Questions, deletion requests, anything else: yeoh.yuyong@gmail.com.
If this policy changes materially, the date above changes. Where applicable law requires advance notice or consent, Kairos will provide it before the change applies.