Security
Last updated 22 July 2026
A study app should be able to prove what it claims. Every control below maps to something that actually ships in Cortu's code and infrastructure — no aspirational badges, no invented certifications. If you find a gap, email sachin@cortu.app.
We never store your AI conversations
The intelligence runs at the edge, in the AI app you already trust. Cortu only ever receives the finished concept cards you choose to save — never the conversation that produced them.
The technical detail
Extraction runs inside your own ChatGPT or Claude. The connector sends only the distilled, structured concepts to our ingestion endpoint. There is no column anywhere in our database for raw chat text — the guarantee is structural, enforced by the schema, not just a policy promise.
We run no AI on your data
Cortu's server is deterministic: it validates and stores, nothing more. Your saved concepts are never sent back out to an AI model, and they are never used as training data.
The technical detail
Our servers validate the incoming concepts against a strict schema and store them. We do not forward your data to any language model, and we do not use it to train or fine-tune models.
The database decides who can see what
Your concepts, recall cards, and revision history are readable only by your account — enforced by the database itself, not just by application code.
The technical detail
Every application table (concepts, recall questions, revision progress, imports) is protected by Postgres Row-Level Security in Supabase, keyed to your authenticated user id. Isolation is enforced at the database layer, so an application bug cannot leak one account's cards to another. The service-role key that can bypass RLS is held server-side only and is never shipped to the browser or the mobile app.
Connector access uses modern OAuth, and you can revoke it
Linking a connector grants it permission only to save concepts into your account — scoped, and revocable by you from inside ChatGPT or Claude whenever you want.
The technical detail
The Claude and ChatGPT connectors authenticate with OAuth 2.1. Public connectors are required to use PKCE; confidential clients authenticate with a server-side client secret. Authorization codes are single-use, refresh tokens are stored only as SHA-256 hashes, and access tokens are short-lived. You can review and revoke Cortu's access from the connector settings in ChatGPT or Claude at any time — revoking there cuts off save access immediately.
Everything travels over TLS, and secrets stay on the server
Your data is encrypted in transit and at rest, and the keys that protect it never leave our servers.
The technical detail
All traffic to cortu.app and the ingestion and MCP endpoints is served over HTTPS/TLS. Data is stored in Supabase (Postgres) with encryption at rest. Application secrets — the OAuth signing secret, the Supabase service-role key, provider keys — live only in server-side environment configuration and are never bundled into the client. A build-time guard refuses to start a production deploy whose signing secret is missing or too short, so a misconfigured deploy fails loudly instead of silently trusting forged tokens.
You can delete your data — for real
Deletion means deletion. Remove a card or your whole account, and it is gone from Cortu — not just hidden.
The technical detail
You can delete individual concepts in the app, or request full account deletion. Deletion removes your concepts, recall cards, and progress from our active systems; backups age out on their normal cycle. See the Privacy Policy for retention specifics.
We don't sell your data
Your study data is never sold, rented, or used for advertising.
The technical detail
Cortu's business is the product, not your data. We do not sell or "share" personal information as those terms are defined under U.S. state privacy laws, we run no advertising on it, and we share data only with the sub-processors needed to run the service, listed in our Privacy Policy.
Reporting a vulnerability
Found a security issue? We appreciate responsible disclosure. Email sachin@cortu.app with the details and steps to reproduce, and please give us a reasonable window to fix it before any public disclosure.
Registered office: 139 HAL Old Airport Road, Unit 101, Bengaluru, Karnataka 560008, India
CIN: U74900KA2010PTC055525
Service: Cortu — AI-powered spaced-repetition flashcards
Last updated: 22 July 2026