
Show HN: I created an algorithm to help me achieve Product-Market Fit - eveFromKarmaFm
https://www.karma.fm/p/edveCfb/an-algorithm-for-karmas-product-market-fit
======
koonsolo
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
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
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.

------
Abishek_Muthian
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](https://needgap.com)

------
spondyl
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.

~~~
eveFromKarmaFm
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?

~~~
ComputerGuru
Probably a prior owner of the domain? One can easily imagine Karma as a racy
name for a risqué service.

~~~
bildung
This is true more often than not, but in this case web.archive.org just shows
a web radio as the previous owner.

------
turc1656
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
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
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.

~~~
eveFromKarmaFm
Thank you for introducing me to David Allen.

------
yowlingcat
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.

------
eveFromKarmaFm
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
Can you define `collectiveOwnership()` and `selfActualize()`?

~~~
eveFromKarmaFm
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](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
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.

~~~
eveFromKarmaFm
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."

------
t0astbread
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!

~~~
eveFromKarmaFm
Thanks so much for taking a look! I'm happy it resonated :)

------
ketzo
No shame or anything — cool project. But this title sounds like a neural net
was trained on satirical HN submission titles.

~~~
shoo
[http://oneweirdkerneltrick.com/](http://oneweirdkerneltrick.com/)

------
clemParis
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
what language is that?

~~~
eveFromKarmaFm
KarmaScript!

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

~~~
quickthrower2
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
I will say, it would be helpful to see a call stack.

~~~
eveFromKarmaFm
That's my resume!

------
mikaelmello
This is really hard to read on mobile.

~~~
eveFromKarmaFm
Thanks for the heads up; prioritizing mobile ux now.

