NHacker Next
  • new
  • past
  • show
  • ask
  • show
  • jobs
  • submit
Show HN: I created an algorithm to help me achieve Product-Market Fit (karma.fm)
koonsolo 1618 days ago [-]
For those who think the "40%+ of users would be highly disappointed if your product did not exist" is weird to test PMF, I recently found a better way: Your cohort retention curve should flat out somewhere above 0%.

I find the 40% rule weird because it highly depends on which people you include as "users". The flattening retention is way more acurate (vs survey question) and already gives more insight into what people are actually doing on your platform.

glaive123 1617 days ago [-]
It's not weird at all. It's also called the "Must Have" Metric which defines if your product is a Must Have vs. Nice-to-Have. Must Have means your users can't live without it. This is the first state of Product/Market Fit. If you have can find a scalable channel then you have the second stage of Product/Market Fit.

Not all products need or have retention. Some amazing businesses are 1-time or products people pay for but don't need to use or actively engage with.

e.g. Universities, Courses = 1-time use Stocks/Investments = buy them and don't touch them until you sell Insurance = buy it and don't touch it until you renew 1 yr later Plenty of other examples

But every product should be a "Must Have" if it's going to grow.

koonsolo 1617 days ago [-]
But you need 40% of your "users" to qualify.

If I take all registerd people on my platform as "users", I might end up at 0,1%. But if I define a user as someone who is currently using my product >1 month, I might end up at 60%.

You are correct that not all products can have retention. But if you do, the cohort is a better metric in my opinion.

fstopmick 1617 days ago [-]
Here's the source of that line of code:

https://www.karma.fm/p/hJibw7y/eric-migicovsky---how-to-talk...

The way I presented it is certainly weird, but Eric's articulation resonated with me. He also describes cohort retention iirc.

StavrosK 1617 days ago [-]
What's a cohort retention curve?
mygo 1617 days ago [-]
define a cohort.

Say, people who signed up during a given month = 12 cohorts per year

Or people who signed up during a given week = 52 cohorts per year

Then, given a set of cohorts, what percentage of people per cohort are retained over time?

StavrosK 1617 days ago [-]
Ah, so basically the GP is saying "your users should be sticking around"?
koonsolo 1617 days ago [-]
At some point, no more users should leave. For example after registration week 1, retain 60%, week 2 30%, week 3 10%, week 4 1%, week 5 0.1%. In that case, you don't have PMF. Unfortunately my numbers look a lot like this :,(

But assume week 4 has 10% and week 5 has 10%, that curve flattened out at 10%, and so you have product market fit.

mygo 1617 days ago [-]
> Unfortunately my numbers look a lot like this :,(

Fortunately you have a mathematical equation at your disposal that helps tell you this so that you can feel confident in trying something different and seeing how that effects PMF

Abishek_Muthian 1618 days ago [-]
Nice! it would be great if you are able to integrate a simple playground where getPainsIFeel() can be edited and the URL shared with anyone for them to enter `theirPains` for calculating Product-Market Fit.

Because getting people to share their problems, finding those who share the problem, getting those who would like build/have built solution for those problems in a single place is very hard. I've been trying to build a solution for it at needgap[1].

[1]: https://needgap.com

spondyl 1618 days ago [-]
On a slightly unrelated note, the firewall at my work tagged karma.fm as pornography. I opened this post on mobile and it clearly isn't that.
OJFord 1618 days ago [-]
It seems to be hosting user generated content that authors can get paid for by people that like it, so presumably it was flagged because of some content (not this particular page) that is, or at least is closer to being, pornography.
fstopmick 1618 days ago [-]
Well that's concerning... do you know if your work draws from a third-party service, and/or do you think it's possible that the "newness" of the site could be triggering that?
Abishek_Muthian 1618 days ago [-]
You should try whitelisting your site at major AV/Malware suite sites.

TREND MICRO Site Safety Center: https://global.sitesafety.trendmicro.com/

Sucuri Sitecheck: https://sitecheck.sucuri.net/

McAfee: https://trustedsource.org/

ComputerGuru 1618 days ago [-]
Probably a prior owner of the domain? One can easily imagine Karma as a racy name for a risqué service.
bildung 1618 days ago [-]
This is true more often than not, but in this case web.archive.org just shows a web radio as the previous owner.
tomcooks 1618 days ago [-]
Wow
turc1656 1617 days ago [-]
Am I the only one who finds it strange that "minority groups" is listed as a persona and that it's also associated with compatible traits, behaviors, and values?
war1025 1617 days ago [-]
Reading through the list, it seems like the author is aiming for an audience of "people like me", which isn't really the worst thing.

I glanced through the website homepage and didn't really understand what the site was all about, but I'm also not the target audience based on those criteria, so maybe that's okay.

turc1656 1617 days ago [-]
Yeah I thought it was a joke at first but then I saw the comments here and went back to re-evaluate. Looks more to me like it's a thought process that's laid out like code to help the author come up with ideas that solve problems and then evaluate the efficacy of those ideas based on a perceived market for it. Sort of like a checklist to run through in your mind but laid out as a coding workflow.

If you are familiar with the GTD method from David Allen, it reminds me of that a bit where "var product = new idea(getPainsIFeel());" and "innovateSolutions(painsIFeel, audiences, traitsBehaviorsValues);" is basically the equivalent of the weekly review and trigger list to generate things to do/improve. Similarly, thing like createValuableContent(), achieveProductMarketFit(), and synthesize() are analogous to the intermediary stages within GTD that drive the workflow and keep things on track to reach completion.

fstopmick 1617 days ago [-]
Thank you for introducing me to David Allen.
yowlingcat 1617 days ago [-]
This is cute and all but there is a sniff test here. Could you rephrase what you're turning into pseudocode back into prose, specifically into a memo, and have it still sound concrete or meaningful?

One thing that might jump out if you do that is that there's no mention of historical context or a competitive landscape. What are potential substitutes and comparable products that potential users use to do something that Karma could do a better job of solving? What is the history of that pain point? You touch upon this where you define what the boundaries are of whether karma can definitely help, and the enumeration of pains that you feel.

This is my humble gut opinion, but I get the sense that there is too much ground being covered there. Solutions to the problems of social isolation, social injustice in the workplace or the world at large, or lack of academic progression are pretty challenging unsolved spaces in and of themselves, and there are some pretty rough economic structures and systems in place that make things harder there. I'm almost certain you wouldn't solve any of those problems by trying to solve all of them at once, but I'm skeptical that you could solve any individual one in and of itself because even the individual ones are so challenging and work against gravitational forces.

There are many algorithms out there -- does this one produce useful work? And if it does, does it do so while effectively minimizing time-space complexity and utilizing data locality to achieve as much useful productivity as possible? If you don't get a satisfactory answer to those questions, I think the real algorithm to help you find a problem worth solving is one that isn't a complete stretch of an analogy.

It's finding subproblems, which is a crucial part of using recursion. Keep digging into smaller and smaller problems until you find something that is small enough to trivially solve that you truly do solve it, but it's aggregable enough to start putting together into a larger and larger solution. Otherwise, you might risk building a solution in search of a problem.

fstopmick 1618 days ago [-]
Some methods are NotYetImplemented but I'd be happy to expand upon any if anyone's curious! I don't even know what they should look like quite yet...
pgt 1618 days ago [-]
Can you define `collectiveOwnership()` and `selfActualize()`?
fstopmick 1618 days ago [-]
I can try; I have yet to nail down a concise articulation of these, but here's my swing at it:

collectiveOwnership() would describe the process of the product gradually going from a dictatorship (I am the one who controls the code and direction) to democracy (all participants control the code and direction) as the community guidelines, culture, automated moderation, human moderation, and technical details of decentralized ownership are ironed out. This way we protect ourselves against any minority of stakeholders from having the power to pull a Cambridge Analytica and sell out the users and their data, or allow advertisers to dictate what's acceptable and subject LGBTQ+ creators to accidental censorship a la YouTube. If we can recursively create organizations that follow this model, I'm hopeful that people will gradually begin to expect and demand socially sustainable business models to drive the products that they use.

selfActualize() would describe the process of becoming all that we can be, which is the focus of Abraham Maslow's Motivation and Personality. Carl Rogers and Kurt Goldstein also covered it, but I think Maslow's take is the most thought-provoking. If you want some notes on his work, I'd be happy to share (they're linked in the post I shared here). Here's a wiki on it for a concise take: https://en.wikipedia.org/wiki/Self-actualization

Sticking that at the end of the main() method was my way of saying that I'll feel prepared to be selfish as soon as I've had some impact on the bigger picture.

nyxtom 1617 days ago [-]
This is just a personal difference of philosophy but I feel obliged to make the case that it isn’t self actualization that is desirable necessarily. I make that case because you yourself have made the claim that it is selfish, that your priority should be to make the world a better place first (in so much that can be defined).

What can be grasped, judging from the premise that the world has suffering and pain, and at times that becomes too much to bear for people (in the form of tragedy), but also in the form of malevolence. Tragedy being something that can be strived to overcome because after all life has limitation and constraints - the goal is to live in spite of those constraints in an effort to make things better. Or rather, to live with your aim up rather than degenerate down into malevolence.

It isn’t self actualization that is concerned, it’s about aiming towards something better across many dimensions. Self actualization is a piece of it, but isn’t the whole point. You might say it begins with the self rather that out in the world. Reduce your own propensity for malevolence. Tell yourself the truth and take care of yourself to put yourself together so to speak. When you are capable enough that you have made habits out of this with ease, your capacity grows outward.

Maybe you are taking care of your home more, maybe you feel like you have enough of your cup filled that you can take care of the attention you give to your children or the kind of attention and education. Perhaps you have enough capacity that you might expand your center out into the community and volunteer, start a business, give back to open source, join a community, lead even.

It isn’t necessarily that these are things are good by the nature of emulation (I.e. a good person does these things) it is a matter of what you value. What you value is directly observable by the evidence of your attention to those dimensions of life.

fstopmick 1617 days ago [-]
I don't disagree with anything you've said... I'm just a lousy communicator. I should have been clearer: I don't think self-actualizing is selfish, in fact I think for most people, self-actualization requires you to be unselfish. Maybe I can revise my statement to clarify:

"Sticking that at the end of the main() method was my way of saying that I won't feel self-actualized until I've had some impact on the bigger picture."

improvementgeek 1617 days ago [-]
I humbly disagree with your first point. Yes, pursuing self-actualization may be selfish in some ways, but in other ways, it allows one to be better at making the world a better place. A primary focus of my own self-actualization journey is being an overall more effective person - procrastinating less, taking better care of myself, becoming more mindful, and so on. Doing those things will enable me to help others more efficiently and effectively.

I feel the rest of your comment, though interesting, wandered a bit from the original topic.

t0astbread 1617 days ago [-]
Hey! I know I'm late to the party but I just wanted to say that I think I share some of these feelings and I'm glad you shared this!
fstopmick 1617 days ago [-]
Thanks so much for taking a look! I'm happy it resonated :)
ketzo 1618 days ago [-]
No shame or anything — cool project. But this title sounds like a neural net was trained on satirical HN submission titles.
shoo 1618 days ago [-]
fstopmick 1618 days ago [-]
hahahahah

beep boop beep

clemParis 1617 days ago [-]
product-market fit can never be achieved using this algorithm, since a product is never found: in achieveProductMarketFit.ks, _uncertainty is set to 1.0. It needs to go below the 0.8 threshold in order to get out of the loop, but _uncertainty is never updated anywhere so it can never happen. So achieveProductMarketFit won't ever return any product. QED ;)
blondin 1618 days ago [-]
what language is that?
fstopmick 1618 days ago [-]
KarmaScript!

It's just a weird mashup of English, JS, and C# that I'm using to help me think

quickthrower2 1618 days ago [-]
A program language for people to follow is a great idea. I find that so much easier to read than if it were verbosely spun out into pages of a book. I especially like the product market fit function. I really know what that means now, and it’s quite a high bar. You basically need a booming unstoppable business by the sounds of it.
zebrafish 1617 days ago [-]
I will say, it would be helpful to see a call stack.
fstopmick 1617 days ago [-]
That's my resume!
blondin 1618 days ago [-]
thanks!
fstopmick 1618 days ago [-]
no problem lol
mikaelmello 1618 days ago [-]
This is really hard to read on mobile.
fstopmick 1617 days ago [-]
Thanks for the heads up; prioritizing mobile ux now.
Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact
Rendered at 00:57:59 GMT+0000 (Coordinated Universal Time) with Vercel.