GuideSalesforceLeanDataL2APrivate Beta

How to Compare LeanData or Custom L2A Against a Deterministic Match

You already run LeanData, a custom Flow build, or years-old consulting-built L2A. The matches feel opaque, the match field feeds assignment rules, and nobody wants to touch it without evidence. Shadow the incumbent with a deterministic matcher, produce a disagreement report, and decide if promotion is justified — without writing anything.

Published April 18, 2026 • Gremlin Salesforce L2A is currently in private beta

Short answer

Run g-gremlin salesforce l2a init --mode observe_existing --existing-field <api name>, then scout the open-lead set. Gremlin writes nothing customer-owned and emits disagreements.csv, blind_spot_digest.md, and grouped exceptions. Use that evidence to decide whether promotion to shared_existing is justified.

The workflow

Five steps. Nothing customer-owned is written until step five is explicitly approved with an acknowledged risk hash.

1

Point init at the incumbent field

Run init with --mode observe_existing and --existing-field pointing to the live match field. Gremlin scans downstream automation and emits risk_audit.md.

2

Scout in shadow

Run scout against IsConverted = false. Gremlin evaluates every lead deterministically, compares against the incumbent value, and records agreement/disagreement per row.

3

Open disagreements.csv

The buying signal is the disagreement list — rows where the deterministic decision differs from the incumbent value. Every row carries a decision code.

4

Review blind_spot_digest.md

What the matcher could not resolve: consumer-email-only leads, parent/child collisions, inactive candidate accounts, unknown-risk fields. Honest companion to the safe-match count.

5

Decide whether to promote

Promotion to shared_existing requires an acknowledged risk audit hash. Observe-only stays safe indefinitely.

Init in observe_existing

Pins the mode, scans downstream automation for the named field, and writes gremlin.l2a.yaml and risk_audit.md.

g-gremlin salesforce l2a init \
  --org-alias prod \
  --mode observe_existing \
  --existing-field Account_Match__c

Scout in shadow

Evaluates leads deterministically, records agreement/disagreement per row, and writes disagreements.csv plus grouped_exceptions/. No customer fields change.

g-gremlin salesforce l2a scout \
  --config ./gremlin.l2a.yaml \
  --lead-filter "IsConverted = false" \
  --sample 1000

What the disagreement report tells you

Each row in disagreements.csv is a testable claim: either the incumbent field is right, or Gremlin is. The decision code and evidence chain let operators judge without a threshold argument.

SignalMeaningSuggested action
Gremlin safe, incumbent nullIncumbent missed a deterministic matchCandidate for shared_existing if_empty_only
Gremlin review, incumbent setIncumbent auto-resolved ambiguityManual review — the matcher declined to pick
Gremlin safe, incumbent differentTwo systems picked different accountsTrace the lead to see which evidence is stronger
Gremlin blocked, incumbent setIncumbent wrote a value Gremlin would refuseLikely routing-driven — risk audit the downstream

FAQ

How do I audit LeanData matches before touching them?

Run the governed matcher in observe_existing mode pointed at the LeanData-populated field. Gremlin evaluates every open lead deterministically, compares against the LeanData value, and emits disagreements.csv without writing anything. The disagreement report is the artifact you hand to RevOps or leadership before any removal conversation starts.

Can I run a deterministic matcher alongside LeanData or a custom Flow build?

Yes. Observe_existing mode is specifically designed for this — it is read-only against the incumbent match field and writes only to a Gremlin-owned namespace (optional) or nothing at all. No routing changes, no territory writes, no lead conversion. The incumbent tool keeps running as-is while you collect evidence.

What does observe_existing mode do in Gremlin salesforce l2a?

It reads an existing customer L2A field (typically Account_Match__c or similar), evaluates what Gremlin would do deterministically, and writes nothing customer-owned. The output is disagreements.csv, a blind-spot digest, grouped exceptions, and a hashed fix plan — no side effects in Salesforce.

Why would I run a matcher that does not write?

Because the incumbent field likely feeds assignment rules, Flow, or territory logic. Writing it without evidence can change routing behavior. Observe_existing produces the evidence — a decision code and candidate account chain per lead — before any field is touched.

How do I hand disagreements to RevOps?

Share disagreements.csv and blind_spot_digest.md. Each row lists lead_id, email, gremlin_decision_code, gremlin_candidate_account, existing_field_value, and agreement. Operators sort by decision code or candidate account and mark rows for apply or escalation.

When do I graduate from observe_existing to shared_existing?

After the downstream automation risk audit is acknowledged and the customer field has been classified as low_risk or explicitly accepted as high_risk. Shared_existing also defaults to if_empty_only semantics, so non-empty rows yield L2A_BLOCK_SHARED_FIELD_NONEMPTY instead of overwriting.

Can I keep running observe_existing forever?

Yes. It is a fixed-scope diagnostic engagement and a permanent compare surface. Many teams run it indefinitely alongside their existing routing stack because the disagreement report and blind-spot digest are useful inputs on their own.

Keep the conversation going

These pages are meant to help operators solve real problems. If you want the next guide, grab the low-friction option. If you need the implementation, not just the guide, book time.

Stay in the loop

Get the next guide when it ships

I publish architecture guides grounded in real implementations. No generic AI filler.

Use your work email so I can keep the list useful and relevant.

Book Mike directly

Need the implementation, not just the guide?

Book a 15-minute working session with Mike right on his calendar. Tooling, consulting, or a mix of both is fine.

Open Mike's calendar

If you want me to come in with context, leave your email and a short note before the call.

I'll route new requests into the internal website inquiries inbox so I can follow up fast.