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

Section 19 · Safety, Deliverability & Governance

19.2Email verification and suppression

Built in the POC
No.
19.2
DMA's reference
Decision Book p.34
Phase
Phase 1
Autonomy
L3 · Act within rules
DMA's decision
Yes

What DMA asked for · Decision Book p.34

Cut bounces and honour unsubscribes across the whole system.

Why it matters to DMA: It protects the sending reputation the whole reactivation engine depends on.

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

How we do it

  • Before a list is used, every address is checked: the domain must accept mail (MX), disposable and role addresses (info@, sales@) are marked, and people the notes say left or bounced are excluded.
  • Unsubscribes, bounces and complaints go on a suppression list, kept as hashes of the addresses. Every email of every kind checks it at the moment of sending, not only when it was approved.
  • Every email carries a one-click unsubscribe link, and the suppression applies everywhere at once: outreach, replies and any later campaign.
  • Outreach to an invalid address is refused; a risky one is held until a person chooses "send anyway", with a note, and that choice is logged.

The flow

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

passpassContact lista wave's recipientsVerificationMX, role, disposableSuppression listunsubscribes, bouncesSend governorchecks at send timeSentwith unsubscribe link
Step 1 of 4

The list

A wave of 50 former clients.

  • Stored data
  • Rule in code
  • Screen

Where the data goes

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

  1. 1Nutshell + replies

    Source

    Contacts, and unsubscribes or bounces as they arrive.

  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

    Verification results and the suppression list (hashes only).

  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

    Can mark do-not-contact in Nutshell under its field rule.

  6. 6Nutshell

    The system of record

    Do-not-contact follows the person.

The tables behind it

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

ai.email_verificationsPKcontact_iduuidPKvalue_hashbyteadomaintextstatustextreasonstext[]IDrun_iduuidchecked_attimestampoverride_bytext+ 2 more columnsai.email_domainsPKdomaintextmx_statustextdisposablebooleanchecked_attimestamp+ 2 more columnsctrl.suppressionsPKemail_hashbyteareasontextsourcetextcreated_attimestampctrl.mail_logPKiduuidclasstextstatustextIDapproval_iduuidreasonsjsonbIDdecision_iduuid+ 12 more columns

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

TableWhat it holdsColumns
ai.email_verificationsThe result of checking each address, and any person's override.10
ai.email_domainsPer domain: does it accept mail, is it disposable.6
ctrl.suppressionsAddresses that must never be emailed, as hashes, with the reason.4
ctrl.mail_logEvery email sent or held, with the governor's reasons.18
How the tables connect (3)
ColumnPoints toKept by
ai.email_verifications.run_idagent.runsThe application (by id)
ctrl.mail_log.approval_idctrl.approvalsThe application (by id)
ctrl.mail_log.decision_idctrl.decision_logThe application (by id)

Worked example

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

Checked addresses: the screen and the system

1 / 2

What you see

1.Email health

The sending domain's health, the send limits and the list checks, on one screen.

localhost:13301/settings?tab=email
Settings → Email health: the domain check, the warm-up limits and list verification.
Callout 1

What happens in the system

  • Bridge databaseai.email_domains

    DNS and MX checks, cached per domain.

Addresses checked in the POC today (live counts on the synthetic sample). Outside the POC every address is checked against live DNS.

Verification

ResultContacts
Addresses checked (all on reserved test domains in the POC, so marked valid without a live DNS check)376
Left or bounced, from the notes (never emailed)28

In the running POC

localhost:13301/settings?tab=email
Settings → Email health: the domain check, the warm-up limits and list verification.

Settings → Email health: the domain check, the warm-up limits and list verification.

  1. 1Checked live against a demo domain that has no email set up yet: all four checks fail, and each comes with the exact record to add.
  2. 2Warm-up: today's cap, what was sent, and the last 14 days of sends, bounces and complaints.
  3. 3List verification: every address checked; in the POC they are reserved test domains, marked as such.

Dashboard · Settings → Email: sending domain, warm-up and list verification. 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
Email healthDMA AI dashboardDomain health, limits and list checks.

Status

Built in the POC

Built in the POC. This capability runs in the POC today, on synthetic data, end to end.

19.2 Email verification and suppression · DMA AI proof