Privacy Policy
Last updated: 13 October 2026 · Desktop app 0.9.15 · Browser extension 0.6.5
What data is detected
ndaact.ai scans two distinct streams: the text you type and the PDF files you upload on claude.ai and chatgpt.com (browser extension), and the text you copy to your machine's clipboard, from any application (desktop app). In both cases it looks for the following categories of personal data:
- People's names
- Dates of birth
- Postal addresses
- Company and organisation names
- Health data: a condition, a treatment or a medical situation mentioned in plain text
- French social security numbers (national ID)
- IBAN and bank card numbers
- Email addresses
- Phone numbers
- SIRET (company registration) numbers
- IP addresses
- Case references and document identifiers
Each detected data point is replaced with an anonymous marker (for example {{PERSON_a1b2}}) before sending. The model's reply is then re-displayed with the original values restored locally, in your browser only.
Health data deserves a separate word: tied to a name, it falls under the special categories of article 9 of the GDPR. It has no fixed shape: "being treated for multiple sclerosis" is health data, not a number, and it is the model described below that spots it.
How detection works
Two mechanisms work together, for different reasons.
Deterministic rules handle identifiers that have a shape and a check digit: national ID, IBAN, company number, payment card. The software does not merely recognise the shape, it recomputes the check digit. A string of digits that looks like an IBAN without being one is therefore not redacted by mistake, and a real IBAN does not slip through.
The named-entity recognition model takes over for everything no rule can describe: a person's name, a company name, an address, health data. Those have no fixed shape; the surrounding sentence is what reveals them. The model runs on your machine, with no outbound connection during analysis.
One model per language. Each model weighs several hundred megabytes. Bundling five of them into a single file would produce something too heavy to load on an ordinary workstation, and slower on every prompt. ndaact.ai therefore downloads the model for the language you use, and that one only: French, English, German, Spanish or Italian. You switch language from the application, which then fetches the matching model.
The clipboard and the desktop app
The ndaact.ai desktop app (macOS, Windows) watches your machine's clipboard, so that protection does not depend on the browser. It only reads plain text: as soon as the clipboard holds something it could not rewrite in full (an image, a file, rich RTF or HTML text), it abstains and leaves the content untouched.
Two absolute exclusions. Content marked as concealed by a password manager imposes complete silence: no read, no logging, no counter, no state change. Content marked as transient is out of scope.
Non-blocking behaviour. Unlike the browser extension, which blocks sending when protection is not active, clipboard watching is best-effort: if redaction cannot be done in full, the content is left as it is rather than partially rewritten. A partial rewrite would leak the unredacted version through the untreated path, under a false assurance.
Pausing. You can pause the watcher at any time from the menu-bar icon, for 30 minutes by default.
macOS authorisation. The app requests the "Accessibility" permission for one purpose only: pasting the redacted content back for you. It is not used to read the screen or observe keystrokes. Declining it does not prevent redaction; only the automatic paste is lost.
Where processing happens
| Component | Where it runs | Data that passes through |
|---|---|---|
| Regular-expression detection | Local ndaact.ai app on your machine (127.0.0.1), called by the extension |
Prompt text, before sending |
| Advanced detection (NER model) and PDF redaction | Local ndaact.ai application on your machine (127.0.0.1) |
Prompt text / PDF content, handled on your machine without going through an ndaact.ai server |
| Clipboard watching | Local ndaact.ai app, on your machine |
Plain text you copied, and only if it can be rewritten in full; never content marked as concealed by a password manager |
| Marker ↔ value mapping table | Local encrypted store (AES-256), key specific to your installation, generated on first launch and kept on your machine | The original detected values, needed to give you the reply back in clear |
| Local audit log | Append-only local file, chained by SHA-256 hash, on your machine | Timestamp, entity type and position in the text, without the original value. This log is not purged automatically: it stays until you delete it |
| Detection history (audit) | Local chrome.storage, on your machine |
Personal data type, marker and timestamp, without the original value |
What is sent to ndaact.ai
Your prompts and documents, including the personal data detected, are not sent to any server operated by ndaact.ai or Inkan.link, neither by the extension nor by the desktop app. The extension only communicates with two destinations: the LLM site you use (claude.ai/chatgpt.com, which receives substitution markers in place of the detected entities, without the mapping table, so with no reasonable means of re-identifying anyone) and the local ndaact.ai application on 127.0.0.1, which runs on your own computer. An entity that is not detected stays in clear text in the text sent: ndaact.ai helps protect your data, without guaranteeing it.
Apart from the analysed content, the software exchanges technical data with our services: licence, updates, model download, error diagnostics. The details are in this policy.
Terminology. This processing is client-side pseudonymisation (GDPR Art. 4(5)): reversible for you, since the mapping table stays on your machine. We therefore don't call it "anonymisation" on your side. For the LLM provider and any third party, however, it aims for the effect of de-identification: the markers are opaque to them, with no reasonable means of re-identification (the relative approach taken by the Court of Justice of the EU, EDPS v SRB, Case C-413/23 P, 4 September 2025). Only the detected entities are redacted; we don't claim to anonymise the entire prompt.
Technical exchanges and error diagnostics
Apart from the analysed content, the software exchanges technical data with our services and with providers. These exchanges are not designed to contain your prompts, your documents or the detected values.
| Exchange | What is sent | Recipient and location |
|---|---|---|
| Licence and sign-in | Device label, hardware fingerprint (a technical identifier of the device) and sign-in token (a technical code, separate from your password). Details in "Account, subscription and billing" | Supabase, European Union (Paris) |
| Updates | Request for the version file and the installer. The hosting provider sees the IP address of the request, like any web server | Scaleway storage, France (Paris) |
| Model download | Request for the model files. For a model reserved to a subscription, the licence is checked on the server | Scaleway storage (France) and a Supabase server function (European Union) |
| Error diagnostics | Technical report, described below | Sentry, European Union (Frankfurt) |
Error diagnostics (Sentry)
To repair failures, ndaact uses Sentry, an error-tracking service from Functional Software, Inc., in its European Union region (Frankfurt, Germany). Three components send it technical reports.
- Desktop application. When the detection engine fails to start or stays unavailable, or when the clipboard holds an unrecognised format, the application sends a report: engine state and the reason it is unavailable, application version, operating system, machine model and name, loading phase and duration and, for an unrecognised format, the technical name of that format. The report contains neither the analysed text, nor the detected values, nor the content of the clipboard or of PDFs, nor licence keys. Versions before 0.9.15 send their reports to a Sentry server hosted in the United States.
- Customer area and server functions. Errors from these two surfaces are sent with the technical details of the request.
- Website and customer area (security reports). When a visitor's browser blocks an element of the page (content security policy, or CSP, a browser security mechanism), it may send a report: page address, address of the blocked element, previous page where applicable, and browser used.
IP address and location. The IP address is not kept in the reports (masking enabled). Sentry does, however, derive an approximate country and city from the connection, and keeps them with the report.
Purpose. To detect and fix cases where protection is no longer active, and service errors. Opting out. The desktop application currently offers no setting to switch these reports off.
Legal basis. ndaact's legitimate interest in fixing defects in its application and keeping the service running (Article 6(1)(f) GDPR). You can object to this processing by writing to dpo@inkan.link.
Retention. Reports are kept for the retention period of the Sentry plan ndaact uses, set by Sentry. Processor. Sentry processes these reports on behalf of ndaact, under a data processing agreement (DPA) between ndaact and Sentry. Sentry is a US company: for transfers to the United States, the DPA provides for the EU-U.S. Data Privacy Framework and, failing that, the European Commission's standard contractual clauses.
Account, subscription and billing
The software sends us neither your prompts nor your documents. Taking out a subscription, however, creates an account, and that account involves data we do keep. It is hosted in the European Union (Supabase, Paris region). Supabase Pte. Ltd. is a company established in Singapore: access to this data from Singapore is a transfer outside the European Union, covered by the European Commission's standard contractual clauses (modules 2 and 3), which Supabase incorporates into its data processing agreement.
| Data | Why | Retention |
|---|---|---|
| Email address | Sign-in (one-time link or password) and service-related messages | Life of the account. If you were a customer, it is then archived for 10 years with the accounting records, so that you can still request your invoices |
| Name and profession, if you provide them | Personalise the account area | Life of the account |
| Company name and VAT number, collected by Stripe at checkout | Business invoicing and EU VAT reverse charge | Life of the account, then 10 years with the accounting records |
| Subscription: plan, status, renewal date, Stripe identifiers | Unlock paid features and bill you | Life of the account, then 10 years for accounting records (article L123-22 of the French Commercial Code) |
| Devices: label, hardware fingerprint, first and last activity dates, hash of the sign-in token | Enforce your plan's device limit and allow revocation | Until the device is revoked |
| Account log: device linking, payment event, model access | Security and evidence in case of dispute | Life of the account |
Payments are handled by Stripe: no card details reach our servers. The account database is provided by Supabase, the website by Vercel. Legal basis: performance of the subscription contract, and legal obligation for accounting records.
What is not in there: your prompts, your documents and the detail of your detections. They stay on your machine, subscription or not.
Sharing with third parties
ndaact.ai does not sell or rent personal data. It is shared with the providers needed to run the service, listed in this policy. No data is used for advertising or behavioural analytics purposes. Traffic on the marketing site is measured with Matomo, which we host and administer ourselves: usage and health statistics stay with us and are passed to no ad network.
Permissions and authorisations
The extension requests a minimal set of Chrome permissions, each strictly necessary for detecting and redacting personal data before sending: network access on claude.ai/chatgpt.com/127.0.0.1, reading the active tab, script injection, local storage, periodic alarms, and notifications. The detail of each permission and its justification are documented on the Chrome Web Store listing and available on request.
The desktop app requests a single system authorisation, and only on macOS: "Accessibility", for the automatic paste described above. It needs no administrator privilege to run.
Your rights
Detection and replacement happen on your machine, and you stay in control of the protection. On the browser side: disable protection at any time from the extension popup, review the full detection history, and uninstall the extension to immediately delete all data stored locally (chrome.storage).
On the desktop app side: pause clipboard watching from the menu bar, review the protection log in Settings, and uninstall the app to delete the encrypted mapping table and the audit log. We do not access that data and keep no copy of it: for this local data, there is nothing to erase on our side.
Contact
For any question about this policy, or to exercise your rights over account data: dpo@inkan.link. For anything else: contact@ndaact.ai.
This page is a translation. The French version prevails.