ndaact.ai — personal data protection: browser extension and desktop app

Privacy Policy

Last updated: 13 October 2026 · Desktop app 0.9.15 · Browser extension 0.6.5

In one sentence: ndaact.ai detects personal data before it reaches an AI (in your prompts and PDFs on the web, and in whatever you copy to the clipboard from any application) and replaces it with markers. Detection and replacement happen on your machine. The software's technical connections, such as the licence, updates and error diagnostics, are detailed below.

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:

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

ComponentWhere it runsData 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.

ExchangeWhat is sentRecipient and location
Licence and sign-inDevice 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)
UpdatesRequest for the version file and the installer. The hosting provider sees the IP address of the request, like any web serverScaleway storage, France (Paris)
Model downloadRequest for the model files. For a model reserved to a subscription, the licence is checked on the serverScaleway storage (France) and a Supabase server function (European Union)
Error diagnosticsTechnical report, described belowSentry, 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.

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.

DataWhyRetention
Email addressSign-in (one-time link or password) and service-related messagesLife 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 themPersonalise the account areaLife of the account
Company name and VAT number, collected by Stripe at checkoutBusiness invoicing and EU VAT reverse chargeLife of the account, then 10 years with the accounting records
Subscription: plan, status, renewal date, Stripe identifiersUnlock paid features and bill youLife 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 tokenEnforce your plan's device limit and allow revocationUntil the device is revoked
Account log: device linking, payment event, model accessSecurity and evidence in case of disputeLife 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.