ZeroToUser / Building in Public / Product Strategy
I Used ZeroToUser to Find Users for ZeroToUser—and Found a Problem
I used ZeroToUser to find potential users for ZeroToUser. The results exposed a deeper product problem: the system was filling the daily lead quota before proving that each conversation was actually relevant.
One of the ideas behind ZeroToUser is simple:
use public conversations to find people already expressing the pain your product solves.
So I decided to use ZeroToUser to promote ZeroToUser.
The target audience was clear:
solo founders and early-stage B2B SaaS builders who had launched something but were struggling to find their first users.
The product profile was clear too.
ZeroToUser helps founders find relevant conversations on Reddit and X, understand why those conversations matter, and write a useful reply without automating spam.
I configured the search topics.
I added the customer problems.
Then I started reviewing the leads.
That was when the product exposed a problem in itself.
Many of the results were technically related to startups, marketing, growth, or software.
But they were not real opportunities for ZeroToUser.
The system was finding related conversations.
It was not consistently finding the right conversations.
Related Is Not the Same as Relevant
This distinction sounds small, but it changes the entire product.
Imagine a founder asking:
What are the best marketing channels for a new SaaS?
That person may be part of the target audience.
They may have a real growth problem.
They may even be looking for advice.
But that does not automatically make them a ZeroToUser lead.
They are asking about marketing strategy in general.
They are not necessarily looking for a way to:
- find users manually
- discover relevant conversations
- monitor Reddit or X
- identify people asking for solutions
- improve social prospecting
- reply safely without spamming
The audience matches.
The broad category matches.
The product problem does not.
I found similar examples around advertising ROI, Facebook ads alternatives, general growth strategies, and marketplace growth.
These were useful market conversations.
They could become research or content ideas.
But they should not appear in a daily list of people worth contacting.
This was the first important lesson:
A strong pain point is not automatically a strong product fit.
The More Uncomfortable Discovery
The second discovery was more technical.
ZeroToUser already had AI-related scoring code.
There was a batch process that could use Gemini to assign a relevance score to opportunities.
But the main path that created the daily lead list was still driven mostly by keywords, regular expressions, freshness, source scores, and engagement.
The AI process was not acting as a qualification gate before a Lead was created.
In practice, phrases such as:
- looking for
- recommend
- need
- best
- alternative
- too expensive
could produce a strong intent score.
Those phrases can indicate buying intent.
But without product context, they can also appear in completely unrelated discussions.
A person looking for help reporting a bot network to Reddit administrators may use urgent problem language.
A moderator overwhelmed by spam may describe a painful manual workflow.
A founder asking about Facebook ads may be looking for alternatives.
All of these posts contain signals.
But signals only become opportunities when they connect to a problem the product can actually solve.
The system was scoring the strength of the signal before proving the fit.
The Quota Made the Problem Worse
There was another issue hiding in the assignment logic.
The product had a daily lead quota.
If the user was supposed to receive a certain number of leads, the system selected the highest-scoring candidates available.
That sounds reasonable until the candidate pool is weak.
If none of the available conversations are good matches, there is still a "highest-scoring" result.
Selecting the top three items does not mean those three items are good.
It only means they are better than the rest of that particular pool.
The system was effectively saying:
We promised three opportunities, so find three things to display.
That optimized the interface for completeness.
It did not optimize the product for trust.
A full inbox looked more active.
But a full inbox of weak matches made the product less useful.
For an early-stage founder, attention is already scarce. Every irrelevant lead creates another decision:
- Is this person actually relevant?
- Can my product solve this problem?
- Would replying be useful?
- Would mentioning my product feel forced?
- Am I helping, or am I becoming another spammer?
A product designed to reduce prospecting work should not create a new qualification task for the user.
Classification Must Come Before Scoring
I changed the mental model of the pipeline.
The old version was close to:
Retrieve candidates
→ Score candidates
→ Sort candidates
→ Fill the daily quota
The new version is:
Retrieve broadly
→ Understand the request
→ Classify the opportunity
→ Apply product-fit rules
→ Rank qualified leads
→ Return fewer results when quality is low
Every opportunity now belongs to one of four categories.
Lead
The person matches the target audience, has a problem the product directly solves, and is actively looking for a solution or next step.
Engage
The person or problem is relevant, but there is not enough evidence of active buying or solution-search intent.
This may be a conversation worth joining, but not a reason to pitch.
Research
The discussion is adjacent to the market but does not represent a direct product opportunity.
General growth strategy, marketing channels, advertising performance, and broader acquisition questions often belong here.
These conversations can still be valuable for learning and content.
They should not enter the sales queue.
Irrelevant
The audience, problem, context, or requested outcome does not match the product.
Platform moderation, account enforcement, bot reporting, unrelated support requests, and obvious promotional content belong here.
The important change is that scoring now happens after classification.
A high score cannot turn Research into a Lead.
What a Real ZeroToUser Lead Looks Like
A post should not become a ZeroToUser Lead simply because the author is a founder or mentions growth.
The direct problem needs to be visible.
Examples include:
I launched my SaaS, but I do not know where to find my first users.
Is there a tool that can find people already asking for this type of product on Reddit?
Keyword alerts produce too much noise. How do I identify conversations with real buying intent?
I am manually checking communities every day and cannot keep up.
How can I join relevant discussions without sounding like I am promoting my product?
These posts connect naturally to the product.
The suggested action can be useful without forcing the product into the conversation.
That is the standard I want the system to use.
The AI Now Evaluates the Product Fit
Before a Lead is created, the new qualification step evaluates the post against the user's actual product profile.
It considers questions such as:
- Does the author match the target audience?
- Is the problem directly solved by this product?
- Is the author actively searching for a solution?
- Are they trying to find users or relevant conversations?
- Is there a social prospecting signal?
- Have they already chosen a solution?
- Are they asking for a recommendation, or recommending something they already use?
- Would mentioning the product be relevant and safe?
The model returns structured data instead of a single relevance number.
A simplified result looks like this:
{
"classification": "research",
"confidence": 0.92,
"requestType": "general_growth_strategy",
"icpFit": true,
"directProblemFit": false,
"activeSolutionSearch": true,
"disqualifiers": [
"adjacent_problem_only"
]
}
This matters because a single score hides too much.
A score of 82 does not explain whether the audience matched, the problem matched, or the author was actually looking for a solution.
Structured classification makes the decision easier to inspect and improve.
The AI interprets the conversation.
The policy layer enforces the product boundary.
The ranking system decides which qualified leads deserve attention first.
These are different jobs.
They should not be collapsed into one number.
Negative Rules Still Matter
AI qualification does not eliminate deterministic rules.
Some situations are clear enough to handle directly.
For ZeroToUser, discussions focused on the following topics are usually Research unless they also contain a direct prospecting need:
- best marketing channels
- general growth strategy
- ads ROI
- Facebook ads alternatives
- marketplace growth
Other contexts are generally irrelevant:
- subreddit moderation
- platform enforcement
- bot farming
- account ban appeals
- spam reporting
But these rules cannot rely only on the presence or absence of exact phrases.
Consider these two posts:
What is the best marketing channel for my SaaS?
This is Research.
Ads stopped working, so I am looking for a way to find people already asking for our type of product on Reddit.
This may be a Lead.
Both posts mention marketing channels or advertising.
Only one contains the problem ZeroToUser directly solves.
That is why negative keywords are useful for retrieval and safeguards, but semantic classification is still necessary.
Failing Closed
Another decision I made was to change what happens when AI qualification is unavailable.
The easy fallback would be:
The model failed, so use the old broad score and keep filling the quota.
That would preserve the number of results.
It would also recreate the original problem.
The new system fails closed.
If the model is unavailable, only strict, direct rule matches can remain eligible.
Ambiguous posts are not promoted.
If there are not enough qualified opportunities, the product returns fewer leads.
This is the tradeoff I want.
For a product like ZeroToUser, false positives are expensive.
They consume attention.
They create awkward replies.
They reduce trust in every future recommendation.
Missing one possible opportunity is not ideal.
Teaching the user that the entire feed is unreliable is worse.
Three Good Leads Are Not Always Available
The landing page currently emphasizes a daily Top 3.
That is still a useful product goal.
It gives the user a small, actionable list instead of another infinite feed.
But "Top 3" should mean:
Up to three conversations that are genuinely worth your time today.
It should not mean:
Three results will appear regardless of quality.
Some days there may be three strong opportunities.
Some days there may be two.
Some days there may be none.
Showing zero is uncomfortable.
It can make the product look inactive.
But zero can also be an honest and useful answer.
If the product claims to filter noise, it must be willing to say that the available conversations are not good enough.
The absence of a lead is also information.
Better Feedback Than "Not Relevant"
I also changed the feedback loop.
A generic "Not relevant" button tells the system that something went wrong.
It does not explain what went wrong.
The new feedback reasons include:
- wrong audience
- wrong problem
- general research
- already has a solution
- recommendation, not a request
- platform moderation
- unsafe to promote
These distinctions matter.
"Wrong audience" should improve ICP matching.
"Wrong problem" should improve product-fit classification.
"Already has a solution" should improve intent interpretation.
"Recommendation, not a request" should help distinguish someone seeking a product from someone promoting one.
"Unsafe to promote" should improve reply-risk decisions.
The goal is not to let a few clicks automatically rewrite production rules.
The goal is to collect structured evidence about where the system is failing.
Testing the Boundary
I created a small reviewed evaluation set containing direct leads, adjacent research, and irrelevant posts.
It includes contrastive examples such as:
- asking for the best marketing channel versus asking how to find relevant Reddit conversations
- struggling with ads versus looking for manual social prospecting alternatives
- asking for a tool recommendation versus recommending a tool already in use
- describing bot activity versus looking for a customer-acquisition workflow
The current rule evaluation passed 12 out of 12 cases.
The live AI evaluation also passed 12 out of 12.
That does not mean the system has 100% precision in the real world.
Twelve examples are a baseline, not a victory lap.
Real conversations are messier.
People use indirect language.
Posts lack context.
Sarcasm exists.
Products solve overlapping problems.
The evaluation set gives me something repeatable to test as new mistakes appear.
The real measurement will come from using the product every day and reviewing what it gets wrong.
Using the Product to Improve the Product
This is the most useful part of building ZeroToUser this way.
I am not only building a tool and then trying to market it.
I am using the tool to market itself.
That creates a direct feedback loop:
Use ZeroToUser
→ Review the opportunities
→ Identify false positives
→ Improve qualification
→ Use the improved system again
The product becomes part of its own development process.
If ZeroToUser cannot find good potential users for ZeroToUser, that is not only a marketing problem.
It is product feedback.
If the suggestions feel forced, the positioning may be unclear.
If the conversations are adjacent but not actionable, the qualification boundary may be too broad.
If no conversations match, the search topics or target audience may need work.
If the right people are found but the reply feels unsafe, the suggested approach needs improvement.
Using the product on itself removes some of the distance between building and reality.
The Broader Product Lesson
The lesson from this work is not only about lead scoring.
It applies to many AI products.
Retrieval is not qualification.
Similarity is not relevance.
Pain is not product fit.
Intent is not permission to pitch.
A score is not a decision.
And more results are not always more valuable.
AI products often look impressive when they generate a lot of output.
More leads.
More recommendations.
More alerts.
More summaries.
More actions.
But users rarely need more things to review.
They need help deciding what deserves attention.
The value is not in filling the interface.
The value is in removing the wrong options.
What I Want ZeroToUser to Become
I want ZeroToUser to become a daily action list for early-stage distribution.
Not a stream of keyword mentions.
Not a database of people to spam.
Not an AI system that writes replies before understanding the conversation.
The product should answer:
- Who is worth replying to today?
- Why does this conversation match my product?
- Why is now the right time?
- What is the safest useful angle?
- Should I mention my product at all?
- What happened after I replied?
That means the product has to be comfortable returning fewer opportunities.
It has to separate research from sales.
It has to explain its decisions.
It has to learn from specific mistakes.
And it has to optimize for user trust before activity metrics.
The Lesson
Today's lesson is simple:
A smaller list of people worth replying to is more valuable than a full inbox of "maybe relevant" leads.
The old system tried too hard to complete the quota.
The new system tries to protect the user's attention.
That may produce fewer leads.
I think it will produce better conversations.
And for ZeroToUser, better conversations are the real product.
I write notes like this while building ZeroToUser and SpotAQ in public.