How do you tell that two listings from different sources are the same thing?
We pull job posts from a few dozen boards and company career pages, and each one is keyed on its source plus that source's own id. That works inside one source and does nothing across them: the same opening can arrive from the company's own page, an aggregator and a recruiter repost, each with a slightly different title and location line. Matching on company plus title looks obvious until you meet one company with two genuinely separate Backend Developer openings in two cities, next to one opening titled three different ways. We still haven't found a rule we trust, so for now we let duplicates leak through rather than risk merging real jobs away. If you run anything that aggregates listings, products or events from many places, which signal ended up being the one you trust for deciding two records are the same?
how many users have to ask before a feature request is real
early on every request feels urgent because there are so few users. one person asks for something twice and it starts to feel like the roadmap. but a loud user and a common need look the same when you only have a handful of people talking to you. my view is the request matters less than the problem under it, and if three people describe the same problem in different words thats worth more than one person asking for the exact feature five times. curious how others draw the line. do you have a number, a rule, or is it mostly gut until you have enough users to see patterns?
How do you identify the exact moment to introduce paywalls without killing product momentum?
We spent months building a loyal free user base who loved the core utility. But when we introduced paid tiers, conversion was much lower than we expected not because the value wasn't there but because users had already built daily habits around the free version.
Locking existing features behind a paywall creates friction, but keeping too much in the free tier slows down revenue growth.
For founders who have successfully monetized a free tier: how did you decide where to draw the line between free usage and paid conversion?
Do you think about the exit when you start a new project?
Some founders build to run the company for decades. Others already have an acquisition, a certain valuation, or even a type of buyer in mind.
I usually think more about building something that works first. But I can also see how the exit you want could change the company you build from day one.
We offered an "Unlimited" plan for $99/mo. One user cost us $1,200 in server bills.
When we launched our SaaS, we wanted a pricing model that was simple and appealing. We offered a $99/month "Unlimited" plan that allowed users to process as many files and API requests as they wanted. We thought it would attract power users and scale well.
For the first few months, it worked fine. Most users stayed well within reasonable limits. But then we noticed our AWS bill spiking.
I dug into the usage analytics and found one single account on the $99 plan that was processing over 50,000 API requests a day. They had essentially integrated our tool into their own high-traffic product and were using us as their backend infrastructure. Our cloud costs to support this one user were averaging $1,200 a month. We were literally paying $1,100 a month for the privilege of having them as a customer.
When I reached out to them to discuss upgrading to a usage-based tier, they were furious. "The plan says unlimited! I bought unlimited!" They refused to upgrade, and we had to make a tough decision: either eat the loss, or break our promise and throttle them.
Should you charge for a product before users have experienced its value?
I've been thinking about this while building my own software company.
You can spend months developing a product, researching the problem, testing features, and determining what you believe the solution is worth.
But there's a difference between what you believe your product is worth and what someone is willing to pay before they've experienced it.
How do you stop a throwaway project from turning into production code?
This is a huge trap with AI coding right now.
It's so easy to prompt a quick prototype together over a weekend but if it gains any traction you're suddenly stuck maintaining a codebase full of logic you barely understand.
I try to force myself to write clean architecture docs early if I think an app has any long-term potential. Otherwise, refactoring later takes twice as long as building it properly from scratch.
🚀 How Are AI Agents Affecting Product Discovery and Growth on Product Hunt?
AI agents are everywhere right now.
They help with launch copy, visuals, outreach, follow-ups basically most of what used to take days can now be done in hours.
But I keep thinking about something. Are AI agents actually improving product discovery on Product Hunt or are they just making launches look more polished?
Yes, AI speeds things up. You can test messaging faster, create better assets, prepare more efficiently.
How is your (tech) company investing in its community?
Building a community these days is no longer just about setting up a social media profile or starting a private group on Slack or Discord.
Companies need to differentiate themselves, gain a competitive advantage, and build relationships with clients/users on a more personal level.
3 silent failures in an AI app that threw no errors (and how I found them)
Three bugs from a solo-built AI app (Next.js, Supabase, Groq). None threw an error, and all of them looked fine in the logs.
Row-level security hid failed writes. Missing policies meant some writes quietly did nothing, and my code never checked. (With RLS on, an UPDATE that no policy allows touches zero rows and returns no error.) Fix: add the missing policies, and read important rows back to confirm the write happened.
A payment webhook returned 200 and upgraded nobody. The webhook arrives with no login cookie, so under RLS the update matched zero rows. Fix: use a server-side service client for that one route, verify a secret token first, and treat 0 rows updated as a failure, not a success.
Two code paths overwrote each other. Achievements were unlocked from three places with no coordination, so one request could undo another s write. Fix: a compare-and-swap write, which only updates the row if it still holds the value I read.
The common thread: a response with no error doesn t prove anything happened. Now I verify the write itself.
What s your go-to way to catch silent database failures?