Documentation

Deploy

SNOWFLAKE NATIVE APP

Stop maintaining a 600-line SQL masterpiece.

Break the structural ceiling of hand-carved logic. Span provides a versioned, deterministic Identity Spine that scales long after custom scripts break.

Version controlled, warehouse native, and deterministic.

Deploy from Marketplace

Identity shouldn't be a 600-line SQL engineering marvel.

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 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

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.

Identity is infrastructure, not a query clause.
Stop being the identity janitor for a haunted warehouse. Deploy the missing primitive for the modern data stack.

Deploy from Marketplace

Available now for Snowflake.

Support for other warehouses coming soon.

Identity Diff

Audit rule changes against 100M+ rows.

VERIFICATION

Identity Diff

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

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.

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

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.