Kagaya

DRAFT: pending legal review

Privacy policy

Last updated: 2026-10-28

1. Who we are and how to reach us

Kagaya is run by Ventrical. This policy explains what data Kagaya collects, why, and what you can do about it.

  • Company: Ventrical
  • Address: Bengaluru
  • Email: ventricalhq@gmail.com
  • Grievance officer: Grievance Officer, Ventrical (ventricalhq@gmail.com)

2. The short version

  • Your memories are saved in your own Google Drive, GitHub or OneDrive. They are not stored in our database.
  • Our database holds your account, your settings, your connections, and working data kept for the periods in section 10.
  • While a memory is in use, its contents sit in server memory (RAM) for up to about 30 minutes when idle. There is no disk copy.
  • We do not sell your data. We show no ads. We do not use your content to train AI models.
  • You can delete your account in Settings.

3. What we collect

Account

We keep your email, your name and your sign-in provider ids. Sessions are stored as a SHA-256 hash of the cookie value and last 30 days, rolling. A session also records which sign-in method created it. Your settings (brief, prep and recap email toggles, timezone, schedule) are also kept.

Your memories

Items, summaries, meeting notes and the search index are written to your own storage. That is your Google Drive (folders "Kagaya – Work" and "Kagaya – Personal"), a GitHub repository where you install our GitHub App, or your OneDrive. They are not stored in our database.

For OneDrive on a personal account, we use Files.ReadWrite.AppFolder. For a work or school account, we use Files.ReadWrite, because Microsoft has no narrower option. Kagaya writes and opens files only inside its own folders ("Kagaya – Work" and "Kagaya – Personal"). On some work accounts Microsoft sends change notices for the whole drive, so Kagaya sees the names and locations of other changed items to tell whether they belong to it. It never opens their contents and never stores them.

Connected apps and what each one reads

You choose which apps to connect. Each one is read-only unless stated.

AppPermissionWhat is read
Gmailgmail.readonlyMail from the last 30 days, excluding the Promotions and Social tabs. After that, each new message as it arrives (we check about every 5 minutes), including messages in those tabs. Newsletters, automated senders and muted senders are dropped before anything is stored. We fetch whole messages, and extract only From, To, Cc, Subject, Date, List-Unsubscribe and the text body. Attachments are not read.
Google Calendarcalendar.readonlyEvents from 30 days back to 14 days ahead: title, times, attendees (name, email, response), link and the first 500 characters of the description. They are written to your storage as meeting items. Calendar events are not analysed by AI. The names (or email addresses) of people Kagaya has learned, including meeting attendees, are sent with each extraction (see section 4).
Outlook mailMail.ReadInbox and sent items.
Outlook calendarCalendars.ReadEvents, with up to 20 attendees and 500 characters of the description.
Microsoft TeamsChat.ReadChat messages.
Slackim:history, mpim:history, channels:history, groups:history, users:read, search:readDirect messages, mentions and threads that involve you, starting 30 days back.
Jira (Atlassian)read:jira-work, read:jira-user, offline_accessIssues assigned to or reported by you: summary, status, assignee, reporter, due date, project.
LinearreadIssue title, state, team, due date, assignee, creator.
NotionWorkspace grant, for the pages you sharePage title, people, status and due date. Only pages assigned to you become items.
GitHubSign-in: read:user, user:email. Two GitHub Apps.One GitHub App stores memories on the one repository you choose. A separate GitHub App reads activity: issues and pull requests that involve you, and repository names.

Sync runs about every 5 minutes.

What our database holds

  • Connections: OAuth tokens, encrypted with AES-256-GCM. The scopes you granted are stored in plain text. For each source we keep its kind, account id or email, sync cursors and muted senders.
  • Queued source text: for Gmail, Outlook, Teams and Slack messages that pass our filters, we store the sender and recipient names and emails, subject, text (quoted replies removed, up to 4,000 characters) and link. It is encrypted. We keep your own messages, flagged as yours. We drop bots, newsletters, muted senders and channel messages that do not mention you.
  • Suggestions (items waiting for you to confirm): an encrypted payload (title, body, people, source title and a 280-character excerpt). The link to the source message, the sender pattern (for example gmail:from:alice@example.com), the kind and timestamps are stored in plain text.
  • Muted and dismissed sender patterns, in plain text.
  • Notifications (meeting prep, weekly recap, nudges): plain-text titles of meetings, tasks and decisions, and the prep or recap text.
  • Meeting preps: meeting times and attendee names and emails (up to 20), in plain text.
  • Nudge log (item ids only) and seen-message ids (message id only, no content).
  • Your phone number, in plain text, once you add it for WhatsApp. You can remove it in Settings.
  • WhatsApp preferences: enabled, brief time, timezone, default memory.
  • Billing: the provider customer id, subscription id, plan state, period end and a "founding member" flag. We store no card details: only provider ids, plan state, period end and the founding-member flag.
  • Your own AI key, if you add one. It is encrypted with AES-256-GCM. The provider and model name are stored in plain text. You can remove the key in Settings.
  • AI client (MCP) registrations, and hashed access tokens, refresh tokens and authorisation codes.
  • App discovery: only the resulting list of app kinds (see section 8).
  • Forwarding address: only a hash of the address token.

What we do not store in our database

The titles and bodies of accepted memories, forwarded email bodies, WhatsApp message text, voice-note audio, raw AI outputs and card data.

Why we use it, and our legal basis

  • To provide the service you asked for (account, memories, briefs): contract.
  • To read your connected apps and use WhatsApp: your consent. You can withdraw it at any time.
  • For security and to limit abuse (for example, send limits): legitimate interest.
  • For billing records: legal obligation. [confirm: legal basis for billing records vs deletion on account deletion]

4. How AI is used

Pro and beta plans use hosted AI from Anthropic (Claude). It works in two steps.

  1. Classify (Claude Haiku): we send the thread text of the filtered messages, the last 12,000 characters. It is asked only whether there is a task, promise, ask or decision.
  2. Extract (Claude Sonnet), only if the first step found something relevant: we send the text to file (the same joined thread text, up to 12,000 characters), the capture time, your timezone, and the titles of your known people, projects and areas. The names (or email addresses) of people Kagaya has learned, including meeting attendees and the people named on Jira, Linear and Notion items, are part of that list. The output is a short summary, never a verbatim copy.

The Free plan has no hosted AI. You can add your own key from Anthropic, OpenAI or Ollama Cloud (ollama.com). The same content then goes to that provider, under your account. With no AI, forwarded email and WhatsApp captures are filed as plain notes.

Calendar events, Jira, Linear, Notion and GitHub items are not analysed by AI, and app discovery uses no AI. Only the names of known people, as described above, are sent with each extraction.

We can use Anthropic Message Batches. In that mode, results are retained under Anthropic's terms.

We don't use your content to train AI models. The AI providers' own terms govern how they handle what they receive.

Your own AI client can also read your data through MCP. See section 5.

5. Google user data and Limited Use

Kagaya's use and transfer to any other app of information received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements.

We ask for these Google permissions.

ScopeWhy
openid email profileSign-in: your email, name and Google account id.
https://www.googleapis.com/auth/drive.fileStorage: lets the app read and write only the files it created in your Drive.
https://www.googleapis.com/auth/gmail.readonlyGmail: reads your mail, read-only, to find tasks, promises, asks and decisions.
https://www.googleapis.com/auth/calendar.readonlyCalendar: reads your events, read-only, to build meeting items and prep.

Gmail message text is sent to AI. For Pro and beta, that is Anthropic (Claude), and we send the last 12,000 characters of the thread. If you use your own key, it goes to the provider you chose: Anthropic, OpenAI or Ollama Cloud. Calendar events are not analysed by AI. The names (or email addresses) of people Kagaya has learned, including meeting attendees, are sent with each extraction so the AI can link items to them.

Our commitments for Google user data:

  • We show no ads.
  • We do not sell it.
  • No person reads it, except with your consent, for security, or where the law requires it.
  • We transfer it only to provide the features you use: to the AI provider that processes it (see above), to our email provider (Resend) and WhatsApp (Meta) when we send briefs, nudges and meeting prep that contain item titles, to our hosting provider, and to your own AI client through MCP.
  • We protect it as described in section 13.

A connected AI client can use these MCP tools: search, get_context, list_open_loops, get_brief, capture, capture_items, update_item, list, confirm and dismiss suggestions, process_inbox and submit_inbox. The tool process_inbox hands the client pending source messages (subject, link and text). You choose which client to connect.

6. Microsoft, Slack, Atlassian, Linear, Notion and GitHub data

The table in section 3 shows what each app reads. Access is read-only as listed there. This data is filtered and stored as described in section 3, passed to the AI providers as described in section 4 where it applies, and used only to provide the features you turned on.

Microsoft sign-in asks for openid, email, profile and offline_access. Outlook and Teams permissions also use User.Read and offline_access.

7. Email, WhatsApp and payments

Email

We send emails through Resend: the daily brief, nudges, meeting prep and the weekly recap. They contain item titles and links and go to your email address.

You can get a forwarding address (m-<random>@<domain>). We fetch the body of mail you forward from Resend and file it in your storage. We do not keep it in our database. Resend keeps inbound mail under its own retention: [placeholder] days. The limit is 30 forwards per memory per day.

WhatsApp

WhatsApp is optional. It uses the Meta WhatsApp Cloud API. You verify your phone number with a 6-digit code sent through a WhatsApp template. The code is valid for 10 minutes and allows 5 attempts. Expired codes are deleted by a daily job. Sends are limited. We keep the number until you remove it. A pending code is kept as a hash.

Text and voice notes you send are filed (up to 4,000 characters, 30 captures per day). We fetch voice notes from Meta (up to 16 MB) and send them to a speech-to-text provider, by default OpenAI Whisper. We do not store the audio. Briefs, preps and recaps sent over WhatsApp contain item titles, so they pass through Meta. Outside the 24-hour window we send a template message with only a link. The commands are brief, today, help and stop.

Payments

Payments use Stripe (global) and Razorpay (India). We send Stripe our user id, your email, the price id and, for founding members, a founding-member flag. We send Razorpay the plan id and, in notes, our user id and a founding-member flag (true or false), and no email. For founding members we also send the founding offer id. You enter card details on the provider's page. They never reach us. We store no card details: only provider ids, plan state, period end and the founding-member flag. We verify provider webhooks by signature.

8. App discovery

Right after you connect Gmail or Outlook, or when you press a button, Kagaya reads the sender address and subject line of mail from the last 30 days. It uses the mail permission you already gave. It does not read bodies, attachments or recipients.

The check runs in memory against a fixed list of known app senders. It uses no AI. We keep only the list of app kinds, for example slack, jira or notion. We do not keep senders, subjects, domains or counts.

9. Service providers and cross-border transfer

These providers can receive your data to deliver the service. Data may leave your country. Where we have not confirmed a location, the table says so.

ProviderPurposeDataLocation
Hosting providerRuns the service and the databaseEverything our database holds[hosting region]
Anthropic (Claude)Hosted AI for Pro and betaFiltered message text, capture text, titles of your people, projects and areas[to be confirmed]
OpenAIAI with your own key; voice-note transcription (default Whisper)The same text, if you add your own OpenAI key; voice-note audio[to be confirmed]
Ollama Cloud (ollama.com)AI with your own keyThe same text, if you add your own Ollama key[to be confirmed]
ResendSends our emails and receives mail you forwardYour email address, item titles and links; forwarded email[to be confirmed]
Meta (WhatsApp Cloud API)WhatsApp messages and voice notesYour phone number, messages, voice notes, item titles in briefs[to be confirmed]
StripePayments (global)Our user id, your email, price id, founding-member flag[to be confirmed]
RazorpayPayments (India)Plan id, our user id, founding-member flag (and the founding offer id for founding members)[to be confirmed]
GoogleSign-in, Drive, Gmail, CalendarData you connect; files we write to your Drive[to be confirmed]
GitHubSign-in; stores memories on the repository you choose; activity (the GitHub Apps)Files we write to your chosen repository; issues and pull requests that involve you, and repository names[to be confirmed]
MicrosoftSign-in, OneDrive, Outlook, TeamsData you connect; files we write to your OneDrive[to be confirmed]

Once data reaches a provider, that provider's terms govern it.

10. Retention and deleting your account

WhatHow long
Sign-in sessions30 days, rolling
Sign-in provider and account id recorded on your session30 days, rolling
Queued source text (encrypted)Deleted once processed, and in any case within 7 days
Suggestions: items (encrypted)Deleted when handled, or after 14 days
Suggestions: asks and connector suggestions (encrypted)Deleted when handled, or after 30 days
NotificationsDeleted within a day after 90 days
Meeting prepsDeleted within a day after 30 days from the meeting’s end
Nudge log (item ids only)30 days
Delivery-failure records (channel, kind, error type; no message content)30 days
Seen-message ids for inbound email and WhatsApp (no content)30 days
WhatsApp OTP (kept as a hash)Valid for 10 minutes; deleted within a day after
WhatsApp send-abuse log (keyed hash of the number)2 days
AI client (MCP) access tokens (hashed)Valid for 1 hour; deleted within a day after
AI client (MCP) refresh tokens (hashed)Valid for 30 days; deleted within a day after
OAuth security records: used refresh tokens (hashed identifiers only)Up to 30 days; deleted within a day after
OAuth security records: used authorization codes (hashed identifiers only)Valid for 10 minutes; deleted within a day after
OAuth security records: consent records (hashed identifiers only)Valid for 10 minutes; deleted within a day after
Inbound forwarded email at Resend[placeholder] days, under Resend’s own retention
Admin audit log (who did what to an account and why; email shown only masked)2 years, then deleted
Account data, connections, settingsUntil you delete your account

A daily job removes expired sessions and MCP tokens, old seen-message ids and nudge log entries, and OTP rows. The daily job also deletes audit records older than 2 years. An hourly job deletes queued source text older than 7 days and expired suggestions.

Controls in the app

Deleting an item from its page also removes its related meeting preps and notifications now, without waiting for the periods above.

You can pause capture for a memory, mute a sender, disconnect a source, remove your forwarding address, remove your AI key, remove your phone number, and delete your account.

Deleting your account

In Settings, type DELETE. Then we:

  • cancel any active Stripe or Razorpay subscription first;
  • ask Google, Slack and Linear to revoke your tokens (if one of them fails, we tell you which);
  • uninstall our GitHub Apps (unless the installation is shared);
  • delete all our records about you;
  • clear your cookie.

We cannot revoke Microsoft, Atlassian or Notion tokens through an API. We delete them on our side. You should also remove Kagaya yourself:

  • Microsoft: your account's app permissions (myapps.microsoft.com or account.live.com/consent/Manage).
  • Atlassian: account settings, connected apps.
  • Notion: Settings, My connections.

Deleting your account does not delete files in your own Google Drive, GitHub or OneDrive. They stay yours. To remove a file, delete the item first from its page (see section 12). Data already sent to AI, email, WhatsApp, payment and transcription providers is governed by those providers.

11. Operator access

The people who operate Kagaya and hold an admin role can see account details for support and abuse handling.

They can see:

  • your email, your name and your sign-up date;
  • your plan;
  • counts and statuses of your memories and connected apps;
  • your last activity;
  • counts of delivery failures and job health;
  • whether WhatsApp is connected (yes or no, never the number), the kind and status of each connected app and its latest error type, and per-memory space, storage type and status.

Administrators can suspend and unsuspend accounts. Only a super administrator can give or remove complimentary paid access, appoint or remove administrators, suspend an administrator, or remove an account.

Operators cannot see memory content, item titles or bodies, messages, captured text, tokens, AI keys or phone numbers.

Every admin action is recorded in an audit log: who did what to which account, and why. Each audit record is kept for 2 years from the action, including after the account is deleted, and then deleted. Email addresses appear only in masked form. See the table in section 10.

Suspended accounts cannot sign in or use connected AI clients, and their data is not deleted. A suspended account's verified email address cannot be used to create a new account.

12. Your rights

You can ask for access, correction, erasure and portability of your data. You can withdraw consent and object to our use of your data. You can complain.

You can do most of this yourself in the app. If something is not covered, email us at ventricalhq@gmail.com and we will handle it.

Access and portability

In Settings, Account, Download my data gives you one JSON file of what Kagaya holds in its database about you: your account, your phone number (masked), sign-in identities, connection details, your memories (their names and storage locations), connected AI clients (client name and redirect addresses), sources, queued source text awaiting processing, suggestions and their content, notifications, meeting preps, brief and recap settings, muted senders, WhatsApp preferences, the provider and model of any AI key you added (never the key itself), the log of daily nudges, subscription details, plan and entitlement, whether you have a forwarding address and when it was created, the dates of messages seen, session details, delivery failures, and the audit records about your account in limited form (action, time and masked label only; records older than 2 years are deleted). We never include passwords, tokens or keys. The limit is 3 downloads per hour.

The file does not include the content of your memories, which already lives in your own Google Drive, GitHub or OneDrive, where you can copy it.

Erasure

Use Delete on an item's page to remove the item's file from your storage, along with its related meeting preps and notifications. In Google Drive the file goes to Drive's trash. In OneDrive it goes to the recycle bin. In GitHub, older versions stay in the repository's git history. You can also delete your whole account in Settings (see section 10).

Operator audit records about your account are kept after you delete it, for 2 years from each action, with your email masked, then deleted (see section 11).

Correction

On an item's page you can edit an item's body and mark tasks done. An item's title, due date, project and people can be changed through a connected AI client (for example with its update tool), or by email to us at ventricalhq@gmail.com.

Suspended accounts and anything else

If your account is suspended you can't sign in, so email us and we will handle it. Email ventricalhq@gmail.com for anything these controls do not cover.

In the app, you can withdraw consent by disconnecting a source or removing your phone number, and you can delete your account. Disconnecting a source deletes our copy of the token only when no other source uses it (Gmail and Google Calendar share one Google connection). It does not revoke anything at the provider, and suggestions already made stay until they expire. To revoke access at the provider, use myaccount.google.com/permissions for Google, or the Microsoft, Atlassian and Notion pages listed in section 10.

India (DPDP Act): you can raise a grievance with our grievance officer, Grievance Officer, Ventrical (ventricalhq@gmail.com), at ventricalhq@gmail.com. We will respond within [confirm: grievance response time].

EU and UK (GDPR): you can complain to your local data protection supervisory authority.

Where the law requires a legal basis, see the list in section 3.

13. Security

  • AES-256-GCM encrypts tokens, queued source text, suggestion payloads and your own AI key.
  • Session, MCP and forwarding-address tokens are stored hashed.
  • Webhooks are signed. We use HTTPS.
  • Logs record errors by class name only. Cookies, authorization headers, tokens and message content are redacted.

If a breach affects you, we will tell you within [confirm: breach notification window].

14. Cookies

  • kagaya_session: a random token. HttpOnly, SameSite=Lax, Secure on https, 30 days.
  • kagaya_oauth: short-lived encrypted sign-in or connect state, 10 minutes.
  • A 10-minute cookie for the consent step when you connect an AI client (MCP).

We use no analytics, advertising or tracking cookies or scripts.

15. Children, changes and contact

Kagaya is not for anyone under 18 [confirm: minimum age]. Do not use it if you are younger.

We may change this policy. The date at the top shows the latest update. [confirm: how we notify you of material changes]

Contact: Ventrical, Bengaluru. Email ventricalhq@gmail.com.