Discover more from Tony Dinh's Newsletter
My solopreneur story: zero to $45K/mo in 2 years
Today is exactly 2 years since I quit my job and become a full-time indie hacker.
20 September 2021 was the first day I became unemployed and started working for myself.
It’s the best decision I’ve ever made. Working for myself gives me a freedom I’ve never experienced before.
Over the past two years, I have:
created four small but successful products (all will be mentioned later in this post)
built an audience of 97K followers on Twitter
created this newsletter with 6,000+ subscribers
jumped on the AI hype train and successfully created a product with it
and survived a drama that almost killed my business
At the moment, my total revenue across all products is about $45K/month at ~90% profit.
I want to take this opportunity to write a recap of my journey so far. I hope this will be helpful for people who are looking to become their own boss one day.
A bit of background
Before quitting my job, I was a software engineer with 7 years of experience (in 2021).
I love building software. My first software product was built with Visual Basic 6 in high school. Throughout my career, I have always had some side projects along with my full-time job.
Below is a summary of my full career history:
Thanks to 7 years working in the industry, I picked up a lot of useful skills: frontend, backend, DevOps, mobile apps, game dev, and a bit of UX/UI design.
These skills became my biggest advantage and have helped me tremendously later in my journey.
Learned about Indie Hackers
Early 2020, COVID happened. I was forced to work remotely alone at home (in a foreign country).
It was incredibly boring.
I discovered IndieHackers.com and started listening to their podcast every day. I got really inspired by the stories of successful indie hackers like Pieter Levels, Kyle Gawley, Jon Yongfook (and many more).
The inspiration, the boredom of COVID, and the extra time I got from not having to commute to work led me back to my passion: building software products.
So I gave it a try. I started working on a new side project with the hope of generating some revenue.
First failure
My first attempt was to build a log viewer macOS app.
As a good software engineer, I wanted the app to have a beautiful UI, tons of features, a comprehensive architecture, and a unit test suite with >95% test coverage.
I worked on it for ~6 months. I felt like the project would never finish. Then, I got bored and abandoned the project.
It failed spectacularly.
But at least I got something from it: I gained a lot of experience working with Swift, which means I can build macOS and iOS apps much faster now.
First successful app: DevUtils
It took me a while to recover from my first failure.
About a month later, I decided to give it another try (and this time, you can be certain that I wrote zero test cases 😂).
I built the first version of DevUtils in about 2 weeks. It’s an app that bundles all the frequently used developer tools into one unified interface that works offline on your macOS.
I sent the app to friends, family, and co-workers to use (for free) and received some good feedback. People love the app!
That was the sign I was looking for. I was excited and decided to add payment to the app: $9 - a one-time purchase to use the app forever.
Then, I posted the app on Hacker News. I think I got lucky, the post received some positive comments, and I got to the top of Hacker News for a few hours.
And that’s how I got my first ever internet dollar. I jumped like crazy in my bedroom in Singapore (I was still working full-time at the time).
I discovered Twitter
Things started to slow down after the initial traffic spike from the Hacker News front page. I posted the app on Product Hunt and got another traffic spike, and that was it.
A week after that, I rarely get any visitors to the website. No more sales.
I knew that posting the app to websites and forums on the internet and hoping for a traffic spike wouldn’t work in the long term. I can’t get lucky forever.
So, I started to look for a long-term distribution channel.
I tried Google paid ads, wrote SEO articles, looked for sponsorships on newsletter/YouTube channels, and tons of other things.
There were some small results, but in the end, I didn’t see a way that could give me traffic for the long-term without continuous effort. (Except for SEO, but SEO is extremely slow to see the results)
This is when I think about Twitter and the #buildinpublic community.
I decided to give it a try to become a Twitter influencer.
The plan was that if I could get a lot of followers, I would have a consistent flow of traffic to DevUtils without doing much.
And so, I reactivated my old Twitter account and started building my personal brand. Most of my tweets were about DevUtils and it was quite boring.
Building an audience
I quickly learned that tweeting about DevUtils alone wasn’t going to help me gain followers. People just don’t care.
Sure, I engaged with other people in the community, replied to their tweets, made jokes, and was just hanging around. But in the end, if I don’t have something interesting on my own timeline, people have no reason to follow me. Just tweeting about DevUtils wasn’t going to cut it.
I needed to do something interesting to get the attention.
So I started doing a lot of fun stuff, using my skills and advantages: coding.
For example, this experiment is my first ever “viral” tweet with 100+ likes:
In summary, my Twitter strategy was:
Build interesting stuff and share it in public
Engage with other people
Write threads
A lot of memes and jokes
Overall, be an interesting person and be nice
After 6 months of consistently doing this, from 100 followers in November 2021, I grew my account to 700 followers in May 2021.
First “real” business: Black Magic
I considered Black Magic to be my first ever “real” business because it has a subscription pricing model with recurring revenue.
This is how it started.
Around May 2021, when I was approaching 1,000 followers on Twitter, I decided to do something special to celebrate it (and also to get more engagements!).
By looking around the Twitter API document, I learned that I can update the profile picture via API. So, I built a small script that shows a progress bar around my profile picture.
The progress bar would get closer and closer to 100% as I get to 1,000 followers.
People loved the idea so much! So, I turned the script into a web app and added a $4/month subscription fee for the “Pro” version, where people can customize the progress bar color.
And that was how I got my first ever recurring revenue dollar!
At this time, I was still working at full-time job.
Embraced the traction, I worked on Black Magic with all the free time I had.
I added many other features to Black Magic, mostly Twitter tools that help users create more engagements.
By building and tweeting at the same time, both my MRR (monthly recurring revenue) and my followers were increasing fast.
Quit job
By August 2021, I have:
~$300 MRR from Black Magic
~$200/mo from DevUtils
~8,000 followers
~1,500 active users (most are free users)
Overall, there is great momentum. I felt confident that I might actually have a shot at making a living out of Black Magic and DevUtils.
That was when I handed in my notice, officially quitting my job. 20 September 2021 was my last working day and my first day as a full-time indie hacker.
I remember I went outside for a walk, took a fresh breath of air, and felt the freedom I never experienced before.
Around the same time, I started writing a newsletter (this newsletter!). If you are a long-time reader, you may remember I wrote about it in detail. Here is the post:
I have a saving of 2 years in the bank. If I lived in Vietnam (my hometown), I could easily go as far as 4 years without revenue. My backup plan was to just get back to a full-time job if things didn’t work out.
At the time, I didn’t have a family yet, no wife, and no kid. It was the best time for me to make the biggest bet of my life. So I did.
My goal was to get to $1K MRR in the first year, which would be enough for me to live comfortably in Vietnam forever.
Ramen profitability in year one
Since quitting my job, I spent all of my time working on Black Magic/DevUtils, and still keep tweeting to build an audience.
The growth started to pick up. I added many new features to Black Magic, most noticeably the Magic Sidebar – a Chrome extension for Twitter that provides Analytics & CRM features.
This feature single-handedly changed Black Magic as a product forever. From being a fun engagement tool to becoming a true painkiller and solving big problems that many big Twitter accounts had at the time.
Later, I pivoted the whole product around this feature. I changed the landing page to exclusively talk about this feature instead of the profile progress bar and other fun features. You can see it at BlackMagic.so.
Within a few months, by building, tweeting, and launching the product on Product Hunt, my monthly revenue grew to $4K MRR.
There’s a lot going on during this period. Luckily, I’ve written about everything in this newsletter once a month like a machine.
You can read the related posts in this period here:
By February 2022, I have reached $4K MRR and 28K followers on Twitter, far beyond my goal.
Travel, Work, and Play
In the first few months after quitting my job, I worked a lot. Probably 12 hours a day, or even 16 hours/day if you also count Twitter as “work”.
So when I reached $4K MRR, a decent amount considering my living cost in Vietnam, I started to slow down.
I still want to get more revenue, but I realized that this is a moving goalpost, and it will never stop. $10K, then $20K, then $50K. I knew I would never satisfied.
It’s much better to work and play at the same time.
So I traveled. I went for a trip around Vietnam.
My average working hours during this period was about 4 hours/day. I still tweet a lot.
Around September 2022, something magical happened: I was invited to the Indie Hacker podcast! The very podcast that I listened to every day when I started out. It was like a dream come true!
The podcast was released on 22nd September 2022, almost exactly one year after I quit my job.
Fast forward to October 2022, Black Magic grew to $13K MRR steadily.
My 3rd product: Xnapper
Besides working on my existing products, I experimented and tried new things all the time.
I built several small products, some of which failed (EmojiAI, AskCommand).
One of them, Xnapper - a screenshot app, picked up my audience's interest and became my 3rd successful product. It’s now making $6K/month.
I’ve written more about how Xnapper started in this post:
Working on multiple products allowed me to switch between them when I feel bored with one product, reducing my stress.
It’s also a good way to have a fresh new content for the Twitter audience. I was embracing “build in public” and I shared about everything when I was building the app.
For example, this tweet showing the mobile app demo got 1,700 likes! It’s almost like free marketing.
Twitter drama, and my 4th product
Around February 2023, shortly after Elon Musk bought Twitter, they announced that Twitter API (which Black Magic is using) will no longer be free.
I didn’t think this would be a big deal. I was making good money from Black Magic and would be happy to pay.
Little did I know that, the price was announced $42K/month (per month, not per year). There was a smaller plan at $100/month, but the restrictions and limits are so low that you can’t even run a weather bot with it.
Black Magic was at $14K MRR at the time. That means there’s no way I could afford the API price.
I was “forced” to either shut down or sell.
Long story short, I sold Black Magic for $128K. You can read about the whole story here:
As of now, I no longer own Black Magic, but I still love the product and use it every day.
The funny thing is, a few months later, Twitter changed their mind about the pricing. They introduced a new plan at $5,000/month.
This plan comes with some restrictions and API limits, it may or may not work for Black Magic, but I didn’t even bothered to check, because it was no longer matter.
So that was my first product exit. Not the way I wanted, but there was nothing I could do.
Around the same time, I started working on a new product: Typing Mind.
Typing Mind: my 4th product
OpenAI announced the ChatGPT API on March 1, 2023. I’ve been using ChatGPT via the web interface for a while at that point.
The web interface was very limited and I get annoyed by it for a long time. For example, you can’t search your previous chats, the text output was slow, etc. Most annoyingly, the app logged you out and you had to login again every day, which was extremely frustrating.
At some point I was thinking of writing a Chrome extension to scratch my own itch.
OpenAI releasing the API was exactly what I was wating for. I immediately think of writing a better UI for ChatGPT using the API.
The next day, I registered the domain name typingmind.com and started working on the prototype for a few hours.
The Twitter drama kept me busy for the rest of the week, but I managed to get the first version of Typing Mind finished on the weekend.
On Monday, 6th March 2023, I released the first version to the public, and announced it on Twitter.
The app immediately received a lot of traction.
I added a paid plan at $9, then slowly increased the price as I add more features to the app in the next few days (it’s now priced at $39)
Within the first day of releasing the app, I made $1K of revenue, then $2K the next day, then $4K the next day.
In 7 days, I made a total of $22K of license revenue.
Typing Mind has become my primary focus since April. I’ve been adding features, improving the product, and building a B2B version for companies to create their own ChatGPT UI. The app is currently making ~$30K/month revenue on average.
And this is where I am at right now.
Building a team
One thing significantly changed in my 2nd year is that I have started to build a team.
I’ve always prefer to go solo. Working alone mean I don’t have to spend time on discussions, meeting, and more time for building.
However, it get boring quickly to do the same thing over and over again. Things like customer support and some coding task that I know how to do but don’t find it interesting to do anymore.
So over the last year, I’ve hired 1 full-time employee (for content, marketing, support) and 3 freelancers (developers).
With the help from the team, I got back a lot of my free time without sacrificing customers’ happiness. The products also keep moving forward (new features and bug fixes) without me having to actively working.
I still work 4 hours/day on average, but now I only work on things I’m interested in, whether it’s a new feature, or experimenting with a new product.
What do I do with the rest 20 hours in the day?
Let’s talk a bit about lifestyle change.
Lifestyle changes, the good & bad
I absolutely love working for myself and not having a 9-5 job. However, there are pros and cons to everything. After 2 years on this journey, I can understand why this is not the way for everyone.
The good
The first and most important benefit to me is the freedom.
When I have reached the ramen profitability level, I can choose to change my “work-life-balance” level as how I want it.
I have so much free time that allowed me to pursue other interests I have in life, like learning hardware, surfing, traveling, playing games, etc.
I can choose to work on any day as I feel like it, or I can spend the whole day watching Netflix without asking anyone for permission.
The money is also great, I make much more than my last drawn salary (which was ~$9k/month). To make $45K/month as an employee is not an easy task, I would have to be extremely good at coding (and also office politics!).
The learnings are also one of the benefits.
Running a company requires a wide range of skills that I learned along the way: marketing, legal, finance, partnership, sales, etc.
Even thought I’m at a very small scale, I feel much more confident talking about business now compared to when I was just an employee doing what being told.
The bad
The cold start
Nothing comes for free. It could be very challenging and stressful to find a product and make it work, especially in the beginning.
I always tell people not to quit their job without a stable revenue each month, a lot of savings, and backup plans.
Working on side projects while having a full-time job can be stressful too. I was lucky because I haven’t yet have a family and only need to take care of myself. For people who have a full-time job, wife, and kids, there isn’t much time and energy left to work on side projects. The risk factor is also much larger in case of failure.
The risks
Even when you have a successful product, the risks still remain.
Revenue may fluctuate, the market may change, new competitors showing up, or maybe you do something stupid. It could affect the business and so affects you.
Look at what happened to Black Magic, if I couldn’t managed to get the new product (Typing Mind) generating a new revenue stream for me at the time, I would be extremely stressed, which can cause a spiral downturn, who knows.
This is also the reason why I prefer to have multiple products, to reduce the risk of one dying.
The social life
I had to sacrifice my professional network and social life. It gets very lonely.
When I quit my job, I didn’t think this would be a big problem, so I didn’t really paying attention to keeping my connections with people around me.
Now I’m starting to build the back connections, but it’s difficult to keep in touch with people when you no longer work in the same office and have the same topics to talk about.
My friends all have a full-time jobs, not a lot of indie hacker friends around me and they all have different favorite country/city to live. My best option if I want to fix this is to move to some popular indie hubs around the world like Bali or Lisbon, but I still think this isn’t going to work long-term.
It’s just the trade off I have to make going on this path. Lucky for me at least I still have the online Twitter community to hang out with.
Today and the future. Takeaways.
So that’s my entire story from the very beginning.
What’s next? I don’t really know.
Right now, I don’t have a long-term plan. I only have a general guideline that I live to: stay healthy, make more money by doing things that I’m interested in, all of that while not sacrificing my freedom.
Work and enjoy life at the same time.
As for short-term plan, I’ll keep working on my products: Typing Mind (current focus), DevUtils, Xnapper. Maybe even a new product in the near future!
I hope this post will be helpful for anyone want to pursue the same path.
If you are looking to do the same thing as I did, here are some of my key takeaways:
First and foremost, keep in mind that all of this is my story, “my way”. It’s definitely not the “only way”, and probably not “the best way”. All you can do is to cherry pick what I shared here and see if it works for you. There is no formula to guarantee success.
If you plan to work alone like me, try to become a generalist: know a bit of everything. For example, if you are a developer, don’t restrict yourself to only work as a frontend dev, try to develop in backend too, and mobile apps, and design, then also learn marketing, etc. Make use of the 80/20 rule: use 20% of your effort to capture 80% of the value.
Build unfair advantages for yourself. I considered my coding skills as an unfair advantage. I can build apps very fast because I’ve been doing it for years. If you don’t have any unfair advantages, find it or build it today.
Build an audience. This is not for everyone, but if you can, give it a try. Build an audience or a community of your own on Twitter/Reddit/internet forums. Anything you do later will be much more easier. The benefit is compounded. I built an audience of 97K followers on Twitter over the past 2 years and now that’s one of my unfair advantages too.
Ship early, ship small, ship frequently. Don’t stuck on one idea for too long if it doesn’t work. Practice shipping products more frequently to build “muscle memory”.
When building product: focus on the core value it brings to the customer. Practice viewing the product from customer point-of-view to avoid over-engineering. Talk to your customers and involve them to your building process.
Be patient and be prepared for luck. It’s a long term game.
That’s all I have to share for now. If you like what you’ve just read, make sure to subscribe to my newsletter. I write once a month with updates on my journey and share things I know.
Finally, thank you for all the support!
I’m grateful to have received a lot of support from the community (that includes you), whether it’s on Twitter, on Indie Hackers forum, or from this newsletter. Especially on the early days. The community is a big factor in my success.
I hope this post will contribute my small part back to the community, and I hope to see more indie hackers in the future.
Thank you so much and see you soon!
(Discuss on Hacker News or comment below)
Amazing article Tony, thank you for writing it. Really inspiring.
This is the most inspiring story I have read. Thanks for sharing it, Tony.
I like this from Takeaway,
Ship early, ship small, ship frequently.
Practice shipping products more frequently to build “muscle memory”