- name:
- research
- description:
- Researches a company, person, buying committee, signal, domain, stack, financial context, or competitor mention. Produces a focused answer with sources and confidence notes.
Instructions
Research is target-driven and doesn't require org config to function — there's no state-hint paragraph and no Setup.md. The agent just routes to the right sub-page and runs.
Step 1 — Parse the ask, pick the sub-page
Route based on what the user is asking about. Load the sub-page via swan-get-skill.
| Ask shape | Sub-page |
|---|---|
| Generic company / one company / "what does X do" / "/research acme" | Company |
| Named person — "/research tom from acme", "tell me about Jane Doe" | Person |
| Mapping the people inside one account — buying committee, who to thread to | AccountTeam |
| How does the target sell / their GTM / pricing posture | GTMmotion |
| What's recent / news / signals / last-30-days | News |
| Domain-level / web traffic / SEO / digital footprint | Domain |
| Financial health / funding / revenue / runway / ownership | Financial |
| Tech stack only — what tools do they run | TechStack |
| Where the target talks about competitors / displacement signals | CompetitorMentions |
If the ask is ambiguous (e.g. just a company name with no further context), default to Company. If the ask explicitly chains multiple facets ("research acme — company plus the buying committee"), it's fine to load two sub-pages — but always pick a primary.
Step 2 — Pick the depth
Most asks want a one-paragraph answer; some want a dossier. Read the user's phrasing:
- "/research acme" / "what does acme do" → brief read (3–5 lines, the essentials).
- "deep brief on acme" / "full dossier" / pre-meeting prep with a VP+ → run the sub-page end-to-end.
- "quick — is acme an ICP fit" → micro-answer, one paragraph.
Default to brief. Scale up only when the user signals depth, or when the situation (board prep, founder intro, executive outreach) demands it. Over-researching when a sentence would do is the most common failure mode.
Step 3 — Load the sub-page and execute
The sub-page owns the procedure for its facet. Follow it.
Across all sub-pages, the same cheap-before-expensive pattern applies:
- check what Swan already has (
swan-search-companies,swan-get-memory, prior briefs) - check the CRM if connected
- reach for free preview tools (
swan-fetch-scraped-url,swan-fetch-businesses,swan-website-traffic,swan-fetch-business-events) before paid enrichment - enrich (
swan-enrich-company,swan-enrich-contact) only when the cheap signals left a real gap
Step 4 — Output shape
Default to a structured short summary, not raw scraped data. Every sub-page ends with a composed block — follow its shape. Always:
- Cite sources inline (e.g. "via
swan-website-traffic", "from LinkedIn post 2026-05-03", "press"). - Flag confidence on soft signals (high / medium / low based on signal density).
- Surface the highest-signal finding first. Don't bury the lede in a wall of context.
- Tag the company in Swan via
swan-update-companywhen the research produced a durable fact worth reusing (financial state, tech stack, motion type) so the next play inherits it.
What good looks like
- Right depth for the ask. A one-paragraph answer when a paragraph is enough; a full dossier when the stakes justify it. Reading the room beats running every facet.
- Sources cited, confidence flagged. Every claim points to a tool result, a URL, or a CRM record. Soft signals (inferred revenue, motion type, runway) carry an explicit "est" or "looks like" — never stated as fact.
- Lede first. The user sees in 30 seconds what they came for. The strongest hook is line one of the output, not buried below firmographics.
- Knows when to stop. If business events covered the surface area, no more web fetches. If a person has no public profile, the dossier says so and ends.
What gets overlooked:
- Over-researching. Running every sub-page when only one matters. Running the deep flow when a brief was the right call.
- Treating all signals as equal-confidence. Headcount × industry-avg as a revenue figure stated like a fact. Inferred motion stated without hedge.
- Raw dumps. Pasting 40 LinkedIn posts, 200 keywords, or the full enrichment payload into the chat. Synthesize, then summarize.
Rules
- MUST pick a single sub-page per call unless the user explicitly asks for multi-facet research.
- MUST cite sources inline and flag confidence on soft signals.
- MUST check the free preview tools (
swan-fetch-scraped-url,swan-fetch-businesses,swan-website-traffic,swan-fetch-business-events) before chaining paid enrichments. - MUST tag the company in Swan with any durable fact (motion type, financial state, detected stack, ICP fit) the research produced.
- NEVER produce a raw dump. Always synthesize into the sub-page's composed output shape.
- NEVER invent quotes, beliefs, financials, or priorities not present in the source.
- NEVER chain
swan-enrich-companyorswan-enrich-contactcalls without first checking what Swan and the CRM already have. - If a tool result is truncated, read the JSON from
files/tool-outputs/<toolName>_<callId>.jsoninswan-execute-codeand summarize from there.
Specificity sub-pages this skill will grow
Shipped today:
Company— general company research (the default landing for "/research acme")Person— full dossier on a named personAccountTeam— buying-committee mapping inside one accountGTMmotion— how the target sells todayNews— last-30-days signal scanDomain— digital footprint, traffic, SEO postureFinancial— funding history, ownership, runway, pressureTechStack— detected tools by categoryCompetitorMentions— public mentions of a named competitor
Accreted over time as use cases sharpen:
AcquisitionTargets— research for M&A or partnership shortlistsCustomerHealth— research framing for an existing customer (expansion / churn risk)IndustryDeepDive— a whole vertical, not one accountInvestor— partner / fund researchBoard— board prep on a director or chair