What I learned from selling my first profitable SaaS

It's not as straightforward as you think

Building your first SaaS can be extremely daunting.

It also turned out to be the most fun and exciting journey I’ve ever done.

There’s so much I learned and I got to make a bit of money along the way.

I wanted to share what worked, what didn’t work, and what I learned in these past 3 months.

I hope you enjoy 😁 

Estimated reading time: 4 min 12 sec

Why did I build this product?

I used Midjourney a couple of times before and it wasn't really straightforward how to create good images or find the previous images I generated before.

So I talked about it with my friend Matt, and he said he would be very interested in working on it too since he experienced these same problems himself.

We also brought on our designer friend Hannah since we were sure that the core problem we were solving is a UI/UX problem.

The product also looked really fun to build!

Where we are now

There were definitely many ups and downs throughout this process. I wasn't used to building my own products yet so I wanted to quickly move on from this idea due to the platform risk involved, but my friend Matt convinced me to keep moving forward with the product.

3 months later, we currently have 550 weekly active users.

The amount of things I learned in this short period of time is actually ridiculous, so I wanted to share my story with everyone so you guys could benefit from it too :)

What worked well

Having a designer

I think designers are worth their weight in gold. Our friend Hannah is amazing at what she does and I honestly don't think we could've shipped this product without her.

The problem we're working on is a UI/UX problem, so it was really important to nail down what sucked with Midjourney's interface (Discord) and build something that made interacting with Midjourney a lot less frustrating.

Hannah helped us a lot throughout this process by explaining what could be done with the interface, so we built our feature list around her advice.

Riding the AI hype

Riding the AI hype wave definitely helped us get some distribution. Our main growth strategy was through AI directories, it made the most sense to us since a lot of the users we talked to were actively looking for new tools to experiment with from them.

So after we launched our MVP we spent a few days posting our product on AI directories. Our product also got featured in a popular AI newsletter since AI newsletters look through directories to feature new tools.

This helped get us 3k visitors to our landing page in the span of 3 weeks and its still giving us dividends, helping us get around 30 users everyday on the landing page.

Working in a familiar-ish tech stack

I used next.js and supabase for my last project, I loved how fast I could move with it so that's what we ended up using even though Matt didn't know supabase.

We also brought on other infra/tooling to help support the app (posthog, stripe, sentry, upstash, axiom). These tools were all new to us, but I focus on picking tools with great developer experience, so overall it made us move a lot faster.

So overall my philosophy for my tech stack now is to pick whatever can make you move the fastest even though if you have to learn it. That choice will end up paying dividends in the long run as the app gets bigger.

What didn't work

Overscoped the project

We built WAY too many features for the MVP. We built it in a month and a half, but this could've easily been built in 2 weeks max with what I know now.

These were the core features we initially built:

  • Generate images

  • Blend images

  • Upscale images

  • Vary images

99% of users only came onto the platform to generate images. So that's around 3 weeks of work wasted to implement blending, upscaling, and varying. They were each technically complex too.

Disconnect with the app and the landing page

Our designer handled the landing page, so whenever me and Matt decided to switch functionality or our strategy, the app would be up to date but the landing page would lag behind.

One example was that we were experimenting with the duration of our free trial in the app, but the information on the landing page would be updated a day later.

This caused our users some frustration and confusion, leading to churn and missed signups.

Using email-based authentication

We implemented magic link login for our MVP at the start.

Later on, this just gave me and Matt a lot of headache since users were abusing our free trial, costing us a lot of time, energy, and money to deal with the problem.

So instead we just removed email-based authentication entirely and migrated all our users to OAuth logins.

What did I learn

  • Stick to OAuth logins only

  • Spend one month MAX on the MVP, any more means you've overscoped the product

  • Do marketing in places where users would hypothetically be searching for your product

  • Great design is important to make a product sticky

  • Use great tools to build your products, it'll save you time and headache in the future

  • Use data to support/disprove product decisions

  • Users should be able to contact you quickly if they have any problems

  • Build in public

  • Run many marketing and product experiments. Double down on experiments that work

  • A team of 3 A+ players is better than a 20 person team of B+ players

If you haven’t, you can also find me on Twitter where I tweet about indie hacking, side projects, and code!

Also if you’re interested, come check out my products:

  1. Journey Plus: Use Midjourney without Discord.

Reply

or to participate.