Find SMB Business and Principal Contact
Resolve an exact US legal entity to its recorded principals and validate contact for one unambiguous, active filing candidate with a person ID.
Shared June 2026
- 1
Install & authenticate
$ npm install -g deepline@latest && npm exec --yes --package=deepline@latest -- deepline setup --json
- 2
Test out this play on my data
What this workflow does
Resolve an exact US legal entity to its recorded principals and validate contact for one unambiguous, active filing candidate with a person ID. Preserves unresolved entity and contact results; does not confirm beneficial ownership.
Find SMB Business and Principal Contact (Deepline play "smb-to-owner-contact", version 1). Resolve an exact US legal entity to its recorded principals and validate contact for one unambiguous, active filing candidate with a person ID. Pipeline: 4 steps, 3 providers. Inputs: legal_name, state, city, registry_number, channels. Outputs: entity, contact, contact_status.
Inputs you need
Bring these fields
- legal_name
- state
- city
- registry_number
- channels
Outputs you get
Produced by the run
- entity
- contact
- contact_status
How it works
Step 1
Enrichment waterfall
4 steps
- business search · Enformion
- person search · Enformion
- email validation · Leadmagic
- phone validation · Trestle
Cost/latency when available
This public page does not show cost or latency yet. Deepline only displays those metrics when the published package has safe, comparable run samples, and cost is always shown in Deepline credits.
Common edits
- Rename the copied play before the first run so it is owned by your workspace.
- Map your CSV headers into the expected input fields and add status or miss_reason columns.
- Keep stable step, fetch, dataset, and play-call ids so retries and durable receipts stay useful.
- Edit the final projection before scale so the output table matches your CRM or campaign import.
Use it when
- You need data from Enformion, Leadmagic and Trestle in one pass.
- You want a repeatable pipeline instead of one-off lookups.
- You want an agent or teammate to run the same workflow on demand.
Related workflows
Find SMB Principal Contact
tahoe_id, first_name, last_name → person, identity_match, held_people
Find SMB Owners from Legal Entity
legal_name, state, city → entity_match, matched_entity, owner_candidates
Business Email for an SMB
business_name, domain, city → An enriched output table with one row per processed record.
Run or fork with Deepline CLI
Find SMB Business and Principal Contact is a Deepline play. Inputs: legal_name, state, city, registry_number, channels. Outputs: entity, contact, contact_status.
# Inspect the contract
$ deepline plays describe prebuilt/smb-to-owner-contact --json
# Copy to an owned scratchpad
$ deepline plays get prebuilt/smb-to-owner-contact --source --out smb-to-owner-contact-scratchpad.play.ts
# Check before running
$ deepline plays check smb-to-owner-contact-scratchpad.play.ts
# Paste into Claude Code, Cursor, or Codex.
$ Use the deepline-gtm skill's plays recipe to turn the Deepline play "Find SMB Business and Principal Contact" (https://deepline.com/p/deepline/smb-to-owner-contact) into an editable scratchpad play. Inputs: legal_name, state, city, registry_number, channels. Outputs: entity, contact, contact_status. The .play.ts file is the source of truth: copy the play, rename it for this user's workflow, encode input mapping/validation/status/output projection in the play, and iterate there instead of doing one-off CSV post-processing. Keep stable dataset names, dataset row keys, and step/fetch/play-call ids across edits. Provider tool calls reuse paid work by play, tool, semantic input, auth scope, provider action version, and cache policy unless you intentionally change those inputs or refresh stale data. # install Deepline if the CLI is missing npm install -g deepline@latest && npm exec --yes --package=deepline@latest -- deepline setup --json # inspect the live contract deepline plays describe prebuilt/smb-to-owner-contact --json # copy to an owned scratchpad, then rename the play inside the file before first run deepline plays get prebuilt/smb-to-owner-contact --source --out smb-to-owner-contact-scratchpad.play.ts # edit smb-to-owner-contact-scratchpad.play.ts: set an owned play name, add mappings/validation/status/miss_reason/final columns deepline plays check smb-to-owner-contact-scratchpad.play.ts # run the scratchpad on your data deepline plays run --file smb-to-owner-contact-scratchpad.play.ts --input '{"legal_name":"<value>","state":"<value>","city":"<value>","registry_number":"<value>","channels":"<value>"}' --watch # only for an exact one-off with no edits or custom output deepline plays run prebuilt/smb-to-owner-contact --input '{"legal_name":"<value>","state":"<value>","city":"<value>","registry_number":"<value>","channels":"<value>"}' --watch Play spec (JSON): https://deepline.com/api/v2/shared-plays/prebuilt-smb-to-owner-contact
Version
v1 · Shared June 2026 · Unlisted page