← EnginyCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Enginy
Snapshot Sep 30, 2026 · 22:53 UTC · version 1.0.0
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "signal-prospector",
"description": "Find companies showing buying signals (hiring, tech adoption, funding) and reach their decision-makers with signal-aware outreach. Use when the user says \"find companies that are hiring for X\", \"find accounts using [technology]\", \"find recently funded companies\", \"who's showing buying signals in my market\", \"build a list off a trigger event\", or \"find companies expanding and get me the right person to contact\".",
"included_files": [],
"skill_md_contents": "---\nname: signal-prospector\ndescription: >-\n Find companies showing buying signals (hiring, tech adoption, funding) and reach\n their decision-makers with signal-aware outreach. Use when the user says \"find\n companies that are hiring for X\", \"find accounts using [technology]\", \"find\n recently funded companies\", \"who's showing buying signals in my market\",\n \"build a list off a trigger event\", or \"find companies expanding and get me the\n right person to contact\".\nversion: 1.0.0\n---\n\n# Signal Prospector\n\n## Role and goal\n\nTurn a buying signal into a working list of decision-makers. You source\ncompanies that exhibit a signal, import them to a list, find the right people at\neach, and hand off to signal-aware outreach where the signal *is* the angle.\nCritically, you are honest about which signals Enginy's AI Finder can express\nnatively versus which need external monitoring — you never promise a signal the\ntool can't produce.\n\n## What AI Finder can express today\n\n`preview_an_ai_finder_search` takes a natural-language `text` query (or a saved\nfilter) plus a `provider`. There is **no structured \"signal\" field** — a signal\nis expressed as phrasing routed to the provider that carries that data. Native\nsignal coverage:\n\n| Signal | Provider | How to express it |\n|---|---|---|\n| **Hiring / open roles** | `THEIRSTACK_JOBS` | \"companies hiring [role] in [geo]\" — sourced from job postings |\n| **Technology adoption / stack** | `THEIRSTACK_TECHNOLOGY` | \"companies using [technology]\" |\n| **Funding / investors / new funds** | `CRUNCHBASE_COMPANIES`, `CRUNCHBASE_INVESTORS` | \"Series B SaaS companies funded recently\" — recency precision depends on what Crunchbase surfaces |\n| **Job change (person moved roles)** | `LINKEDIN` | \"Heads of Sales who changed jobs in the past 90 days\" |\n| **Ecommerce platform / store growth** | `STORELEADS` | \"Shopify DTC brands with growing traffic\" |\n| **Local presence** | `GOOGLE_MAPS` | \"dental clinics in Austin\" |\n\n**Signals NOT natively expressible** (need external monitoring): press/news\nevents, product launches, M&A, layoffs, leadership changes beyond job-change,\nwebsite/intent/traffic-spike data, social activity. For these, monitor\nexternally (web search — host-gated) and feed the resulting companies in via\n`bulk_create_companies`, then run decision-maker discovery on that list.\n\n## Instructions\n\n### Phase 1 — Pick the signal and ICP overlay\n1. Clarify the exact signal and the ICP constraints to overlay (size, geo,\n industry). Check the table above — if the signal isn't natively expressible,\n go to the external-monitoring path (Phase 3b).\n\n### Phase 2 — Source companies via AI Finder\n1. `preview_an_ai_finder_search` with a signal-oriented `text` query and the\n right `provider` from the table (or `AUTO` to let it route). For an\n identity-scoped LinkedIn search, first `get_identities` with\n `linkedinSearchEnabled=true` and pass that `identityId` (LinkedIn provider\n only). Returns a `previewId`; nothing is imported yet.\n2. `fetch_results_from_an_ai_finder_preview` (previewId) to inspect the actual\n matches. Show the user a sample.\n3. Refine with `refine_an_ai_finder_preview` (natural-language `feedback`, e.g.\n \"US only\", \"exclude agencies\", \"50-500 employees\"). Each refine returns a new\n `previewId`; chain as needed.\n\n### Phase 3 — Import to a list\n1. `create_a_list` (`type: COMPANIES`) for the destination.\n2. `import_an_ai_finder_preview` (previewId, listId, `maxCount` 100-2500 in\n increments of 100). Returns an `actionsId`; poll `get_actions_run_status`.\n Fetch imported records with `get_companies` filtered by the run.\n\n### Phase 3b — External-signal path (non-native signals only)\n1. Gather the triggering companies via web search (**host requirement: web\n search**). If unavailable, tell the user this signal can't be sourced here.\n2. `bulk_create_companies` (up to 100 per call, `listId` to drop them straight\n into a company list). Then continue at Phase 4.\n\n### Phase 4 — Find decision-makers at matching companies\nTwo options:\n- **Per-company scrape:** `start_an_actions_run` →\n `SEARCH_LEADS_FROM_LINKEDIN_COMPANY` against `companyGroupIds: [listId]`, with\n `options.text` describing the role (\"VP Sales and RevOps leaders\"),\n `maxLeadsToImport` (max 10), and a `destinationContactGroupId`. **Billable**\n (pricing key `SCRAPE_LEAD_LINKEDIN`) — confirm spend first (Phase 5 rules).\n- **Contact-level AI Finder:** a `preview_an_ai_finder_search` contact query\n scoped to those companies, then import to a contact list.\n\n### Phase 5 — Confirm spend before any billable run\nBefore `start_an_actions_run` (and before large imports), call\n`get_credit_pricing` + `get_credit_balance`, estimate cost × record count,\nconfirm `spendableCredits >= cost`, and get an explicit yes.\n\n### Phase 6 — Signal-aware outreach\n1. Route to `campaign-angle-finder` with the signal as the angle (the hire, the\n raise, the tech adoption is the reason for reaching out now).\n2. Hand off to `launch-campaign` to send.\n\n### Phase 7 — Recurrence\nSignals go stale, so suggest **re-running this skill weekly** to catch new\nmatches. This is a **manual re-run cadence** — Enginy does not schedule it for\nyou through these tools. Graph workflows (`get_workflows` / `run_workflow`) can\nautomate multi-step sequences **if workflows are enabled on your workspace**;\nmention this only as an option, and only if the user asks — don't claim\nautomatic scheduling.\n\n## Enginy MCP tools used\n\npreview_an_ai_finder_search, fetch_results_from_an_ai_finder_preview,\nrefine_an_ai_finder_preview, get_identities, create_a_list,\nimport_an_ai_finder_preview, get_companies, bulk_create_companies,\nget_credit_pricing, get_credit_balance, start_an_actions_run,\nget_actions_run_status, get_workflows, run_workflow\n\n## Important notes\n\n- **Only promise signals the schema supports.** Hiring, tech stack, funding,\n job-change, ecommerce, and local are native (see the table). News, launches,\n M&A, intent, and traffic are NOT — those require external monitoring +\n `bulk_create_companies`. Say so plainly.\n- **No structured signal parameter exists.** Signals are natural-language\n phrasing routed to a provider. Query quality drives result quality.\n- **Funding recency is approximate.** Crunchbase natural-language queries return\n what Crunchbase surfaces; there is no guaranteed \"funded in the last N days\"\n filter — set expectations accordingly.\n- **Confirm before spend.** `SEARCH_LEADS_FROM_LINKEDIN_COMPANY` and imports are\n billable. Always price and confirm.\n- **Import limits:** `maxCount` 100-2500 in increments of 100; list type must\n match the preview entity (company list for company previews, contact list for\n contact previews) or import returns 422.\n- **`maxLeadsToImport` caps at 10** per company for\n `SEARCH_LEADS_FROM_LINKEDIN_COMPANY`.\n- **Previews live ~24h** and Crunchbase paging is capped (~10 pages) — inspect\n early, import before the TTL expires.\n- **Recurrence is manual** unless workspace workflows are enabled. Do not claim\n Enginy auto-schedules re-runs.\n- UI walkthroughs: https://docs.enginy.ai.\n\n## Examples\n\n**1. Hiring signal.** \"Find companies hiring SDRs and get me their sales\nleaders.\" Preview `THEIRSTACK_JOBS` text \"companies hiring SDRs or BDRs in the\nUS, 50-500 employees\", inspect, refine to exclude staffing agencies. Create a\ncompany list, import 500. Then `SEARCH_LEADS_FROM_LINKEDIN_COMPANY` for \"VP Sales\n/ Head of Revenue\" into a contact list (confirm credits). Route to\n`campaign-angle-finder` with \"you're scaling your sales team\" as the angle.\n\n**2. Funding signal.** \"Recently funded Series A/B fintechs.\" Preview\n`CRUNCHBASE_COMPANIES`, flag that recency is best-effort, import, find CFOs/Heads\nof Ops, outreach angle = the raise.\n\n**3. Non-native signal — product launch.** \"Companies that just launched a new\nproduct.\" Explain this isn't natively expressible; if web search is available,\ngather them externally and `bulk_create_companies` into a list, then run\ndecision-maker discovery. If web search isn't available, say the signal can't be\nsourced here and suggest a native proxy (e.g. hiring for the launch team).\n\n## Troubleshooting\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| Preview returns few/no matches | Query too narrow or wrong provider | Broaden the `text`, or force the right `provider` from the table |\n| Import 422 | List type ≠ preview entity | Company list for company previews, contact list for contact previews |\n| Import 404 preview | Preview expired (24h TTL) | Re-run `preview_an_ai_finder_search` |\n| `refine` 422 | AI couldn't build a valid refined search | Simplify the `feedback` phrasing |\n| Crunchbase fetch 422 on deep page | Past the ~10-page cap | Refine the query instead of paging deep |\n| Signal can't be expressed | Not a native provider signal | Use external monitoring + `bulk_create_companies` |\n| `run_workflow` 409 | Workflow not published / not enabled | Workflows may be flag-gated; treat recurrence as manual |\n| Decision-maker run billable-blocked | `spendableCredits` < cost | Reduce `maxLeadsToImport` or company count, or top up |\n"
}SHA-256: e802f51174fcb23997951d59f3c88bad6e89172c315dac84278857b9a1676f1c