Hello, Indie Hacker community, I'm Frank Rousseau, I'm 37 years old, and I build companies that do free and open-source software.
Previously I was a full-time software engineer. Then I co-founded, as CTO, a venture-backed startup that provided an open source personal cloud (Cozy Cloud). From that experience, I understood that I'm better suited to bootstrapping a company, rather than raising VC. That's why I chose the indie hacker way for this new project: CGWire.
CGWire makes Kitsu, a project management tool for the animated movie industry. When you create an animated production, you have many stakeholders involved at different stages. A lot of creative work needs to be done following a very industrial process. Kitsu is a simple, open-source production tracker. It lets you delegate tasks, report progress, and send feedback. Additionally, it comes with a robust review system to validate each element shipped.
Today, more than 30 studios and schools use our product in more than 20 different countries. We earn an average of $9,000/month, and we have a good growth perspective.
Ten years ago, I worked for a company named HD3D that created similar software. It was heavily funded by the French government. Many studios and research labs were involved. That sounds good, but it had a lot of drawbacks. Every decision required consensus, we worked on many different subjects, and the partners had free access to the software. Those complications made things work very slowly, and it was hard to set up the business model. After three years, the project died. I was frustrated because we had a working product, and we identified a particular need around production tracking, we just couldn't move fast enough to do anything about it.
Years later, when I stopped working at my previous venture, Cozy, I was contacted by Léon Bérelle, the CEO of Unit Image studio. He talked to me about its growth problems and mentioned he was looking for developers.
After a few discussions, I understood that he was having the same issues we'd had at HD3D. Current production trackers are slow and have a terrible user experience. I learned a lot through my experience at Cozy, so I decided to give production tracking a second chance, and redo everything from scratch.
At that time, I had no other ways of making money. Léon and I talked about my project, and we decided I would work at his company 3 days a week. In exchange for a smaller paycheck, he let me keep the ownership of the code I wrote for his company. The arrangement let me have a decent salary while working on my project.
I contacted and met with dozens of studios to talk about production tracking. Six months later, I found two studios that were ready to pay me to build features to improve the software. With that, the business need was validated.
In the beginning I spent a lot of time meeting potential customers and I did some tech mentoring at Unit Image. If you count that as part of the process, from day one, it took me something like nine or ten months to have a product running in production. If you include my hosting services, it took me even more time: 18 months to have a hosting infrastructure and a website to sell hosting services online.
Building a production tracker was much more complicated than I thought. The studios had extensive requirements, even after I cut as many feature requests as I could. Because it's open-source, I had to work a lot on the deployment aspects and the documentation, too.
I didn't expect to spend so much time on the initial project. Fortunately, I've always been a generalist, so I was able to code both frontend and backend. Because I know the basics of product design, my product was good enough compared to most similar software and even above the market for production trackers.
For the hosting infrastructure, I got help from a friend of mine, who is still working with us today.
OVH, a French hosting provider, helped a lot, too, though their low prices and their startup program (10k servers during one year). We provide a virtual machine per customer, so our server costs are high.
For the frontend, I use Vue.js, I have always done SPA and wanted a simple and well-documented framework. Everything is available out of the box, and the documentation is fantastic. It's done a perfect job for Kitsu.
On the backend, I decided to apply the boring technologies principle by choosing Flask as a framework and Postgres as database. I used a Python framework because the animation industry uses this language almost exclusively. So, as an open-source project, it was logical to make it with Python.
We manage our hosting infrastructure with Terraform, Ansible, and Ubuntu. We use the OVH public cloud for both storage and virtual machines.
We've been satisfied with all these technologies and still use them. That said, we just had some issues in dealing with WebSockets with Flask. We'll probably replace our real-time event publisher with another technology at some point.
The next big challenge will be the instances synchronization. Many of our users have sites in a different part of the world and want fast access to their data (and terabytes of videos). Some of them want on-site installation too. We already wrote code to duplicate and synchronize data, but now we have to make it run in production.
Our first users were our partners that I met by doing networking. In the beginning I expected to make most of my sales online, so I built a cool website, made clean Github repositories, and wrote content on our blog. It was a great way to widen my knowledge of the animation field and meet technical people. From there, I set up an online community. It made things exciting and gave credibility to the CGWire brand.
Unfortunately, despite my efforts, online subscriptions were nonexistent. My first customers were using local installations they made from the Github repositories. The situation was not good. Then, someone recommended I set up a booth at a tradeshow (the MIFA market). There, I met a customer who was interested in a hosting subscription. He also recommended Kitsu to another studio. They were both small, but they initiated the subscription model I wanted. A few months later, a bigger studio I met in the early days bought a subscription, too.
I was slowly accepting that our best revenue channel was not online marketing, but direct sales. At the same time, I hired a co-founder, Gwénaëlle. In addition to her great production management skills and her entrepreneurial mindset, she knew many people in the industry. We put a lot of effort towards improving product packaging (tutorials, documentation, more accurate features, etc).
The next year when we came back at the same tradeshow, Gwen's network really came into play, and we did demos non-stop for five days. Around this time, we hired a part-time salesman, Jean-Christophe. After that, we closed many deals with studios who work on bigger productions (TV series and feature films instead of short movies). We went from ten customers to 30 in six months.
Another thing we did, which helped a lot, was to organize meetups. We noticed that events to meet leads didn't happen often enough. So we decided to run our own events by organizing meetups about best practices every month. We gathered an active community of people learning together. It's helpful for us, but also for the whole industry, which is super satisfying.
Our business model is based on two revenue streams: features addition and hosting services. Like I explained before, we charged for all new features we added from day one, and that's still something we do.
The second stream comes from our cloud hosting service. Basically, we sell our solution like any SaaS, through subscriptions. Most of the studios don't use a credit card, so we mainly sell yearly subscriptions and get paid through wire transfer. Some of them want a monthly subscription, and in that case, we use Stripe to charge them.
During the past six months, we charged an average of $9000/mo from both streams. If we flatten the revenue from our hosting service, we have an MRR of $3500/mo.
In 2019 we revamped our offerings and improved the product packaging. Then we hired a part-time salesman who allowed us to acquire customers faster. More recently, we added paid support through "Success Packs," because we spent too much time doing active support.
If you do B2B with traditional companies, I recommend charging for every service you provide. When you don't target makers or startups, the buying process is much longer, and people negotiate all the time. So proposing higher prices with discount is easier for sales than offering a fair price directly. Don't feel ashamed to augment your rates! As your product and your services get better, it's normal to charge more for them.
My goal is to build a company of ten to 30 people, where everyone has an excellent work-life balance. The dream team would work remotely and with the software craftsmanship principles. Ideally, we would make high margins, because when you're always chasing every penny, it's hard to innovate.
As for the product, it would be great if it's the default tool people use to run an TV animation studios. We want to make sure it integrates with all other software used by a studio.
We will continue to foster collaboration between studios through events, but we don't have a particular target for this. That said, being able to run the biggest CG artist best practices conference in Europe would be a significant achievement.
On a personal level I would like to be able to adopt a digital nomad lifestyle, take a few mini-retirements, and develop a solid work-life balance. The last eight years of working on my projects has been wonderful, but it's exhausting too.
The biggest challenge for us was sales. I was an engineer, and Gwénaëlle was a manager, so doing online marketing was okay for us, but doing sales was really outside of our comfort zone.
We're doing better at it now. I found a mentor to help me, and we have our new teammate. We defined a transparent process and formed good habits with our CRM. But it's still an area where we're constantly improving, especially for large deals.
If I had to start over, I would optimize the sales process earlier, or I might look for a more straightforward product that I could have easily adapted to other markets. Currently, the animation market is small, which makes it harder for us to grow. Starting with a niche like Seth Godin, recommend is great. But if you're too specific, it's hard to break out into other areas.
Another thing I would have done is price higher earlier and be more confident about my product. Being friendly with pricing prevents you from growing at the pace you deserve. Lack of confidence when you bring a lot of value is nonsense!
Books helped me a lot, for this project, three of them especially:
All along the way, we met people who helped us. They acted as evangelists and shared their network. When you put in the extra work, like doing open-source, sharing best practices, and fostering a community, people appreciate that, and they tend to help more.
Finally, we joined an incubator named Creatis. In the beginning, I was skeptical, but they provided us what we asked for: sales and entrepreneurship mentoring, legal advice, and some perks (like a place to host our meetups). They don't take equity, they only charge us every month and don't ask much time from us. Madjid Yahiaoui, our mentor, is a very good coach too.
Last but not least, we got some funding: BNP bank agreed to give us a loan of 45k€, which made my co-founder hiring possible. And we got a subsidiary of 30k€ from French CNC to invest in our infrastructure. Not really the "classic" Indie Hackers way, but it's still money.
There are so many things to say...
From what I observe, aside from e-commerce, it's easier to bootstrap a B2B company than a B2C company. If you go for B2B, startups and makers are a better target because they are always looking for the best software and decide fast.
Another important thing is to make progress every week. If you regularly have something new to say, it makes your storytelling easier. Your customers, your teammates, and your family will be more excited by your project. In the end, you will always feel motivated, which will raise your chance of success.
Look for chances to make money from day one. A company is a system where money gets in and out. If your money doesn't come from customers, at some point your system will break. Funding is addictive, and you can survive a long way without bringing any value. Most projects fail, so if you didn't do much to make money aside from funding, all your efforts could be a pure waste.
The common mistakes I see are people underestimating the difficulty of software. Building software is hard and requires a lot of dedication. It means you can't chase too many ideas, or use a technology just because it's cool (like ML, blockchain, AR, etc). You have to commit to a problem, understand its context, and iterate on a solution. It's a never-ending process.
And, to be honest, most indie hackers have poor business skills at the beginning. You will sweat a lot to achieve the same thing an experienced entrepreneur did. Don't be fooled by those who make it look easy. They are probably in a better ecosystem, have better initial training or funding, or simply a better network.
You will have to learn a lot in every field; books, blogs, and communities are your best friends. Learn by yourself and ask your peers lots of questions. If I started from zero today, I would start with the book Rework (which is a must-read for every entrepreneur) and get involved in the Indie Hacker community from the start.
We have a website and are present on many social media platforms. If you live in France, come to our meetup, we'd love to share a beer with you!
From times to time, I write articles with good tips on my personal blog.
Feel free to ask any questions in the comment section below, I would be glad to give you more details!