← All posts

I looked for a product in other people's complaints. Here's what that misses.

7 min read

I didn't brainstorm this product. I scraped for it, because I don't trust my own ideas about what other people need.

The reasoning was narrow: an idea I invent is a guess about demand, but a person complaining that their software costs too much is demand that has already been proven — they are paying, they resent it, and they are looking for somewhere to go. That's a much better starting position than a hunch.

Here's what the scan actually returned, including the part that didn't work.

The obvious approach failed first

I started where everyone starts: searching for people asking for a tool. A script pulled 657 posts from 15 product and small-business subreddits over roughly a 75-day window, filtered down to 131 genuine tool-demand posts, of which about ten were strong, explicit “is there a tool that does X?” asks.

Then I did the step that saved me a month: instead of picking one, I pulled the comments on the top fifteen threads to see whether the need was actually unmet.

Fourteen of the fifteen were dead ends.

The pattern is structural, and once you see it you can't unsee it: the moment someone asks publicly whether a tool exists, other people answer with the tools that exist. A public request for a tool is evidence of a crowded category, not an empty one. The demand is real and already served.

So the whole vein was wrong. I stopped mining requests and started mining complaints.

Complaints are the better signal

A second script searched the same kind of communities for price and cancellation language — “too expensive”, “cancelling”, “cheaper alternative to”. It pulled 302 complaint posts before Reddit's rate limit stopped it.

Counting which products people were complaining about:

Shopify 22 · Stripe 19 · Make 15 · QuickBooks 15
Canva 6 · WordPress 6 · Linktree 5 · Squarespace 4
Later 4 · Klaviyo 3 · Mailchimp 3 · Semrush 2

Now the honest part, because this is where a tidier version of the story would cheat: Semrush was mentioned twice. It was near the bottom. Shopify was mentioned eleven times more often.

I did not pick the biggest number, and mention count turned out to be close to useless on its own. What mattered was engagement on individual threads — a single “I do not recommend Semrush” post had 63 comments under it, and the Klaviyo complaints drew 55 and 37. That's not idle grumbling. That's a room full of people comparing escape routes.

The trap in the complaint list

Every product people churn from is a big product. That's usually why it's expensive. So “build a cheaper one” is a trap:

Which produced the rule the whole product came out of:

Don't rebuild the giant. Extract the one feature people are overpaying for, and sell that on its own, cheap.

Run the complaint list through that filter and most entries fall away. Klaviyo still needs email infrastructure even if you only build abandoned-cart mails. Linktree's one feature has free clones already. Buffer's one feature needs a separate OAuth integration per platform.

Semrush passed. Strip away keyword research, backlinks, site audits and content tooling, and underneath is “tell me where my site ranks on Google for these keywords.” That is a small, well-defined, solo-buildable thing. And the complaint was consistently about exactly that mismatch: its Pro tier is $139.95 a month, and the people complaining were using one feature of it.

The one comment that changed my mind about the price

Buried in the complaint set was a post that did more for my confidence than the whole scoring exercise. A freelance SEO with a handful of clients wrote that rank trackers were expensive for no reason, and that they'd been thinking about building their own — fifty keywords for five dollars.

They weren't describing my product. They had never heard of it. They were describing the same product, at the same price, from the other side of the problem — as the thing they would have to build because it didn't appear to exist.

That distinction is worth sitting with. A complaint tells you something is resented. Somebody preparing to write software to escape a subscription tells you how much. It's also the only kind of price validation I'd trust from a stranger, because they arrived at the number without being asked, and they had no reason to flatter anyone.

It came with an uncomfortable note attached, which I'll take as the price of listening: they said fifty keywords for five dollars. My $5 tier is twenty-five. A freelancer with three or four clients fills that on day one, which means my cheap plan probably isn't the freelancer plan at all — the next one up is, at twice the price they had in mind. One data point isn't a mandate. It is, however, the only external number I have, and it doesn't agree with me.

What the method can't tell you

This is the part I'd want to read in someone else's version of this post, so: the method has a hard limit, and I found it later.

Months after the first scan, I ran a fresh one — around 500 posts — looking for live threads from exactly the person I'd built for: someone with one site who wants cheap organic Google rank tracking. Clean matches were rare. The fresh demand had drifted somewhere else: a lot of it was local rank tracking, which is a different product, and a growing share was AI-visibility — whether an LLM recommends you — which is a different product again. A third slice was people arguing about whether rank trackers are accurate at all.

A cross-check against Hacker News was similarly humbling. The demand there skewed to developer tooling and launches, which told me my audience wasn't on HN — useful, but not the answer I wanted.

So here is what complaint mining actually gives you, stated precisely:

Those are different questions, and I initially read the first as an answer to the second. A price complaint proves someone would rather pay less. It does not prove there is a queue of them forming behind him.

I'd still start this way. It's cheap, it's a few hundred lines of scripting, and it kills bad ideas before you write any product code — which is the only phase where killing an idea is free. Just don't mistake a wedge for a market. You find the wedge by scraping. You find the market by shipping and counting.

Written while building RankJot — Google rank tracking that emails you when your positions move. There's a free checker with no signup if you just want a one-off look.