I would like to share with you the journey of our employee scheduling SaaS startup Aplano which is built entirely on Firebase 🔥. (By the way: we are three brothers/co-founders)
We started our project with a NestJS backend (Node + PostgresDB) and React (+ Typescript) in the frontend. After a while, we realized, that the server was not stable enough. We had too many server crashes due to our complex multi-tenant infrastructure. The DevOps & backend troubleshooting took too much time.
We were nearly done with the MVP when we made a major decision:
We decided to ditch the complete backend and do something unconventional, to build the whole infrastructure with Firebase. 😱 This included:
The re-write took us a while, but it was worth it. No more server crashes plus real-time & multi-tenant features out of the box.
Surely, we had some concerns about completely relying on the firebase eco-system, but the advantages overweighed. We already had some experience with Firebase beforehand, but never used it on a larger scale.
From this point on our development speed increased heavily ⚡.
During the development period, we financed ourselves by running a software development agency on the side.
The overall development of our MVP took us about 6 months.
When you are planning to launch your product, you expect some good results quite fast. But this is very often not the case.
We started out with two tiers. One free tier for companies with 0-50 users and one paid tier for 50+ users. In the beginning, we didn’t even have a payment system. We just wanted some initial users, to verify our product and learn from them. We would even allow companies of any size to just use it for free. We displayed the paid tier, so companies would take us seriously.
So, for the go-live, we coded a nice landing page and designed some Facebook ads, and waited for users to sign up. And waited. And waited… but nobody came.
What went wrong? Why didn’t we have any conversions? We did not know. After a while, we got a few registrations, but none of them stayed on our web app for longer than 10 minutes.
We tried a different approach: We knew, that it would take a while to rank on the first page organically with SEO. Therefore we decided to go with Google Search Ads.
Some small companies from Germany started to sign up with our free tier and used our software in their business successfully.
The initial users automatically started to contact us through our in-app chat tool Crisp and requested new features and reported some bugs, which we fixed instantly.
By using firebase we were able to publish hotfixes for our web app within a few minutes. The same applies to our mobile app, which is written with React-Native for Android and iOS and uses Codepush for quick deployments without going through the app store reviews.
In the beginning, we nearly accepted every feature request by our users. But after a while realized, that we could not do this anymore.
Listening to your customers is very important, but in B2B you have to know, that every business has a different style of work. Implementing every feature request is just not possible. We had to make sure, that our software is usable for as many different companies as possible. From that moment on, we analyzed every feature request and its impact very thoroughly before accepting or declining it.
In the beginning, we watched how our users behaved on our web app a lot through Hotjar. This was extremely helpful. We got a better understanding of how our users were using our software and how we could improve. For example, some users didn’t find a specific feature and therefore applied a workaround. We used that information to change our UI so the users could find the specific feature more easily.
We’ve put a lot of effort into making sure, that our software does not require an onboarding. It is easy to understand and to use for every kind of user. Plus our software is blazingly fast in comparison to our competitors because of firebase ⚡. Users who switched from competitor solutions to ours were amazed by the performance of our software and our support.
Until this point, we did not have any paying customers, because we knew, that paying customers get angry a lot faster in case of bugs than free users. Especially in B2B.
After validating our software we felt ready and confident to demand money for our product.
We changed our tiers and added Stripe Subscription Payments. From now on, the Free tier only has limited features, while the Basic and Pro tiers include more:
Free: 0,00 € per employee
Basic: 2,00 € per employee
Pro: 4,00 € per employee
Every sign-up automatically had the Pro tier features active for 14 days, free of charge. This was very helpful because the users who signed up intending to use the free or basic tier ended up using the Pro tier in most of the cases, as they did not check thoroughly, which features belonged to which tier. And switching a software solution in a business with multiple employees is not so easy. So they just accepted the higher-priced Pro tier.
Even though we got some paying customers, our growth rate was too slow. Our google search ads were too expensive and completely relying on SEA would not be right.
We started to optimize our landing page. By improving our Google quality score and page speed, our CPC went down so we could spend more money on ads. At the same time, our ranking got better and better. So we decided to put even more effort into SEO and get to the top position on google for some german keywords.
After a few months, we got to the first position on google for some keywords.
How we did it:
From this point on we had a pretty good growth rate. Our tool became more popular in some specific types of businesses like pharmacies and hospitals.
So we tried Facebook ads again but added those specific industries. And to our surprise, we started getting even quality conversions from Facebook Ads!
By doing the following things on repeat, we were finally able to reach $300K+ ARR.
Spy on your competition before writing a line of code. This also includes fake onboarding sessions with their team and learning from their marketing strategies. They have way more experience than you.
This summary of our journey might sound like a straight path, steadily leading up, but there were multiple times, where we felt desperation because of the super slow growth initially and some nerve-wracking nights of bug-fixing.
Hope this little journey of ours has some helpful insights for you! Let me know if you got any questions :)
If you enjoyed this post, follow me on Twitter gregorian000.
Have a nice day 👋
Very interesting. Great article.
Thanks a lot!
Excellent growth story and strategy 👏👏
As a person who is currently deciding to develop Mobile app client for my web app project, what percentage of revenue is brought to you by your Mobile app?
In the end, it depends on your use case. If it is convenient to use your service on a small screen, focus on that. There is a huge trend to mobile-only.
Thank you. Most of our users are using the mobile app currently. But the managing employees of our clients always use the web version to do organizational stuff, which works much better with a big screen.
So in the end, both parts were required :)
(Upgrading to the Pro tier only works through our web version. That's why I can't really split the revenue based on the device.)
Have you had any negative experiences with Firebase? I've used it and haven't liked it much so far. One thing I worry about is billing surprises, like the company that got an unexpected $30,000 Firebase bill. I've had less difficulty with Frameworks like Django, Rails, and Laravel.
Although that $30k bill was probably the biggest shock of their lives it should be pointed out that it was from a mistake in their code and totally their fault. They made 46 BILLION requests to Firestore in a few days. So I think providing you don't make billions of requests per day, you should be fine using Firebase!
What made you target Germany as a region?
Well, we are from Germany and therefore have a good understanding of how companies are creating their employee schedules + regulations :)
awesome article :)
qq: how long did it take for you to get to 300k art once you started accepting payments?
About 10 months :) And by the way: African Giant is the best album ever💥
thanks for the reply & thanks for the compliment!
I like that you said one of the thing that help you to get to 300k ARR is getting user feedback
soon I will be releasing a really good platform with a modern approach to get user feedbacks
all the best
Sounds interesting... let me know when it's available :)
@gregorian it is deployed would you like to give it a try
I just followed you on twitter
Great article, thanks for sharing
Thanks Tim!
Interesting read! Good job guys.
What convinced you to create a product in such a crowded space?
Great article. Congrats on the successes!
Thanks Matt :)
Congrats on the successes!! I can only imagine it was quite intense and hard work.
How easy was it to model multi tenancy in Firebase? I am writing something in Nestjs but had pondered long and hard about using Firebase before starting.
Thank you! :) Multi-Tenancy in Firebase is very easy due to its NoSQL structure. Each tenant needs to have its own branch which contains all of the data models, for example, users, etc. And to make sure, that a user can not access the "branch" of another tenant, you have to use the firebase security rules.
Interesting read. Thanks David.
Question. On your main page you've already installed a language switcher between German and British English. Did you use something like ConveyThis or have built something entirely on your own?
Hi Alex, thanks for your message. We wrote a custom solution for our gatsby website.
Hi, this is really helpful post. As you said you that you worked on SEO too.
But I looked into Semrush and Ubersuggest that GetAplano. com have 0 backlinks and 0 ranking keyword in top 10 pages in search results. And bring only 1 to 10 pageviews per month.
Also didn't found any article like "Top 14 scheduling" on your site. Are you talking about some other project?
We focused on our main domain, which is aplano.de and not getaplano.com - as we started out as a product for the german market :)
Awesome article, thank you
Thanks for the feedback! :)