Watt Data

Build audiences where the targeting criteria span both persons and businesses — for example, "people with GLP-1 medication intent who are executives at Fortune 500 companies" or "software engineers at Series B startups."

Single-entity entity_find cannot cross entity types. entity_relations bridges person and business data by traversing the employment graph.

Steps 1-2: Discover Person Traits

Search for traits matching the person-side criteria. Run independent searches in parallel.

{ "entity_type": "person", "query": "GLP-1 medication intent", "limit": 10 }
{ "entity_type": "person", "query": "C-suite executive occupation", "limit": 10 }

Select trait hashes from results. Use trait_get to verify hashes before building expressions.

Step 3: Find Persons Matching Person Traits

Build a boolean expression and run entity_find for persons. Export as CSV for use in entity_relations.

{
  "entity_type": "person",
  "expression": "<glp1_hash> AND <executive_hash>",
  "format": "csv",
  "workflow_id": "550e8400-e29b-41d4-a716-446655440000"
}

The export resource_uri is the input to Step 6.

Steps 4-5: Discover Business Traits and Find Qualifying Businesses

Search for traits matching the business-side criteria.

{ "entity_type": "business", "query": "annual revenue over 1 billion", "limit": 10 }
{ "entity_type": "business", "query": "employee count over 10000", "limit": 10 }

Find businesses matching those traits:

{
  "entity_type": "business",
  "expression": "<revenue_hash> AND <employee_count_hash>",
  "format": "csv",
  "workflow_id": "550e8400-e29b-41d4-a716-446655440000"
}

Keep this business set for filtering in Steps 8-9.

Step 6: Traverse the Employment Graph

Use entity_relations to map person entity IDs to their employer business IDs.

{
  "source_entity_type": "person",
  "csv_resource_uri": "workflow://550e8400.../exports/entity-data.csv",
  "relationship": "employs",
  "target_entity_type": "business",
  "format": "csv",
  "workflow_id": "550e8400-e29b-41d4-a716-446655440000"
}

Result contains source_entity_id (person) and target_entity_id (employer business).

Step 7: Enrich Employer Businesses

Enrich the employer business IDs to retrieve attributes for filtering.

{
  "entity_type": "business",
  "csv_resource_uri": "workflow://550e8400.../exports/entity-relations.csv",
  "entity_id_column": "target_entity_id",
  "domains": ["about"],
  "format": "csv",
  "workflow_id": "550e8400-e29b-41d4-a716-446655440000"
}

Steps 8-9: Filter to Qualifying Employers, Map Back to Persons

Intersect the enriched employer businesses with the business set from Steps 4-5 — businesses present in both sets are confirmed qualifying employers (e.g., Fortune 500).

Then cross-reference the qualifying business IDs against the relations data from Step 6 to identify which person IDs have qualifying employers.

Step 10: Enrich Final Persons

Enrich the qualifying person IDs for contact details.

{
  "entity_type": "person",
  "entity_ids": ["<qualifying_person_id_1>", "..."],
  "domains": ["name", "email", "phone", "address"],
  "format": "csv",
  "workflow_id": "550e8400-e29b-41d4-a716-446655440000"
}

For large sets, use csv_resource_uri instead of inline entity_ids.


Related guides:

On this page