DGAI's whole design goal is simple: let a powerful cloud AI reason about your family DNA data without ever seeing who anyone is. Here's exactly how it does that — and how you can verify it yourself.
Before any data leaves your computer, every identifying thing is replaced with a stable token:
| Token | Stands for |
|---|---|
[P1] | A profile / test kit you manage |
[M1234] | A DNA match (a tester) |
[A5678] | A tree ancestor |
[G12] | A group / family cluster |
[S7] | A surname |
[L34] | A place |
Tokens are consistent: the same surname is always [S7], the same match is
always [M1234] — across the whole conversation and across sessions. That's what lets the
AI still reason about family-line clustering and recurring locations; it just can't see the real value.
The token↔real-name mapping lives in a small sidecar database on your computer, never inside your GDAT database and never sent anywhere:
~/Library/Application Support/DGAI/maps/%LOCALAPPDATA%\DGAI\maps\When the AI replies (in tokens), DGAI swaps the tokens back to real names on your screen.
Restored names are highlighted, and
hovering a reply shows a “Restored locally:” list of each [TOKEN] → name
— so you can always see precisely what was, and wasn't, sent.
If you type “Mary Jones”, DGAI recognizes her and substitutes her token before sending, showing “sent as: ‘Mary Jones’ → [M1234]”. It matches known full names and surnames while avoiding common words, so ordinary questions still read naturally.
Highly identifying fields aren't tokenized — they're simply never read into anything the AI could see: contact names, emails and phone numbers, vendor match keys, profile/tree URLs, PersonGuids, and WikiTree / FamilySearch ids.
Free-text fields — research notes, event summaries, MRCA notes — can contain names no
tokenizer can catch, so they are withheld from cloud AI unless you explicitly opt in
(a checkbox in Settings). When withheld, the AI just sees
[withheld: free-text excluded by privacy settings].
As a final safety net, DGAI keeps a dictionary of every distinctive identity value in your database and scans every outgoing request. If even one real value slips through, the request is blocked outright — you'll see “Blocked outbound request: the payload contains a value from the local identity dictionary… Nothing was sent.” There is deliberately no “send anyway” for cloud AI.
Everything above is on by default. Only two settings loosen it, and both are off unless you choose them:
DGAI is a DNAGedcom tool. © DNAGedcom LLC 2020–2026. DGAI is provided as is with no guarantee given as to its performance.