How We Bootstrapped an Open-Source Project to $120k/Month

Hello! Tell us about yourself and what you’re working on.

My name is Daniel Hauschildt, and I’m the CTO at img.ly based in Bochum, Germany. Prior to my work at img.ly, I spent a good amount of time in academia studying computer science and finally graduated with a Ph.D. in electrical engineering. These days, I am working on PhotoEditor SDK — a fully customizable photo editor that adds all kinds of photo editing capabilities into any app with minimal effort — with co-founder Eray Basar.

At the time of writing, we have over 350 customers ranging from startups to Fortune 100 companies, and we are making around $120,000/month from our product and accompanying services.

home

What motivated you to get started with PhotoEditor SDK?

A few years back we needed photo editing capabilities across different web projects we were working on, so we decided to build a photo editor that we can use in all these projects. We figured that other developers might have a similar need and, consequently, we open-sourced the first version and gained some notable traction for the editor.

Eventually, some companies started to reach out asking for a commercial license and cooperation to further improve and expand our photo editing capabilities. At that point, we realized that this was a great opportunity to start a business. We started publishing new, improved versions of our editor and started to sign more and more customers, including some really big names, which helped to expand our footprint even further.

What went into building the initial product?

We started out with a web version of the SDK. Eventually, we began looking into iOS and Android, which kicked off the process of pulling more developers from the agency to work part-time on PhotoEditor SDK, and eventually led to us hiring staff exclusively for it.

We realized early on that we had to develop each platform natively to get maximum performance but that in turn also meant that we couldn’t share any code between the platforms, which sometimes made it quite challenging to preserve a cohesive developer experience of our SDKs. But, that also means that we use almost no external libraries and own all layers of our code base. That said, the rendering stack and all logic and algorithms were developed uniquely for our purposes.

Back then, the team was still part of the agency 9elements, but we tried to make sure that our own revenue covered the majority of the costs from the start. When we realized that things were starting to accelerate, most of the stakeholders forewent parts of their salary so we could funnel every cent of our revenue into building our team. Apart from personnel, costs were relatively low since we grew rather organically and didn’t invest much into paid marketing channels. We had our SDK on GitHub, which gave us most of our traffic, and a bit later we created a small landing page that accounted for the rest.

We spent a lot of time talking to our first clients to figure out in which direction to take the SDK, decide which features clients might be missing, and add value to the product.

We started with a very basic version of PhotoEditor SDK, and then asked the first users which tools and features they’d be interested in. Those were very personal talks and we got a very robust idea of how we should expand the SDK so that more people would benefit from using it. Importantly, however, we didn’t just build what they asked for. If a user approached us with an issue or suggestion, we basically tried to figure out their use case and propose solutions for that particular case. Fortunately, with every new tool that we introduced, we found additional use cases for our product.

About four years after we started working on the SDK, we finally feel that it is feature complete. Currently, we’re devoting most of our energy to improving the developer and user experience, as we want it to be as easy as possible for our clients to integrate our solution.

hero filter

How have you attracted users and grown PhotoEditor SDK?

We had a silent launch when we first published the SDK; nobody really knew that we existed and we didn’t do much to change that, like going to the press or running paid campaigns. People found us on GitHub or via Google, so we had a moderate yet steady stream of inbounds.

Around two years in, after the product was fairly stable, we decided that we wanted to ramp up our marketing efforts. We revamped every listing of PhotoEditor SDK, like on CocoaPods, npm and GitHub. Especially with GitHub, we devoted a lot of energy into crafting the readmes, adding creatives, changing namings, and generally optimizing our content for developers and the algorithm. Also, we redesigned our website and put a lot of effort into SEO, researched keywords, optimized text and images, you name it.

You are the first and often only evangelist of your idea, so you have to convince people it’s worth it. If you can, great. If you can’t, that is a valuable lesson too.

Tweet
Share

However, we also wanted to do something with just a little more pomp, and thus we committed ourselves to launch the SDK on Product Hunt. We created a whole campaign for the day and reached out to friends, family, and clients. We orchestrated an initial discussion about our product and spent an entire day cramped in a meeting room answering questions and trying to engage as many people as possible. In the end, it was a rather successful launch for us: we got over 500 upvotes and ranked somewhere between #3 and #5 that day. It was a great experience and helped build team spirit, but our sales and traffic didn’t exactly skyrocket once the dust had settled.

Over the last year, apart from our development team and design team, we started growing as a company and brought more skilled people from other fields on board. Perhaps most importantly, we invested in our sales team, which really helped us improve our conversion rates and sales in general.

In the early stages, our sales team consisted mostly of part-time employees, like students, that were supported by the expertise of my co-founder. That worked very well to a certain degree, however, we realized that having someone that tends to sales full-time could help significantly in coordinating the rest of the sales team, streamlining the whole process, and, consequently, increasing the rate of monthly closings. I think that, for an entrepreneur, it is vital to get a sense of where to focus your workforce investment. We bootstrapped this whole endeavor, so for a long time we had to think very carefully about where to funnel our time, money, and energy to yield the most significant benefits. For the past four years, building our developer team was our biggest priority, and now we’re at a point where investing in the design and sales departments are essential for our growth.

What's your business model, and how have you grown your revenue?

We create and maintain PhotoEditor SDK and license our software to clients on a monthly or yearly basis. Since we realized that not every client needs every tool that is part of the SDK, we separated it into distinct modules. This allows our customers to pick and choose and only pay for what’s really needed.

We chose a subscription model because we wanted to ensure consistently high standards and give our clients a seamless experience as the product inevitably grows and changes. Web platforms, iOS, and Android are constantly evolving, so the software isn’t static and you don’t just integrate the code once and walk away. It’s important to ensure your customers aren’t impacted by these fluxes and growing pains, and the subscription model helps us keep our product reliably up to date while also providing us with a certain amount of financial safety. We guarantee maximum compatibility for every platform always, and support with integrating or updating our SDK.

Finding the right price for our product was a long process and required a lot of experimentation. With software, it can be tricky. The challenging part for us was to define the amount of money we’d need to guarantee a stable product and continuous updates but also stay in a reasonable and affordable price range.

What I’ve ultimately learned is that software pricing is hard to calculate in advance—you’ve got to find out what your solution is worth to people and if this price will sustainably support a business. We had to crunch those numbers with every iteration of the product. We’ve been resting in a sweet spot for a while now where we can be economical without overcharging anyone. We want as many developers as possible to use our solution and outlandish prices won’t get us there.

Month Revenue
Mar ‘16 16861
Sep ‘16 21305
Mar ‘17 35360
Sep ‘17 52692
Mar ‘18 67434
Sep ‘18 93679
Mar ‘19 133000

What are your goals for the future?

Our immediate goal is to make the PhotoEditor SDK even more accessible by simplifying installation, offering integrations into other frameworks, etc. Generally, we want to reduce the hassle for developers as much as possible.

Apart from that, adjacent topics like video and animation are really interesting to us. But, just like when we started with PhotoEditor SDK, we want to be sure that whatever we create is going to help fellow developers build their services.

Also, for over two years now, we’ve been able to fund a research department that’s mainly concerned with deep learning in the realm of image processing. We believe that the very algorithms designed for image segmentation, depth analysis, and image recognition will help us facilitate and automate image editing, thus making image or photo editing easier and more accessible. Our user experience is very dear to us and includes not only a well-conceived UI but also the editing experience itself.

For those who are interested, we launched a demo app, Portrait, in 2017 based on the findings of our research team. Portrait automates image segmentation and masking via a deep learning algorithm and creates stylized, movie-poster-like portraits.

What are the biggest challenges you've faced and obstacles you've overcome? If you had to start over, what would you do differently?

On a personal note, one of the biggest challenges I faced was not being reactive towards every hiccup we encountered along the way. Things happen everyday—whether it's in your personal life or at work—and you have to be able to handle them from a place of measured balance. If you get caught reactively responding to every little thing that life throws your way, you’re going to be in for a stressful ride, and you’re going to burn out.

Product-wise, I wish I had separated features into companion products as opposed to building them into the full PhotoEditor SDK package so that the focus and scope of each product would be self-evident. As I said, we considered our SDK to be feature complete almost a year ago based on our defined use cases, but we gave in to the temptation of developing several additional tools, which didn’t end up helping much in terms of improving the product for most of our use cases. I don’t think continuing to develop was the wrong decision, per se, but the product and the customers would benefit from some feature compartmentalization. For example, it's not obvious if advanced tools like auto-segmentation or style image recognition should be part of a photo editor itself or would be better utilized as a companion product.

In the end, I wish I had stuck to a smaller set of tools and worked on perfecting them instead of adding feature after feature. That doesn’t at all mean that we’re not going to add more features to our SDK, but we try to be intentional and focus on building out existing ones and making sure there’s a real demand before diving into new ones. When we were being less strategic, we developed tools that we felt would be a great complement to the SDK and thought that people would use them, realize their value, and then also pay extra for them, but that wasn’t always the case.

Have you found anything particularly helpful or advantageous?

Finding the right people has always been paramount to us. We don’t just hire people because there’s a vacancy. Even if we have to fill a position we take our time and carefully weigh our options. And as a small company, finding the right people often boils down to a combination of luck and effort. We don’t have the luxury of receiving hundreds of applications once we announce a job opening. But we are well connected in our area and help organize developer meetups and conferences, which often puts us in front of awesome people that we may eventually end up hiring or asking for a referral.

If you get caught reactively responding to every little thing that life throws your way, you’re going to be in for a stressful ride, and you’re going to burn out.

Tweet
Share

I’d say that it is better to have a small but mighty team—less people, but people who are really good at what they do and are a good fit for the company—than to scale a team just for the sake of it. And while skill is necessary, commitment and passion are really important, especially in the early stages. You can achieve an awful lot even with a small team if you have the right level of enthusiasm.

Grow organically when you have the resources and when you’re dead certain that the person you’re hiring is going to have a real impact. People seem to think that having a lot of workers equates to a high output, but that isn’t always the case. Some things take time, plain and simple. Plus, the more people, the harder it is to organize. It took us four years to grow to 26 employees, and it was good that we were patient. Changes in organizational structure don’t happen overnight — things have to evolve and be tested and tried over and over. Back when we were only three people working on PhotoEditor SDK, our methods were wildly different from our current organizational structures, but today we still manage to stay creative, iterate on our methods, and infuse them into how we manage the business.

What’s your advice for indie hackers who are just starting out?

First off, I don’t believe that it is possible to run a successful startup while simultaneously holding down a 9-to-5 job. In the end, it’s hard work and plenty of it, and you have to be able to react quickly and at any given moment.

What I learned is that, in the beginning, you tend to cling to your initial idea and then start building the heck out of it. It’s easy to get lost in the technical details without ever having verified that there’s a real demand for your solution. My advice: refrain from building too much. Instead, figure out a way to get your idea across with the least amount of work. Every product is different and sometimes a pen and piece of paper are sufficient, while other products require a working prototype. It is essential to know what your unique selling point is and then find a way to show it to people as soon as possible. A completely polished product is almost never required to pitch an idea.

A completely polished product is almost never required to pitch an idea.

Tweet
Share

Also, go out and talk to people. Don’t worry that you have to keep your ideas secret because someone might steal them. You are the first and often only evangelist of your idea, so you have to convince people it’s worth it. If you can, great. If you can’t, that is a valuable lesson too. Just don’t shy away when people aren’t completely blown away by your first pitch, it’s normal. Take the criticism and use it to shape and refine your idea, then go out and talk to people again. Start with people that you know and trust and then slowly broaden your audience. Of course, not all criticism is valid or helpful, and you have to make sure that you’re speaking to your target audience.

What also helps is listening to people who have gone through a similar situation, faced the same barriers and hardships, and come out the other end, successfully or not. Find podcasts and read books to get inspired, but also take all advice with a grain of salt. Every company is different, every founder is different, and every challenge is unique. Ultimately, you have to make your own decisions for your own company. Getting inspired is great, but it can also be distracting. Make sure that learning how to build your product or your business doesn’t take the place of actually building your product or business. Learn as much as you can, abstract, combine, put it into action, and find your way.

blog

Where can we go to learn more?

Visit PhotoEditor SDK at photoeditorsdk.com. Also, if you’d like to know more about our product, tech, clients, and company I’d recommend our blog.

If you’ve got any questions or would like to start a conversation, please feel free to leave a comment. I’ll do my best to answer everything!

Daniel Hauschildt , Founder of PhotoEditor SDK

Want to build your own business like PhotoEditor SDK?

You should join the Indie Hackers community! 🤗

We're a few thousand founders helping each other build profitable businesses and side projects. Come share what you're working on and get feedback from your peers.

Not ready to get started on your product yet? No problem. The community is a great place to meet people, learn, and get your feet wet. Feel free to just browse!

Courtland Allen , Indie Hackers founder

Loading comments...