---
name: moltsets-cross-channel-identity-graph
description: Use this skill when the user needs to connect B2B LinkedIn identities to device-level advertising IDs (MAIDs) or personal hashed emails for omnichannel targeting, retargeting, or identity graph enrichment.
---

# Cross-Channel Identity Graph

Map LinkedIn profiles to personal hashed emails and mobile advertising IDs (MAIDs).

## Triggers

"get MAIDs for these LinkedIn profiles", "build an identity graph", "match LinkedIn to device IDs", "connect B2B profiles to ad targeting", "get hashed emails and MAIDs for retargeting", "cross-channel identity resolution", "audience matching". For AdTech, programmatic advertising, and data partnerships.

## Chain

Two distinct outputs from a LinkedIn profile, each on its own path:

```
LinkedIn URL
  ├── linkedin_to_sha256                 (LinkedIn to SHA-256 + MD5 hashes - upload directly to ad platforms)
  └── linkedin_to_best_personal_email    (LinkedIn to a plaintext email)
        to email_to_maid                 (plaintext email to MAIDs / device IDs)
```

`linkedin_to_sha256` produces hashed emails for direct upload to ad platforms (Meta/Google Custom Audiences, clean rooms) - they are an output, NOT an input to anything else. `email_to_maid` takes a PLAINTEXT EMAIL, so to reach MAIDs you must first resolve a real email from the LinkedIn profile (`linkedin_to_best_personal_email`, with `linkedin_to_personal_email` / `linkedin_to_best_email` as alternatives), then feed that email to `email_to_maid`.

## Use cases

- Upload MAIDs to DSP/DMP for programmatic audience targeting
- Match B2B profiles to mobile devices for cross-device campaigns
- Build SHA-256 hashed audience lists for Custom Audiences (Meta, Google)
- Identity resolution for data clean rooms

## Set Expectations

Before firing any calls, give the user a brief, dry heads-up. Deadpan over enthusiastic - no filler, no corporate speak.

Facts to work with:
- Two paths off each profile: hashes for direct ad-platform upload, and email to MAID for device IDs
- Single profile: ~15–30 seconds
- Batch: 30–90+ seconds depending on match rates at each step
- Match rates drop at each step - convey this without being dramatic about it

## Step 1 - Credit check (required)

Call `MoltSets:get_billing` (free). This chain costs 2–4 credits per profile on full hits.

Expected match rates:
- Hashes found: ~50–70% of LinkedIn profiles
- Personal email resolved: ~50–70%
- MAIDs from email: ~30–60%

"Not found" is free. Estimate conservatively.

**If estimated cost > balance:** stop, report, ask to proceed partially or top up.

## Step 2 - Process per profile

Every endpoint here takes a SINGLE `linkedin_url` (or single `email`) - there is no batch array. For a list, fire one call per profile in parallel.

## Step 3 - Get hashed emails (ad-platform path)

Call `MoltSets:linkedin_to_sha256` with `linkedin_url` (one per profile).

Each profile may return multiple hashes - both SHA-256 and MD5, for business and personal emails. These hashes upload directly to ad platforms; they do not feed any further call.

## Step 4 - Resolve MAIDs (device-ID path)

`email_to_maid` needs a plaintext email, so resolve one from the profile first:

1. `MoltSets:linkedin_to_best_personal_email` with `linkedin_url` (fallbacks: `linkedin_to_personal_email`, `linkedin_to_best_email`) to a plaintext email.
2. `MoltSets:email_to_maid` with `email: "<resolved email>"` to MAIDs / device IDs.

Do both as single calls per profile.

## Step 5 - Output

| LinkedIn URL | SHA-256 Hash | MD5 Hash | Personal Email | MAID(s) |
|---|---|---|---|---|

**Summary:**
```
Profiles processed:  X
Hashes resolved:     X  (XX%)
Emails resolved:     X  (XX%)
MAIDs found:         X  (XX%)
Credits used:        ~XXX
```

## Edge cases

- Multiple MAIDs per email (multi-device) to include all in output; note IDFA vs GAID type if returned
- A profile may yield hashes but no resolvable plaintext email (so no MAIDs), or vice versa - report each path independently
- Privacy compliance: user is responsible for lawful use of MAIDs and hashed PII under GDPR, CCPA, and platform policies
- Do not log or persist raw personal identifiers beyond the session
