Senior Enterprise Data Architect assessment for Fortune-500 production approval
2026-07-16
The Unified Lead Dataset Architecture (ULDA) is a genuinely strong MDM/CDP core: an immutable master identity, deterministic + probabilistic resolution, attribute-level survivorship, an event-sourced activity ledger, a live CDC pipeline, automatic first/last-channel tracking, and a governed 75-field Lead-360 serving layer — all delivered additively with a zero-downtime, fully-reversible track record and clean integrity invariants.
As a reviewer approving for Fortune-500 production, my verdict is Conditional Approval: the data architecture is enterprise-grade, but several operational-hardening gaps must close before unconditional sign-off — chiefly disaster recovery, least-privilege for the application, and revenue/order integration.
| Area | Evidence |
|---|---|
| Master identity | master_lead_id uuid — generated once, immutable, never
reused; merges audited (merged_into,
ir_audit) |
| Integrity | orphan/dup/ids-without-golden invariants = 0; 1.07M resolved identities |
| Event-driven CDC | dual-write trigger → change_outbox → drain worker; 0
backlog |
| Event ledger | interaction/enrichment
partitioned (monthly), append-only |
| Attribution | automatic first-touch (trg_crosswalk_first_touch) +
last-touch (trg_capture_disposition) |
| Serving | v_lead_master_flat (75 cols) — single-lead read 183
ms |
| Encryption/auth | TLS on, SCRAM-SHA-256, backups GPG-encrypted |
| Governance | PII classification, metric catalog, attribute_lineage,
LLM-safe view |
| Change safety | additive/reversible migrations; whole-stack rollback proven (0 non-ULDA deps) |
archive_mode = off → no point-in-time
recovery. Entire platform on one Contabo host; no HA
replica.pg_dump + weekly pg_basebackup; (c) stand up a
streaming read replica on a 2nd host to enable
continuous WAL/PITR and failover.pg_receivewal slot (exists:
ulda_replica), archive_command/replica for
WAL, cron jobs, backup repo (Internetsp/db-backups).public.leads is owned by
root, a superuser;
warroom connects as root. The app has unlimited
privilege.warroom_app role with only
INSERT/UPDATE/SELECT on the tables it needs; migrate the
app connection string; revoke superuser from day-to-day use. Keep
postgres for admin only.CREATE ROLE warroom_app NOSUPERUSER; GRANT ...;
connection-string change + pm2 restart warroom.order / opportunity
/ order_line are empty; the real revenue
source accounting_db.paysheet_lines (65,841
rows) is not linked to leads. product_offered /
order_details / mrr / commission
stay blank.accounting_db.paysheet_lines →
resolve to master_lead_id (email/phone/address) → populate
order/order_line with mrr,
install_date, sub_dealer,
commission; add an attribution match table.ulda_stage.ingest_order(),
FDW or ETL to accounting_db,
ulda_gov.order_attribution_match, cron.lead_inbox)
exists but isn’t the active path; DQ issues are flagged
(dq_finding) but not rejected before
serving.land_lead() → validate() (email RFC, E.164,
ZIP, USPS state) → pass to resolution or quarantine. Add
CHECK constraints where safe.ulda_stage.validate_inbox(),
ulda_stage.lead_quarantine, status flow on
lead_inbox.v_contactable) the dialer/SMS must query before
dialing/texting; fail-closed on DNC/litigator/quiet-hours
(timezone).ulda_serve.v_contactable
(excludes DNC/litigator, respects local time window), integration in
dialer/SMS.s9–s15 files; no version
table (Flyway/Sqitch), no enforced order or checksum.schema_migrations table; register existing
s*.sql as the baseline.sqitch.plan,
ulda_gov.schema_migrations, CI hook.event_key (source+external_id+occurred_at
hash) with a UNIQUE constraint; ON CONFLICT DO NOTHING in
ingest_interaction().interaction.event_key text,
partial UNIQUE index.v_ulda_health +
health_alerts() exist, but no external monitoring,
alerting, SLA dashboards, or query-performance tracking.pg_stat_statements; drain-lag + backlog +
invariants alerts.pg_stat_statements, exporter,
dashboards, alert rules.leads is real-time CDC;
b2c/ad_leads are batch-reconcile.b2c_*/ad_leads.pg_partman
for auto rollout + retention; revisit master partitioning at > 100
M.attribute_lineage partial.| Dimension | Score |
|---|---|
| Data model / MDM design | 95 |
| Identity resolution & lifecycle | 92 |
| Event-driven pipeline & attribution | 90 |
| Serving / Lead-360 / MV | 92 |
| Data lineage & governance | 80 |
| Data quality & validation | 78 |
| Security / RBAC / encryption | 70 |
| Observability / monitoring | 68 |
| Scalability / partitioning / perf | 85 |
| HA / DR / backup | 55 |
| Integration breadth | 80 |
| Revenue/order attribution | 55 |
| Overall | 82 / 100 |
Verdict: CONDITIONAL PASS. The platform is architecturally sound and safe to operate today (it already runs live), but for formal Fortune-500 production sign-off two Critical controls must close first:
With G1 + G2 remediated, the platform clears the production bar; the remaining High/Medium items are fast-follows that do not require redesign.
🔴 Critical (before sign-off): 1. Fresh verified
off-host backup + nightly/weekly automation (G1). 2. Streaming read
replica → PITR + failover (G1). 3. warroom_app
least-privilege role (G2).
🟠 High (next sprint): 4. Order/revenue integration
from accounting_db.paysheet_lines (G3). 5.
Validation/quarantine gate (G4). 6. Consent gate
v_contactable for dialer/SMS (G5). 7. Migration framework
(Sqitch) (G6).
🟡 Medium: 8. Interaction event_key
idempotency (G7). 9. Prometheus/Grafana +
pg_stat_statements (G8). 10. Real-time
b2c/ad_leads (G9); pg_partman
(G10).
⚪ Low: full embeddings, lineage completeness, RLS for agent scoping.
Closing note. ULDA’s core is enterprise-grade MDM/CDP — the identity spine, event sourcing, and serving layer are done right and will scale without redesign. The gap to unconditional production approval is operational hardening (DR, least-privilege, revenue integration, validation) — not architecture. Close the two Critical items and this is a production-ready, scalable, enterprise platform.