SNOWFLAKE NATIVE APP

Your customer IDs should survive anything you do to your data.

Every time you add a data source or a field renames upstream, your customer IDs shift and someone spends a week manually reconciling. Span replaces that brittle SQL with versioned identity infrastructure.

Your IDs stay put regardless of what changes upstream.

See Documentation

Identity shouldn't be the SQL file nobody is allowed to touch.

Data warehouses have no native concept of a person. So your team hand codes the logic that keeps customer IDs stable and every time something changes upstream, that logic breaks. The fix is always manual. The cost is always your most experienced engineers.

Deterministic State

No Overwrites

Versioned Rules

Zero Egress

CUSTOMER_SPINE.SQL

CASE

-- manual fix for merge conflict SP-4492

WHEN email = 'n.sullivan@work.com' AND crm_id IS NULL THEN 'SP-4492'


-- split requested by marketing 2024-05-12

WHEN cookie_id = 'abc-123' THEN 'SP-9901'


-- DO NOT TOUCH: Breaking this breaks the LTV dashboard

WHEN device_id IN ('x-99', 'y-88') THEN 'SP-1002'


... 580 more lines of hardcoded edge cases

END AS profile_id

Identity Diff

Audit rule changes against 100M+ rows.

Entity Compiler

Codify precedence and metrics.

Manual Overrides

Handling splits and orphans.

Agent-Ready Data

The deterministic spine for AI.

VERIFICATION

Identity Diff

BETA

Audit rule changes against 100M+ rows before push. Run a regression audit to see how new source schemas interact with existing profiles before push.

RIGOR

Breaking-Change Prevention

Adding a new data source shouldn't be high-stakes surgery. Verify your logic changes in a sandbox before corrupting your production state.

ENVIRONMENT

Zero-Copy Sandbox Testing

Leverage Snowflake zero copy clone to stand up ephemeral dev environments. Verify logic changes against production scale data without duplicating raw tables.

ZSH — SPAN DIFF

$ span diff rules.yaml --target prod_sandbox

+-----------------------+---------------+----------------+

| Metric | Current State | Proposed State |

+-----------------------+---------------+----------------+

| Resolved Profiles | 14,242,901 | 14,251,623 |

| Active Blocking Rules | 18 | 19 |

| Manual Overrides | 4,292 | 3,911 |

| Unassigned Orphans | 14 | 3 |

+-----------------------+---------------+----------------+

Audit complete.

The identity layer for data teams who are tired of maintaining the SQL file nobody is allowed to touch.
Available soon for Snowflake and other warehouses

Sign up to get notified.

Identity Diff

Audit rule changes against 100M+ rows.

VERIFICATION

Identity Diff

BETA

Audit rule changes against 100M+ rows in seconds. Run a regression audit to see how new source schemas interact with existing profiles before push.

RIGOR

Breaking-Change Prevention

Adding a new data source shouldn't be high-stakes surgery. Verify your logic changes in a sandbox before corrupting your production state.

ENVIRONMENT

Zero-Copy Sandbox Testing

Leverage Snowflake cloning to stand up ephemeral dev environments. Verify logic changes against production scale data without duplicating raw tables.

ZSH — SPAN DIFF

$ span diff rules.yaml --target prod_sandbox

+-----------------------+---------------+----------------+

| Metric | Current State | Proposed State |

+-----------------------+---------------+----------------+

| Resolved Profiles | 14,242,901 | 14,251,623 |

| Active Blocking Rules | 18 | 19 |

| Manual Overrides | 4,292 | 3,911 |

| Unassigned Orphans | 14 | 3 |

+-----------------------+---------------+----------------+

Audit complete.

Entity Compiler

Codify precedence and metrics.

STRATEGY

Source Precedence Rules

Stop writing complex coalesce scripts. Define precedence in YAML to trust Shopify for addresses and CRM for email. Span resolves the golden record natively.

VALUE

Embedded Metrics

Calculate LTV and Z-score directly within the compiler. Logic is version-controlled alongside the identity state that drives it.

LOGIC

Logic Coalescence

Centralize customer definitions in YAML. Move identity logic out of your scripts and into a single logic layer to eliminate scattered joins.

COMPILER_config.yaml — git:main

precedence:

email:

[crm, shopify, web]

address:

[shopify, crm]

metrics:

total_ltv:

measure: "merch_ltv + ticket_ltv"

scoring:

z_score:

method: "percentile_rank"

CONTROL

Manual Merge, Split, & Assign

Resolve identity collisions with a UI that feeds an immutable override table. This ensures your manual fixes survive every recalculation.

MAINTENANCE

Automated Orphan Handling

Identify new records that conflict with historical manual overrides. Conflict surfacing ensures your intent is maintained as data evolves.

AUDIT

State Transition Audit Trail

Prove why a record was merged or split. Maintain the full history of identity state for security and right-to-be-forgotten compliance.

Manual Overrides

Handling splits and orphans.

Span Native App — Manual Overrides

n.sullivan@work.com

Source: CRM

n.sullivan@personal.com

Conflict: Historical Split

Split Profile

Assign ID

Profile: #SP-4492 (Nicole Sullivan)

14 orphans Detected

Agent-Ready Data

The deterministic spine for AI.

CONTINUITY

The Apex of the Silver Layer

Identity is the final transformation. By resolving profile state at the apex of your silver tables, we provide the stable ID that AI agents require to reason accurately.

PRECISION

Standardized Input for AI Agents

Stop asking agents to reason through fractured tables. Give them a single Profile ID. Span ensures the agent sees a unified truth without context bloat.

LOGIC

Zero-Hallucination Identity

LLMs are for reasoning, not for indexing. Move identity logic out of the prompt and into infrastructure where it can be audited and managed.

Span Native App — Manual Overrides

Prompt: "What is the total LTV for Nicole Sullivan?"

# Agent querying span_identity_spine...

Agent Response:

Nicole Sullivan (Profile #SP-4492) has a unified LTV of $14,202. Z-score: 3.2 (Top 1% segment).

Identity As Code

Identity As Code

Identity As Code

Identity shouldn't be a 600-line SQL monster.

Data warehouses scale to petabytes, but they have no native concept of a person. This forces you to treat identity as a transient transformation rather than persistent state.

Without a versioned primitive, your entity definitions remain scattered across brittle models that break whenever a source system updates its schema. Span moves identity out of your fragile SQL and into a first-class infrastructure primitive.

Deterministic State

No Overwrites

Versioned Rules

Zero Egress

CUSTOMER_SPINE.SQL

CASE

-- manual fix for merge conflict SP-4492

WHEN AND

IS NULL THEN

-- split requested by marketing 2024-05-12

WHEN

THEN

-- DO NOT TOUCH: Breaking this breaks the LTV dashboard

WHEN

END AS profile_id

IN

THEN

... 580 more lines of hardcoded edge cases

Identity Debt: 642 Lines

Identity Diff

Audit rule changes against 100M+ rows.

Entity Compiler

Codify precedence and metrics.

Manual Overrides

Handling splits and orphans.

Agent-Ready Data

The deterministic spine for AI.

VERIFICATION

Identity Diff

BETA

Audit rule changes against 100M+ rows before push. Run a regression audit to see how new source schemas interact with existing profiles before push.

RIGOR

Breaking-Change Prevention

Adding a new data source shouldn't be high-stakes surgery. Verify your logic changes in a sandbox before corrupting your production state.

ENVIRONMENT

Zero-Copy Sandbox Testing

Leverage Snowflake zero copy clone to stand up ephemeral dev environments. Verify logic changes against production scale data without duplicating raw tables.

ZSH — SPAN DIFF

$ span diff rules.yaml --target prod_sandbox

+-----------------------+---------------+----------------+

| Metric | Current State | Proposed State |

+-----------------------+---------------+----------------+

| Resolved Profiles | 14,242,901 | 14,251,623 |

| Active Blocking Rules | 18 | 19 |

| Manual Overrides | 4,292 | 3,911 |

| Unassigned Orphans | 14 | 3 |

+-----------------------+---------------+----------------+

Audit complete.