Built automation system
An idempotent customer-data synchronization framework that keeps CRM and marketing platforms consistent — built with n8n as a platform-agnostic reference system, not “an n8n workflow.”
CRM and marketing platforms hold overlapping but inconsistent contact records. This system incrementally retrieves CRM contacts, resolves identity against existing subscribers, and applies a field-ownership merge policy with safe, idempotent upserts — handling conflicts, partial-failure retries, and rate limits without destroying marketing-owned data.
Architect and implementer of the synchronization framework — from the initial CRM-to-marketing implementation to the redesigned, platform-agnostic reference system. Built system, not a prototype.
Trigger / Scheduler
↓
Incremental CRM retrieval (watermark + checkpoint)
↓
Normalization
↓
Identity resolution
↓
Existing subscriber lookup
↓
Create / Update / Enrich decision
↓
Field + tag merge policy (union, not replacement)
↓
Destination upsert (idempotent)
↓
Audit log + checkpoint
↓
Retry / dead-letter handlingA checkpoint and watermark model makes synchronization incremental and replayable: if a run fails partway, it resumes from the last checkpoint rather than reprocessing everything. Unresolvable records route to a dead-letter path for human review instead of silently failing.
Context: Retried workflows risk duplicating or clobbering records.
Decision: Idempotent upserts keyed on resolved identity, so a record processed twice produces the same end state as once.
Tradeoff: More work in identity resolution, in exchange for safe, unattended retries.
Context: CRM tags and marketing-owned tags coexist on the same subscriber.
Decision: Tag union by source — CRM tags are added without removing marketing-owned tags.
Tradeoff: Slightly more complex merge logic, in exchange for never destroying marketing data.
Context: Fields conflict between systems (e.g. different email or name).
Decision: A field-ownership matrix defines which system is source-of-truth per field; conflicts are logged, not silently overwritten.
Tradeoff: Explicit conflict surface, in exchange for auditable, predictable merges.
Generalized a point-to-point integration into a reusable, platform-agnostic reference architecture — deciding system boundaries, ownership rules, and failure semantics rather than just connecting two SaaS tools.
A replayable, auditable synchronization system reliable enough to run unattended — demonstrating distributed-workflow thinking, integration architecture, data-consistency design, and operational observability.