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.
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.
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.
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.
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.
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 |
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.
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.
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.
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.
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.
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.
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!
Great interview guys! How much time did it take for you to build the first (open-source) version of the photo editor?
I joined IH yesterday. and This is the first interview that I read! Definitely love it. It 's very useful when you said you wish you had built less and focused on fewer.
Awesome! I really like this type of SaaS! but I am know nothing about code...So I only can choose content marketing, But nowadays, content marketing is really hard! We can give me some advice? BTW, I will list your PhotoEditor SDK on my this page, https://phreesite.com/free-photo-editor/ I just test it, really powerful and easy to use APP!
The Aviary/Adobe Photo Editor shutdown worked out really well for you :) I can see it on the charts. That was the time when we switched to your service as well.
The switch wasn't too easy, and the support was pretty slow... I assume you had a huge rush of clients those days and were not prepared for the increased scale.
Since then the service seems to be working without issues, so you did a great job in scaling things. Congrats!
Courtland, thanks for the interview!
But I have just one question. Why is the interview on IndieHackers?
Don't understand me wrong, I see everyone can get something useful from it but it's not about "Indie hacker" - the product was created by the digital agency, can we call them "indie hackers"?
I had an impression that interviews are usually taken from them, no?
Interesting question. Wether we can be called indie hackers or not is not important to me as long as the interview is useful to someone. But I will shed some light on how we all went down 4 years back.
Aside that, the faq at https://www.indiehackers.com/about states
Considering that, I would consider us indie hackers. Back then we worked for a small agency. We did not raise money from an investor, nor did the agency have the money to just pay a team to build the sdk back then. One person started building the sdk on the side, as we got traction and sold our first license, we used that money to extend the team before that we did not much todo that.
Sure, one can argue. In the end, it does not matter much. The interview is supposed to give others some insights into lessons we learned. If we are not per definition indie hackers, that's fine for me. At least I can tell that our mindset is.
Thanks for sharing your journey! I see that your SDK is open-source on GitHub. But on https://photoeditorsdk.com, you do not mention that it's open-source and you have a form to request for a license. Are you charging for every license? If yes, how does it work with your source being open on GitHub?
Later, due to several reasons we had to change our model to closed source. Saying that, it is not open-source anymore today. But, we still post builds, demos and readme on GitHub
https://github.com/imgly/pesdk-html5-build, https://github.com/imgly/pesdk-android-demo,
and https://github.com/imgly/pesdk-ios-build.
Interesting! One more question. Do you think having an open-source version to start with helped you gain distribution / momentum / feedback early on? Or in the hindsight, do you think you should have started with a commercial license and not bother with open-source at all? The reason I am asking is that for https://scantobim.xyz, I offer a 30-day free trial. There are quite a few downloads but not many conversions. The product still needs to be improved but I need better feedback before I can improve it. Do you think making it free will help me increase distribution and feedback? I am worried that if it's free, people won't even be willing to talk to me over phone since there is nothing to be gained by them.
That is a pretty hard question to answer in general.
For us, I think being available on GitHub helped a lot, wether being open-source or not makes a difference, I cannot judge anymore.
Think of it more as something like a search channel, where others developers can find your product. Also when you decide to go open-source choose the right license. Take a look at our README. While the open-source version could be used non-commercial without charging, you had to get a paid license for commercial use.
For us the best feedback came from paying or potential paying customers which we work with really closely. We realized that our customers are not really interested in the code itself but the product and the experience surrounding it (support etc.). Ensure that you have a good and really accessible support channel. we setup slack and all developers joined. We also made sure that our READMEs and Website stated that, such that our potential customers could join slack and ask pressing questions and report bugs easily.
Thanks! This was helpful.
@neeravbm 3-4 years ago we changed our license such that you had to obtain a commercial license when you use it commercially while still being open-source on GitHub. This is the version you can see at https://github.com/imgly/imgly-sdk-html5.
I was wondering the same thing!
How does charging for open-source software work?
@rayandre Note that open-source != free sofware. It can be open-source but you can still charge for commercial use of the software when you choose the right license. For reference see our old README at https://github.com/imgly/imgly-sdk-html5/blob/master/LICENSE.md . This worked for us in the early years pretty well.
Curious, what type of license did you choose? Tried browsing for OSS but non-commercial licenses and can't seem to find one
Just because the software is open-source, does not mean you can't charge money for it. Even Richard Stallman himself has said it's perfectly fine. But there has to be some kind of value-add to make it worth it, otherwise who would buy it? Daniel mentions near the beginning of the interview that companies actually asked for a commercial license. Companies like to know their vendors won't go dark on them, so they are willing to pay money for a license that gives access to support, consulting, feature requests and other things. Lots of developers build companies around their open-source software and are very successful.
Agreed, and most of open-source companies have two forms of revenues: (1) consulting, and (2) premier features. I am not doubting PhotoEditor's revenue. I was just interested in knowing how they make money. If they are charging for the base product, I would like to know more about this business model especially since the code is open-source on GitHub, although they don't mention it on their website. So may be they are just selling access to the source code who didn't know that the code is open-source?
This comment was deleted 6 years ago
Your argument would make sense if their product was a free or cheap ($5-$100) a month B2C service. But they are B2B, and of course won't have that much mainstream popularity. Plus B2B sales make FAR more money per sale $XX,XXX+. So all they really need is 10 separate large business clients for $XXX,XXX+
One license of their cheapest plan for small developers (up to 10k uses/month) is $179/month excluding 19% tax. They have customers like Zalando with millions of MAUs. I certainly believe their figures.
This comment was deleted 6 years ago