Thinking about growth and profit

January 9, 2020

I posted a follow-up twitter thread with a final spreadsheet and learnings.

In my last post I showed my process for forecasting costs and profits for Actual based on various metrics. This helps me find much-needed answers to questions like "how much cost for acquiring users can I afford?"

I'm new to this and I learned a lot from my first attempt. There's still a lot to improve on though. This post goes into a few more things I've learned based on feedback and more research.

Some context: I launched Actual a year ago, but really only started focusing on growth since last September (4 months ago). It's a very early product and I'm a solo founder.

First, a couple takeaways from responses to my previous post:

  • Let's be more pessimistic about churn and say 10%.

  • Costs are simple in this model, but you want to all costs. I focus on Plaid costs because that will be the majority of my costs, but in a real forecast make sure to include everything like Stripe's fees. Marketing should be part of acquisition costs, but I'm doing any marketing right now.

  • A reader asked an interesting question: how many people signed up for a trial without ever running the app (and never costing anything)? I can't find the original response, but they said to expect almost half of trials to never do anything. I ran the numbers and so far on my 3 months of data, and:

    Holy crap. Out of 1025 total trials, only 508 actually ran the app and logged in which is 49%. This is a little skewed because I'm transitioning away from a free plan which doesn't track users, so some of those earlier trial conversions aren't tracked. But it's probably not far off.

    For simplicity, I'll assume all trial signups cost the same.

The cost of growth

Near the end of my last post, I asked the question "What does it take to hit $10k/month?" Cranking up growth surprised me because I found myself spending more and more money each month, spending $11,714 after 16 months with a 40% growth rate (link to spreadsheet):

It shouldn't have surprised me though. Growth costs money, and simply put: in this scenario, I'm spending more than I'm making. The problem is I'm assuming a 40% growth for all time and given the cost per trial, conversion rate, and pricing I can't sustain that.

All this money spent is really an investment. I may have spent a total of $42,746.16, but now I have 7834 subscribers. Let's guess at a customer lifetime of 12 months, at $7/months I will eventually make 7834 * 7 * 12 or $658,056. That's a 1539% return on investment.

In reality, constant 40% growth is not going to happen. Eventually growth will slow and I will start making a return. If it doesn't slow, that's amazing and you're onto something big. Here's what happens if I had 40% growth for 6 months, and then it slows down to 5%:

As growth slows, the costs I pay for trial users goes down and profits go up. If you wanted to, you could model growth as a curve over time and see how that effects cash flow. That would reflect reality since growth isn't constant.

If you wanted to focus on growth for a long time, you'd either need to take a loan/investment or tweak other parameters (like pricing, conversion, etc) to support it.

Annual plans are killer

I briefly looked at annual plans at the end of the last post. With an annual plan, the user pays for an entire year upfront. Obviously, this provides a lot more cash flow.

It's pretty incredible what this extra cash allows. Check out the (extremely hypothetical) 40% growth for 16 months (link to spreadsheet):

I never even lose money — I make $1012 the first month subscribers are charged. Sure, some of this money needs to be reserved to cover the operational costs of the user for a year, but it's most likely a small fraction of that.

In a reply to my previous post, one person mentioned that if you offer monthly and annual plans, it's common for 1/3 of your users to be on the annual plan. I'll leave the modeling of this mixture up to you, but it's not hard to guess that even with only a 1/3 you'd have a lot more freedom with cash flow.

Annual plans are killer.

Even with the annual plan, if you crank up growth you'll still end up in the negative after 16 months. It may take a growth rate of 398%, but it still happens!

The math nerd in me had to figure out just how growth and profits are related. Obviously there is an inflection point where growth overtakes costs, but how do we solve for that? You don't really need to understand all this, but at least try to understand why I had to redefine growth in the next section and then skip to the simpler math.

It would be nice to know, given acquisition cost, conversion rate, and pricing, just how much growth can I afford? A better way to put it: how much growth will I get if I reinvest all profits?

It took me a while to work through it. The first thing I did was add the ratio of total subscribers / new subscribers, and play with similar relationships, but none of those help much. It seemed clear that is is a relationship, i.e. I should be able to find a value based on growth.

Think about what we need: the cost needs to have a direct relationship with revenue. We need a formula that involves growth, and then we can solve for growth. Given all the other metrics, for what growth value X does revenue = cost?

Let's define revenue = cost in terms of growth. Right now, our growth variable defines growth in terms of new trials. First, let's figure out cost based on the number of trials. It's a compounding rate of growth, so we need to learn the equation for compounding interest. It's not that hard:

\(trials = 300 * growth^x\)

where x is the month. We start with 300 trials and it increases with growth (for 7% growth = 1.07). Now we can determine the amount of trials at any point in time given growth, which means we know the cost at any point in time. Just multiply it by conversion and trial cost. Given a $1/trial and a 6% conversion rate:

\(cost = 300 * growth^x * 1 * .06\)

This will give you the cost of trials at month x. Note: to keep things simple we're ignoring the "total cost" and using the cost of trials only. It wouldn't hard to also account for the cost of existing subscribers (which is much smaller) and I'll do that at the end.

Let's look at revenue. Revenue should be number of subscribers at the beginning of the month multiplied by the plan price. Seems simple, right? The problem is that the subscribers count currently is generated with the formula last_month_subscribers + new_subscribers, with new subscribers coming from the converted number of trials. There's no way to calculcate last_month_subscribers numerically: we can get the number of new subscribers last month, but not the total subscribers.

To get the total subscribers we have to sum the generated subscribers from each month. From there, we can finally generate revenue but multiplying the subscriber count by the prive (using $7 here):

\(revenue = \sum\limits_{i=1}^x 300 * growth^x * .06 * 7 \)

This says "for month 3, revenue = f(1) + f(2) + f(3)" where f is the formula above that generated the revenue.

But that doesn't take into subscriber churn. Churn is based on the previous month's subscribers… this is getting complicated fast. Even if I figure out the right revenue formula, I still have to solve for growth.

Redefining growth

It's way too complicated to measure growth by number of trials and calculate everything else from there. And there's no reason to do that! It's much better if we redefine growth.

Instead, define growth as current subscribers / previous subscribers, or the growth of subscribers over time. This makes the math far simpler.

We can easily calculate everything else from there. First, use the compounding formula again to determine the total number of subscribers (assuming we start with 15 subscribers):

\(subscribers = 15 * growth^{x-1}\)

The reason we use x - 1 is because we want to know the number of subscribers at the beginning of the month, so ignore the new subscribers of the current month. Revenue is easy (with $7/month price):

\(revenue = 15 * growth^{x-1} * 7\)

For cost, we need to know the number of new subscribers. We just subtract the difference between previous and current month:

\(new\_subscribers = 15 * growth^x - 15 * growth^{x-1}\)

Given the amount of new subscribers, we can generate the amount of trials that occurred by dividing the conversation rate.

\(trials = (15 * growth^x - 15 * growth^{x-1}) / .05\)

Now it's easy to calculate cost by multiplying trials by cost per trial ($1):

\(cost = (15 * growth^x - 15 * growth^{x-1}) / .05 * 1\)

We have both sides, now we need to solve the equation!

\(15 * growth^{x-1} * 7 = (15 * growth^x - 15 * growth^{x-1}) / .05 * 1\)

Solving for growth will give us a number that represents if we reinvested all revenue into growth. It's easier than it looks to solve: divide both sides by growth^x-1 and you reduce it into the far simpler:

\( 15 * 7 = (15 * x - 15) / 0.05 \)

Which gives us:

\( x = 1.35 \)

Bam! If I use a growth rate of 35%, cost equals revenue and profit is 0 each month. I'm reinvesting all revenue into growth. If growth were higher, I need money outside profit to cover it. This is confirmed by updating the spreadsheet to use subscriber growth, plugging in 35% growth and plotting it (link to spreadsheet):

You can't see the blue line which is costs because it's exactly equal to revenue. Notice how profit is flat the entire time. If you look at the spreadsheet, profits are all 0.

Bedtime epiphany

After I did all of this I couldn't shake the feeling that I over-complicated it. All I needed was the growth, which is the rate of the current month's subscribers to the previous month's. When I went to bed I pulled out my calculator and did a few more tests.

If I wanted growth, I need to solve something like this:

\( growth = \frac{subscribers + new\_subscribers}{subscribers} \)

If I know customer acquisition costs (CAC), can't I just plug that in and calculate the amount of new subscribers? I can figure out CAC based on conversion rate (5%) and the cost of each trial ($1):

\( CAC = 1 / .05 * 1 \)

1 / .05 gives us the amount of trials needed to convert one customer, and we multiply that by the trial cost. In this case the CAC is $20. Well… can't we just use that to figure out exactly how many new subscribers we will get be reinvesting all revenue?

\( new\_subscribers = \frac{revenue}{CAC} \)

Revenue is easy: just subscribers * 7 (since it's $7/month). Plugging it all in:

\( growth = \frac{subscribers + \frac{subscribers * 7}{1 / .05 * 1}}{subscribers} \)

And look, subscribers divides itself out! Leaving:

\( growth = 1 + \frac{7}{1 / .05 * 1} = 1.35 \)

Wow, that was a lot simpler! I'm sure you could transform both of my final equations into each other. This was a much more straight-forward approach though, and it took me a while to get there.

It would be really easy to include other costs as well. So far I've left out an estimated $0.75/month in Plaid costs per subscriber, but use subscribers * (7 - .75) in the equation for revenue and it'll account for that. If we account for total costs, the growth rate is 31.25%.

This leaves us with the final equation:

\( growth = 1 + \frac{price - subscriber\_cost}{1 / conversion\_rate * CAC } \)

Run the numbers

I didn't need to understand all that math; I could have just tweaked values in excel. But it's nice to know how it's all related, and to know the upper bound of growth given the other numbers. Here are some other scenarios:

  • If I only allow trials to connect a single account, trial costs become $0.50 instead of $1. Max growth rate: 62%
  • If conversion goes up to 8%, max growth rate is 50%

I could go on. You probably don't need to focus on this, it's just a good thing to understand. Note how churn rate isn't part of this because growth measures the amount of subscribers growth after churn. You would need some different equations to play with churn rate. (Edit: or just make a "real growth" variable that is growth - churn)

Or just throw some formulas into a spreadsheet and play with them until they look right.