I love this post - it gets across a fundamental concept that pretty much anyone can understand, which is non-obvious.
What I love, that other's here seem to grumble about, is that he's not using any specific terminolgy. He doesn't mention 'churn', he doesn't mention 'geometric' series, he only has one '=' in the whole text.
You can print out this article (ignoring the python bit) take this down to your local baker/cafe/<insert non-tech business owner> that's full of stupid marketing billboards but sucks at customer service and show it to them. There's a good chance they'll understand.
Frankly I liked it because I could easily follow his logic without slowing my reading. There was parity between my understanding speed vs my reading speed.
Plus no-one here seems to be grumbling that he's wrong, just that they can say it in a different way.
Local business owners are hounded by marketing companies everyday promising the moon. Marketing seems like the great Panacea, but no one is reminding them that going over the top with current customers could potentially create a higher return.
$250/mo on Yelp ads gets a few dozen eyeballs on the business.
$250 in free product every month to regular customers creates Fanatics who tell ever, and could possibly get just as many of their peers eyeballs with a FB/IG post about their experience.
A lot of people forget the basics because it's not being sold.
Sure, but still, I don't see why you would need to look at asymptotes and convergence. It's enough to look at individual customers and ask the baker if he thinks it's easier to attract a new client than to stop an existing one from leaving.
It's fairly trivial to find out where I work during the day but we are representative of the recruitment industry and so much effort is put into attracting and sourcing candidates (generally via expensive job boards). Because the cost tends to be less visible on the ground, there is no realisation around the cost/benefit ratio when compared to keeping existing candidates happy and using them.
People understand that saving is generally a good idea, but usually have a revelation of sorts when you show them the math of compound interest, and become more inclined towards saving. Introducing the concept of a steady-state customer base that's affected by new customers from marketing as well as by retention rate might have a similar effect.
This makes a 5% increase in prospects, conversion rate, or price cause a 5% increase to LTV (and, eventually, to the enterprise value of the company). A 5% decrease in churn (measured against one's current churn rate, e.g., 5% -> 4.75%) has a slightly more than 5% impact to LTV / enterprise value.
So many decisions about running a SaaS company fall directly out of this equation. Competent SaaS operators memorize it or, for less mathematically oriented operators, can at least summarize the relationships implied.
If you're measuring the LTV of your pipeline, then yes.
The challenge is measuring duration (retention length) -- especially early on when campaigns are typically run single threaded and have an outsized impact on LTV of individual cohorts. I.e. My company is 18 months old - what's my LTV?
One approach is factoring in the period-churn-rate (if measuring MRR then considering monthly churn). But again, modeling isn't always super defensible.
Survival modeling is exactly what's needed for these situations. It allows you to (a) consider censored data (i.e., active customers who you know stay for at least X months) and, (b) use flexible survival distributions beyond the standard exponential distribution assumed in the typical monthly churn rate calculations.
Source: Run a data science company and we work on a lot of customer lifecycle modeling projects with companies much younger than yours.
I've done a bit of survival modeling, but my purpose was to understand retention across cohorts with certain attributes (typically, sign-up date, though occasionally campaign).
I'm interesting in how you've used this to model churn. Is there a blog post or resource you recommend to learn more about this?
spoken like a true startup founder. =) there is a lot to think about in a startup but the most important part is tracking how attractive your offering (not just the product, but also messaging and other value adds) is to your target market. i.e., nearly every startup is primarily a marketing problem, not a technology problem.
Yeah, that's the Churn Equation. The thing us SaaS folks spend most of our time worrying about (whether we know it or not).
Given a constant influx of potential customers at a known conversion rate, along with a known churn rate of existing customers, you can find an exact dollar figure that you will eventually plateau at.
It sucks. Especially when you're starting out because the "In" side of the equation is small and there's not much you can do about it.
Fortunately, as the article points out, there are a few knobs you can tweak. Churn is a nice one, since all it takes is a good product. Conversion is harder, because it involves dark magic like sales and psychology and web design skills.
Once you get it figured out, though, there's another formula you can use to determine how much you're allowed to spend to pour one new user into the top of your Trial funnel. If you can get that up to a level that justifies advertising, you can open the valve as far as your budget allows and start moving that plateau point upwards.
EDIT: I've been writing about this stuff lately, if anybody else likes geeking out on it:
I was a customer of Candy Japan for a while (3 months) and I really liked it. The candy selection was very interesting and fun. A while back I tried a competitor and their selection was very boring and the candy they sent didn't feel very special.
The reason I cancelled with Candy Japan was that I found it a lot of money for candy. Not so much a lot of money for the service. Also, candy is just unhealthy, so I am probably better of spending that amount on fruit and vegetables.
Overall the candy selection is what would make me choose Candy Japan over a competitor if I would ever choose a candy service again or recommend one to friends.
I totally agree. I would 100% resubscribe if it had an option for once every 3 months. I like it as a rare treat, I just wouldn't want it twice a month. I subscribed on two different occasions, but only for one month at a time. I'd hate to have to keep subscribing and cancelling several times a year.
Totally agree. Subscribed for a few months and the candy was amazing. We ended up with a cupboard full though as apparently we just don't eat that much candy! I had to cancel the subscription but not because of any issue with the product selection itself or the customer service.
Sounds like you would be a good customer for 'graze.com' - they make sure their customers recommend to friends and give freebies out to keep you hooked in:
Haha, thanks for the recommendation. However, I have no problems with buying the things I like or need. I don't need overpriced services to provide me with basic groceries at steep margins. There just aren't any Japanese candy stores near here, hence Candy Japan.
I did at some point, but then I am just distributing the diabetes to others and paying for it myself. So at the end having a $30/month subscription for candy is just not worth it to me.
I think this is highly relevant for the early stages of a product: Do you focus on retention or marketing? I'm developing a cross-platform file manager [1]. My current problem is that even tough 20 people download it every day, only 2 use it more than once in the first week. Existing users ask me for 1000s of features. But the real problem I need to overcome for growth is that I lose so many first-time users. That's a problem with onboarding, not with features. I blogged about this [2].
Retention! Always focus on retention. If people keep using your product then you have product market fit. If they keep leaving - you have an uphill marketing battle.
Another consideration is getting customers to come back is vastly easier sell when they liked your product. So, you retention over years can end up significantly longer than the average subscription length.
Question: do you send new users an onboarding drip email sequence?
This makes a huge difference in driving them to actively use it and upgrade later.
Sequence:
1. Welcome email.
2 Educate them about the value of one major feature with screenshot(s) (what makes it better/easier than similar products).
3. Educate them about the value of another major feature with screenshot(s).
4. (Specific to your product since tons of existing users request features): Send an email listing the top 3 most frequently requested features and ask them to vote for (click on) one. This email increases user investment in your product and subtly reminds them about it.
5. Ask them to upgrade (buy a licence in your case).
Tools you can use to send this sequence: ActiveCampaign, ConvertKit, MailerLite
Don't worry about possibly annoying some users with the onboarding sequence. The increase in number of users you'll convert will greatly outweigh the number you may potentially annoy (and they can 1-click unsubscribe anyway).
Thank you for the good suggestion. I know it's a common practice for SaaS businesses. I'm not doing it (yet) because mine is a desktop app, which doesn't require you to leave your email address to get access to. In other words, I can't send out a drip sequence because I don't have my users' email addresses. In my niche, asking the user to supply his email address just so he can download is very uncommon. I'm afraid that it will annoy users. I am trying with a tutorial [1] first. If that doesn't work, asking for email and sending out a drip sequence as per your sequence is still an option.
You'll have to see whether you're attracting the right first time users. Are they a fit for your product or are they just trying it out because they are curious?
Your existing users can provide you with great insight on what value you're bringing to them. You're getting requests for 1000s of features but which ones are the ones that really matter? Which one can make the most impact at the current moment? It might be a case of just prioritizing the top 20 and validate their words before building.
> You'll have to see whether you're attracting the right first time users.
Also an interesting point. You're right. Maybe they are just curious. But even then, I might still try to convert them.
My users can vote on features [1]. I know what the top 20 are. The problem is, the highest ones are difficult to implement. But as I said, I believe I first need to (still) improve onboarding.
Your issue is slightly different though. Candy Japan is a niche product which has been around for a while but is a subscription model. Where as your application is a new product but in a crowded market where almost all of the alternatives are free. So getting a high conversion is always going to be a tough sell.
"New" is relative - 15 months. Regarding your other points: The situation is actually very similar to Sublime Text (which I aspire to): Yes the market is crowded but I see potential for innovation. And paid is the only sustainable way I see to make the project happen [1]. It's free to evaluate forever, just like ST.
What in particular do you see as most innovative in your fman at the moment, or is that set for future developments.
I'm curious too - I noticed that the Linux version is 20MB, seems relatively heavy, and I'm wondering why so much larger than the Win version?
Most of the enhancement requests seem to be things [my preferred twin-pane fm] Krusader does (nix only I think, though you can put KDE over Windows it's not straightforward [or wasn't last I tried]). On Windows in the past I've used Total Commander.
FWIW on the download page I think I'd ditch the link to "don't be a free user" and just put something like "please purchase a license or donate to allow us to make fman even better for you.". The linked page is messy and doesn't give a clear message to those not familiar with the issues at hand IMO.
In the onboarding you stress to use the keyboard but the dialogs have to be next/close with the mouse; I hit enter assuming they were defaulted and it instead changed directory.
Also, why ctrl+p and not something like <spacebar> or just p? or D and C for directory and command? Is that following a pattern from somewhere else, isn't ctrl+p usually print. Ctrl+l which is browser default for entering URL would make more sense to me.
Last thing, ctrl+shift+p dialog puts too much space between command and shortcut making it a bit hard to track; if you want to keep the same width as the directory pop-up I'd recommend centre aligning (right align left column, and vice-versa).
Installing plugins one at a time gets slow quickly, especially as almost all functions appear to be plugins. On restarting it says "press A button" it means "click A button on screen", I pressed <A> and nothing happened.
HTH. For me it's too minimal at install and I don't like dark backgrounds. Good job though: it's fast and minimal in line with your "zen".
> The Linux version is 20MB, seems relatively heavy
I don't think 20 MB is heavy and don't think it makes sense to spend time on reducing this size. It's much more important for the project to focus on eg. better onboarding and/or still missing basic features.
The Win version is an online installer. That's why it's 1 MB.
> What in particular do you see as most innovative in fman
Integration of features from Sublime Text, like Ctrl+P for quickly jumping to directories or the Command Palette (Ctrl+Shift+P) for quickly discovering and invoking all features.
> I hit enter assuming they were defaulted and it instead changed directory.
That's very good feedback. You're right I should change this. Thanks!
> Also, why ctrl+p
That's the shortcut which Sublime Text uses.
> Installing plugins one at a time gets slow quickly
Sure but you don't have to do it very often. You're right it would be useful to be able to install several plugins at once; But there are bigger fish to fry atm.
> On restarting it says "press A button" [...] I pressed <A> and nothing happened.
It purposely requires you to use the mouse to make the nag screen a little more annoying, so you will get a license [1]
Then it's not FileManager it's SublimeFileManager and that's who/how you should target. Or add more "modes" (ie: keystroke groups) "do you think of this like web-browsers (ctrl-l) or sublime (ctrl-p) or bash (ctrl-t) or midnight commander (ctrl-??)"
Focus on retention. My app[1] is sticky in that once you're set up it's a bit of hassle to leave and even then you'd only likely do it at one point during the year. This makes long-term retention fairly easy and worth some up front time investment in accommodating specific requests.
As an example, one new customer wanted a general "notes" page for each employee. Not hard to build, other customers might find it useful and they now have c. 250 employees on their account. Moving them to a different service is not simple.
Interestingly, my longest-serving customer is also one of my first. They've been with me nearly six years. My LTV averages around £550 because of that stickiness.
Thanks. Not quite enough for full-time and to be honest I've not invested the time or money in acquisition of customers. Looking to change that this year. Have tried Google ads previously with not much success so looking to target some HR-related sites to drive more valuable traffic.
What about a Kickstarter for popular feature requests? You could even throw in a complimentary license for sponsors who haven't purchased a license already.
I'm constantly amazed at the lengths some coders will go to in order to avoid doing a couple of lines of algebra. Have seen people code up complicated Monte Carlo simulations, with all the attendant estimation noise, when basic stats and algebra gives the exact answer, sometimes even as a one-liner.
Serious question: Is it simply a strong math phobia, or have people neglected the skill for so long that they've actually forgotten middle school level maths?
I think it's just lack of basic algebra skills. If you have never been taught to think about math in an abstract way, you will naturally approach problems this way instead.
In Ancient Egypt for example when they needed to explain things like the Pythagorean theorem they would give examples, because there was no concept of abstract variables yet. I think this is similar.
In the same way, many people are comfortable working with vectors, transforming them with matrices etc but they have never been taught to think of transforms in an abstract way. So if they want to check if a certain matrix actually performs the transformation they want, they apply it to a bunch of random vectors to see if it's reasonable instead of just checking what it does to the base vectors, because they have no real concept of linear transforms, and only vague ideas about dimensionality and degrees of freedom.
To some extent it IS phobia, because if you just want to rotate a vector 90 degrees you don't really need concepts of orthonormal transformations so you might be reluctant to look at it that way, but if on the other hand abstract algebra is very natural then the abstraction is trivial to do, it just makes things easier.
I'd like to shift this question a bit - there are plenty of resources for "linear algebra for coders" (since they're in high-demand in gamedev circles). But what about recommended books for the abstract, general algebra? You know, all those rings and stuffs.
Visual Group Theory by Nathan Carter is a great introduction. There's a free preview online with the first few chapters, and you can find the whole thing for free through the usual channels.
Abstract algebra is a massive field, the vast majority of which has little applicability to writing code, so it's hard to know what to recommend without knowing why you want to learn it.
If you're ready to get very serious with mathematics, I like Algebra by Mac Lane and Birkhoff. (Note that this is a different book from A Survey of Modern Algebra by the same authors, which I'm sure is okay, but... a different book.)
If you're not ready to get very serious with mathematics... well, then why do you want to learn algebra?
It may have little direct application to writing code but abstract algebra will definitely make you a better person... And like so many other things, it helps you indirectly to tackle problems in different ways and see them in a new light. Just being the most efficient coder possible is a pretty sad goal.
> Just being the most efficient coder possible is a pretty sad goal.
Well, I agree, but life is short. Why learn algebra rather than complex analysis or probability theory or functional analysis or differential geometry or mathematical logic or general relativity or quantum mechanics or any one of dozens of other topics from physics or mathematics that will almost surely seem more interesting and fun to a non-mathematician? (Not to mention non-mathematical topics...)
I think group theory is both very useful and interesting. There’s no need to get into Galois theory but the basics are definitely applicable in everyday life.
I agree there are tons of other things that people should study, like basic linguistics, relativity, quantum physics, optics etc. Geometry should be on top of the list, for as Plato said “let no one ignorant of geometry enter”.
But I don’t think time is an issue really, if you just spend an hour or so each evening reading you csn quickly get a basic understanding of lots of topics in not thst many years.
Abstract algebra is an old field so plenty of good options.I would recommend Abstract Algebra by Dummit and Foote. Clear theory, great examples and good writing:
I like Fraleigh's "Abstract Algebra", though some chapters can be a bit esoteric. Everyone should know the basics of group theory and the abstract vector notion.
I think it's that they don't have enough confidence in their mathematical ability to get to the correct answer. Programming lets you experiment and play around with the numbers more easily so you can convince yourself whether what you're doing is correct.
I know I've had a few situations where the "play around with the numbers" part happened first. Usually once the actual goal was known the algebra (or similar details) would be obvious... but sometimes the inefficient/toy implementation was good enough.
Sometimes half-assed is ok, if it's the the right half of the ass.[1] The wrong half becomes yet another type of technical debt to be refactored "someday".
(this is not an excuse to ignore algebra or blindly assume the easiest/most-fun method is correct/useful/sane)
I think it has as much to do with how math is taught as anything: it's easy to learn how to solve an equation, but convincing yourself that you didn't screw up without looking at the back of the textbook is another thing entirely.
Of course there are a lot of softer tricks (like checking limiting cases) which would boost people's confidence, but for some reason this is only really taught in college level physics.
I've seen both banking and consulting analysts try to solve this exact problem in excel. The ambitious ones will use circular references and let excel find the fixed point.
In (good) excel, most formulas you write have a clear input => output relationship. Solving a system of equations (no matter how simple) breaks this relationship down. I suspect a similar thing happens when programming.
I've done this exact thing before -- writing a Monte Carlo simulation where stats and algebra would have given me the same answer. I think it was less phobia and more that I'm completely out of practice with math and stats by hand, but spend enough time in code to be comfortable with it.
I knew my code would give me the right answer and I lacked the confidence in math, where even if I did do it by hand, I would have written the code to check it. The less time-risk way won.
> Serious question: Is it simply a strong math phobia, or have people neglected the skill for so long that they've actually forgotten middle school level maths?
One bit of anecdata - I started using computers because I was terrible with maths and they did the numbers thing for me.
It's not negligence. The hardest part about the above calculation is, as usual is, the first step. This is true in general in mathematics; the calculations of a proof are similiar to that of another proof, but the tricks are what makes them difficult to figure out the first time. Setting leavers = joiners is a trick. The rest is just arithmetics.
I think the point here (that a lot of people might not even realize!) is that there's a steady state.
One could assume that "well if I keep on going my customer count will keep on going up... right?" This is showing that it won't.
Bonus pedantry: your proof just showed that _if_ there's a steady state, then that's the steady state. Turns out that you'll always get the steady state because of "maths" but if you replace 50% with 0% there's no fixed point.
That's a good point. I guess with a background in maths it's "obvious" that a system with constant in-flow and an out-flow proportional to the volume would approach equilibrium, but that perhaps isn't as obvious to others.
I guess it's perhaps also worth pointing out then that the same equilibrium is reach from either side. If you start with a much higher volume of subscribers you'll reach the same equilibrium through attrition down to that number also.
A practical application of a geometric series [1].
Before my study of statistical distributions I once re-invented the Poisson distribution. It took one look of my physicist colleague to give everyone a good laugh. That was the moment I decided an economists needs more than linear models, the normal distribution and some non-parametric tests.
> For simplicity suppose 50% of people cancel every month. That means that if I do some clever marketing and manage to get 100 new people to join, then after a month 50 of those would be left. After another month, 25 of those would be left and so on.
> Because of this fall-off, even if you run a subscription business forever, you will not have infinite customers. Instead you reach a steady-state number.
You should also factor in returning business as well as new business. eg I'm a very happy customer but since this is a luxury it is often the first thing I cancel whenever money gets tighter. For example when moving house or, most recently, when my wife gives birth to our new baby girl. However when finances stabilize again Candy Japan is often one of the first luxuries I re-subscribe to again.
I'd also like to take this opportunity to say thank you for providing such a great service. The extra effort you put in with regards to the emailed descriptions of the candy as well as the mixture of normal and alternative snacks make it an absolute delight receiving the box.
Good post, but it does not consider conversion of former customers.
I develop a subscription service which launched in January and now has ~9,000 MAUs. This above metric accounts for ~10% of "new" subscribers each month, despite not yet making an effort (such as by sending reminder or "sorry" emails) to re-capture them.
The post does make a good point about retaining existing users, though.
I would like to add that we saw MAUs spike when redesigning the cancellation process to be more thankful and apologetic than spiteful. (Being a service for Japanese users, we included a little "thank you bow" animated character at the end of the process.)
One more point – our cancellations for the first days of the month often come close to outnumbering new users. We have concluded that the reason for this is that users 1. perform their financial housekeeping around this time, and 2. find a low-numbered charge date easier to remember.
Even if you run the business for a million years,
you will still only have 200 members.
If the churn rate is steady. It usually goes down over time though. Because long time customers have a lower likelihood of canceling.
In other words: The past does not equal the future. If you look back on your business and see a churn rate of X%, you can expect a lower churn rate in the future. Because the "survivors" will have a lower churn rate then new customers.
In e-commerce, this effect often is pretty significant. I know multiple online-shops that make the majority of their business with long time customers. Even though over 50% of new customers drop out after the first month.
Most annoying thing ever: instead of "Disable this feature", you get "No not now".
Stop forcing things down peoples throats. If you are making a great feature or product, it wil sell itself without a heavy hand. I've determined this is a way to tell who is struggling with innovation and who is leading the way.
"Churn rates are constant given age" is a model which is generally false-but-useful at SaaS companies, particularly for ages over 2~3 billing periods (months), while folks are basically on extended trialing before really deciding on adoption or not.
I agree, if you're going to the trouble of modelling then a stochastic matrix (markov chain) is a much better model. You can model it as a markov chain where each month there's a probability of moving to age + 1 or a probability of becoming 'ex-sub' (general population).
You also have a transition from 'general population' to 'month 1' to represent new sign-ups.
That has the advantage that you can still find the stationary distribution (steady-state) of the chain without simulation and it doesn't treat churn as being the same for each subscriber age. (It still has it time-homogeneous for a given age of course).
My companies current scenario is about 64% renewal rate from all years before but a 50% of that is from the year before current and 25% percent of that is from 2 years before current and so on and so on..
So how does all this differ if you're looking at renewal from year before and renewals from all time ?
Because you have to have a supply of lactase pills always readily available on you.
I often forget my pills and thus rely on lactose free products, e.g. Lactose free cappuccino... which by the way is much easier to get in Germany than in the states (for whatever reason)
I had the same issue, but I got a metal pill keychain holder from Ebay for $2 that helped a lot.
I also think this is quite different since it's an order process, where the candy naturally stays at home except when you bring it somewhere, and then it's not too hard to remember to also bring some enzymes, versus randomly discovering an appealing lactose product when you're out.
What I love, that other's here seem to grumble about, is that he's not using any specific terminolgy. He doesn't mention 'churn', he doesn't mention 'geometric' series, he only has one '=' in the whole text.
You can print out this article (ignoring the python bit) take this down to your local baker/cafe/<insert non-tech business owner> that's full of stupid marketing billboards but sucks at customer service and show it to them. There's a good chance they'll understand.
Frankly I liked it because I could easily follow his logic without slowing my reading. There was parity between my understanding speed vs my reading speed.
Plus no-one here seems to be grumbling that he's wrong, just that they can say it in a different way.