I'm a solo founder looking for my first users, and a lot of the people I want to talk to write on DEV. "I launched and nobody came." "0 sales after 3 weeks." Those posts are a good place to start a conversation, because the person just described their problem in public.
Here's the script I run to find them. It only uses the public DEV API, so you don't need a key.
import json, urllib.request
from datetime import datetime, timedelta, timezone
TAGS = ["buildinpublic", "sideprojects", "saas", "startup"]
WORDS = ["first users", "first customers", "no users", "0 users", "0 sales", "zero sales", "nobody", "how do you find"]
SINCE = datetime.now(timezone.utc) - timedelta(days=7)
def get(url):
req = urllib.request.Request(url, headers={"User-Agent": "first-users-finder"})
with urllib.request.urlopen(req, timeout=30) as r:
return json.load(r)
seen = set()
for tag in TAGS:
for a in get(f"https://dev.to/api/articles/latest?tag={tag}&per_page=100"):
published = datetime.fromisoformat(a["published_at"].replace("Z", "+00:00"))
text = (a["title"] + " " + (a["description"] or "")).lower()
if a["id"] in seen or published < SINCE or not any(w in text for w in WORDS):
continue
seen.add(a["id"])
print(f'{a["published_at"][:10]} {a["comments_count"]:>2} comments {a["title"]}\n {a["url"]}')
It pulls the latest articles for four tags, keeps the last 7 days, and keeps the ones whose title or description contains one of the phrases. Then it prints the date, the number of comments, the title and the link.
Change WORDS to fit what you sell. If you built an invoicing tool, try "late payment" or "chasing invoices" instead of "0 sales". When I ran it today, most of the matches had 0 comments, so a reply there doesn't get lost.
Now the honest part. Over the last week I left 29 comments on DEV posts like these. 2 people answered. On Indie Hackers, the same kind of reply got 9 answers out of 16. My read is that most DEV posts are finished articles, not questions, so the author isn't expecting a conversation. If you use the script, favour posts that end with a question, and keep your comment about their post: one specific detail, one easy question, no link.
I'm building FounderPulse, which runs this kind of search across more sites than DEV. But the script above is enough to start, and it's free.
Top comments (3)
The 29-for-2 vs 16-for-9 split is the most honest number I've seen posted this month, and the diagnosis matches what I've measured from the other side of the exchange. I've run the same motion on DEV for a few weeks: replies into hot threads (articles already 3+ days old with an active comment section) converted to author-level conversation at roughly 1 in 4, while replies to fresh "just launched" posts landed near 1 in 12. Same words, different soil.
One refinement to the target filter: the phrase scan works, but comment-count momentum beats keyword match. A post whose thread is still receiving replies this week means the author is still in conversation mode — that's the window. A "0 sales" post with 14 comments is more answerable than a "how do you find users" post with 0, because the author has already proven they reply.
The no-link rule is load-bearing too. Every reply I've kept link-free got read; the pattern reads as spam the moment it carries one, and the trust you build across five clean replies is what makes the sixth one land.
Genuine question from a fellow runner: when you triage matches, do you weight recency of the author's last reply, or the size of their existing thread? I've been betting on recency and it's been working, but I'd trade my heuristic for yours.
Neither, right now. FounderPulse ranks by how old the post is (the last 2 days come first) and by whether the author is asking for help or just mentioning the problem. Threads past 25 replies get dropped, since one more message gets lost there. Whether the author replied to someone recently isn't in it yet. Worth testing.
Then “asking for help vs mentioning the problem” is already the right axis — it proxies for the thing author-reply-recency measures: willingness to be in a conversation. My numbers say the same split from the other side: replies to authors who had answered someone within the last day got answered about 1 in 3, replies to authors who hadn’t replied to anyone in a week, close to 1 in 10. Same signal, one you read from the post, one from the thread.
The drop-past-25 rule matches a wall I ran into too — I call it the density cliff: past about that many replies a comment stops being a door and becomes background noise, so effort there is wasted for reach. Cheap version of the author-recency test if you want a v1: for each candidate post, fetch its comments, take the max created_at among comments by the author, and treat “author active in the last 24h” as a ranking field. That’s a few extra API calls per candidate and it runs on the same public endpoints you already use.
Worth tracking one outcome metric while you test: reply rate per comment left, not answers per run. That’s the number that tells you when a ranking change is real and when it’s just a good week.