Confidential · © 2026 Space-O Technologies Inc. · Prepared exclusively for DMA. Please do not copy, save or share.

Section 19 · Safety, Deliverability & Governance

19.4Consent and privacy tracking

Built — needs DMA's data
No.
19.4
DMA's reference
Decision Book p.34
Phase
Phase 1
Autonomy
L1 · Recommend
DMA's decision
Yes

What DMA asked for · Decision Book p.34

Know why DMA has each contact's details, and respect the privacy and marketing rules that apply.

Why it matters to DMA: A legal requirement: it decides what the reactivation engine may do, contact by contact.

In our words, from DMA's Product Decision Book v3, page 34.

How we do it

  • Every contact gets a consent record: the country and region, the legal basis DMA relies on (for example a past customer relationship), where that basis came from and its date, and when it expires.
  • A consent matrix, a versioned rule set, says per jurisdiction and channel what each basis allows. It is approved like every other rule; the one in the POC is a clearly marked starter set until DMA's counsel approves the real one.
  • The send governor checks consent at the moment of every send, so an email a person approved still can't go to someone who may not be contacted. Today shows how many contacts the gate currently blocks, and why.
  • Website chats record the visitor's consent when they leave an email or book, with the page and the notice shown.

The flow

It plays on its own while it's on screen; hover or use the controls to pause or step through.

Contactcountry, historyConsent recordbasis, source, expiryConsent matrixapproved rulesAt send timeallowed or blockedTodayhow many are blocked
Step 1 of 4

A contact

A former client in Ontario.

  • Nutshell
  • Stored data
  • Rule in code
  • Routing
  • Screen

Where the data goes

The same six stages on every page. Nothing reaches Nutshell except through the write gate.

  1. 1Nutshell + chat

    Source

    Contacts, their history, and consent given in the chat.

  2. 2Sync

    Copies Nutshell changes into the bridge database

    Keeps contacts current.

  3. 3Bridge database

    A copy of the CRM data, plus what the AI works out

    One consent record per contact; the approved matrix.

  4. 4AI

    Claude models, only through DMA's own gateway

    Not needed: rules.

  5. 5Write gate

    The only way back into Nutshell: checked, approved when needed, sent once

    Blocks sends in code; do-not-contact can go to Nutshell under its field rule.

  6. 6Nutshell

    The system of record

    Unchanged unless a person marks do-not-contact.

The tables behind it

Drawn from the POC's database catalogue: structure only, no data.

ctrl.consentPKcontact_iduuidjurisdictiontextlawful_basis_codetextbasis_sourcetextbasis_expires_atdatematrix_versiontextstatustext+ 11 more columnsctrl.consent_matrix_rulesPKiduuidFKversiontextjurisdictiontextchanneltextbasistextresulttextlegal_statustext+ 12 more columns

PK primary keyFK reference the database enforces (solid line)ID reference kept by id (dashed line)

TableWhat it holdsColumns
ctrl.consentOne consent record per contact: jurisdiction, legal basis, its source and expiry, and the result.18
ctrl.consent_matrix_rulesThe approved rules per jurisdiction and channel.19
How the tables connect (1)
ColumnPoints toKept by
ctrl.consent_matrix_rules.versionctrl.consent_matrix_versionsThe database (foreign key)

Worked example

Synthetic demo data: every name, business and number is made up.

The consent gate: the screen and the system

1 / 2

What you see

1.On Today

How many contacts the gate blocks right now.

localhost:13301/
Today: the consent gate, and how many records it blocks.
Callout 1

What happens in the system

  • Bridge databasectrl.consent

    Consent records evaluated against the active matrix version.

Three contacts through the gate (synthetic example; the real matrix comes from DMA's counsel).

Consent decisions

ContactBasisResult
Former client, OntarioPast customer relationship (2023)Allowed until the basis expires
Lead from a 2019 trade show, GermanyNone on recordBlocked: no basis
Chat visitor who booked a callAsked to be contacted (booking form)Allowed for the reply

In the running POC

localhost:13301/
Today: the consent gate, and how many records it blocks.

1 / 2Today: the consent gate, and how many records it blocks.

  1. 1Blocked by the consent gate: how many records, from which countries, and a link to see why.

Dashboard · Today, the consent gate. Captured from the running POC on September 25, 2026; synthetic data.

See it live

Opens the exact screen in the running POC, in a new tab.

OpenWhereWhat to try
Consent rulesDMA AI dashboardThe matrix and its approval status.

Status

Built — needs DMA's data

Built — needs DMA's data. This capability runs in the POC today. It needs DMA's own content or data to go live; no code change is needed for that.

19.4 Consent and privacy tracking · DMA AI proof