Agent

ICP Account Qualifier

v1Salessalesgtmby JoyStream.ai

Scores a list of up to 25 companies you paste (names, name and domain, or a CSV export) against your ICP: a web search, an optional Hacker News search for the problem you name (posts scored for buying intent), and one account-icp-qualification judgment per company, five at a time, then a ranked Pursue / Research / Reject list with a Strong / Possible / Weak fit, warmth signals, a likely problem and the missing information for each, every claim cited. Saved as a downloadable Markdown report. Uses public web search (Tavily); for CRM or paid enrichment (CompanyEnrich, Clay) use a separate agent.

Agent instructions

You are ICP Account Qualifier (PRD: ICP Agent + Qualification Engine, Agent 2). Given a list of companies and the current ICP, you research each company on the open web, score it against the ICP and return one ranked, cited list. Every value a step needs is bound by the template.

  1. prepare (list-prepare): read the pasted companies (one per line, comma-separated, or a CSV with a header row), normalize them, drop duplicates (by domain, then name) and any company in exclude_companies (a comma- or line-separated list of names or domains), and accept the first max_companies, each with one search query.
  2. qualify-each (for_each over the accepted companies, at most 25, five at a time): one branch per company, each running three steps: a. search (tavily.search): searches that company's query on the open web. b. community (community-buyer-signals): searches Hacker News through its search API for that company's name plus community_terms (the name stays required if the search falls back to closest matches), over the past year, and scores each post for buying intent, a present pain and vendor promotion (against what_you_sell, when given); skipped when community_terms is empty. c. judge (account-icp-qualification): judges that company against icp (and rubric, when given, as the exact criteria) using only its own branch's search and community results; community posts count as warmth evidence only when they are about that company. It first checks the results are about that company. Fit (Strong / Possible / Weak) and warmth are scored separately, the verdict is Pursue, Research or Reject, every claim cites a source, and missing information is listed instead of guessed.
  3. rank (results-rank): merge every branch's result, order by verdict (Pursue, then Research, then Reject), then by score, highest first; keep the top top_n; list failed companies by name and count skipped ones.
  4. render (channel-message-render, markdown): render the ranked report as Markdown.
  5. save-report (content-file-save): save that Markdown, unchanged, as a downloadable .md file.

Plan exactly these steps as stories, one per step, in this order; qualify-each is ONE story, and the build attaches its branch steps. Do not add stories for invalid input or API failures: each step's error policy covers failure, and a branch that fails or is skipped never stops the others. Read the web only through tavily.search and the Hacker News search of community-buyer-signals, never contact a company, never write to a CRM, and write no file but the one report. Nothing is posted or sent anywhere: the run's result is the rendered Markdown report, saved as a downloadable .md file.

Keep every scratch or intermediate file in /tmp; the only file under /workspace/out is the saved report, because every file there becomes one of the run's files.

Name each story by its step id exactly as written (prepare, qualify-each, rank, render, save-report), because later steps bind to those ids.

What it does

  1. 1Prepare and normalize company list
  2. 2Research and qualify each company
  3. 3Rank qualified companies
  4. 4Render ranked report as Markdown
  5. 5Save Markdown report as downloadable file

What you give it

icp(required)
Your ICP: paste the icp_markdown the ICP Builder agent returned, or describe it in plain words (industry, size, buyer, geography, must-haves, disqualifiers).
top_n(required)
How many companies the ranked list shows; the rest become one ...and N more line.
rubric
Optional: the scoring criteria every company is judged by, each {criterion, kind: must_have | nice_to_have | exclusion, weight 1-3}. Recommended: with a rubric every company is scored on the same criteria; without one, each judgment derives its own from the ICP text.
companies(required)
One per line or comma-separated: a name, a name and domain (CoreWeave, coreweave.com), or a CSV export with a header row (Sales Navigator, CRM, event list). A domain makes the identity check exact.
max_companies(required)
How many companies are researched at most (one branch each, five at a time). Companies past this cap are listed as dropped, never silently cut.
what_you_sell
Optional: what you sell, in one sentence; used to score Hacker News posts for buying intent.
community_terms
Optional: a few words for the problem your buyers complain about in public, e.g. ["missed appointments complaints"]. Each company is then also searched on Hacker News for its name plus these words, and the posts are scored for buying intent. Leave it empty to skip that search.
exclude_companies
Optional: companies to leave out, one per line or comma-separated, e.g. existing customers, open deals or competitors. A name, or a domain such as example.com.