Case study

How One Team Got Product of the Day Without Buying Upvotes

/11 min read

Most Product Hunt write-ups describe what the team posted. This one is about who they talked to, which turns out to be the part that decides the outcome. The short version: two outreach campaigns, one to strangers who had recently launched and one to their own contacts, neither of which asked anybody for an upvote. No votes were bought.

Whose story this is

This is Lucy's case study, from her write-up of the Jupid launch. We have written up the method in our own words because it deserves an English audience, and the results below are her account of them rather than something we measured. She is on Telegram and has open-sourced the two tools this ran on, linked further down.

The premise nobody likes

Organic reach on Product Hunt is thin. A launch is not a good product meeting an audience that decides on merit, it is a distribution exercise with a 24-hour deadline, and the ranking rewards momentum. Which leaves two honest routes: build a network, or buy one. Buying is boring and available, so the interesting question is whether the first route can be made systematic rather than left to luck.

What follows is that system. It is not clever. It is mostly data hygiene applied to people you already half-know, plus a willingness to email strangers without asking them for anything.

Part one: emailing strangers, and not mentioning votes

The first campaign targeted people who obviously understood Product Hunt, because they had just been through it. Every product launched on the platform in the previous year was scraped, along with each product's launch team, then enriched with email addresses.

The emails did not pitch and did not ask for support. They asked people to share what their launch was like, offered a short call with a founder, and collected advice, mistakes and links. That is the whole trick, and it is easy to underrate. Reply rates were far better than a vote request would have got, people came to calls, several sent over internal playbooks, and some made introductions.

Lucy's framing of why this works is the best part of her write-up. Her friend asked why on earth strangers would spend time on this. Her answer was to imagine getting an email from a real person asking whether they should buy a bar in Barcelona. If you owned a bar in Barcelona, would you really not tell them what you know? People are glad to help when the ask is human and honest about what it wants. The failure mode is not asking too much, it is asking in a way that is obviously automated and obviously about you.

The problem with volume

It worked, and then it ran into a wall. Most of the people replying had nearly empty Product Hunt profiles. Good contacts and useful conversations, but if part of the goal is support that carries weight inside the platform, a few thousand near-dormant accounts is not obviously it.

Finding strong profiles was harder than it sounds, because at the time Product Hunt published no leaderboard and no user directory. The workaround was to scrape the follower lists of profiles that had thousands of connections, read each profile's rating and keep the interesting ones. That took two days.

Then Product Hunt shipped its Kitty Points leaderboard mid-campaign, which is to say it published exactly the list that had just been reconstructed by hand. It was not a clean handover: old ratings were deleted and recalculated, the currency was renamed, and the parsers broke repeatedly. But within a couple of hours there was a fresh list and the outreach went out again, and the difference in who showed up to calls was immediate. The timing was cruel: this landed about two days before the launch.

One honest caveat, because it matters. The premise here is that a stronger account's support is worth more. Product Hunt's own position is that Kitty Points do not affect rankings or featuring, and we covered that disagreement in a separate piece on where their guidance and reality diverge. You do not need to resolve it to use the leaderboard, because it is independently the fastest way to tell an active account from a dead one.

Part two: your network is a database, not a crowd

Here is the normal version of launch day. The team wakes up and starts messaging everyone: Telegram, LinkedIn, old colleagues, investors, group chats. Some of those people have no Product Hunt account. Many have one that is years old and empty. Nobody knows which is which, so everyone gets the same message and most of the effort lands nowhere.

The alternative is to treat the network as data. Everything got exported into one place: LinkedIn connections, Telegram communities both professional and personal, the internal CRM of partners and investors, and assorted warm contacts. Then deduplicated, names normalised, and enriched. Telegram bios alone often yield a company name or a website, which is enough to start matching someone to their profiles elsewhere. The result was several thousand contacts that had previously existed only as scattered fragments.

The matching chain

Then the hard part, and the most reusable thing in this whole case study: working out which of those people actually has a Product Hunt account. There is no usable identifier. Emails are not exposed on the platform, you do not have a LinkedIn URL in advance, people write their names differently, handles vary between services, and any given name belongs to dozens of people. So the goal stops being "find the profile" and becomes "build a probabilistic match".

The four steps, in order of yield

  1. 1

    Try the handle as a URL

    Take the person's Telegram username and request producthunt.com/@thathandle directly. This works far more often than it has any right to, because when a handle is free people take the same one everywhere. It is the cheapest check available and it should always run first.

  2. 2

    Fall back to name search

    If the handle misses, search Product Hunt's user search for the exact name. When several people come back, prefer the one with more followers: low-activity profiles were usually either the wrong person or an account nobody has opened in years.

  3. 3

    Validate before you believe it

    Finding a candidate is not the same as matching it. Pull the profile's tagline, description, rating and any external links it exposes, then compare against what you already hold. If your record has one LinkedIn and the profile points at a different one, that is a bad match, not a lucky find.

  4. 4

    Score the confidence, then split the work

    Have a model assign a confidence score to each match so the obvious ones can be accepted automatically and only the ambiguous ones get looked at by a human. This is what makes several thousand contacts tractable rather than a week of squinting.

Accuracy came out around 90 to 95 percent, and the cost of the remaining errors is close to zero. The worst case is that somebody replies saying they do not have a Product Hunt account and wishes you luck. That asymmetry is worth noticing: it means you should tune this for coverage rather than precision.

What came out the other end was a ranked table of 250 people, ordered by Kitty Points. Not a list of everyone they knew, but a prioritised list of the people it was worth spending launch-day attention on.

Launch day gets boring, which is the point

With the list built, the remaining preparation was unglamorous. Assign an owner to each contact so nobody gets messaged twice by two different founders. Write the message variants in advance. Draft the comments that people could leave under the product, so that anyone willing to help is not staring at an empty box. Flag the handful of contacts valuable enough to deserve a personal, carefully written approach rather than a template.

So launch day was not a scramble to invent mobilisation under time pressure. It was working down a prepared list and writing to specific people. Some replied immediately. Some needed reminding who these people were, via a mutual contact. Some could not help directly but forwarded the launch into their own chats or posted about it. The result that looks like a clean leaderboard finish is assembled out of a few hundred small manual actions like these.

The timeline nobody budgets for

This started about a month before the launch, and Lucy's own assessment is that it was not enough. Roughly a week went into simply working out what was possible. The binding constraint is not the writing, it is infrastructure: cold email needs bought domains with warmed mailboxes, and warming takes about two weeks before you can send at any volume. Her team already ran cold outreach so the mailboxes existed. From a standing start, her recommendation is to begin thinking about it two months out and to be actively working six weeks out.

That two-week warmup is the single most useful number here, because it is a hard dependency that essentially no launch checklist mentions, and discovering it three weeks before launch means the channel is simply not available to you.

What it ran on

Scraping and agent browsing were done with Cursor plus Firecrawl, Parallel and Vercel's agent browser, falling back to Cursor's built-in browser on the hard cases. Product Hunt bans scrapers, so the practical advice is to keep several tools around rather than betting on one.

LinkedIn connections were exported with PhantomBuster. Email enrichment ran Findymail first and sent only the misses to Fullenrich, which queries several providers at once but costs more, so running them in that order rather than in parallel is a straightforward saving. Sending was Smartlead.

She has also published the two agent skills this depended on, one for parsing the Product Hunt leaderboard and one for checking whether profiles exist. Her own warning applies: they will not run out of the box, since they assume API keys and dependencies you will need to supply.

What we would take from this

Three things, in order of how transferable they are. First, the ask. An email requesting advice outperforms an email requesting support, and it leaves you with something durable if the launch goes badly. Second, the matching chain, which costs almost nothing and turns a contact list into a ranked one. Third, the timeline, because the two-week mailbox warmup quietly decides whether cold email is available to you at all.

And one caution. This was a substantial amount of engineering for a single day of attention. It clearly worked, and it produced contacts and partnerships that outlived the launch, which is the part that justifies it. But if you are weighing it up, weigh it against the alternative uses of two months. A launch is one day. The listings you build in the same period keep working afterwards, which is the argument we make in our piece on what a Product Hunt link is actually worth.

If you want the mechanics of the launch itself rather than the outreach around it, our walkthrough of the submission covers the form, the timing and launch-day rhythm.

FAQ

How far ahead should Product Hunt outreach start?

Six to eight weeks if you are starting from nothing, and the binding constraint is email infrastructure rather than the writing. Cold email needs bought domains and warmed mailboxes, and warming takes roughly two weeks on its own. Lucy started about a month before Jupid's launch and says that was too late: a week went on working out the constraints, and the best contacts arrived roughly two days before the launch.

Is cold outreach for a launch against Product Hunt's rules?

Asking people explicitly for upvotes is against the rules, and so is incentivising or buying them. Telling people you are launching is not. The distinction is what makes this approach work: the emails asked for launch advice and offered a call, and the conversations were genuinely about experience rather than votes. No votes were bought at any point in this campaign, which the author is explicit about.

How do you find out whether someone has a Product Hunt profile?

There is no clean identifier, so you build a probabilistic match. The single highest-yield trick is to try their handle from another network directly as a Product Hunt URL, because people reuse the same handle everywhere when it is free. If that misses, search by exact name and prefer the profile with more followers, then validate the candidate by pulling its tagline, bio and external links and cross-checking them against what you already know.

Does an upvote from a stronger account count for more?

Nobody outside Product Hunt knows, and Product Hunt's own position is that its Kitty Points do not influence rankings or featuring. The working assumption in this campaign was that account strength matters, which is why the outreach was prioritised by it. You do not have to settle that argument to use the same approach, because the leaderboard is independently useful as a way of telling live accounts from dormant ones, and a dormant account will not help you either way.

Does this work if you don't have much of a network?

The second half does not, since it depends on having contacts to match. The first half is exactly the part that does: the whole point of emailing people who recently launched is that they are strangers. Note what that outreach was actually for, though. It produced advice, calls and introductions, and some of those people later shared the launch. Treating it as a vote-harvesting channel is the version that fails.

Keep reading

The launch is one day. Listings keep working.

100+ directories you pick yourself, badges handled, proof for every listing. From $29, one-time.