Back to demos

Ledger — a governed write path for Salesforce

SalesforceHubSpotSnowflakeClaudeData Governance

Four systems want to write to the same CRM record. Instead of letting them, every source submits a proposal and a gateway decides: identity resolution with Claude breaking ties, a per-field authority matrix with freshness decay, echo suppression for sync loops, and an append-only audit ledger. Watch a captured run of the real system, then break the rules yourself in the playground.

The walkthrough is a captured run of the real system— a live Salesforce org, live Snowflake, a live Claude call — replayed here, not re-run, because the gateway writes to a real CRM. The rationale you'll see in beat 2 was written by Claude during that run. The playground, though, runs entirely in your browser: same decision engine, ported line for line.

This is the gateway's decision engine — authority rank, exponential freshness decay, confidence floors, never rules, the incumbent tie-break — ported to TypeScript and running entirely on this page. Nothing is called, nothing is mocked. Change the policy and the ruling recomputes as you drag.

Scenarios

Clay outranks everyone on headcount — but its claim is 95 days past a 21-day half-life.

NumberOfEmployees

Authority — highest first

0clay
1hubspot
2human

Never

Clay leads because headcount is exactly what an enrichment vendor is for. The short half-life is the whole point: after about six weeks a Clay headcount has decayed below the floor and quietly stops winning, so the CRM falls back to whatever a human or marketing last said rather than preserving a stale scrape forever.— authority.yaml · NumberOfEmployees.notes

Competing claims

Salesforce holds
✗ struck

human claim is 30d old (half-life 21d) -> effective confidence 0.22 < floor 0.35

✗ struck

clay claim is 95d old (half-life 21d) -> effective confidence 0.04 < floor 0.35

eff 0.63

The ruling

WRITENumberOfEmployees310[hubspot]eff 0.63 · rank 1

hubspot wins NumberOfEmployees at authority rank 1, confidence 0.70 decayed to 0.63 over 3d (half-life 21d); human claim is 30d old (half-life 21d) -> effective confidence 0.22 < floor 0.35; clay claim is 95d old (half-life 21d) -> effective confidence 0.04 < floor 0.35.

  • human=40human claim is 30d old (half-life 21d) -> effective confidence 0.22 < floor 0.35
  • clay=42clay claim is 95d old (half-life 21d) -> effective confidence 0.04 < floor 0.35

✓ engine verified — 9/9 fixture cases match the Python engine's output byte for byte, reason sentences included. Recomputed just now, in your browser, against fixtures exported from the real gateway.