Save over 40% when you secure your tickets today to TNW Conference 💥 Prices will increase on November 22 →

This article was published on March 21, 2017

Bootstrapped, profitable, and proud: Our journey to $1,000,000+ ARR


Bootstrapped, profitable, and proud: Our journey to $1,000,000+ ARR

If you’re a long-time reader of Basecamp‘s Signal vs Noise, chances are you have probably read one of their Bootstrapped, Profitable and Proud (BPP) articles. Those articles tell the stories of startups that have made $1,000,000+ in annual recurring revenue (ARR) without taking any VC investments.

Inspired by those stories, we made it one of our personal goals to be featured there some day as well. After all, who wouldn’t want to be featured on 37signals’ blog right? And if it takes $1,000,000+ in ARR to get there, then game on!

This article tells the story of how we managed to achieve this goal a little while ago. Even though Basecamp (nee 37signals) has stopped writing about BPP, we still wanted to make good on a promise we made to our younger selves. Special thanks goes out to David Heinemeier Hanson (DHH) for allowing us to do this under the BPP moniker. Like David, we hope these kinds of stories entice new entrepreneurs to try to do the same.

Illustrations done by our very own Nick Visser

Phusion’s story

The 💜 of EU tech

The latest rumblings from the EU tech scene, a story from our wise ol' founder Boris, and some questionable AI art. It's free, every week, in your inbox. Sign up now!

Phusion is a software company dedicated to making awesome Unix solutions for highly demanding server environments. If you’ve ever set up a Ruby or Node.js server environment, chances are you may have already come across one of our solutions, e.g. Passenger, baseimage-docker or Union Station. Our company had much more humble beginnings though!

Back in mid 2008, we envisioned Phusion as a web consultancy to allow us to fund our way through university. With only two laptops and about $500 in savings, we didn’t have a lot of capital to work with when it came to customer acquisition. This required us to think outside of the box in trying to get our name out there while working within these constraints.

When an opportunity presents itself…

A few months earlier, we had the pleasure of working with the Ruby on Rails web framework for the very first time. Rails allowed us to write feature rich web apps in a matter of days rather than months. Deploying them however turned out to be a huge pain. It involved a lot of fiddling with settings and managing ports, which was a far cry from the “convention over configuration” mantra Rails itself maintained. Needless to say, it didn’t take long for Hongli and myself to see an opportunity here to alleviate this pain.

After a few months of pretty much non-stop work, we launched Phusion Passenger as an open source project. Passenger was the first Ruby application server of its kind to allow for easy deployment: no more fiddling with settings, just upload and go!

By open sourcing Passenger, we aimed to draw in new business by lowering the barrier-to-entry in a cheap and efficient way. And what could be cheaper than making it free? As you can imagine, it didn’t take long for Passenger to pick up some steam. Things got really crazy though once David Heinemer Hansson (creator of Rails) started to use Passenger at Basecamp as well. Before we knew it, we were considered the de-facto standard in Rails deployment, almost overnight.

Railsconf: Our most important conference that we almost couldn’t afford attending

Passenger’s popularity even led to us being invited by our friend Chad Fowler to do a keynote at Railsconf in Portland. It’s almost funny to think that even though Railsconf was the premiere IT conference for us to be at, we almost didn’t make it out there due to insufficient funds. Paying for the flights alone would have put us out of business! This is the part where entrepreneurship and kindness come into play.

After talking to some of our customers, we were able to strike a deal with Soocial. Soocial was a contact sync service that was run by my good friend Stefan Fountain before it was acquired by Viadeo. It also happened to be a Rails application that was deployed on Passenger. As luck would have it, they were looking to gain more exposure in the US market as well. That got us thinking: what if we were to use Soocial as a demo app for Passenger during our keynote? That would allow us to promote both Passenger and Soocial to the US market at the same time. In return, we would ask Soocial to cover our flights and hotel. Stefan saw this as a great marketing opportunity and agreed to our proposition.

A generous and kind act like that is not quickly forgotten and we made sure to repay Stefan by pitching in for a new MacBook when his was stolen a few months later. The lesson we feel is important here, is that kindness should beget kindness; and that the world could use a lot more Stefans! Anyway, back to Railsconf!

The startup t-shirt™

In the days leading up to Railsconf, things were starting to look up for us financially. Slowly but surely, voluntary donations were starting to come in from happy Passenger users! From $2 donations to $100 donations, we eventually received enough money to have the most important thing in startup land made: the infamous Startup T-shirt™. One hundred of them to be exact. And yes, that Phusion graffiti piece really was our logo for a short while! If you’re going to be talking about your product on the big stage, you’d better look the part right?

And so, with a suitcase filled with Phusion t-shirts to give out to donors, we headed out to Portland. Our college friend and eventual co-worker Tinco wanted to help out too and decided to tag along on his own dime. What a trooper! We made sure to hire him as soon as we could, and I’m pleased to say that he has been with the company ever since.

Railsconf turned out to be a great success for us in terms of gaining mindshare; not only did we get to show the world our first steps into making Passenger a language agnostic web platform by adding support for Python, we also got to meet and thank a whole bunch of people who donated. This led to valuable insights into how we would be able to make Passenger even better. We even managed to get in touch with a few big name enterprises who wanted to work with us. We were super stoked!

Too bad for us however that this was right around the time that the financial crisis was starting to show its effects in the tech industry as well, which killed a few big deals for us not much later. Bummer, but at least we got to take a selfie with our startup hero DHH!

Passenger: The side project or flagship product?

Despite all this success in gaining mind-share, we never really looked at Passenger as being more than a side project in those early days. More specifically, we viewed it as a medium through which we would be able to advertise our consultancy services to a large and growing audience.

From disrupting startups like Intercom to industry giants like Apple, more and more businesses started to deploy their sites on Passenger. Never in our wildest dreams could we have ever imagined that it would one day power over half a million sites though (and counting)!

Passenger served its purpose in getting our name out there and bringing in a steady stream of consultancy gigs. Its popularity also had a flip-side though: more and more people became reliant on us to maintain Passenger as well. With only 24 hours in a day, and two 20-something year olds working on Phusion, this became harder and harder to balance with school. Especially seeing as those hours were not billable.

After unsuccessfully trying several business models in an attempt to balance Passenger maintenance with our consultancy work, we slowly but surely felt burned out. We needed to find a sustainable model fast! Not only for our business, but for our health as well.

This led us to make a bold move in September 2012: drop consultancy entirely, and double down on making a premium version of Passenger available to enterprises. In order to make that deadline, we first needed to save up to fund a full year of Passenger development without distraction. We did so by taking on as many consultancy gigs as we were able to during 2009-2010.

Betting the company

Most of our consultancy projects were standard gigs, but there was one in particular that got Hongli’s and my heart racing. In trying to win a big consultancy gig, we spent almost our entire savings (about $2,000) trying to win this customer’s business over dinner and drinks. Where gigs like these would normally go to larger firms, we were just two guys. Two guys who didn’t even own a business suit mind you!

Being the underdog, we felt that we needed to pull out all the stops in order to have even the slightest chance of winning. We decided to bet the company on this opportunity: if we didn’t end up winning the gig, we would have at least experienced what it was like to dine at a fancy restaurant.

I guess the (Michelin) stars aligned for us that night and to probably everyone’s surprise, we ended up winning the gig! What was perhaps even more surprising is that Hongli and I ended up finishing dinner at a fish & chips joint afterwards. Even though we each had an 8-course dinner, those fancy-pants restaurant portions were absolutely tiny! And just like that, we disavowed Michelin starred restaurants and stick to comfort food instead.

That’s just one example of the adventures we had doing consultancy, and I think the take-away for us was to become comfortable taking calculated risks. Just like Final Fantasy was Square Enix’ Hail Mary, this was ours, and we were incredibly lucky that it worked out.

All in all, I think we ended up with about $200k in savings, which was probably a little under $100k after taxes. With those funds, a period of austerity followed: from mid 2010 to mid 2012, we basically lived off of Ramen noodles to complete the first version of Passenger Enterprise. We also somehow managed to graduate from university around that time too. I’m not exactly sure how, but we did! This helped in taking away some deeply ingrained asian fears of “failing at life” and further strengthened our resolve to give it our all.

Passenger enterprise: Our ticket to BPP

On September 15th, 2012, after years of hard labor, we were finally able to launch Passenger Enterprise. Our college-friend Goffert had joined the company a few months earlier as well, and worked with us around the clock for the duration of 2 months to deliver the launch site of Passenger Enterprise (2012 archive here).

I still remember my knees trembling a bit as we ran the deploy commands for Passenger Enterprise’s marketing site. Despite it not being open source, we hoped people would understand and support our decision to bring a closed source alternative like Passenger Enterprise into the fold. It was basically do or die for our company: if this didn’t work, then we might as well call it a day.

Thankfully, we ended up receiving far more love and support than we had expected. Especially from businesses who were already deeply invested in Passenger over the years and saw it as an important part of their preferred web stack. They didn’t want to go without it.

The new offering of Passenger Enterprise not only let customers enjoy additional superior features, but it also allowed them to have a basic safety net in place in the form of commercial support. By providing Passenger Enterprise as a subscription product, we were now able to sustainably build a company around it. In fact, we ended up making much more revenue in our first year of Passenger Enterprise than we had been able to make through consultancy in any of the years prior to that.

Bootstrapped, profitable and proud: Not exactly what we had expected…

As more and more people joined our team, we were able to free up mental capacity. This allowed us to think more clearly about the future. More specifically, a future after reaching the $1,000,000+ ARR milestone within a growing multibillion dollar industry.

Our work must have consumed so much of our focus for so long, that the BPP milestone we yearned for so much as young students went by unnoticed a little while ago. We had outgrown it.

I guess it’s not the same as the stories make it out to be, after all. Here we were thinking that it was going to be this big magical moment, filled with heavenly arias and God rays shining down on us.

Instead, it was just business as usual.

Our next moonshot: Going the distance!

As already alluded to in the preface of this article, we’re pretty big fans of DHH and his team at Basecamp. It should come to you as no surprise that after BPP, one of our goals is to be featured in one of their The Distance articles: a blog series about companies that are still in business after 25+ years.

I think that’s a far harder goal than trying to get to $1,000,000+ ARR and, quite frankly, I am not exactly sure how one would go about tackling a challenge like that. I’d love to give it a go though! Just thinking about what kinds of new problems we’d face along the way makes me incredibly excited. Especially if they allow us to grow as entrepreneurs.

Lastly, we’d like to thank you dear reader, for your support; and for making it through this article. Hope to see you again in 17 years! Preferably sooner though.

Get the TNW newsletter

Get the most important tech news in your inbox each week.