Tasks
Skill 3 of 6
Fill in a company, person, or organization for a CRM from the web, using Tavily, including a CSV of rows the user already has.
3 minutes · 728 words · 4 sections
Install
npx skills add tavily-ai/skills --skill tavily-entitynpx skills add tavily-ai/skills/plugin marketplace add tavily-ai/skillsThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
Resolve one entity and return a CRM record. The name is not the identity. Confirm which entity it is, then fill the record from authoritative sources. Every value comes from a page you read. An empty field stays empty.
Search and extract as tavily-search describes; load it only if it isn’t
loaded yet. To discover new matches use tavily-list; for a deep report use
tavily-research.
People and companies share names. A record that mixes two of them is worse than an empty one. Isolate a single entity before you fill any field.
Fill a field from the page that owns the fact. Extract that page. A snippet is not enough for a number.
Extract the pages that own the fields you need in one call. Search for recent news, with the domain or employer in the query, only when the user wants recent signals or a full record.
When the user already has the entities, in a file or a pasted table, enrich those rows. Do not go looking for new names.
filled or unresolved to
{name}-enriched-{YYYY-MM-DD}.csv. Use a CSV writer.The CSV is the result. In the reply, give the number filled, the number unresolved, and the path. Do not paste a record per row.
When the user asked specific questions, answer those in the reply, with a source for each value, and skip the template. For a full record, use this:
# {Name}
type: company | person | organization
identified by: {domain, employer, or other stable identifier}
as_of: {YYYY-MM-DD}
| Field | Value | Source |
|---|---|---|
| website | | |
| description | | |
| industry | | |
| headquarters | | |
| founded | | |
| employees | | |
| funding | | |
| revenue | | |
| linkedin | | |
## People
| Name | Title | Source |
|---|---|---|
## Recent signals
- {YYYY-MM-DD}: {fact} — {url}
## Unknown
- {field}: {what you tried}For a person, the field rows are title, organization, location, and profile URL, and People appears only when the user asked for related people. Drop a field row that does not apply to this type. A field that applies and could not be filled stays in the table with a blank value and a line under Unknown. Description is one or two sentences grounded in the about page or profile. Recent signals are at most five dated items: funding, a launch, a leadership change, hiring. Omit a section that has no rows.
When you cannot pick one entity:
# {Query}
| Name | Website | What separates it from the others |
|---|---|---|Fill in a company, person, or organization for a CRM from the web, using Tavily, including a CSV of rows the user already has. Identifies the right entity when others share the name, then fills the fields from authoritative sources. Use when the user wants to enrich an account, a spreadsheet, or a pasted list of known names, or says "enrich", "CRM", or "who is". For discovering matches use tavily-list. For a deep comprehensive report use tavily-research.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
Bash(tvly*)skills/tasks/tavily-entity/SKILL.mdmain, last pushed 6 November 2026.SKILL.md, not by matching a directory convention. 3 distinct layouts observed: skills/core/*/SKILL.md, skills/developers/*/SKILL.md, skills/tasks/*/SKILL.md.h1 and no skipped levels:.claude-plugin/marketplace.json by Tavily, declaring 1 plugin. It is read for editorial metadata only — never as the skill index, which is always the repository tree./tavily-ai/skills.md, and each skill at its own .md URL.