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