Find Reddit and HN threads where buyers ask for a tool
Searches Reddit and Hacker News with Exa, keeps the posts where someone is shopping for your category with Jev, and sends them to Slack.
Outcome
A table of every post found, with whether its author is shopping, what kind of post it is, the competitor it names and Jev's probability.
A Slack post for each thread worth answering, with its link and a drafted reply for a person to post, and the unsure threads in one list.
How it works
- 1
Find candidate posts
ExaSearch each of
keywordson reddit.com and news.ycombinator.com, published in the lastlookback_days, with each page's text. Keep each post's URL, title, text and date; drop duplicates. - 2
Keep the shoppers
TypeSafe AISend each post's title and text as the state, with a noul
shopping(true: the author is choosing or replacing a tool forcategory; false: using one happily, sharing news, promoting their own product or hiring), a choicekindof recommendation_request, competitor_complaint, comparison, pain_point, question and other, and a choicecompetitorovercompetitorsplus none. Keep the posts whoseshoppingis yes, with their kind and competitor, and list the unsure ones apart. - 3
Draft the replies
Your agentFor each kept post, draft a reply that answers what the author asked in their own terms, includes
disclosure, and names alternatives where they fit better, using onlyproduct_factsand the thread and leaving a [fill in] where a draft needs anything else. No links unless the thread asks for them. Show the drafts to the user. - 4
Send them to the team
SlackPost each kept thread to
alerts_channelwith its link, kind, competitor, theshoppingprobability and the drafted reply, most likely shoppers first, then the unsure threads in one message.
You'll be asked for
What you sell, in the words buyers use
e.g. cold email software
Searches that find candidate posts
e.g. cold email tool recommendation; alternative to Instantly; best tool for sending cold email
The tools posts might name
e.g. Instantly, Smartlead, lemlist
How recent a post counts
e.g. 7
How sure Jev must be before its answer is used without you
e.g. 0.8; a yes-or-no answer counts as yes at or above it and as no at or below 1 minus it
Who is replying and their tie to your product, said in every reply
e.g. I'm Sam, and I work on Acme Mail
What a reply may say about your product and the tools around it
e.g. prices, limits and the alternatives you'd point people to
The Slack channel the threads go to
e.g. #community-leads
The file your agent runs
community-buyer-threads.md
Find Reddit and HN threads where buyers ask for a tool
Searches Reddit and Hacker News with Exa, keeps the posts where someone is shopping for your category with Jev, and sends them to Slack.
Set up the tools below, then run the steps in order for the user, carrying each step's results into the next. The run is done when the user has the outcome below.
Outcome
- A table of every post found, with whether its author is shopping, what kind of post it is, the competitor it names and Jev's probability.
- A Slack post for each thread worth answering, with its link and a drafted reply for a person to post, and the unsure threads in one list.
Inputs
Ask the user for these before you start.
category: what you sell, in the words buyers use, e.g. cold email softwarekeywords: searches that find candidate posts, e.g. cold email tool recommendation; alternative to Instantly; best tool for sending cold emailcompetitors: the tools posts might name, e.g. Instantly, Smartlead, lemlistlookback_days: how recent a post counts, e.g. 7min_confidence: how sure Jev must be before its answer is used without you, e.g. 0.8; a yes-or-no answer counts as yes at or above it and as no at or below 1 minus itdisclosure: who is replying and their tie to your product, said in every reply, e.g. I'm Sam, and I work on Acme Mailproduct_facts: what a reply may say about your product and the tools around it, e.g. prices, limits and the alternatives you'd point people toalerts_channel: the Slack channel the threads go to, e.g. #community-leads
Set up
Search the web (Exa, tool:exa/search-web)
Use the first option your agent supports.
Note: On MCP, domain, date and category filters need web_search_advanced_exa: list it in the server URL's tools parameter with every other tool you want, since the list replaces the defaults.
MCP (official, remote)
Add this server to your agent's MCP settings, then sign in when asked.
{ "mcpServers": { "exa": { "url": "https://mcp.exa.ai/mcp?login" } } }
Call the MCP tool web_search_exa.
API (official)
- Base URL: https://api.exa.ai
- Endpoint:
POST /search - Auth: send the header
Authorization: Bearer $EXA_API_KEY - Get a key: https://dashboard.exa.ai/api-keys
Answer typed questions (TypeSafe AI, tool:typesafe/answer-typed-questions)
Use the API.
- Base URL: https://api.typesafe.ai
- Endpoint:
POST /v1/systemone - Auth: send the header
Authorization: Bearer $TYPESAFE_API_KEY - Get a key: https://console.typesafe.ai
Note: Put every question about one record in one request. GET /v1/models lists the models and is the cheapest check of a key; a request over the rate limit gets a 429 with a Retry-After header.
Note: Send state, model (jev-latest) and named questions, each with type, instructions and criteria: a choice maps labels to descriptions, a score lists its levels in order, a noul's is optional. Read a score by its most likely level; send unsure answers to a person.
Post a message (Slack, tool:slack/post-message)
Use the first option your agent supports.
Note: Needs the chat:write scope. Over MCP it posts as the signed-in user; the API and CLI post as the app's bot.
MCP (official, remote)
Add this server to your agent's MCP settings, then sign in when asked.
{ "mcpServers": { "slack": { "url": "https://mcp.slack.com/mcp" } } }
Call the MCP tool slack_send_message.
CLI (official)
Install the command, then confirm it runs.
curl -fsSL https://downloads.slack-edge.com/slack-cli/install.sh | bash
slack --version
Run slack api chat.postMessage.
Set $SLACK_BOT_TOKEN in your environment first (get a key: https://api.slack.com/apps).
Before step 1, confirm access to each service with its cheapest read-only call, like a list or a search. Never send or change anything to test access.
Steps
- Find candidate posts with Search the web (Exa). Search each of
keywordson reddit.com and news.ycombinator.com, published in the lastlookback_days, with each page's text. Keep each post's URL, title, text and date; drop duplicates. - Keep the shoppers with Answer typed questions (TypeSafe AI). Send each post's title and text as the state, with a noul
shopping(true: the author is choosing or replacing a tool forcategory; false: using one happily, sharing news, promoting their own product or hiring), a choicekindof recommendation_request, competitor_complaint, comparison, pain_point, question and other, and a choicecompetitorovercompetitorsplus none. Keep the posts whoseshoppingis yes, with their kind and competitor, and list the unsure ones apart. - Draft the replies yourself. For each kept post, draft a reply that answers what the author asked in their own terms, includes
disclosure, and names alternatives where they fit better, using onlyproduct_factsand the thread and leaving a [fill in] where a draft needs anything else. No links unless the thread asks for them. Show the drafts to the user. - Send them to the team with Post a message (Slack). Post each kept thread to
alerts_channelwith its link, kind, competitor, theshoppingprobability and the drafted reply, most likely shoppers first, then the unsure threads in one message.
Notes
A person posts every reply, from their own account, after reading the thread and the community's rules on self-promotion; write it to help the author, not to pitch. The keyword search in step 1 can stay broad, because Jev reads every match and keeps only the shoppers.
Run it daily with lookback_days set to 1.
Rules
- Use only the services set up above. The read-only calls they need, like listing ids or polling for results, are fine.
- Ask the user before anything that sends messages, costs money, or changes data, and say how many records it touches. One approval covers a batch the user has seen.
- Never print API keys.
