Section 20 · Sales Rep Work Elimination / Zero-Entry CRM
20.26Bad-data detection
Built in the POC- No.
- 20.26
- DMA's reference
- Decision Book p.41
- Phase
- Phase 1
- Autonomy
- L1 · Recommend
- DMA's decision
- Yes
What DMA asked for · Decision Book p.41
Spot bad data: dead e-mails, role addresses, records owned by people who left.
Why it matters to DMA: Bad data quietly breaks outreach, routing and reports.
In our words, from DMA's Product Decision Book v3, page 41.
How we do it
- Rules flag bad or role e-mails, records owned by a disabled Nutshell user, and likely duplicates, each with what the rule saw.
- Every address is verified before any send (20.10).
- Flags don't change Nutshell; people fix the record there and the flag closes on the next run.
The flow
It plays on its own while it's on screen; hover or use the controls to pause or step through.
The records
Contacts, deals, companies.
- Nutshell
- Rule in code
- Stored data
- Person
Where the data goes
The same six stages on every page. Nothing reaches Nutshell except through the write gate.
- 1Nutshell
Source
Deals, contacts, tasks, activities, notes and users.
- 2Sync
Copies Nutshell changes into the bridge database
Keeps the mirror current, so the rules see today's state.
- 3Bridge database
A copy of the CRM data, plus what the AI works out
One open flag per record and problem, with its details and the rule version.
- 4AI
Claude models, only through DMA's own gateway
Not needed for most flags: they are rules. The audit adds what only the notes say.
- 5Write gate
The only way back into Nutshell: checked, approved when needed, sent once
Flags don't write to Nutshell; fixes happen there, by people (or through the write gate where a field rule allows it).
- 6Nutshell
The system of record
Reps fix the record; the flag closes on the next run.
The tables behind it
Drawn from the POC's database catalogue: structure only, no data.
PK primary keyFK reference the database enforces (solid line)ID reference kept by id (dashed line)
| Table | What it holds | Columns |
|---|---|---|
| ai.hygiene_flags | One open flag per record and problem (stuck deal, missing next step, former owner, bad email, duplicate), with severity, details and the rule version. | 10 |
| ai.email_verifications | Each contact address's check result (valid, risky, invalid) and why. | 10 |
How the tables connect (1)
| Column | Points to | Kept by |
|---|---|---|
| ai.email_verifications.run_id | agent.runs | The application (by id) |
Worked example
Synthetic demo data: every name, business and number is made up.
Live counts, synthetic data.
Open flags
| Flag | Open |
|---|---|
| Former owner | 70 |
| Possible duplicate | 50 |
| Left or bounced | 28 |
In the running POC

Pipeline hygiene, filtered to records owned by people who left.
- 1The flag filters, with counts.
- 2What the rule saw.
- 3The owner who has left.
Dashboard · Pipeline hygiene, records owned by people who left. 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.
| Open | Where | What to try |
|---|---|---|
| Pipeline hygiene: former owners | DMA AI dashboard | Records owned by people who left. |
Status
Built in the POC. This capability runs in the POC today, on synthetic data, end to end.