Skip to main content

Finding the Principals of a Business​

A common KYB and due diligence task is identifying the humans who own or control a business—the officers, owners, and registered agents named in official filings. This guide explains the data model behind that relationship and shows a complete query for surfacing it.


How Principals Are Modeled​

In the Enigma data model, LegalEntity can be thought of as an abstract super class. Every legal entity is always associated with one of these two entities:

  • Person — A natural person (individual human).
  • RegisteredEntity — A formally registered business organization (LLC, Corporation, etc.).

Very often the principals who control a business are found on the Registration that is filed with the Secretary of State. Registrations often name specific individuals. In our data model, the relationship between a Person and a Registration is represented by the Role entity — as owner, officer, registered agent, and so on. Each Role points back to a LegalEntity, and you can tell whether that entity is a person by checking whether legalEntityType is "Person".

The query path is:

Brand → legalEntities → registeredEntities → registrations → roles → legalEntities → names

The extra registeredEntities hop reflects the data model: LegalEntity is abstract. The concrete subtype RegisteredEntity is what the SoS filings (registrations) is connected to. A LegalEntity that is a natural person has no registeredEntity associated with it — that (plus the 'legalEntityType==Person') is how you know it is a Person rather than a RegisteredEntity (e.g. Corporation, LLC, etc.).


Tier Requirements​

StepFieldTier Required
Brand → Legal EntitieslegalEntitiesCore
Legal Entity → Registered EntitiesregisteredEntitiesPremium
Registered Entity → RegistrationsregistrationsPremium
Registration → RolesrolesPlus
Role → Legal Entities (persons)legalEntitiesCore

You need at minimum Plus + Premium tiers to traverse this full path.


Query: Find Principals of a Business​

The query below searches for a brand by name and location, then traverses to its domestic registrations to surface the roles and the persons named in them.

Request
query FindBusinessPrincipals {
search(searchInput: {
name: "Joe's Pizza"
address: { city: "Brooklyn", state: "NY" }
entityType: BRAND
conditions: { limit: 1 }
}) {
... on Brand {
id
names(first: 1) {
edges {
node {
name
}
}
}
legalEntities(first: 5) {
edges {
node {
names(first: 1) {
edges {
node {
name
legalEntityType
}
}
}
registeredEntities(first: 3) {
edges {
node {
registrations(
first: 5
conditions: {
filter: { EQ: ["jurisdictionType", "domestic"] }
orderBy: ["issueDate DESC"]
}
) {
edges {
node {
registeredName
registrationState
status
subStatus
roles(first: 20) {
edges {
node {
jobTitle
jobFunction
legalEntities(first: 1) {
edges {
node {
names(first: 1) {
edges {
node {
name
legalEntityType
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}

Reading the Response​

Each role node in the response represents a person or entity named in an SoS filing. To identify the individual:

  • jobTitle — the role title as listed in the filing (e.g., "Registered Agent", "President", "Member")
  • jobFunction — a normalized job function (e.g., "Accounting", "Operations")
  • legalEntities[].names[].name — the name of the legal entity performing this role
  • legalEntities[].names[].legalEntityType — "Person" means this is a natural person; any other value (e.g., "LLC") means a business entity holds the role
Filtering to natural persons only

To limit results to natural persons, filter on legalEntityType:

roles(
first: 20
conditions: {
filter: { EQ: ["legalEntities.names.legalEntityType", "Person"] }
}
)