PH Radar BI is now live.

by

What started as a Product Hunt companion has become a BI layer for launches.

Custom dashboards, momentum, opportunity radar, hunter analytics, repeat launches, race replay, maker responsiveness — and more.

Special thanks to and everyone in this forum whose feedback shaped a lot of this — repeat launches and the responsiveness signal came straight out of conversations here. (The responsiveness metric even caught a question I'd missed on my own launch.)

What's still missing? If you could add one metric to Product Hunt itself, what would it be?

42 views

Add a comment

Replies

Best

This is the right build, and the badges are clean. One trap to design around before it ships: absence of a detected update is not evidence of death.

Plenty of real products sit on a static marketing page with no blog, no changelog and no public commits, yet ship constantly behind a login. If the crawler reads silence as decay, your most heads down builders get punished for not performing in public. I would keep site is live as the hard binary and treat recent updates as a positive signal that adds confidence, never a negative one that revokes it. A live site with no visible changelog is unknown, not dead.

Two edge cases worth handling early. A domain or brand change reads as a dead link but is often a pivot that worked, so a rename is not a death. And a parked or expired domain should score differently from a 200 that still serves the product. Get those right and the 90 day survivor badge becomes a number people actually trust. Good to see it going in.

  Oshenye

This nails a bias I hadn't caught: silence isn't death. Redesigning around it—

Site-alive stays the hard binary (dead = truly unreachable or parked/expired

domain, not just "no changelog"). Recent updates become a positive-only signal:

they add confidence, never subtract it. A quiet SaaS behind a login gets

"Still Alive," not "presumed dead."

Also building in your two edge cases:

- Domain/brand change → tracked as "Rebranded," not death (follows redirects,

checks if the new domain still serves a real product)

- Parked/expired domains scored separately from an actual 200 serving the product

Three states now instead of two: Dead / Alive (unverified) / Actively Maintained.

This is the second time you've sharpened this feature before it shipped.

Appreciate the rigor—makes the badge something people can actually trust.

   Three states is the right shape for this. One more edge case worth stress testing: a crawler getting blocked by a WAF or aggressive bot protection will look identical to a genuinely dead site if you are reading response codes alone. That is the same bias we just fixed for silent updates, just showing up on the infrastructure side instead of the content side. Worth a distinct state, or at least a confidence flag, for could not verify due to blocking rather than folding that into Dead. Good shipping, will keep testing it against a few of mine.

 You called it — and we'd already hit this exact false positive without

realizing it was the same bias. When we tested the checker against

itself, it came back "403" and we tagged it dead — turns out

that was Cloudflare's bot challenge, not PH being down. Same silent-update

bias, just showing up on the infra layer instead of content, exactly like

you said.

Fixed: added a third state, "blocked" — distinct from "dead". Triggers on

403/429/503 combined with either a Cloudflare header (cf-ray) or known

challenge-page markers ("just a moment", "checking your browser",

"attention required", captcha pages, etc). A WAF block now reads as

"could not verify," never as "dead."

Tested it live against just now — correctly comes back

"blocked," not "dead." Would've shipped a real bug without this.

You've now caught two blind spots before either shipped. Appreciate the

adversarial testing — keep throwing it at yours, it's making this better

each round.

  That is a clean three state model. One more that will bite: client rendered sites. A raw fetch returns 200 with an almost empty shell, so alive holds, but any changelog or version check that reads the HTML finds nothing and the product looks frozen. Same false negative as the WAF case, one layer up. Cheapest guards are a rendered check on a sample, or reading a sitemap or feed last modified date instead of the page body. Get that in and the survival badge is genuinely trustworthy. Good work shipping it.

@m_m_carvalho Congrats on shipping it, and the thanks runs both ways. That back and forth sharpened how I think about what a launch actually signals.

One metric PH itself is missing: survival. Does the product still have a live site and a shipped update ninety days after launch day? Most launches are dead links within months, but the leaderboard treats day one as the whole story. A simple still alive at 90 days marker would tell people which launches became real products and which were launch day theatre. It is the one number that separates a milestone from a tombstone, and PH already holds the data to compute it.

  Oshenye

You nailed it. That's exactly the gap—PH celebrates day 1, but the real metric is day 90.

We're adding this to PH Radar PRO: Product Longevity

How it works:

- Automatic crawler checks if the product's site is still live

- Detects recent updates (changelog, blog, public commits, social activity)

- Badges: "Still Active", "90-day Survivor", "Recently Updated"

- Historical view: track which launches became real products vs which were theater

The insight you pointed out sharpens everything. Launch signals don't mean much

without the follow-through metric. A product that ships updates 90 days later

tells a different story than the rank ever could.

Thanks for the back-and-forth—it pushed us to build something that actually

separates signal from noise.

Launching in the next release.

Live on Chrome + Firefox — free to explore. Link: Happy to break down how any metric is computed.