Agent

Account Discovery & Qualification

v1Salessalesgtmby JoyStream.ai

Given your ICP, finds new candidate companies on the open web (web, news, Hacker News and Reddit, public job boards, and any directory or event pages you list), then qualifies each one with the same engine as ICP Account Qualifier: 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, and a ranked Pursue / Research / Reject list with fit, warmth, a likely problem and missing information, 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 Account Discovery & Qualification (PRD: ICP Agent + Qualification Engine, Agent 2). Given the current ICP, you find new candidate companies on the open web and qualify each one against the ICP with the same core as ICP Account Qualifier, returning one ranked, cited list. One-shot: nothing is remembered between runs.

  1. extract-sources (tavily.extract): the pages listed in sources, when there are any; with none it is skipped.
  2. search-web (tavily.search): one query for companies that match icp, led by its industry, buyer and signals of need, plus search_focus when given.
  3. search-news (tavily.search, news, past month): one query for recent events that show the icp's need, e.g. funding, launches or expansion in its industry, plus search_focus.
  4. search-community (tavily.search on Hacker News and Reddit): one query for posts by people at such companies describing the problem the icp implies.
  5. search-jobs (tavily.search on public job boards): one query for open roles that signal the icp's need, e.g. the buyer's team hiring.
  6. candidates (account-discovery-candidates): reads every output above in full and keeps at most count companies, each with one cited ICP fit reason; companies in exclude_companies (a comma- or line-separated list of names or domains) are dropped.
  7. prepare (list-prepare): lays the candidates out for the fan-out, one search query each.
  8. qualify-each (for_each over the accepted candidates, at most 25, five at a time): one branch per company: search (tavily.search on that company's query), community (community-buyer-signals: Hacker News search through its API for that company's name plus community_terms (the name stays required if the search falls back to closest matches), past year, each post scored for buying intent, a present pain and vendor promotion against what_you_sell when given; skipped when community_terms is empty), then judge (account-icp-qualification against icp and, when given, rubric as the exact criteria, using only its own branch's results, community posts counting as warmth evidence only when they are about that company; fit and warmth scored separately; verdict Pursue, Research or Reject; every claim cited; missing information listed, never guessed).
  9. rank (results-rank): order by verdict (Pursue, Research, Reject), then score; keep the top top_n; name failed companies.
  10. render (channel-message-render, markdown): render the ranked report as Markdown.
  11. 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, each story named by its step id exactly as written above (extract-sources, search-web, search-news, search-community, search-jobs, candidates, prepare, qualify-each, rank, render, save-report), because later steps bind to those ids; qualify-each is ONE story, and the build attaches its branch steps. Each discovery query is at most 200 characters and names no company. Do not add stories for invalid input or API failures: each step's error policy covers failure. Read the web only through tavily.search, tavily.extract 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 (extract-sources, search-web, search-news, search-community, search-jobs, candidates, prepare, qualify-each, rank, render, save-report), because later steps bind to those ids.

What it does

  1. 1Extract listed source pages
  2. 2Web search for ICP-matching companies
  3. 3News search for recent ICP-need signals
  4. 4Community search on Hacker News and Reddit
  5. 5Job board search for ICP-need roles
  6. 6Build candidate company list
  7. 7Prepare candidates for fan-out
  8. 8Qualify each candidate company
  9. 9Rank qualified companies
  10. 10Render ranked report as Markdown
  11. 11Save 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, signals of need, must-haves, disqualifiers). The searches are written from it.
count(required)
The most new candidates found and qualified in one run (one branch each, five at a time).
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.
sources
Optional: pages to read for candidates, at most 5 full URLs: startup directory filters, event sponsor or attendee lists, integration marketplaces, job board searches.
search_focus
Optional: words that steer every search, e.g. a region, a technology they use, or a recent event such as raised a Series A.
fit_threshold
Optional: plausible keeps a candidate with one cited ICP criterion met and none contradicted; strong needs two or more. Criteria are judged by their own words, never by resemblance.
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.