Identity Resolution & Graph Stitching
Keystone's Identity Resolution Engine connects disparate data points—anonymous browsing sessions, checkout records, CRM entries, and mobile IDs—into unified, high-confidence customer profiles.
The Identity Challenge
In a multi-device world, a single human interacts with your business across multiple fragmented touchpoints: 1. Browses products anonymously on mobile Safari using cellular IP. 2. Clicks an Instagram ad on desktop Chrome connected to home Wi-Fi. 3. Subscribes to a newsletter with a personal Gmail address. 4. Completes a purchase on an iPad using a corporate email address.
Without real-time deterministic and probabilistic graph stitching, legacy systems treat this individual as four distinct visitors, wasting advertising spend and fragmenting purchase history.
Core Graph Entities
The Keystone identity graph model consists of four fundamental node classes:
graph LR
subgraph Identity Nodes
Cookie[Cookie / Anonymous ID]
Email[Email Address]
Phone[Phone Number]
ExtID[External CRM / POS ID]
end
subgraph Profile Entities
Shadow[Shadow Profile\nVolatile Behavior]
Anchor[Anchor Profile\nCanonical Record]
end
Cookie -.->|Temporary Link| Shadow
Email -->|Authoritative Link| Anchor
Phone -->|Authoritative Link| Anchor
ExtID -->|Deterministic Link| Anchor
Shadow ==>|Collapse Protocol| Anchor
- Identifier Nodes: Discrete values like email addresses (
[email protected]), phone numbers (+15550199), device tokens, or cookie UUIDs. - Profile Nodes:
- Shadow Profiles: Volatile profiles capturing anonymous digital behavior before authentication.
- Anchor Profiles: The canonical identity record containing verified customer information.
- Graph Edges: The relationships connecting identifiers to profile nodes, tagged with confidence scores, timestamps, and provenance sources.
The Profile Collapse Protocol
When an event arrives that contains both an anonymous token (anonymous_id) and an authoritative token (identity or email), Keystone triggers the Profile Collapse Protocol:
[ Ingest Event Arrives: { anonymous_id: "anon_9a8f", email: "[email protected]" } ]
│
▼
Does Anchor Profile exist for "[email protected]"?
├── YES: Retrieve Anchor UUID [A]
└── NO: Promote Shadow to Anchor [A]
│
▼
Does active Shadow Profile exist for "anon_9a8f"?
├── YES: Shadow UUID [S] identified
└── NO: Link anonymous_id directly to [A]
│
▼
[ EXECUTE PROFILE COLLAPSE ]
1. Re-point all historical events from [S] to [A].
2. Merge attributes: array unions, scalar diffs, trait updates.
3. Re-point all associated device and cookie identifiers to [A].
4. Archive [S] with status = "merged" and pointer = [A].
5. Trigger Vector Trajectory recalculation in background ARQ worker.
Managing Resolvers & Identity Rules
Navigate to Data -> Resolutions (/data/resolutions) to view the operational status of the identity graph engine.
Resolution Modes
- Deterministic Resolution: Strictly matches on exact identifiers:
- Exact Normalized Email (lowercase, trimmed, alias-resolved).
- E.164 Formatted Phone Number.
- External Primary Key (e.g.
shopify_customer_id). - Probabilistic / Household Resolution: Groups profiles into shared household clusters when multiple devices share high-confidence residential IP ranges, physical delivery addresses, and shared surname vectors.
Identity Auditing & Provenance
Every identity merge operation in Keystone is recorded in the immutable audit log: - Timestamp: Exact millisecond of merge execution. - Source Identifier: The event payload or manual trigger that caused the collapse. - Pre-Merge Attributes: Snapshot of both profiles prior to reconciliation. - Attribute Deltas: Granular diff showing exactly which fields were updated.
This guarantees complete traceability and provides full compliance with GDPR/CCPA data deletion requests (Right to be Forgotten).