<!-- Pseudonimisering -->
<!-- canonical: https://plainwater.ai/nl/wiki/concepten/pseudonimisering -->
# Pseudonimisering

Een objectnaam is ook data. Een tabel die `Salarissen_Directie` heet, of een kolom `Ontslagdatum`,
vertelt een model al veel over een organisatie, nog voordat er één rij is gelezen. Daarom gaan namen
bij Plainwater AI als pseudoniem naar het model.

## Hoe het werkt

Per opdracht houdt het platform een register bij van echte namen en hun pseudoniemen:

| Echte naam | Pseudoniem |
| --- | --- |
| `Salarissen` | `t_0056` |
| `Medewerker_ID` | `c_0112` |
| `Afdeling` | `c_0113` |

Het model krijgt alleen de pseudoniemen te zien. Het kan daar gewoon mee werken: een query schrijven,
een join voorstellen, een index aanraden. De structuur blijft intact. Alleen de betekenis die in de
naam zit, verlaat het platform niet.

Het pseudoniem is stabiel binnen de opdracht. `t_0056` is in het hele gesprek dezelfde tabel, zodat
het model kan redeneren zonder in de war te raken.

## Terugvertaling voor de mens

Wat het model antwoordt, vertaalt het platform terug voordat jij het ziet. Schrijft het model
"Voeg een index toe op `c_0112` in `t_0056`", dan lees je "Voeg een index toe op `Medewerker_ID` in
`Salarissen`".

Dat werkt ook voor namen die het model zelf bedenkt. Stelt het model een view voor met de naam
`vw_t_0056_monitor`, dan lees je `vw_Salarissen_monitor`.

En het werkt de andere kant op. Typ je zelf een echte naam in het gesprek, dan wordt die vervangen
voordat het bericht naar het model gaat. Wat je op het scherm ziet, kun je dus gewoon terugtypen
zonder dat het lekt.

:::accent Eén kopie, niet twee
Het platform bewaart de gesprekken met de pseudoniemen erin. Er is geen tweede kopie met de echte
namen. De terugvertaling gebeurt pas op het moment dat iemand met de juiste rechten meeleest.
:::

## Wanneer is het verplicht?

Een klant met een bron die echte klantdata bevat, draait alleen met actieve pseudonimisering. Dat is
geen instelling die je vergeet: zonder pseudonimisering start een opdracht niet. En omdat een bron er
ook tijdens een lopende opdracht bij kan komen, wordt het bij elke toolaanroep opnieuw gecontroleerd.

## En de waarden?

Namen zijn één ding, waarden een ander. Voor waarden zijn er de standen van
[datatoegang](/concepten/datatoegang):

- In **alleen metrics** komen er geen waarden bij het model. Alleen tellingen en statistieken.
- In **versleutelde waarden** is elke cel een stabiel token. Dezelfde klantnaam geeft steeds hetzelfde
  token, zodat het model kan tellen, groeperen en koppelen zonder de naam te kennen.
- In **open** gaan letterlijke waarden mee, alleen op bronnen die de klant daarvoor aanwijst.

Ook bij versleutelde waarden vertaalt het platform terug voor de mens die het resultaat bekijkt.

## Vrije tekst

Sommige tekst uit een database is lastiger: de broncode van een procedure, een querytekst, een
omschrijving. Daarin kunnen waarden staan. Voor een bron met echte klantdata gaat zulke vrije tekst
niet in leesbare vorm naar het model, maar alleen in vervangen vorm.

## Wat het niet is

Pseudonimisering is geen anonimisering in juridische zin. Het register maakt de terugvertaling
mogelijk, en wie het register heeft, kan dat ook. Het verschil is waar het register staat: op het
platform, in jouw omgeving, en niet bij de modelleverancier. Het model ziet de structuur en nooit de
sleutel.

En wat het register niet kent, kan het niet vervangen. Een naam die alleen in vrije tekst voorkomt en
nergens als object bestaat, herkent het register niet. Daarom combineert het platform
pseudonimisering met de standen van datatoegang en met uitzonderingen per kolom: je hoeft niet op
één mechanisme te vertrouwen.

## Voorbeeld

Een analist vraagt: "Hoeveel medewerkers per afdeling hebben dit jaar een salarisverhoging gehad?"

1. Het model krijgt de structuur: `t_0056` met kolommen `c_0112`, `c_0113`, `c_0118`.
2. Het schrijft een query met die pseudoniemen.
3. Het resultaat komt terug met tellingen per afdeling. Afdelingen met minder dan tien medewerkers
   worden "<10", zodat geen individu herkenbaar is.
4. De analist ziet de tabel met de echte afdelingsnamen.

## Zie ook

- [De AI-poort](/concepten/ai-poort)
- [Datatoegang per bron](/concepten/datatoegang)
- [Begrippenlijst](/begrippen)
