flamme's k factor was 0.7. only 0.2 of it counted.
Flamme ran at a 0.7 K factor. For a consumer app that is a rare number. Most never cross 0.15, and the ones that do usually rented it with an incentive that stops working the month you switch it off.
But 0.5 of that 0.7 came from one partner inviting the other. That loop dies the instant it fires. The invited partner has one person to invite, and that person is already in the app. Only 0.2 came from the loop that actually reproduces itself.
I spent most of my time engineering the half that stops.
That is the mistake, and if you are building anything social or multiplayer, you are probably making it right now.
The line that sent me looking
I did not set out to measure K factor. I was reading Bryan Kim's a16z piece on benchmarking social apps, and one line stopped me cold: no amount of marketing dollars can fix a product, and if more than 10 to 20 percent of your users come from paid, you should rethink acquisition. Growth is meant to come from the product itself.
We had done 50 million-plus organic views on TikTok with zero paid spend. I was proud of that number until I read that line. Views are exposure, and exposure is rented. The moment you stop posting, it stops arriving.
I had no instrument for what the product did once a user was actually inside it. Not the algorithm, not the content, the product. K factor was that instrument, so I went and built the measurement.
The assumption that broke
When we built Flamme we assumed the math was free. It is an app for couples. Every signup brings a partner. One install, two users, a built-in K of at least 1 before we lifted a finger.
It did not happen. People signed up and never paired. A couples app where half the couples are a single person is not a couples app. It is a slow leak with a login screen.
The free K we had penciled in did not exist. Nobody hands you virality because your product technically involves two people. You still have to build the reason the second person shows up. So I went to find out exactly where the loop was breaking, and that is when the number split into two very different halves.
A K that terminates is a multiplier, not an engine
We fixed the pairing loop, and we fixed it well. The core of it was a daily question. Every day we asked one partner something small and warm, like one thing their partner did recently that made them smile. Answering it felt good, and it built the urge to share. Then we pinged the other partner: someone wants you to see what they said about you. That curiosity gap pulled the second partner in, hard.
It worked. It took us from a 0.1 K factor to 0.5. Five times the number, and it felt exactly like virality.
It stopped because it was always going to stop.
Partner A invites Partner B. B is now inside. B's only person to invite was A, and A is already here. The fan-out is one, and after that it is zero.
Double your installs and you double a terminal loop. You never compound it. Every invite mechanic that ends at a fixed number behaves this way. The team seat that invites one admin. The referral bonus you can claim once. Invite your partner. They lower your cost per user and then they flatline, and they flatline on purpose, because the ceiling is baked into the mechanic. The number looks like virality. It is a discount on acquisition wearing virality's clothes.
Founders fall for it because the number is high and the graph goes up. Nobody checks whether the graph can keep going once the current batch of users runs out of people to invite.
The only honest test is whether the invited user invites
There is one question that tells you whether you built a campaign or an engine.
Does the person you referred go on to refer someone else?
That is the referred-cohort K. I think of it as K2. If K2 is near zero, you do not have a viral product. You have a promotion that happens to be denominated in K, and it will inflate one cohort's number and then go quiet.
Dropbox is the canonical version done right. You invite someone to a shared folder for the extra storage. But the person you invited now has their own files, their own folders, their own reason to invite the next person. The loop does not terminate at you. Every new user is a fresh source of invites. That is a non-zero K2, and it is why a sub-1 K factor still built a company. The mechanic reproduces.
At Flamme the only part of our K with a real K2 was the 0.2 from couple to couple. A couple that arrived because of another couple could bring in a third. That is a chain. A chain of 0.2 is worth more than a spike of 0.5, because the 0.2 keeps going and the 0.5 is spent the second it lands.
Here is the part that stings. The 0.5 loop was heavily engineered, months of work, our best product minds on it. The 0.2 loop was bare bones, mostly a share button and some widgets. My compounding growth got the least attention I gave anything in the product, and it still beat the rest on the only axis that compounds.
What the compounding loop actually needs
The couple to couple loop worked, thinly, for one almost dumb reason. We made the shareable thing genuinely nice to look at. Widgets a couple could drop on their own feeds without cringing, that said something true about their relationship. That pushed Flamme in front of people who were never in the app, from inside the app, at no cost, with no ask attached.
That is the entire principle.
A compounding loop needs a reason the current user wants the next user in, sitting right next to the moment the product pays off, and it cannot ask them to sell anything.
The widget was not a referral. It was the user showing off something they were already proud of, and the reach came free on the back of it.
I never sat down and built the couple to couple chain the way I built partner pairing. It was an afterthought that happened to be the most valuable thing in the system. Every hour I spent widening a loop that terminates was an hour I did not spend on the loop that reproduces. If I built Flamme again, reversing that ratio is the first thing I would do.
Take your own K factor and cut it in two.
How much of it comes from a loop that terminates, a partner or a seat or a one-time bonus? And how much comes from a loop where the person you brought in has their own reason to bring in the next one?
Run that split honestly and most founders find the second number is zero. The whole K factor is a multiplier dressed as an engine, and it will carry them right up to the point where the current users run out of people to invite, and not one step further.
If that is you, more content and more spend will not save it. The thing that compounds was never built.
- An