How to get your first users when nobody knows you exist
You shipped something. You have no audience, no email list, no following worth the name. Every guide on this hands you the same six bullets and then changes the subject. This is the part they skip: the actual mechanics of finding the people who already have your problem, and getting in front of them without getting your account flagged.
Your first users are not waiting for your announcement. They are posting, right now, in threads that describe the exact problem your product solves. You get them by finding those threads while they are still fresh and leaving one genuinely useful reply, not by broadcasting a launch post to followers you do not have. This is interception, not broadcasting, and it is a mechanical loop you can run by hand or automate.
The loop with source you can read: github.com/m13v/social-autoposter. The discovery step is a single file, scripts/find_threads.py, and the rest of this page walks through exactly what it does and why.
Broadcasting is the default, and it does not work yet
The advice you find everywhere is the same list: tell your friends, post on Product Hunt, build in public, write content, go to events, ask for referrals. Read it closely and every single item is a broadcast. You push a message outward and hope the right person happens to be listening.
Broadcasting works when you already have reach. A launch post to forty thousand followers finds your first users. A launch post to forty followers finds forty people who already know you, none of whom needed the product, and most of whom scroll past. The advice is not wrong. It is just written for a version of you that has an audience, and on day one you do not have one. That is the entire problem. You cannot broadcast your way out of having nobody to broadcast to.
You write one message and push it out. Its reach is capped at the size of your audience. On day one that cap is roughly zero. You are talking; you have no idea if anyone with the problem is in the room.
You find the message someone already wrote, describing your problem in their words, and you answer it. Reach does not depend on your audience. It depends on how many of those threads you find while they are still warm.
Interception means going to the conversation
Somewhere in the last forty-eight hours, a stranger posted a thread that reads something like "does anyone know a tool that does X" or "I have been struggling with Y for weeks". That person has the problem, has admitted it in public, and is actively reading the replies for an answer. They are a warmer prospect than anyone who will ever see your launch post, because they raised their hand first.
Your job is to find that thread and be useful in it before it goes cold. Founders who write up their early traction on communities like Indie Hackers say the same thing over and over: their first users did not come from a launch, they came from conversations they joined. The mechanism below is how you make that repeatable instead of lucky.
The discovery loop, top down
The interception loop, step by step
This is the whole method. Six steps, run in order, repeated daily. It is deliberately boring. The boredom is the point: a mechanical loop survives a bad week, a burst of inspiration does not.
List the rooms, not the platforms
Write down five to fifteen specific communities where someone with your problem actually posts. A specific subreddit, a category Discord, the GitHub issues of an adjacent project. 'Reddit' is not a room. The room is r/SaaS, or the 300-person server for your exact tool type.
Read the new feed, not the top posts
Open what got posted in the last day or two, not the all-time greatest hits. An old top post is saturated: a hundred replies deep, the author long gone. A thread three hours old is a person who is still in the tab, still reading, still deciding.
Score the thread before you type
Three checks. Is this person describing the problem you solve, in their own words? Is the thread still fresh enough that the author will see a reply? Does it have a couple of comments (alive) without being two hundred deep (buried)? If a thread fails any one, move on. There is always another.
Answer first, mention second
Write the reply that helps even if you delete the last sentence. Solve the literal question. Then, and only if your product is genuinely the answer, name it once, plainly, by what it does. A reply that is useful with the product line removed is a reply that converts. A reply that collapses without it is an ad.
Never reply twice in the same room
One thread, one reply, ever. This is the rule that keeps interception from sliding into spam, and it is the one most people break first. If you find yourself wanting to reply again, you wanted to broadcast. Go find a different thread instead.
Read what came back, then reallocate
After a week you will see it: two or three communities produce real clicks and signups, the rest produce silence. Stop spending replies on the silent rooms. The loop gets faster every week not because you post more, but because you stop posting in rooms that were never going to work.
What "find the conversation" looks like as code
Steps one through three of that loop are the discovery half, and the discovery half is mechanical enough to be a script. S4L ships it open source, and the file is small enough to read in a sitting: scripts/find_threads.py. Here is the part that matters, lightly trimmed:
Three details in that excerpt are the difference between interception and spam, and no general guide on getting first users mentions any of them:
- It reads the new feed. The request goes to
/r/sub/new.json, not the hot or top feed. Every candidate is a thread posted recently, with an author still in the tab. Top posts are already saturated and the person who needed help left long ago. - It stamps every thread with age_hours. Each candidate carries how many hours old it is, so you can prefer the three-hour-old thread over the three-day-old one. Freshness is a number you sort on, not a vibe.
- It drops anything you already touched. Before a thread ever reaches you,
get_already_posted()pulls everythread_urlthe system has ever replied in and removes it from the candidates. One reply per thread, ever. That one query is what keeps a discovery loop from quietly turning into a spam loop.
The same file builds X search queries with min_faves:5 baked into the query, so it only surfaces tweets that already have a little traction. A reply on a tweet with zero engagement is a reply nobody will ever scroll to. Interception is not just finding the thread, it is finding the thread that someone other than the author is still reading.
What one discovery run actually produces
Run the discovery step against three communities and you do not get a wall of links. You get a short, sorted list of threads that passed the filters, with the stale and the already-touched already removed:
Notice what the run threw away. Twelve threads were dropped because the system had already replied in them. The 2024 megathread was skipped for being thousands of hours old. What survives is twenty-five threads where a real person, recently, said something you can genuinely help with. That list is your entire to-do for the day.
Read the discovery loop yourself
find_threads.py is open source. If you would rather run the loop than read about it, the repo has the discovery step, the dedup query, and the per-platform setup. Bring your own LLM credits and self-host it.
Open the repo on GitHub →The reply is the whole game
Discovery is the easy half. A script can find the thread. No script can win the user. That happens in the reply, and the reply is where almost everyone fails, because the temptation is to treat a found thread as a free billboard.
The test is simple. Write your reply, then delete the sentence that mentions your product. If what is left still answers the question and would be worth posting on its own, you have a substance reply, and you can add the product line back in. If what is left collapses into nothing, you wrote an ad, and the room will read it as one. Answer the literal question first. Name your product once, by what it does rather than as a brand drop. Link only when the link is the answer, not as a reflex. And keep the one-reply-per-thread rule sacred: the moment you reply twice in a room, you stopped intercepting and started broadcasting again.
What to actually expect on the timeline
You will not get a hundred users this week, and any guide that promises that is selling you the broadcasting fantasy again. The interception loop is slow on day one and fast by day thirty, and the reason is worth understanding.
In week one you are guessing which communities hold your buyers, so most replies land in rooms that were never going to convert. By week two the feedback starts to separate: two or three rooms produce clicks and signups, the rest produce nothing. By week three you have a rough reply-to-signup rate per community, and you have stopped spending replies on the dead ones. The loop did not get faster because you worked harder. It got faster because you stopped wasting effort. That compounding is the whole return on running a boring loop every day instead of one big launch.
Want the loop run for you?
If you would rather not run discovery and replies every day yourself, S4L runs the interception loop for established products as a done-for-you service. A 15-minute call works out whether your buyers are actually reachable this way.
First-users questions, answered straight
What if my product is too niche for any community to exist?
If literally nobody discusses the problem you solve, that is information about demand, not about distribution. Before you assume there is no room, search for the problem phrased as a complaint rather than as a product category. People rarely post 'I need a social autoposter'; they post 'I am burning two hours a day on Reddit and it is not working'. If even the complaint version returns nothing across Reddit, X, and the relevant Discord servers, you are looking at a market problem that no amount of clever posting fixes. Find the adjacent problem people do discuss out loud, and start there.
Will I get my account banned for posting about my product?
You get banned for broadcasting: dropping the same pitch into ten threads, replying with a link and nothing else, posting in rooms where your product is off-topic. Interception avoids all three because of two mechanical rules. First, you answer the literal question before you mention anything you built. Second, you never reply twice in the same thread, which is the single rule that separates being useful from being a spammer. The discovery step in the open-source engine enforces the second rule for you by checking every candidate thread against the threads it has already touched.
How many communities should I track to start?
Five to fifteen specific ones. Not 'Reddit' and not 'Twitter', which are not communities, they are platforms. A community is r/SaaS, or a 400-person Discord for your exact tool category, or the GitHub issues of an open-source project adjacent to yours. Start narrow. After two weeks of running the loop you will know which three of your fifteen actually contain buyers, and you stop wasting replies on the other twelve.
How is interception different from cold DMing people?
A cold DM is still broadcasting. You decided this person should hear from you; they never asked. Interception waits for the public ask. The person posted a thread, in their own words, describing a problem, and is actively reading the replies. Replying to that thread reaches someone who has already raised their hand. A DM reaches someone who has not, and who now has to forgive you for the interruption before they will even read your first sentence.
Should I wait until my product is more polished before doing this?
No. A thread posted today is gone from the new feed in roughly forty-eight hours, and the person stops checking it not long after. The fresh thread is a perishable asset. If you wait two weeks to polish, that specific person has already picked something else or given up. Reply now, with what you have, and be honest about what is rough. Early users who arrive from a thread you helped in are far more forgiving than users who arrive from a launch ad, because they already saw you be useful before you sold anything.
Can I automate this without sounding like a bot?
Split the loop in two. Discovery (which communities, which fresh threads, which ones are still alive, which ones you have already touched) is mechanical and safe to automate; it is just reading public feeds and a database. The reply is not. The reply is where a human, or a model trained on your actual voice and forced to match the specific thread, has to carry it. Automate the discovery so the loop never gets dropped on a busy week. Keep a human in the loop on every reply that ships.
More on the interception side of getting users
Keep reading
Reddit marketing for indie apps
The longer version of the interception loop for indie apps specifically: which subreddits, how to read a community before you post, and the failure modes.
Substance replies beat volume engagement
Why one reply that actually helps outperforms ten that do not, and what a substance reply looks like next to a volume reply.
How to launch a vibe coded app
The post-deploy playbook: what to do in the thirty days after your URL goes live, when most vibe-coded apps quietly die.
Comments (••)
Leave a comment to see what others are saying.Public and anonymous. No signup.