Skip to main content

Trust Center

What we do with your data today, what we do not do yet, and the status of every statement. Understify holds no security certification.

Last reviewed:

What we do with your documents

How your files are stored and processed, including by our AI provider.

Where your documents are stored

In place

Uploaded files and the records we create from them are stored with our database and file-storage provider, Supabase. Each file is stored under your own account's folder.

AI processing by OpenAI

In place

To analyse a document or answer a question, we send its text to our AI provider, OpenAI, through its API. This is why your documents are not end-to-end encrypted: they are decrypted on our servers and processed by OpenAI.

No model training on your documents

In place

Understify does not train or fine-tune any AI model on your documents. OpenAI's API terms say API data is not used for model training; we have not yet filed a copy of the terms version that applies to our account.

OpenAI data retention and EU processing

Not yet

We have not yet confirmed in writing how long OpenAI keeps API requests for our account, whether zero data retention applies, or whether processing can stay in Europe. We will publish the answer here.

Extracted text stays server-side

In place in code: merged, pending deployment

The full text we extract from a document is used only by server-side processing. It is not returned by document pages, the API or exports, except in your own data export.

Safeguards on AI output

In place in code: merged, pending deployment

Document text is cleaned of hidden characters before it reaches the model, and quotes the model cites as evidence are checked against your document; findings whose quote cannot be found are flagged. AI output is a proposal for your team to review, not legal advice.

Security controls

Each control has a status. "In place" means it runs in production today. "Merged, pending deployment" means the code is finished and reviewed but not yet released. "Not yet" means we do not do it today.

Encryption in transit

In place

Traffic to Understify is served over HTTPS (TLS), terminated by our hosting provider, Vercel.

Encryption at rest

In place

Our database provider, Supabase, encrypts stored data at rest (AES-256) and manages the keys. This is the provider's control, not one Understify operates.

Connected-account tokens encrypted by Understify

In place in code: merged, pending deployment

Access and refresh tokens for the accounts you connect (Google Drive or OneDrive) are encrypted by our application with AES-256-GCM before they are stored, using a key held outside the database.

Row-level security

In place

Row-level security is enabled on every application table in our database.

Row-level security review and fixes

In place in code: merged, pending deployment

We reviewed every table's access policies and database privileges and fixed the gaps we found, so each record is scoped to its owner or organisation and internal tables are reachable only by our servers.

Role-based access in organisations

In place

Organisation workspaces have owner, admin, editor and viewer roles. Viewers are read-only.

Sign-in and password storage

In place

You can sign in with Google or with a password. Passwords are handled by Supabase Auth, which stores them as bcrypt hashes.

Multi-factor sign-in (authenticator app)

In place in code: merged, pending deployment

Multi-factor sign-in with an authenticator app (TOTP), required for administrators and optional for members, with one-time recovery codes. The code is built and merged but not yet released, so customers cannot turn it on today. SMS codes and passkeys are not offered.

Cross-site request protection

In place in code: merged, pending deployment

Requests that change data through our API from a browser are checked for a same-origin source, and cross-site requests are rejected. A short, fixed list of endpoints that are not used with your browser session is exempt from this check and authenticated another way: the Stripe payment webhook (Stripe's signature), scheduled jobs (a server secret), the public API (an API key), and the endpoint that receives your browser's own content-security-policy violation reports (it reads no cookies and changes no data, only logs a redacted summary). Requests that carry no cookies and no browser origin headers, such as server-to-server API calls, are not origin-checked because they cannot use your session.

Safe outbound webhooks

In place in code: merged, pending deployment

Webhooks you configure are delivered only to public HTTPS addresses; private and internal network addresses are refused, and redirects are not followed.

Password-protected share links

In place in code: merged, pending deployment

Share-link passwords are stored as salted scrypt hashes and repeated wrong guesses are throttled.

Rate limits fail closed

In place in code: merged, pending deployment

If our rate-limit store is unavailable, sign-in, upload and AI endpoints fall back to a strict limit instead of allowing unlimited requests.

Rate limits on every endpoint

Not yet

A central rate limit covering every API endpoint is not in place yet; some endpoints are limited today.

Payments

In place

Payments are handled by Stripe; we do not store card numbers. Stripe's notifications to us are signature-checked.

Reliable payment event handling

In place in code: merged, pending deployment

Each Stripe event is recorded and processed once; a failed event is retried rather than lost.

Error reporting

In place in code: merged, pending deployment

Application errors are reported to Sentry so we can fix them. Before a report, breadcrumb or log is sent we remove your IP address, cookies, login and API tokens, request bodies, the query part of web addresses (sign-in codes, reset and invite links), share-link tokens, the referring page, email addresses and any user identity. Until this change is released, error reports from the live service can still include your IP address.

Secrets kept out of logs

In place in code: merged, pending deployment

Errors are logged in a sanitised form, with database connection strings and passwords removed.

Decision activity log

In place

Decision runs, approvals and actions are recorded in a log for your organisation.

Audit log for sign-in, billing and permission events

In place in code: merged, pending deployment

Sign-in, two-step verification, billing, share-link, integration, team permission and API key events are recorded in an audit log that the application can add to but cannot edit or delete, except that a scheduled retention job removes events older than 24 months. You can view and export your own events; organisation owners and admins can view and export their organisation's events.

Automated checks on every change

In place in code: merged, pending deployment

Every code change runs lint, type checks, unit tests, a build check, a dependency audit, a secret scan and a database migration dry run before it can be merged.

Single sign-on (SAML)

Not yet

Self-service single sign-on is not available. SSO can be requested and is set up manually.

Independent penetration test

Not yet

No independent penetration test or external security audit has been completed yet.

Certifications and audit reports

Not yet

Understify holds no SOC 2 report, no ISO 27001 certificate and no other security certification, and has not engaged an audit firm. Our providers' own reports are their assurance, not ours.

24/7 security monitoring

Not yet

We do not run 24/7 security monitoring. Our status page is updated manually.

Availability commitment

Not yet

We do not offer an uptime SLA and do not promise an uptime percentage. Hosting is single-region; multi-region redundancy is not offered.

Tested backup restore

Not yet

Database backups are run by our database provider. We have not yet completed a timed restore drill, so we do not publish recovery times.

Data retention and deletion

How long we keep your data and what happens when you delete it.

Deleting a document

In place

When you delete a document, its record and stored file are removed from the app straight away. Backup copies expire on our database provider's schedule.

Deleting your account

In place

When you delete your account, it is marked as deleted and sign-in is blocked straight away. Your data stays stored, hidden from use, until it is permanently erased.

Permanent erasure after 30 days

In place in code: merged, pending deployment

Deleted accounts are kept for a 30-day grace period so a mistaken request can be reversed, and paid subscriptions are set to end at the close of the billing period. After 30 days, a daily job permanently erases the account: the Stripe subscription is cancelled and the Stripe customer deleted, stored files are removed, connected-account tokens are deleted, and the account and its records are deleted. We keep one log entry with the account id only.

Exporting your data

In place

You can download an export of your own account data.

What erasure does not cover yet

Not yet

Erasure deletes our copy of connected-account tokens but does not yet revoke them at Google or Microsoft. Slack can no longer be connected; to withdraw an older Slack authorisation, remove the Understify app from your Slack workspace (a manual step). Erasure does not remove data held in Sentry error reports or logs. Stripe keeps payment records it is legally required to keep.

Vulnerability disclosure

How to tell us about a security problem.

Reporting a vulnerability

Pending confirmation

Email security@understify.com with a description and steps to reproduce. Please do not access, change or delete other people's data, and give us reasonable time to fix the issue before telling others. We do not run a paid bug bounty.

security.txt

In place in code: merged, pending deployment

Our contact details for security reports are published at /.well-known/security.txt (RFC 9116).

Contact: security@understify.com. Machine-readable details: /.well-known/security.txt.

Subprocessors

Companies that process data for us to run Understify. Rows marked planned are not used yet.

ProviderPurposeDataStatus
SupabaseDatabase, sign-in and file storageAccount details and everything you upload or create in Understify
In use
OpenAIAI analysis and answersDocument text and the questions you ask
In use
StripePayments and subscriptionsName, email, billing details and payment history
In use
ResendTransactional emailYour email address and the content of emails we send you
In use
SentryError reportingError details (error message, stack trace, page or API path, browser type). IP addresses, cookies, tokens, URL query strings, referring pages, request bodies, email addresses and user identity are removed before sending (PRIV-07, pending deployment; until then reports can include your IP address)
In use
VercelApplication hosting and HTTPSAll traffic to and from Understify, passing through
In use
HetznerApplication hosting (planned, to replace Vercel)All traffic to and from Understify, passing through
Planned, not in use
CloudflareBot check on the sign-up form (Turnstile). DNS, HTTPS and network protection in front of Understify are planned, not in use yetIP address and browser details of people who open the sign-up form
In use

Services you connect

In place

If you connect Google Drive or OneDrive, we read files from that service on your instruction. Slack is used only to send notifications to an incoming webhook URL you add in Settings; Understify does not sign in to Slack or read anything from it. Those services are chosen by you and are not listed above.

Data processing agreement

Not yet

A customer data processing agreement (DPA) is not published yet. Data-processing regions for each provider are not yet confirmed and will be added here.

Questions about any statement on this page? Contact us. See also our Privacy Policy and Security page.