Privacy Policy

Last updated: August 1, 2026 · Effective: August 1, 2026

This policy explains what Ganju collects when you use the hosted service at ganju.ai, app.ganju.ai, api.ganju.ai, and mcp.ganju.ai, why we collect it, who else touches it, and what you can do about it.

Ganju is also open source under Apache-2.0. If you self-host Ganju on your own infrastructure, this policy does not apply to you — you run the servers, you hold the data, and we never see it. Everything below is about the hosted service we run.

Esta política también está disponible en español. Para los titulares en Colombia, prevalece la versión en español.

Who we are and what role we play

The hosted Ganju service is operated by Ganju S.A.S., a sociedad por acciones simplificada incorporated under the laws of Colombia, with its registered address in Bogotá, D.C., Colombia (“Ganju”, “we”, “us”). You can reach us at hello@ganju.ai.

Ganju S.A.S. is the responsable del tratamiento of the personal data described below, in the sense of Colombia’s Ley 1581 de 2012 and Decreto 1074 de 2015. If you are in the European Economic Area or the United Kingdom, the equivalent term is “controller”.

We play two different roles, and the distinction matters:

  • We are the controller of your account data — who you are, which organizations you belong to, how you sign in, what you pay, and the operational logs we keep to run and secure the service.
  • We are a processor of your Customer Content — the files, websites, prompts, tool configurations, credentials, and chat conversations you put into a project. We handle that content on your instruction, to deliver the features you switched on. Your organization decides what goes in, who can see it, and when it’s deleted.

If you’re chatting with a bot that someone else built on Ganju, that person’s organization is the controller of your conversation — see Chat channels and their end users.

What we collect

Account and identity

DataWhere it comes from
Name, email address, profile image, email-verified flagGoogle or GitHub sign-in, or the profile you set
Password hash (only if you sign in with a password)You
Sign-in provider account IDs, access/refresh tokens, and granted scopes for the identity providerGoogle / GitHub
Session records: session token, expiry, IP address, user agentAutomatically, on each sign-in
Avatar image filesYou, stored in Cloudflare R2

Workspace and membership

Organization and project names and descriptions, member lists and roles (Owner / Admin), counts of what each workspace holds, and invitations — including the email address of each person you invite, who invited them, the invitation token, and whether it was accepted, declined, or expired.

Billing and usage

Plan and subscription status, current billing period, cancellation flags, and your Stripe customer and subscription identifiers. We meter two things per organization: assistant replies on chat channels and embedded (searchable) content in megabytes, plus the overage already reported to Stripe.

We never see or store your card details. Payment methods are collected and held by Stripe; we only receive identifiers and subscription status back.

Customer Content

Everything you put into a project so your assistant can use it:

  • Resources — uploaded files (stored in Cloudflare R2), pasted or templated text, crawled website pages, and files synced from Google Drive or OneDrive folders. We store the file bytes, the extracted text, the title, URI, MIME type, size, and any crawl or sync configuration.
  • Text chunks and embeddings — embeddable resources are split into chunks; each chunk’s text and its 3,072-dimension vector are stored in Postgres with pgvector so search works.
  • Prompts — titles, descriptions, message templates, and input schemas.
  • Tools — which tools an assistant has installed and their configuration, including the URLs, headers, and parameter definitions of any HTTP endpoint or remote MCP server you connect.

Credentials and secrets

OAuth access and refresh tokens for the accounts you connect (Gmail, Google Drive, Google Calendar, Outlook, OneDrive, Slack), API keys you paste in (Cal.com, Tavily, your own AI-model provider keys), chat-platform bot tokens, and per-channel webhook secrets.

All of these are encrypted before they’re written to the database (XChaCha20-Poly1305), never returned to the browser in plaintext, and never written to logs. See Security.

MCP traffic

When an MCP client (Claude, ChatGPT, Cursor, and so on) connects to one of your assistants, we record:

  • Session — the client’s reported name and version, user agent, IP address, the authentication kind used, request count, and the signed-in user behind it if there is one.
  • Request — the protocol method, the tool name, resource URI, or prompt invoked, the arguments sent and the result returned, latency, and any error message.

Chat-channel traffic

For every Telegram, Slack, WhatsApp, or Discord channel you connect:

  • Conversations (the external chat ID, a title, whether it’s a DM, group, or channel)
  • Message content in both directions, the role of each message, token counts, response latency, and platform metadata
  • Participants — the platform user ID and display name of everyone who talks to the bot, and a link to a Ganju account if that person chose to link one
  • A per-reply breakdown of which tools, prompts, and resources the turn used

Operational logs

A unified execution audit — who ran which tool, prompt, or resource, from which source, and when — and an error log capturing the service, HTTP method and path, query string, error name, message and stack trace, user agent, IP address, and the user, organization, or project the request belonged to.

Contact form

If you write to us through the contact form on ganju.ai, we receive your name or company, email address, and message, and email it to our team inbox. We don’t store it in the product database.

How we use it

We use the data above to:

  • Run the service — authenticate you, serve your dashboard, boot an MCP server from your artifact’s configuration, execute tools, retrieve resources, and run chat-bot replies.
  • Make your content searchable — chunk and embed resources so retrieval works.
  • Show you what happened — the Activity chart, usage counters, and recent-activity feed on each project’s Home page are built from the audit records above.
  • Bill you correctly — count assistant replies and embedded storage against your plan’s allowance, enforce Free-plan caps, and report overage to Stripe.
  • Keep things safe — detect abuse, debug failures, screen outbound requests, and investigate security incidents.
  • Talk to you — transactional email such as invitations, plus replies to support requests.

We do not sell your personal information, we do not share it for cross-context behavioural advertising, we run no advertising or analytics trackers, and we do not use your Customer Content to train AI models.

AI models, embeddings, and your content

This is the part worth reading twice, because it’s where your content leaves our infrastructure.

Embeddings — always Google

Every embeddable resource you add is sent to Google’s Gemini API (gemini-embedding-001) using Ganju’s own API key, so it can be turned into vectors. Search queries are embedded the same way. This happens on every plan, including Free, and there is currently no way to opt out while using the hosted service and keeping search. If that’s not acceptable for a given document, don’t upload it — or self-host.

Chat-channel replies

When someone messages one of your bots, we run a tool-calling loop against a language model. What gets sent to that model is: your system prompt, the recent conversation history (up to 20 turns, or 10 when running on our shared model), the definitions of the tools that assistant has installed, the results those tools return, and any resource chunks retrieved to answer the question.

Which model receives it depends on your setup:

  • Ganju’s shared model — the default, and the only option on Free. This is currently a Google Gemini model, called with our key.
  • Your own model — on paid plans you can add a key for Anthropic, OpenAI, Google, or any OpenAI-compatible endpoint. Those requests go to that provider under your own account and their terms.

MCP clients

When Claude, ChatGPT, Cursor, or another MCP client talks to your assistant, the inference happens in that client’s model, not ours. We execute the tools and serve the retrieved content; the client’s provider handles the conversation. Their privacy policy governs that side.

We do not use your content to train our own models, and we don’t grant model providers the right to train on it. Each provider’s own terms govern what they do — if that matters to you, bring your own key and pick a provider whose terms you’ve read.

Connected accounts and tools

When you connect an account, you grant Ganju an access token scoped to what the tools need:

ConnectionWhat the token can do
GmailRead, send, compose, modify messages, and manage labels
Google DriveRead files and metadata
Google CalendarRead calendars and create, update, and delete events
OutlookRead and write mail, send mail, read your basic profile
OneDriveRead files
SlackPost messages, list channels, look up users, upload files, and — with a user token — search messages
Cal.com, TavilyWhatever the API key you supply permits

We store the token, its expiry, its scopes, and light metadata — not a mirror of your mailbox or drive. Content is fetched at the moment a tool runs and returned to the caller; what persists afterwards is the audit record described above, plus any files you deliberately synced in as resources.

Tools take real actions on those accounts — sending email, creating and deleting calendar events, posting to Slack. You decide which tools an assistant has and who can reach it.

Two tool types reach systems we don’t control: http-endpoint calls your own HTTP API, and mcp-proxy connects a remote MCP server (Notion, GitHub, and similar). Requests to both are screened against private and loopback address ranges, but once data leaves for a destination you configured, that destination’s operator handles it. You can disconnect any account from the dashboard at any time, and revoke access at the provider as well.

Chat channels and their end users

If you build a Telegram, Slack, WhatsApp, or Discord bot on Ganju, people will talk to it, and we will store what they say — message content, their platform user ID and display name, and the metadata listed above — on behalf of your organization.

If you operate a channel, that makes you the controller of those conversations. You are responsible for telling your users that an AI assistant is handling the conversation, for having a lawful basis to process what they send, and for honouring their requests. Your organization’s admins can read those conversations in the dashboard.

If you’re an end user who talked to a Ganju-powered bot and want your data removed, contact the organization that runs the bot. If you can’t identify them, write to hello@ganju.ai and we’ll pass the request on to the operator.

Who we share data with

We don’t sell data. We share it only with the providers that make the service work. The table below is the summary; the always-current list, with each provider’s role and location, lives on the subprocessors page, where we also commit to telling you before a new one starts handling your content.

ProviderWhat they processWhy
CloudflareAll traffic; uploaded files (R2); queued jobs; container workloads; transactional email routingHosting and delivery of the entire platform
Neon (Postgres on AWS, us-east-1)The primary database: accounts, workspaces, content, chunks, embeddings, logsOur system of record
Google (Gemini API)Resource text and search queries; chat content when running on the shared modelEmbeddings and the default shared model
Anthropic, OpenAI, or an OpenAI-compatible endpointChat contentOnly when you configure your own model
StripeName, email, billing details, payment method, usage countsPayments and subscription management
TavilyYour search queries and target URLsOnly if you install the web-search tools
Telegram, Slack, Meta (WhatsApp), DiscordMessages to and from your botOnly for the channels you connect
Google, Microsoft, Slack, Cal.comRequests your tools makeOnly for the accounts you connect
GitHub, GoogleYour identity at sign-inSocial login
Any remote MCP server or HTTP endpoint you configureWhatever your tools sendYou chose the destination

We may also disclose data when we’re legally required to, to enforce our Terms, or to protect the rights and safety of users and the public. If Ganju is ever involved in a merger, acquisition, or asset sale, data may transfer as part of it — you’ll be told before it becomes subject to a different policy.

Cookies and tracking

The marketing site (ganju.ai) sets no cookies and runs no analytics, advertising, or third-party tracking of any kind. Fonts are served from our own origin, not a CDN. There’s nothing to consent to because there’s nothing tracking you.

The application (app.ganju.ai and api.ganju.ai) sets cookies that are strictly necessary to sign you in:

  • A session cookie issued at sign-in, scoped across ganju.ai subdomains so the dashboard and API share your session, marked Secure in production, and cleared when you sign out or when it expires.
  • Short-lived cookies used during OAuth sign-in and consent flows.

We do not use cookies for profiling, retargeting, or measurement.

Security

  • In transit — everything runs over TLS on Cloudflare’s network.
  • At rest — OAuth tokens, API keys, bot credentials, and webhook secrets are encrypted with XChaCha20-Poly1305 before being stored. Decryption happens only in the moment of use, just before the outbound call.
  • Never exposed — secrets are never returned to the dashboard in plaintext and never written to logs or error traces.
  • Isolation — every query is scoped to the organization and project you’re a member of; MCP servers are addressed per artifact.
  • Verified webhooks — chat-platform callbacks are checked against a per-channel secret before anything is processed.
  • Screened egress — the crawler, http-endpoint, and mcp-proxy screen target hosts against private and loopback ranges.

No system is perfectly secure. We don’t currently hold a SOC 2, ISO 27001, or equivalent certification, and we’d rather say so than imply otherwise. If you find a vulnerability, email hello@ganju.ai — we’d genuinely like to hear from you.

How long we keep data

We keep data for as long as your account and organizations exist, with these automatic limits:

DataRetention
Detailed MCP request logs (tool arguments and results)90 days
Error logs90 days
Channel message history365 days
Execution audit records365 days
Expired sessionsPurged after 30 days

Everything else — accounts, organizations, resources, chunks, credentials, and configuration — is kept until you delete it.

  • Deleting a resource, prompt, tool, credential, or channel removes it and its dependents (chunks, embeddings, conversations, messages) from the database.
  • Deleting an organization cascades: every project, artifact, resource, chunk, channel, conversation, message, credential, model configuration, invitation, and audit record under it goes with it. This is irreversible.
  • Uploaded files in R2 are removed with the resource that references them.
  • Billing records are retained by us and by Stripe for as long as tax and accounting law requires, even after you leave.
  • Backups roll off on our provider’s schedule, so deleted data can persist in backups for a short window after deletion.

Want everything gone? Export it from Settings → Your data, then delete your organizations and your account from Settings → Danger zone. Organizations you own have to go first, because deleting one destroys other members’ work as well.

Where your data lives

Our primary database runs on Neon in AWS us-east-1 (United States). Files sit in Cloudflare R2 and requests are served from Cloudflare’s global edge network, so traffic is processed in the region closest to whoever made the request. Our model, payment, and platform providers operate globally.

We are established in Colombia but store and process data in the United States and at Cloudflare’s global edge, so your data is transferred internationally, whichever country you’re in.

  • Colombia. Under Ley 1581 de 2012, by accepting this policy you authorize the international transfer of your data to the providers listed above for the purposes described here. We rely on that authorization together with the contractual safeguards in each provider’s data processing terms.
  • EEA, UK, Switzerland. Transfers rely on the Standard Contractual Clauses and equivalent safeguards in our providers’ data processing terms.

Our Data Processing Agreement applies automatically to every customer — you don’t need to sign anything to get it. If you need it countersigned on paper, write to hello@ganju.ai.

Your rights and choices

Depending on where you live, you may have the right to access, correct, export, delete, or restrict the processing of your personal data, to object to certain processing, and to withdraw consent. You also have the right to complain to your local data protection authority.

Most of this you can do yourself, right now, without asking us:

  • Export your dataSettings → Your data → Download my data returns a JSON file with your profile, sign-in methods, sessions, memberships, invitations you sent, linked chat identities, and your acceptance record. Secrets are reported as presence flags, never in plaintext. Organization-owned content is downloaded from the pages that own it, because it belongs to the organization rather than to you.
  • Delete your accountSettings → Danger zone → Delete my account. Organizations you own must be deleted or transferred first.
  • Edit, disconnect, or delete a profile, a connected account, a resource, or a channel, from the page it lives on.

For anything the product can’t do, email hello@ganju.ai. We’ll respond within 30 days, or sooner where the law requires it.

Colombia (Ley 1581 de 2012): you have the right to know, update, and rectify your data; to request proof of the authorization you gave; to be told how it has been used; to file a complaint with the Superintendencia de Industria y Comercio (SIC) for breaches of the law; to have data deleted when processing is not lawful; and to access it free of charge. Send a consulta or reclamo to hello@ganju.ai — we answer consultas within 10 business days and reclamos within 15 business days, extendable as the statute allows, and we’ll tell you if we need the extension. You may revoke your authorization at any time, subject to any legal or contractual duty that requires us to keep processing. The SIC will normally only take a complaint after you have raised it with us first.

California residents: we do not sell personal information and do not share it for cross-context behavioural advertising, as those terms are defined by the CCPA/CPRA. You have the right to know, delete, correct, and to be free from discrimination for exercising those rights.

We will not discriminate against you for exercising any of these rights.

Children

Ganju is not directed at children, and you must be at least 18 — the age of legal capacity in Colombia — to hold an account. Colombian law (Ley 1581 de 2012, art. 7) gives the data of minors special protection, and we don’t knowingly collect it. If you believe a minor has given us personal data, email hello@ganju.ai and we’ll delete it.

If you operate a chat channel that minors can reach, meeting that standard for your End Users is your responsibility, not ours.

Changes to this policy

We’ll update this page when the product changes what it does with data. The “Last updated” date at the top always reflects the current version. For material changes — a new category of data, a new subprocessor handling your content, a new purpose — we’ll notify account owners by email before the change takes effect. Continuing to use Ganju after that means you accept the updated policy.

Contact us

Questions, requests, or complaints about privacy: