In Episode 556, Rob Walling chats with Adam McCrea about growing from zero to $300,000 in ARR over the course of three years as a Heroku add-on. Adam is still a single founder with no employees and up until joining the TinySeed accelerator in their Spring 2021 batch, has fully bootstrapped Rails Autoscale. Now, he’s working to grow the app, deal with platform risk, and launch pricing experiments.
The topics we cover
[03:30] Background before starting Rails Autoscale
[07:04] Getting to 100 active users
[09:30] Platform risk
[14:59] Working on Rails Autoscale as a side project
[20:54] Rails Autoscale vs. Heroku’s Autoscaler
[24:13] Free-trial to freemium experiment
Links from the show
If you have questions about starting or scaling a software business that you’d like for us to cover, please submit your question for an upcoming episode. We’d love to hear from you!
Rob: Welcome back to Startups for the Rest of Us, this is Episode 556. I’m Rob Walling. This week, I talked with Adam McCrea, the founder of Rails Autoscale about growing from $0 to $300,000 in ARR over the course of three years as a Heroku add-on.
For context, Rails Autoscale is an add-on that manages your dynos or your servers for you if you run Rails. It removes the guesswork and the babysitting typically involved in scaling your production web app. Frankly, everyone I know who uses Heroku and has Rails running on it, uses Rails Autoscale.
He’s built himself a great single founder business and he applied to TinySeed for our Spring 2021 batch that just started a couple of months ago, and he’s now part of the 18 companies that are in that batch. This is a great conversation.
What I enjoy about it is Adam is still a single founder with no employees. He really is in that mostly bootstrap mindset. Even though he’s part of TinySeed. He’s still thinking through how do I continue to grow this app, how to deal with the platform risk of being on Heroku, and even launching a freemium plan that he just launched last week. We cover all that and more in our conversation.
Before we dive into that, I got an email from someone I’m going to keep anonymous and he said, “Hi, Rob. We haven’t met but I turned on your podcast early on in my bootstrap life. Startups for the Rest of Us was my go-to listen on my morning works with my dog. It helped encourage me when I wasn’t sure we were moving fast enough. It helped me learn about traction and growth stages and lots of things. I love the transparency and honesty in the interviews.
I recently sold my $80,000 ARR SaaS company. That’s $80,000 annual recurring revenue for $1.6 million, split between me and my cofounder. We’re also both making a great salary and the post-acquisition journey has been a lot of fun and we still have a lot of autonomy. This journey has been truly life-changing for someone who always wanted to be an entrepreneur, but wasn’t sure it would happen.”
Then he runs through his timeframe starting in 2018, it’s only three years. “Thanks for doing what you do. This journey was something that changed my life forever and set me up in a big way for the future.” I love hearing stories like this. Thanks so much for writing in.
You can tell why I kept him anonymous, but this is why we do what we do. That’s the bottom line. Through this podcast, MicroConf, and TinySeed, and whatever other efforts that I’ve been working on for the past 15 or 20 years and whatever I’ll do for the next 10 or 20 years, these are the moments that make this all worth it. Thanks so much for writing in and thanks so much for being a listener. Let’s dive into my conversation with Adam McCrea of Rails Autoscale.
Adam, welcome to the show.
Adam: Hey, Rob. Thanks for having me.
Rob: From what I understand, you’ve listened to Startups for the Rest of Us for a few years, is that right?
Adam: Yeah, several years. I can’t remember if it was before I started building Rails Autoscale or after, but it’s been several years.
Rob: You came to MicroConf as well? So folks may have run into you in 2019, our last one in Vegas.
Adam: Yeah, 2019.
Rob: That’s cool. Thanks for coming on the show today. Folks heard in your intro that you’re the founder of Rails Autoscale. Just to give folks an idea, can you give us an idea of your team size and your MRR?
Adam: Right now, the team size is one. It’s just me. As of today, I literally hit my 500th customer and I’m just over $26,000 MRR.
Rob: Congratulations, man.
Rob: How does that feel because you say that out loud and we take it for what it is. It’s a SaaS app, we know a lot of them get to $26,000. When you first launched this in 2017, which is about four years ago, did you imagine you would build it to more than $300,000 a year in revenue as a single founder?
Adam: I imagined I would build it to that within a year or two. I didn’t have a very realistic vision of the future at that point.
Rob: How is that? Let me do a little bit of a timeline. You’re a Rails developer. In 2016 you’re working at a small company, they needed to move hosting providers to Heroku, and they needed something to autoscale their servers. You were looking for a side project, so how did this happen that you now own this code that you wrote in essence to help that small company?
Adam: We were a really tiny team. I led the effort for us to move to Heroku because I was tired of babysitting servers on our other hosting provider, and we were paying a ton for it as well. The move to Heroku was great. Our primary app was mostly just used during business hours, so we were paying a whole lot for server power that we didn’t need in the evenings and weekends. We tried out some of the autoscalers that were on the market at that time and just couldn’t get consistent reliable behavior. It was frustrating and they were hard to use.
It felt like something—like most developers often feel—like I could build a better version of this. I had an itch for a side project, so I asked my team and my manager, if I play with building an autoscaler as a side project, would you be cool with us trying it out? We were a really small thing, really casual, really informal, so everybody was just like, yeah sure, go for it.
Rob: That’s great, and you were able to get something in writing that in essence means you own the code?
Adam: Honestly, I didn’t take the necessary steps at that time. I was pretty naive about the whole thing. It wasn’t until a couple of years later when that company was acquired by another company that I was able to get all of that in writing. Fortunately, there were no issues at that time because luckily for me, the same people were there. They were still friends of mine, and we were able to get it all in writing at that point.
If I had to do it all over again, I would have gotten it in writing from the beginning, but I was a little naive at that time.
Rob: It’s good you’re able to do that. I’ve heard of founders who have to go back to old contractors who worked on their app and they need to get IP agreements retroactively. Usually, that goes fun, but sometimes you can’t find that person or other times that contractor will ask for money.
Adam: That sounds terrifying.
Rob: Yeah, I’ve definitely heard stories of that. Usually, this doesn’t come up unless you’re going to raise some money or you’re going to sell your company. That’s when somebody does some due diligence because if you just run it for 10 or 20 years or you shut it down, no one really notices. That’s the danger of not having that IP locked in. I’m glad they were able to do that. I know during TinySeed due diligence, that would have come up.
Adam: Yeah, and definitely during TinySeed due diligence is when I went and dug out that agreement that was signed a couple of years ago. I was just holding my breath making sure that I had all the bases covered. It was a huge sigh of relief once I realized, okay it’s all there.
Rob: That’s cool. You start working on this as a side project for the company that you work for at the day job. You launch it into the Heroku app store in 2017. But for folks who don’t know, on Heroku, they require you to have 100 beta customers before you can charge. This will wound up taking you almost a year, and it wasn’t until December 2017 when you were able to charge.
Back to your prior comment of when I asked you, did you ever think you’d get to $300,000 ARR and you said I thought I would get there in a year or two, was that year of 2017 just agonizing and taking way longer than you thought it would?
Adam: Absolutely. On Heroku, there are basically three phases of being in their marketplace. There’s the alpha phase where you’re not even listed at all, but you can invite people individually. You have to get 10 customers there before you go to beta, which is when you’re in the marketplace, but you still can’t charge. You got a beta badge on your thing, and that’s when you have to get to 100 customers before you go to general availability and can actually charge customers.
I went into alpha in January of 2017 and I didn’t get to general availability until December of 2017. It was a painful year. I did not think that it would take that long. I had this vision of it just kind of the product was so good. In my eyes, people were just going to flock to it and it was going to be amazing.
The truth is, I didn’t do much to accelerate that. I didn’t do much at all. I don’t think I did anything to market it. I waited for customers to come, and fortunately, eventually, they did. Eventually, it got to general availability.
I know some folks who have launched Heroku add-ons since then and they’ve put a little more effort behind it and gotten to that point within a couple of months, so I know that can be done. If I had to do it over again, yeah I would have reached out a little bit more to try to promote the thing.
Rob: Done some marketing, gone on podcasts, been on Twitter, done whatever, even taking out some ads. You could have gone crazy with this thing.
Adam: Yeah. This is still the area of the business that I struggle with the most. I am a developer by trade, I’m not a marketer. Even though I’ve been running this business for over four years now, the marketing side of it still feels brand new to me and I’m still figuring that out. That’s one of the reasons I really want to join TinySeed is to have some community and mentorship, specifically around that weakness of mine.
Rob: Rails Autoscale is an amazing step one business. When I think of the stair-step approach, step one is a single marketing challenge, step two is you have one or more products that you can buy out your time, and then step three is actually that recurring SaaS app that is just in the open market.
I used to say that step one was a single marketing channel, a one-time sale, but that’s no longer the case with Shopify add-ons, Heroku add-ons, and several other sales. There’s a lot of app stores now that have recurring revenue. That’s where I think of Rails Autoscale as amazing.
Again, you’re one person. You’re running a business doing $300,000 ARR, your expenses are very low. This is just a bootstrapper’s dream, in my opinion. As you and I have talked about, there are some risks. There are platform risks because you’re all on Heroku.
Theoretically, Heroku could just disable your app. You violated our terms of service, for whatever reason, or they have their own free autoscaling that we’ll talk about in a bit and they could be fed up to compete with you. There are all these risks with a step one business. I think that’s something we’ve chatted quite a bit about is how do you get this to be a step three business, which is a business that has more options, is more marketable, and potentially reduces and eliminates a lot of that platform risks. What are you thinking about that these days?
Adam: Honestly, right now I’m targeted toward a very specific and narrow niche of Rails applications on Heroku, so there’s a couple of different ways. If I wanted to continue with the same type of product, I can stay on Heroku but expand beyond Rails. I could stay focused on Rails and expand beyond Heroku.
Those are definitely both things that I’m looking into right now. I’ve been having a lot of calls with customers who have actually left Rails Autoscale because they left Heroku and most of them went to AWS. I’ve been having some conversations with them to see what they’re using now and if there’s a possibility down that road. I’m simultaneously exploring folks who have asked me, can I use this with Node? Can I use this with Python? Up until now, my answer has been no.
Those are definitely things I’m exploring and we’ll see where that goes, I’m quite not sure yet.
Rob: You have a hypothesis and then you try to prove or disprove that before you write a bunch of code. There’s not an obvious answer. There are multiple paths, and I think each of them can get you away from that risk. It’s not just platform risk, you’re very concentrated. What if over the next five years, Ruby or Rails itself becomes just less popular. It’s possible.
Every language and every platform has an adoption curve and we’ve seen all these languages that come. They have their heyday, and then eventually they don’t last. Computer languages don’t last 50 years. They last 10, 15 years, especially on the web. That’s a thing.
I think for folks who are listening to this. If you built a great business like Rails Autoscale, if you’re thinking long term, you should be thinking about these kinds of things. It’s not to say, oh my gosh, this is a terrible business. I never should have built this, because that’s not true either.
It’s that none of these businesses that we build can just go on autopilot for 5, 10, 15 years and be fine. They all have some type of, whether it’s marketing risk, competitor risks, platform risks, obsolescence risk, adoption curve risks. There are all these things that if you really plan to sell it in a few years, then you don’t need to worry about this. But if you want to run a business like this for 10 or 20 years, a lot is going to change.
Think about how the web was 20 years ago, 2001, and how different it is today. What will it be in 2041? I’m not just talking about Rails Autoscale, I’m talking to any listener out there, will your app benefit from that? How will it need to change in the meantime to be viable?
You’re a bootstrapper or mostly bootstrapped, you’ve been making a full-time living for a year of business and suddenly it gets cut off from under you. What do you do? Do you want to go get a job? Because that doesn’t sound like fun.
Adam: Joining TinySeed caused a lot of introspection and a lot of thinking about what I want out of this business long-term because it was already making good money. It had hit the point where I hadn’t yet switched to doing it full time, but I hit the point where I probably could. You could call it a lifestyle business at that point. It was making enough money to provide a decent lifestyle.
I was thinking, I don’t have aspirations to be a billionaire or anything like that, I just want to live a good life and do work that I care about. I also don’t want to live every day with the anxiety that this thing is going to be yanked out from under me and I’m going to have to go get a job, especially after being out of the job market for so many years.
I think I’m at the point where I want to build a larger business not because I want to build a large business, just larger than what it is currently. Just to have confidence that a slight downturn isn’t going to make me go looking for a job or anything like that.
Rob: That’s the balance. I experienced a lot of that with HitTail and then even with Drip. It was always like looking over my shoulder thinking what is either going to cut my MRR or what’s going to put us out of business overnight accidentally. There are all types of stuff.
I feel like it got really depressing here for a minute. Let’s pull out of that. I’m curious, you applied to TinySeed last November now, it’s like six or seven months ago. You were already making plenty of MRR to quit your job, pretty much anyone anywhere in the world could live out of. I forgot what it was. It’s maybe $16,000 or something. It was a healthy dose, single founder, almost no expenses, but it was still a side project. You had a day job. Why was that? Why did you continue working at Rails Autoscale as a side project even with that much MRR?
Adam: There were several reasons. One is that the growth kind of took me by surprise. The growth of the business was slow and steady until 2020. I started the year 2020 with less than $5000 MRR, ended it with over $15,000 MRR. The business more than tripled just in 2020 and I don’t know why. I don’t know if that’s COVID-related in any way with more things going online.
2020 took me by surprise in terms of business growth, and we were risk-averse. Honestly, I’m the only income. My wife is back in school and we weren’t prepared for the idea of completely relying on this business as our sole income.
At the end of 2020, we realized this is going to happen. It’s just a matter of when I make this leap. That’s the point where I decided, well I could wait until later in 2021, or I could apply to TinySeed and see what happens there because that will definitely be sufficient cushion to make that leap with confidence even being pretty risk-averse.
Rob: Was it challenging for you to work the day job and have the nights and weekends side project? Because I know for some people that’s really hard. For me, it was very hard all those years I did it. For other people, it’s just not that big of a deal. How was it for you?
Adam: It was hard. Honestly, I think back to when I first built Rails Autoscale in 2016, 2017 and I’m not quite sure how I did it. If I think about 2018, 2019, and 2020, I don’t feel like I was putting much into Rails Autoscale by that point. It was a product that was working. It was growing slowly just through people finding it in the Heroku marketplace.
While I had time, I tended not to have a whole lot of mental energy or creative energy after the day job. I found myself not just putting as much into Rails Autoscale, and that made me want to go full-time on it even more because I just felt like if I want to accelerate this business at all, I can’t have a day job and do it at the same time.
Rob: It’s a tough place to be. I’ve heard some developers say, I just can’t do stuff on the side. If I’m going to do it, I need to be all in and I need to quit my day job. I would have loved to have that luxury because, by the time I was really getting stuff off the ground, I was married, I had a mortgage. I guess I was doing it before we had our first kid, but frankly, it was just a couple of years.
We live in an eight-bedroom apartment with roommates, I didn’t have that option. I didn’t have money in the bank. I didn’t have rich parents. I didn’t have rich relatives to do any type of friends and family, so I needed enough income. We didn’t live lavishly by any stretch, but even just to maintain my job at that time maybe was $60,000 a year. This is my job. I graduated from college, did construction, and my first programming job was $60,000. I couldn’t make much less than that and own a home in California with a family and such.
I really wished I didn’t have to do those nights. I would stay up till 1:00 AM and then I’d go to sleep, but then I wake up and do the day job. It sucked, but to me, it was just what you had to do. If I wanted to one day have freedom, I figured that was the price that I had to pay.
Other people have to pay different prices. I’m not saying because someone else didn’t, that they had it easier or they’re not as worthy of it, it’s nothing like that. Each of us has our own starting point. Did you have nights and weekends where you were crying it out like that until midnight or one, waking up tired and doing the day job, or did you have better balance around that?
Adam: I think I had better balance around that. I feel that one of the keys that have helped me get Rails Autoscale to where it is is patience. I’m really happy with where Rails Autoscale is today, but the reality is that I started building it. The first commit was in July of 2016. It’s almost five years old.
When I initially built it, I had aspirations of it becoming my full-time thing within a year and two, but reality pretty quickly smacked me in the face there. At that point, I realized it’s okay to take it slow. I was pretty happy building something that was growing slowly more or less on its own, and it didn’t cause a whole lot of upheaval in my life.
I was able to work on it some nights and weekends, but not to the point of exhausting and causing burnout. I feel good about the way I approach that. Could I have gotten to this point sooner if I had put more into it? I absolutely think I could have. Would I have enjoyed my life as much, probably not and I maybe would have ended up throwing in the towel because I would have gotten burned out.
Rob: That’s the beauty of being an indie founder is we’re independent and you were able to make that decision. You didn’t have any type of timeline other than your own. I admire that patience, to be honest. It sounds like whether you did it intentionally or not, you viewed it as a marathon because that’s kind of what this is.
We think in terms of years, not months. I often say that in the intro of this podcast. This is years and years. At this point for me, it’s a decade and a half journey. If you think you’re going to get to $300,000 in 12 months, you’re going to be disappointed or you’re going to burn out.
Adam: I like that metaphor. I think going into it, I had not accepted that metaphor yet, but once I did accept that, I think it’s a very good metaphor thinking of it as a marathon.
Rob: I hinted at this earlier, but Heroku has a free autoscaler and yet you went and built Rails Autoscale. What was your thinking around that?
Adam: Heroku’s free autoscaler did not exist when I initially built Rails Autoscale. It came in either 2017 or 2018, and that was a scary time. That’s that platform risk right there. You build something on a platform and then they build a native version, it’s free, and you’re completely screwed. That was what was playing around in my head when that was happening.
Fortunately, for me, Heroku’s autoscaler—for one thing, it’s only available on Heroku’s higher tier plans, but even so, I didn’t want to lose all those customers. The reality is it did not impact my business in a noticeable way, and I still get about a third of my customers using those higher tier Heroku dynos.
About a third of my customers could be using Heroku’s free autoscaler but they chose Rails Autoscale instead. What they tell me is it just works better. They’ve all tried Heroku’s autoscaler and it didn’t work reliably for them. Basically, they went to the same thing that we went through back in 2016 trying to autoscale. It was clunky, it was difficult. Then they went to Rails Autoscale and they’re happy paying for it.
Rob: That’s what I’ve heard as well, I’ve talked to a couple of folks. Everyone I know who’s on Heroku and has any type of infrastructure in Rails, they use Rails Autoscale. The sentiment I’ve heard is the same thing. It’s that Heroku’s autoscaling, the built-in, they did it as a check box feature basically and it isn’t actually that good.
I can imagine that moment when you heard that they were going to build it because this was when Mailchimp added automation for Drip because that was our big thing. It’s like, hey, we’re unlike Mailchimp, we have all this automation. Then they announced they’re adding automation and I was like, oh […], this is going to get ugly.
As it turns out, their automation wasn’t that good, and they’re pretty clunky and hard to use. It did muddy the water for us for a while though. Did they just launch it or they preannounced it? Were you thinking, I guess I had a good run. Here we go, I guess we’ll be shutting this down.
Adam: I don’t think there was a preannouncement. I think they just launched it. I thought I was pretty much done. I guess not done because I knew that only a subset of Heroku customers could use Heroku autoscaling, but I definitely thought my business was at least cut in half by that point.
It was scary and if it had existed in 2016, would I have built Rails Autoscale? Would I have had the confidence that people are going to choose a paid solution over something that is free, integrated, and native to Heroku? I don’t know if I would have had that confidence.
Rob: Timing. It’s such an element of timing that you just wouldn’t think about because I would be the same way. If there is a free built-in version built by the platform, why would I build Drip and think that anyone would pay for a paid version? Something about if you had started it a year, a year and a half later, it may have never happened. It’s such a trip to think about.
Since then, even in the last couple of weeks, you launched a freemium version. Before you had a free trial of Rails Autoscale, and now there’s a freemium version where people can get a certain amount. They can hook it up and it tells them they would autoscale up and down, and it gives them 20 a month or a certain amount of autoscale events.
Adam: Exactly, yeah. Twenty autoscale per month.
Rob: That’s cool. What were you thinking there? I want to move from a free trial to freemium. For those who aren’t familiar, freemium is a perpetual plan. It works every month, it doesn’t expire after seven days, but it’s limited. When people want to get the full feature set, they’re able to upgrade and start paying.
What was your thought process with this experiment? Because I view it as an experiment. Is it something that you may undo if it doesn’t turn out well?
Adam: I call it an experiment, but it would have to blow up in my face pretty hard for me to undo it, it’s the reality. So far, it’s going great. When I initially built Rails Autoscale, it was for me a cost-saving thing. I wanted to save our company resources by auto scaling down when we didn’t need it, and I sort of made the assumption that that’s what everybody was going to use Rails Autoscale for.
Since then, I’m finding through talking to my customers that for most of them, it’s not about cost savings, it’s about peace of mind, it’s about having a safety net in place knowing that their app is not going to fall down. It’s not going to slow to a crawl, that they can handle any type of traffic spike or anything that comes their way.
I launched the free version because I want every Rails app on Heroku to be able to have that by default. I really keep pushing this idea of a safety net. That’s how I see Rails Autoscale now. It’s the safety net for your Rails app and every Rails app can have it.
I didn’t want to limit that to just a seven-day trial anymore because then, Rails developers aren’t going to think about it until their app starts scaling or they start having trouble. I want it to be more that you just have there by default and then it’s there when you need it.
Rob: On the marketing side, that’s called owning the lead. If you have freemium that if someone’s already using—I think Patrick Campbell from ProfitWell may have coined that phrase, owning the lead. But I heard it as freemium, obviously not a pricing approach, it’s a marketing approach.
When you have a freemium and someone signs up for your account, even if they’re backgrounding it because they’re not paying for it, but then they remember in six months, oh yeah, I do need that, I do want that, or I’ve noticed this, then they already have a login. It’s just a little bit of comfort and a little bit less friction.
Adam: I haven’t heard the term, but that’s exactly the idea.
Rob: You’re only a week into it, are there any indications? Do you feel good about it so far? Is it completely unknown still as to whether it’s going to work? How are you feeling about it?
Adam: My fear going into it is that I had a subset of paying customers who could maybe potentially have downgraded to free. I was worried about losing revenue there potentially, that hasn’t happened. Basically, what has happened is I’ve had a lot more free instillations. The number of paid subscriptions, the trajectory of that hasn’t changed at all. It has been the same slow and steady growth.
Too early to tell if there’s much impact, but so far I’m at least happy that there’s no negative impact and that I am getting a lot more free signups.
Rob: That’s always the fear with pricing changes, with moving from credit card to no credit card or vice versa. Any of these things is like white knuckles for weeks while you look at the numbers. The worst case is not that it doesn’t accelerate your growth, it’s that it dramatically decelerates it or cannibalizes existing MRR. Glad to hear that.
Sir, thank you so much for joining me on Startups for the Rest of Us today. It’s been great having you.
Adam: This is fun. Thanks for having me.
Rob: Absolutely. Folks who want to keep up with you, you are @adamlogic on Twitter, and of course railsautoscale.com for all the info about what you’re up to. Thanks again.
Rob: Thanks again to Adam for coming on the show. If you’d like to join a batch of companies much like Rails Autoscale, want to be part of TinySeed and get some funding, mentorship, and continue to grow your business, we are opening applications again here in the next couple of months for our Fall 2021 batch. Head to tinyseed.com and sign up for the email list there to get notified. Thanks again for joining me on this journey, 556 episodes so far. I’ll be back in your earbuds again next Tuesday morning.