2
43 Comments

My listener found 289 invoicing complaints. I replied to zero.

Earlier this month I built a small listener for demand discovery. It watches five subreddits and seven Hacker News search phrases, matches five keyword groups, and stores every hit in a local SQLite file.

Week one gave me:

  • 12 sources
  • 289 keyword hits
  • 4 of 5 subreddits returning HTTP 429, even at an 8-second delay
  • 232 snippets truncated at 300 characters by a bug in my own fetcher
  • 9 conversations I could actually read
  • 0 where a reply from me wouldn't feel like a pitch

The zero is what caught my attention.

The usual advice is "go where the pain is." So I did. The listener found plenty of pain. One of the nine, paraphrased: a freelancer waiting on an unpaid invoice, client gone quiet, asking how long others wait before sending the second follow-up.

But finding someone with a problem isn't the same as having a good reason to jump into their conversation. I could have replied: "I built an offline invoicing tool that..." Technically relevant. Probably also exactly the kind of reply everyone has learned to ignore.

So I'm starting to think discovery isn't the scarce resource. Earned context is.

So here's what I'm going to try. For the next four weeks I'll answer useful questions in one community without mentioning my product. No links. No "I built this." No clever transition into a pitch. At the end I'll count one thing: how many of the conversations I participated in naturally led someone to ask what I was building.

Not traffic. Not impressions. Not profile views. Not upvotes. If the number is zero, I'll publish zero. I'll name the community in the week-four post, whichever way it lands.

Here's the part that makes the experiment uncomfortable for me: the same week my listener found 289 invoicing hits, my own Indie Hackers post about publishing my data format got zero comments. Maybe I don't have a discovery problem at all. Maybe I have a presence problem. I'm curious whether I'm overcorrecting.

I'm not naming my product in this post. Zero customers so far.

Two questions, and I'd especially like answers from people who've tested both sides:

  • What's your rule for mentioning your product in someone else's pain thread — and do counterexamples exist: drive-by replies that genuinely worked?
  • Has the community where you consistently helped people ever converted better than the community where you actively promoted yourself?

I'll post the week-four count here, whether it's zero or not.

on September 22, 2026
  1. 1

    Solid lesson. Which channel has worked best for you so far?

  2. 1

    The scarce resource may not be earned context yet. Right now it may be conversion: keyword hit → complete conversation → thread you can legitimately join.

    Your week-one numbers already show why. The listener produced 289 keyword hits, but 232 snippets were truncated to 300 characters and 4 of 5 subreddits returned HTTP 429. That left only 9 conversations you could actually read, and zero you felt you could answer without sounding like a pitch. So the current chain is not “289 pain signals and no courage to reply.” It is closer to “289 raw matches, 9 readable contexts, 0 proven eligible conversations.”

    That distinction changes the next experiment.

    Your four-week zero-mention plan is a good guardrail, but I would not make “someone asks what I’m building” the only success metric yet. That signal conflates several upstream failures: unreliable fetching, incomplete context, wrong community, weak answer, and legitimate reluctance to pitch. If the count is zero after four weeks, you may still not know which one caused it.

    Run a smaller 3-day conversion audit first.

    Pick one community. Repair or bypass the 429 and truncation problems. Take the next 20 keyword hits from the same sources and judge each one on four facts:

    1. Is the full conversation readable?
    2. Is there a specific, current problem—not just a keyword match?
    3. Could you write a genuinely useful reply without naming your product?
    4. Does the thread allow that kind of reply without violating its norms?

    Only publish replies for threads that pass all four. Then track three numbers: how many of the 20 became readable, how many became eligible, and how many published replies produced another person’s response.

    A useful decision line might be:

    • At least 12 of 20 complete conversations and 6 of 20 eligible threads means the source is workable; keep the same community and continue.
    • Fewer than 8 complete or fewer than 3 eligible means stop widening keywords. The source itself is too far from actionable conversations.
    • If replies get responses but nobody asks what you’re building, that still may be progress. It tests presence, not product demand. In those threads, ask what they have already tried or paid for—not as a pitch, but as diagnosis.

    After this audit, your four-week zero-mention test becomes much cleaner: you will know whether zero asks came from bad upstream context or from the absence of earned trust.

    These observations come only from what you publicly wrote. This is a scored diagnosis under uncertainty, not a verdict; validation changes confidence, not certainty, and the decision remains yours.

  3. 1

    Thanks for sharing the numbers, that makes it much easier to follow.

  4. 1

    Really solid approach — curious how you're thinking about this, what's been the hardest part to figure out so far?

  5. 1

    I’d make the no-pitch rule a checklist: can I answer the exact question without product context, have I already contributed in that community, and did they explicitly invite tools? If not, reply with a useful example or diagnostic and stop. I’ve found the best conversion signal is when someone asks a follow-up about the workflow, not when a profile gets a view.

    1. 1

      Your checklist is the gate this thread built, plus two checks I hadn't written down: prior contribution, and an explicit invite. I'd adopt both. They turn "no pitch" from mood into a list I can fail.

      "Reply with a useful example or diagnostic and stop" is the half I keep relearning. The stopping is what makes the example readable.

      On conversion signal: agreed, and it's in the log. A follow-up about the workflow now counts as a depth marker next to the binary count, not inside it. Profile views I don't count at all.

  6. 1

    Thanks for sharing the numbers, that makes it much easier to follow.

  7. 1

    Thanks for sharing the numbers, that makes it much easier to follow.

  8. 1

    Your four-week experiment is close to what I've been running across several communities for my own product, so a few field notes. On mentioning: my rule is the product gets named only when the OP's question is directly about the category I work in - then it is context, not a pitch. A drive-by that 'worked' has never been a reply with a link; it has been the reply where the OP asks a follow-up question. That is my equivalent of your count. On community-vs-promotion: the places where I just help have produced every real conversation so far; the one channel where I allowed anything close to promotion produced silence. One tweak to the experiment: four weeks of zero-mention is clean, but the someone-asks-what-you-build signal is rare and lumpy - also count OP follow-up questions, or you will discard signal that is not zero. What made you pick invoicing complaints as the pool to listen to?

    1. 1

      That's a useful distinction. I agree the product-question signal is rare and probably lumpy. That's why I'm keeping it as the primary count but adding the earlier signals alongside it.

      For week four I'll track OP follow-ups, conversation depth, and the reply itself. A useful conversation shouldn't disappear just because nobody asks what I'm building.

      I picked invoicing because it's the problem space I'm already working in. I deliberately didn't want to assume the keyword matches represented demand. The 289 turned out to be a good reminder of that.

  9. 1

    "Earned context" is the right framing, and your instinct on the zero replies is correct.

    My rule for mentioning a product in a pain thread: only when I can answer the question first, completely, without the product — and the product is a natural extension of the answer rather than the answer itself. "I built a tool that does this" is a pitch. "Here's how to think about follow-up timing, and then yes there are tools including mine that automate the ladder" is a contribution that happens to mention you exist. Most people get the order wrong.

    The counterexamples where drive-by replies worked were all people who had been building context for weeks before they dropped a product mention. The product mention wasn't the introduction — it was the fifth or sixth touchpoint. And in almost every case, they got asked first rather than inserting it.

    On your second question: yes, consistently. The communities where I'd helped people without pitching converted at a higher rate from a much lower volume of conversations. The mechanism is simple: if someone has watched you be helpful for weeks, they'll try your product partly because they believe it's likely good and partly because they feel like they know you. The promotional version of community work bypasses the relationship and gets measured in clicks, which is a worse proxy.

    Your four-week experiment is the right test. The count you want at week four isn't "how many asked about my product" — it's "how many conversations had a real back-and-forth where the other person sent more than one message." That's the signal. The product question is a lagging indicator of that.

    1. 1

      I like the "fifth or sixth touchpoint" distinction. That's probably the part I was missing when I framed this as simply "no product mention."

      It also fits what I'm trying to test: whether the product mention should be an introduction at all. If it only works after there's already some context, then the useful part of the experiment is really everything that happens before that point.

      I'm keeping the product-question count as the primary metric, but I'll rack the back-and-forth separately. That should show whether the conversation is actually going anywhere before the product ever comes up.

  10. 1

    Thanks for sharing the numbers, that makes it much easier to follow.

  11. 1

    That 232 truncated snippets number feels like an important split in the experiment. Right now “no reply felt earned” is mixed with “I couldn’t properly read the context.” I’d log those separately in week four, even if the main no-pitch count stays fixed. Otherwise the fetcher bug might look like a distribution lesson. The no-link/no-pitch rule still feels right though.

    1. 1

      Yes. I think that's an important separation.

      The 232 truncated snippets shouldn't be mixed with the judgment about whether a reply was earned. The fetcher bug tells me I failed to preserve context; it doesn't tell me anything about the quality of those conversations.

      So I'll keep the primary count unchanged, but log the context failure separately. Otherwise I'd risk turning my own bug into a lesson about the market.

      That's probably one of the main things I'm fixing in v2.

  12. 1

    Vlad, I run a version of your experiment in two communities, one comment a day, and I count something slightly different: how many authors reply at all, and how many of those replies correct me. I'm a QA engineer, so my comments are usually one specific thing I found in the poster's own product. The pattern after a few weeks is blunt. The ones that got an answer were always posts where the author had just shipped something and I had opened it before typing. The ones that got nothing were posts where I had an opinion but nothing specific to point at. So the variable may not be restraint versus promotion. It may be whether you did any work before you wrote.

    1. 1

      This is a good counter-hypothesis.

      I was initially thinking mostly about restraint versus promotion, but your example suggests a different variable: whether you actually did some work before writing.

      Opening the product, finding something specific, and responding to that is very different from finding a keyword match and having an opinion.

      I'm going to keep that distinction in mind, although I don't want to add another variable to the four-week experiment halfway through. It may be a good follow-up test once this one has a result.

      The "nothing specific to point at" part especially matches what I saw in my nine readable conversations.

  13. 1

    I think the four-week experiment will be more useful if you measure what happens after the first helpful reply, not just whether someone eventually asks about the product.

    A reply can create useful context even if nobody asks what you're building. For example, someone might clarify the problem, describe their current workaround, or come back with a more specific question.

    Those signals could tell you whether the community is actually giving you access to real problem conversations, even before there is any product interest.

    I’d probably track the conversation depth alongside the eventual product questions. That might also help separate a community with genuine problem discussion from one that simply has a lot of keyword matches.

    1. 1

      That's the layer my count misses, and it misses it in a specific direction: depth can prove access even when product interest never shows up.

      So I'll log three depth signals per thread I reply in: they clarify the problem, they describe a current workaround, or they come back
      with a sharper question. The primary count stays binary — I committed to that publicly and won't move it mid-experiment — but the depth column goes into the week-four post next to it.

      That also gives me the separation you named: a community where threads deepen is giving me real problem conversations; one where they don't is just keyword matches with people in them.

      From your side: which of those three signals has actually predicted real access for you — the workaround description or the return visit?

  14. 1

    The zero is a useful constraint. I’d make “no pitch” operational with a two-step gate: can I answer fully without mentioning a product, and did the person actually ask for a tool? Then track replies that lead to a follow-up or explicit permission before sharing anything—keeps “earned context” measurable.

    1. 1

      The two-step gate turns "no pitch" from an intention into a check I can fail, which is exactly what it needed. Adopting it verbatim: can I answer fully without naming a product, and did this person actually ask for a tool? Only a yes to the second makes sharing permissible at all — and even then only after a follow-up or explicit permission.

      That second gate also solves a quieter problem: it stops me from treating silence as an invitation. Nobody asked for a tool in any of the nine readable conversations, so nothing was shareable, and now I can say why in one sentence instead of vibes.

      Curious which half does the real work in your experience: has the "did they ask for a tool" gate ever flipped a reply from draft to sent, or does the first gate catch everything first?

  15. 1

    That “earned context” distinction rings true. I’d be tempted to make the experiment’s unit of learning the reply itself: log whether each response is purely helpful, asks a clarifying question, or includes a concrete next step, then compare which threads produce follow-up. Have you considered adding a small relevance/urgency score before reading the full context, so the listener helps with triage rather than just volume?

    1. 1

      Making the reply the unit of learning is the upgrade this experiment needed. I'll grade every reply at write time — purely helpful, clarifying question, or concrete next step — and compare which grade produces follow-up.

      On the relevance score: my listener already paid that tuition. It died at triage, not at reading — 232 of 289 snippets truncated by my own fetcher bug before any score could run. Version two scores first and fetches full context only above a threshold.

      One practical question: do you grade at write time or after, when you can see what landed? I'm leaning write time plus a one-line post-hoc note.

  16. 1

    Makes sense. Are you planning to charge for it, or keep it free for now?

    1. 1

      Both halves already exist. The Start tier is free to try — up to 5 clients and 5 projects a month, same encryption, same local file. Standard is $49 one-time when it ships: no subscription, no account, no per-seat math.

      The one-time price is the part I can't prove yet, and I said so in the post. Zero customers so far. I'll use Start-to-Standard conversion at 30 days as one of the first tests — published either way, but it's a test, not a promise.

      What made you ask — pricing for something you're building, or something you're buying?

  17. 1

    Interesting approach. What was the hardest part to get right?

  18. 1

    Nice progress. What is the next thing you are focusing on?

  19. 1

    Interesting take. Would you still recommend this approach to someone starting today?

  20. 1

    Nice work shipping it. What has been the biggest challenge since launch?

  21. 1

    Interesting. How are you measuring whether it is working?

  22. 1

    Helpful post. How did you get your first bit of traction?

  23. 1

    Nice progress. What is the next thing you are focusing on?

  24. 1

    Curious how long it took before you saw the first real results?

  25. 1

    For the four-week experiment, what would distinguish meaningful commercial signal from people simply appreciating your replies—an unsolicited product question, a qualified conversation, or a request to test it?

    1. 1

      The count stays as the post defines it: an unsolicited product question. It's the only event in your list I can't manufacture.
      Appreciation I can earn with any decent reply; a question about the tool means someone moved from "good comment" to "what's behind it"
      without me pushing.

      The other two I record as tiers, next to the count, not inside it. A qualified conversation is substance without an ask; a request to test
      is the strongest of the three and currently unfulfillable, since the build isn't public until Early Access.

      And none of the three is commercial signal. Commercial signal is money, and money shows up in the cohort number after launch. This
      experiment measures whether earned context produces curiosity without prompting; the cohort measures whether the promise produces payment.
      Conflating them is the mistake you pushed back on in thread #3, so I won't rebuild it here.

      From your side of the hinge: which of the three would you accept as evidence before launch — and has your filter ever burned you by being
      too strict?

      1. 1

        That’s exactly where I’d be careful about giving a universal answer. Whether any of those signals count as useful evidence depends on the decision they’re being used to inform—and that’s where I’d want to examine the specific context rather than apply a fixed filter.

        1. 1

          Fair, and it sharpens the reporting rule rather than the metric. The week-four post will pair each layer with the decision it can inform. The binary count pairs with "does earned context produce curiosity without prompting." The depth column pairs with "does this community give access to real problem conversations." The tiers pair with "what would I accept as evidence before launch." No universal score, no fixed filter. Each number sits next to the choice it moves.

          For my own part, one qualified conversation could inform one decision: whether this community earns a second experiment cycle after October 20. Anything bigger waits for the cohort.

  26. 1

    289 complaints and zero replies is a wild gap between signal and action. What's been the blocker — bandwidth, or not being sure which ones are worth responding to?

    1. 1

      Mostly the second one.

      The 289 were keyword hits, not 289 good conversations. After the fetcher problems, I could actually read 9. The harder part was
      deciding whether I had something genuinely useful to add without turning the reply into a disguised pitch.

      So bandwidth wasn't the bottleneck. Knowing whether I had earned a reason to join the conversation was.

  27. 1

    Clear and practical, thanks. Did anything surprise you along the way?

    1. 1

      Yes — I expected the hard part to be finding enough pain. It turned out to be the opposite.

      Once I had actual conversations in front of me, the surprise was how hard it was to find a reply that was both useful and not a disguised
      pitch.

      And the other surprise: how much of the 289 disappeared once I fixed my own fetcher. The bottleneck was my code, not the market.

  28. 1

    Curious how long it took before you saw the first real results?

    1. 1

      Pretty quickly for the discovery part — the first run produced the 289 hits.

      But I wouldn't call that a real result yet. The interesting result was what happened after filtering: 9 conversations I could actually read, and zero where I felt good about replying.

      The commercial part hasn't happened yet. That's what the four-week experiment is supposed to test.