All four exception reports moved from hand-fixed to automated






Marketing ops ran a daily dashboard of exception reports in the CRM, saved filters that surface records the marketing-automation-to-CRM plumbing had left in a known-bad state.
Every record on an exception report is two things at once: a record to fix, and evidence of an upstream automation gap. We split those jobs. The fix recipes were written down so the daily pass became deterministic instead of investigative, and the recurring patterns in what showed up became the root-cause backlog.
Source and tier were tracked in three parallel field families: an original/first-touch set, a most-recent/latest-touch set, and a current-value tier field with a ratchet rule, it only ever increases, so it holds the highest tier the record has ever legitimately reached.
Open the record and check which family is populated. Most-recent populated and original blank means the first-touch stamp never fired, the common case, fixed by copying the correct first-touch value into the original-side fields. Neither populated means source was never stamped at all, which almost always means a human created the record.
A human name in the created-by field does not reliably mean a person typed the record into the CRM. Records created through a data-provider integration carry the human's name rather than the integration user; records built inside the sales-engagement tool push through as that tool even though a human built them.
A lower-tier self-service form sits upstream of the demo request, you cannot request the demo through that path without completing the form first, so being top-tier on the original side is physically impossible there.
The internal runbook these fixes were supposed to follow had gone stale. Two live steps were missing from it entirely, the test-address pre-step and one of the original-side fields that needs its suffix stripped.
Created-by user roles were aligned to their sourcing values so human-created records stamp correctly. An overnight flow now auto-corrects the tier race condition, because the fix was purely mechanical. A real-time flow corrects the tier chain when the last-response-date and most-recent-campaign-response fields misfire.
All four exception reports moved from hand-fixed to automated
Overnight and real-time flows shipped for each.
A documented, testable field model. Original versus most-recent versus current tier written down with the ratchet rule and the created-by exceptions, so the next ops hire does not rediscover them by breaking records.



+1
7 steps
A repeatable list-import pipeline: normalize, domain-match, waterfall the email, then hand it over
A pipeline a new hire can run
Enrichment engine setup


5 steps
A reusable enrichment table for event leads, and contact data on a re-verification schedule
Enrichment table live and confirmed by the customer
CRM implementation



6 steps
Building a first real sales system for an AI company selling into enterprise
Three GTM pipelines live