CRM hygiene an agent can do, and a human can still defend

Duplicate accounts, stale titles, missing industries, contacts who left two quarters ago. An agent can find and fix all of it at volume — the problem is that a bulk update to your CRM is a bulk update to the numbers your team runs on.

ActionsLedger turns each cleanup into a reviewable change set. The agent proposes field-level edits with a citation per value; policy decides what merges automatically and what needs a named human; a separate merge worker holds the only write credential to the CRM.

[ 01 / 03 ] · WHERE IT BREAKS // without a review layer //
B1

Bulk enrichment overwrites good data

A vendor record says "Acme Corp, 500 employees" and overwrites a value your AE confirmed on a call last week. Nothing errors — the field is simply less true than it was.

CONTROL → FIELD-LEVEL POLICY
B2

Merges that destroy history

Two account records merge, and with them go activities, opportunity links and attribution. Recovering the original state means a restore, not an undo.

CONTROL → BEFORE/AFTER SNAPSHOT
B3

Unsourced values

The industry field changed, but no one can say whether it came from a website, a signature block or a guess. Reviewers end up trusting the summary.

CONTROL → EVIDENCE PER FIELD
B4

Silent scope creep

A "normalize job titles" task also touched owner, lifecycle stage and lead source, because those were adjacent in the same object.

CONTROL → ALLOW-LISTED FIELDS
[ 02 / 03 ] · THE REVIEW LOOP // propose, verify, merge //
01

The agent reads, never writes

Read-only tokens on the CRM and your enrichment sources. The agent produces a change set: object, record ID, field, current value, proposed value, and the evidence it used.

02

Policy classifies every change

Normalizing a country code is not the same as reassigning an owner. Rules run as code per field: formats and casing auto-merge, ownership, amounts and lifecycle stage route to a human.

03

Review is a diff, not a report

Reviewers see the exact before/after and the citation behind each value, grouped by policy class so a hundred title normalizations approve as one class while the six risky edits get individual attention.

04

Merge, then prove it

The merge worker applies approved changes and appends diff, evidence, verdict, approver and timestamp — each entry committing to the previous one, so a quarter later you can reconstruct why a record says what it says.

[ 03 / 03 ] · POLICY // what auto-merges, what waits //

A default hygiene policy

Formatting and casingAuto-merge. Phone, country, URL and title normalization with a deterministic rule.
Missing-value fillAuto-merge when the field is empty and the evidence is a first-party source.
Overwrite of a non-empty fieldHuman review. Show the current value, the proposed value and both sources.
Account and contact mergesHuman review, always. Include the record links that will move.
Owner, stage, amountHuman review. Revenue-facing fields never auto-merge from an agent proposal.
VolumeRate-limited per run. A cleanup that suddenly triples in size fails closed.
crm hygiene — write path
agent                 read-only CRM token
enrichment sources    read-only, cited per field
reviewer              user session, no CRM token
merge worker          sole writer, scoped to allow-listed fields

auto-merge classes: format · empty-field fill
human-gated: overwrite · merge · owner · stage · amount
every merge appends: diff · evidence · verdict · approver

Clean the CRM without handing an agent your write credential.

Run the agent in shadow mode, watch the approval rate per policy class, then grant auto-merge only where the data earns it.