Skip to content

Vince

5 posts by Vince

Here's my SaaS Cost, Profit, and Marketing Breakdown

Hey builders,

I wanted to share my journey building a micro SaaS, CoverLetterGPT, which earns $550/month in recurring revenue (MRR), while requiring minimal effort and maintenance. Here’s a breakdown of overall costs, profit, how I got customers, and why I believe small, simple SaaS apps are an underrated way to start as an indie maker.

@hot_town_ Here’s a down of how much it cost me to run my SaaS app which is a simple GPT wrapper for generating cover letters. Overall, it’s been a decent little profit because the app doesn’t cost me much to run. #webdevelopment #sideproject #indiehackers #saas #ai ♬ original sound - Vinny

At a glance

CoverLetterGPT is a GPT wrapper that generates personalized cover letters based on the user’s uploaded CV and job description. The function that seperates it from just using chatGPT is that users can edit cover letters inline with AI assistance, as well as manage all the different cover letters they’ve generated. It’s super simple, and it’s even open-source! I launched it in August 2023 and it’s been a steady source of passive income since.

Here are some quick numbers:

  • Built in 1 week
    • using Open SaaS, a free, open-source React, NodeJS, SaaS boilerplate template with tons of features.
  • Runs on autopilot
    • ~1hr/month of maintenance
  • ~$550 MRR
  • Minimal customer support
    • Only 3 Stripe disputes to date
  • Costs ~$16/month
    • ~$12 for hosting
    • ~$3 for OpenAI API fees
    • $11.82/year for the .xyz domain
  • $0 paid ads
    • Just SEO and Social Media/Reddit
CoverLetterGPT MRR & Revenue Chart

Costs Breakdown

Cost TypeMonthly CostNotes
App Hosting$12Railway.com
OpenAI API$3~1,500 requests / 1.5m tokens
Domain$0.98$11.82/year via Porkbun
Stripe Fees~$45~3% + 30¢/transaction + ~2% currency conversion

As you can see, Stripe fees are the biggest “cost” in the end, becuase most of my customers are abroad, so I get hit with extra cross-border fees. But that’s just the cost of doing business. Plus, I don’t really see these fees, so they dont bother me much.

Meanwhile, using the OpenAI API isn’t as expensive as you might think, and the models keep getting cheaper and better. I’m currently using the gpt-4o-mini model for the standard plan, and gpt-4.1 for the pro plan.

CoverLetterGPT SubscriptionPricing

At about 1,500 requests/month, which equals roughly 1.5m input and output tokens, this costs me around $3/month.

CoverLetterGPT OpenAI Cost CoverLetterGPT OpenAI Requests

Besides that, my hosting bill is about $12/month on Railway, and I pay $11.82/year for the .xyz domain via Porkbun.

Revenue & Profit Breakdown

MetricValueNotes
Avg. Monthly Revenue$615Past 8 months, converted from €543
Total Net Revenue$9,912Since launch, after Stripe fees
Total Costs to Date$345$15/month × 23 months
Avg. Monthly Profit$416$9,567 ÷ 23 months
Total Profit to Date 🎉$9,567Net revenue minus costs

At current exchange rates, my average monthly recurring revenue of €543 over the past 8 months equals

  • an average of $615 MRR for the past 8 months

My total revenue, minus ~$45/month Stripe fees, disputes, and refunds, since launch has been €8756. At current exchange rates, this equals

  • $9,912 total net revenue

My costs since launch 23 months ago have been ~$15/month. So 15 * 23 equals

  • $345 monthly costs

This brings my total profit since launch to

  • $9,567 total profit or
  • $416/month average profit

That’s enough to afford a lease on a nice Jeep Wrangler.

cars I can lease for $416/month

Not bad for a side project that I built in 1 week!

Marketing Breakdown

ChannelEffort LevelReturnResult / Notes
Product HuntHighMediumInitial launch, created marketing assets, got early traction
RedditMedium-HighHighPosted in dev/entrepreneur/job subreddits, boosted SEO, some bans risk
Indie HackersEasyMediumShared open-source story, featured in newsletter, good feedback
TwitterHardLowShared updates, videos, and journey.
TikTokMedium (Ongoing)HighShared updates, videos, and journey, helps maintain MRR.
Paid AdsNoneDid not run any paid ads

By far the question I get asked the most by other curious builders is how I got customers. Many ask if I paid for ads, and I didn’t.

Here’s what I did do:

Initial Product Hunt Launch

A lot of people aren’t sure if Product Hunt is worth it these days (spoiler: it still is!), but I’d say launch there anyway.

CoverLetterGPT Product Hunt Launch

I wasn’t sure where to go with my app after I first built it, so Product Hunt seemed like a good start. The benefit of launching there, regardless of how the launch performed on the platform, was that it forced me to do a few important things.

First, I had to create good marketing materials for the launch, like videos, images, and marketing copy.

Then, with the launch coming up, I felt that I had to start telling people about it. I mean, there’s no point in launching and then not trying to get some upvotes and support, right?

This all lead to giving me a jump start on spreading the word about the app. It did decently well on product hunt, and gained some initial traction, but with that material I also went to other platforms to share it.

Reddit Posts and Comments

CoverLetterGPT Reddit Post

Posting on Reddit can be tricky. If you’re too forward, it gets seen as spam and you can get banned.

Luckily, I left the app open-source because I wasn’t anticipating much success from it, and a good side effect of this was that I was able to openly post about it on developer and entrepreneur subreddits. To this day, I think this had a good effect on SEO, but I’m not certain.

Besides that, I found job search subreddits and left comments on posts where people were asking about using AI to generate cover letters.

Indie Hackers

I also posted about it in the IndieHackers community and got great feedback, mainly due to the fact that it was open-source and starting to get good signup numbers.

CoverLetterGPT Indie Hackers

This led to a getting featured in their newsletter—again, thanks to the app being open-source—and this led to a lot more buzz.

Twitter & tiktok

I also took to twitter and tiktok to share fun videos about the app, my journey building it, and my thoughts about it.

Doing this periodically and consistently throughout the past couple years has probably helped keep MRR consistent

What I’ve learned

This experience has been pretty interesting. I’ve defintiely had a bit of luck and good timing on my side, but I’ve also learned a lot about building a SaaS, marketing, and what tends to be good and bad advice out there.

So here’s my take on things.

Small, Persistent Wins Are Worth It

Many developers think a SaaS has to be big, flashy, or wildly profitable to be worth building. I disagree. For me:

  • $550/month is fantastic as side income.
  • Revenue has been surprisingly stable.
  • It runs itself, requiring virtually no maintenance.
  • I can balance it easily alongside my full-time job.
  • It’s fun and doesn’t consume my free time.

I would encourage anyone who wants to build a SaaS to go for it, but to aim for small, achievable SaaS projects instead of trying to “hit it big” from the start.

Build & Launch Fast

The most important lesson I’ve learned: speed is everything. The faster you launch, the faster you’ll know if your idea works. Here’s what worked for me:

  1. Avoid long, drawn-out failures: Build small, execute early.
  2. Use the fastest tools available: I used Open SaaS because it gives me all the building blocks already set up (auth, Stripe payments, OpenAI API examples, email sending, etc), letting me focus on the business logic of the app.
  3. Forget perfection: I didn’t worry about making it pretty or perfect—-it just had to work.

Keep It Simple

The beauty of a simple, “micro SaaS” is in its simplicity. Here’s why:

  • My app does one thing well: generating cover letters based on résumés and job descriptions and allows users to edit them inline with AI assistance.
  • There’s no need for a fancy landing page or marketing gimmicks. This is my 🌶 hot take. I mean, my landing page is my app! Users land on it and can instantly try it out.
  • Users get 3 trial credits-—enough to try the app and see value before paying.
CoverLetterGPT landing page

One of the biggest perks of small SaaS is how low-maintenance it can be. With CoverLetterGPT, I rarely handle customer service thanks to its simplicity and the low, but consistent number of users (~100).

This means I spend my time on new ideas rather than maintaining old ones.

It’s All About Tradeoffs

While I could optimize and grow CoverLetterGPT further, I’ve chosen to keep it small and simple. For me:

  • Small wins are still wins.
  • I value having a side project that’s easy to manage alongside my full-time job.
  • I’d rather have less stress than chase higher profits.

Final Thoughts

If you’re considering building a SaaS, don’t overthink it. Start small, move fast, and treat it as an experiment. Forget the “rules” and focus on launching. Here’s what matters most:

  • Keep it simple: Build an app that solves one problem well.
  • Launch fast: Test your idea and iterate based on real feedback.
  • Minimize effort: Aim for maximum reward with minimal maintenance. If you’re spending months on it before people can try it, you’re probably working on the wrong initial idea.

For me, $550 MRR isn’t just “enough”—it’s amazing. It’s proof that small, focused apps can succeed, and they’re a great way to build confidence and skills as a maker.

My GPT Wrapper Makes $550 MRR One Year After Launch

Hey builders,

I wanted to share my journey building a micro-SaaS, CoverLetterGPT, which now earns $550/month in recurring revenue (MRR)—all while requiring minimal effort and maintenance. Here’s how I did it and why I believe small, simple SaaS apps are an underrated way to start as an indie maker.

Quick Stats:

  • Built in 1 week
    • using Wasp, a React, NodeJS, & Prisma framework
    • and Chakra UI for the design system.
  • Runs on autopilot
  • ~$550 MRR after one year
  • Minimal customer support—only 3 Stripe disputes to date
  • Costs ~$15/month to operate (hosting + OpenAI API fees)
  • Deployed on Railway & Netlify

BTW, I built Open SaaS, the free, open-source SaaS template based on what I learned from building and launching CoverLetterGPT.

Because Open SaaS is a community-driven project, it also benefits from community feedback and contributions, so it boasts a clean codebase and a ton of useful features. Check it out and give us a star! We’re always improving it.

⭐️ Star the Open SaaS repo and support open-source tools for builders, by builders!

Small Wins Are Worth It

Many developers think a SaaS has to be big, flashy, or wildly profitable to be worth building. I disagree. For me:

  • $550/month is fantastic as side income.
  • It runs itself, requiring virtually no maintenance.
  • I can balance it easily alongside my full-time job.
  • It’s fun and doesn’t consume my free time.
CoverLetterGPT MRR Graph

Here’s why I think you should aim for small, achievable SaaS projects instead of trying to “hit it big” from the start.

Build & Launch Fast

CoverLetterGPT Reddit Post

The most important lesson I’ve learned: speed is everything. The faster you launch, the faster you’ll know if your idea works. Here’s what worked for me:

  1. Avoid long, drawn-out failures: Build small, execute early.
  2. Use the fastest tools available: I used Wasp because it gives me all the building blocks already set up (auth, database, cron jobs, email sending), letting me focus on the business logic of the app. Paired with Chakra UI, I was able to build the app in about 1 week.
  3. Forget perfection: I didn’t worry about making it pretty or perfect—it just had to work.

Keep It Simple

The beauty of micro-SaaS is in its simplicity. Here’s why:

  • My app does one thing well: generating cover letters based on résumés and job descriptions.
  • There’s no need for a fancy landing page or marketing gimmicks. This is my 🌶 hot take.
  • Users get 3 trial credits—enough to try the app and see value before paying.
CoverLetterGPT landing page

One of the biggest perks of micro-SaaS is how low-maintenance it can be. With CoverLetterGPT, I rarely handle customer service thanks to its simplicity.

This means I spend my time on new ideas rather than maintaining old ones.

It’s All About Tradeoffs

While I could optimize and grow CoverLetterGPT further, I’ve chosen to keep it small and simple. For me:

  • Small wins are still wins.
  • I value having a side project that’s easy to manage alongside my full-time job.
  • I’d rather have less stress than chase higher profits.

If you’re thinking about launching your own SaaS, here are some helpful resources:

Final Thoughts

If you’re considering building a SaaS, don’t overthink it. Start small, move fast, and treat it as an experiment. Forget the “rules” and focus on launching. Here’s what matters most:

  • Keep it simple: Build an app that solves one problem well.
  • Launch fast: Test your idea and iterate based on real feedback.
  • Minimize effort: Aim for maximum reward with minimal maintenance.

For me, $550 MRR isn’t just “enough”—it’s amazing. It’s proof that small, focused apps can succeed, and they’re a great way to build confidence and skills as a maker.

Let’s stay in touch!

If you found this helpful, check me out on Twitter where I like to build in public and share what I’m learning and building.


⭐️ Star the Open SaaS repo and support tools that help you build fast!

We Made the Most Annoying Cookie Banners Ever

We at Wasp just finished off a fun little hackathon where we asked our users to create the most annoying cookie consent banners they could think of (because cookie banners aren’t annoying enough already, right?). Then we let our community pick the winner in an elimination style tournament on X/Twitter.

It was a lot of fun, and the submissions were really creative, so we thought we’d highlight some of our favorites for you, including the community chosen winner. Check ‘em out below. We hope they inspire you… to… not use them on your own sites. :)

The GDPR Quiz

The General Data Protection Regulation (GDPR) is the EU’s data privacy law that requires websites to get explicit consent from users before collecting their data through cookies.

GDPR is the reason we have cookie consent banners today.

This submission by Cam Blackwood gets to the core of why cookie consent banners are annoying: they force users to make a decision about something they barely understand (or care about), based on a regulation they probably don’t even know exists.

Thanks for the reality check, Cam.

Windows of Time

Do you ever feel like cookie consent banners are UX design pattern from the past? Well, this submission by Lazi confirms that, by sending you through an operating system time machine to a past we’d all like to forget.

Disturbing, yet oddly comforting.

Find all the Cookies

There are some sites that make rejecting cookies a real pain, as if you were trying to find a needle in a haystack, or as if you were looking at a Where’s Waldo puzzle.

This submission by Fecony, Wasp community meme lord, is just that. We find it annoying and fun at the same time, but what we’re not sure about is if it’s even possible to find them all.

Well played, Fecony.

Fresh Batch of Cookies

Most of us probably just smash the “accept” or “reject” button without even reading the fine print. But Henry Boyd is a maniac and with his submission, you have to accept ALLLLL the cookies.

And that’s a whole lot of cookies.

What’s more annoying than cookie consent banners? Probably job applications. Well [Wardbox], community builder extraordinaire, combines the best (or worst) of both worlds to make the cookie mangament process even more tedious than you could imagine.

Now all we have to do is wait for the rejection email.

Grand Prize Winner: Gangnam Style Beat

Our community-chosen winner’s submission pretty much speaks for itself.

Make sure you turn on the sound for this one!

🎤 Eeeeh, sexy cookie. Op! op-op-op! 🎵

And there you have it!

Thanks to everyone who participated! We had a lot of fun looking at all the submissions and we’re glad to see that the community is as creative (and annoying) as ever.

And now for a quick PR announcement:

At Wasp we’re working hard to build a modern, open-source full-stack React/NodeJS framework.

The easiest way to show your support is just to star the Wasp repo! 🐝 It helps us spread the word and motivates us to keep building.

friendly handshake

Thanks for reading, and showing your support!

🍪 THE MOST ANNOYING COOKIE BANNER EVER HACKATHON 🤬

What kind of hackathon is this?

The goal here is simple. Make THE MOST ANNOYING COOKIE BANNER you can think of.

Cookie consent banners annoy us all. So we thought, why not have some fun with them? Here are a couple examples of what that might look like:

  1. The Cookie Consent Wheel of Fortune:
Consent wheel
  1. The “Hit Enter When the Red Ball is Over the Accept Button to Consent” Banner:
Enter to win

Now it’s time for you to get creative. Btw, if you’re looking for some inspiration, check out these Ridiculous Volume Slider UI’s.

Prizes

2 winners will receive a nice mechanical keyboard, an additional annoying gift, as well as a shoutout on our socials.

The 2 winners will be selected by:

  • The Wasp team
  • Our Community (Discord & Twitter)

The community will get a chance to vote in a battle royale style elimination tournament, where two banners will go head-to-head and the winner will advance to the next round.

Keyboard

(The brand/style will depend on the winner’s location, but we’ll do our best to find one with a Wasp look and feel 😃)

How to participate

  • Fork the Annoying Cookie Banner Stackblitz Template

    • If you prefer to work in your own editor, just click on the Create a repository button after you fork the template
  • When finished with your banner, click on Share in the top left, and in the Embed tab, click Copy URL with the following settings:

    Share
  • Next, edit the MOST-ANNOYING-COOKIE-BANNER.md file on the Open SaaS repo.

    • Enter your GitHub username followed by the embed link you copied from Stackblitz
    • Note: after you create a PR, the Wasp team will add the ANNOYING COOKIE BANNER label to it.
  • Make sure you also ⭐️ star the Open Saas repository to be eligible to win!

Deadline & Results

Submit your PR before the 21st of October to be eligible to win!

Be sure to join our Discord or follow us on Twitter/X for updates and the final results!

Let’s annoy our users! 🚀

Let’s create the most annoying cookie consent banner and have some fun! This hackathon is your chance to show off your creativity and tech skills. We’re super excited to see what wild ideas you come up with.

Remember, this is all about having fun and pushing the boundaries of user interface design!

Let the annoyance games begin! 🎉

How I Built & Grew CoverLetterGPT to 5,000 Users and $200 MRR

Hey, I’m Vince…

Vince Headshot

I’m a self-taught developer that changed careers during the Covid Pandemic. I did it because I wanted a better career, enjoyed programming, and at the same time, had a keen interest in IndieHacking.

If you’re not aware, IndieHacking is the movement of developers who build potentially profitable side-projects in their spare time. And there are some very successful examples of IndieHackers and “solopreneurs” out there inspiring others, such as levels.io and Marc Lou.

This thought of being able to build my own side-project that could generate profit while I slept was always attractive to me.

CoverLetterGPT

So I’m happy to report that I’ve finally done it with my first software-as-a-service (SaaS) app, CoverLetterGPT.xyz, which I launched in March 2023!

I’ll be the first to admit that the results aren’t spectacular, but they’re still something I’m very proud of:

  • over 5,000 registered users
  • $203 monthly recurring revenue (MRR)

Below, I’m going to share with you how I built it (yes, it’s open-source), how I marketed and monetized it, along with a bunch of helpful resources to help you build your own profitable side-project.

What the heck is CoverLetterGPT?

CoverLetterGPT.xyz was an idea I got after the OpenAI API was released. It’s an app that allows you to upload a PDF of your CV/resumé, along with the job description you’re applying to, and it will generate and edit unique cover letters for you based on this information.

It also lets you save and manage your cover letters per each job, making it easy to make and apply to multiple jobs without having to keep copy and pasting all your important info into ChatGPT!

What’s the Tech Stack?

Tech Stack

CoverLetterGPT is entirely open-source, so you can check out the code, fork it, learn from it, make your own, submit a PR (I’d love you forever if you did 🙂)… whatever!

I built it using the Wasp full-stack framework which allowed me to ship it about 10x faster.

Why?

Because Wasp as a framework allows you to describe your app’s core features in a main.wasp config file. Then it continually compiles and “glues” these features into a React-ExpressJS-Prisma full-stack app for you.

All you have to focus on is writing the client and server-side logic, and Wasp will do the boring stuff for you, like authentication & authorization, server config, email sending, and cron jobs.

BTW, Wasp is open-source and free and you can help the project out a ton by starring the repo on GitHub: https://www.github.com/wasp-lang/wasp 🙏

star wasp

⭐️ Star Wasp on GitHub 🙏

For the UI, I used Chakra UI, as I always do. I like that it’s a component-based UI library. This helps me build UI’s a lot faster than I would with Tailwind or vanilla CSS.

For payments, I used Stripe, (I’ll go into the details of monetization below).

The Server and Postgres Database are hosted on https://railway.app, with the client on Netlify.com’s free tier.

By the way, If you’re interested in building your own SaaS with almost the same stack as above, I also built a free SaaS template you can use that will save you days of work!

How I Marketed It

My biggest take-away from this whole project was that open-sourcing it was the best way to market it!

This seems counter-intuitive, right? Why would making the code available for anyone to see and copy be good for a business? You’re basically rolling out a red carpet for competitors, aren’t you?

Well, not quite.

First of all, the number of people who will realistically spend the time and energy launching a direct competitor is low. Also, most people interested in your open-source code want to learn some aspect of it and apply it to their own ideas, not just copy yours directly.

Secondly, and most importantly, the fact that it’s open-source makes people a lot more receptive to you talking about it.

reddit

When you present something you’ve built and give people the opportunity to learn from it, they’re much more welcoming! As a result, they’re more likely to upvote it, share it, use it, and recommend it to others.

This is exactly what happened with CoverLetterGPT! As a result of me sharing the open-source code, it get featured on the IndieHackers.com newsletter (>100k subscribers), shared on blogs, and talked about on social media platforms.

product hunt

And even though it’s a small, simple product, I tried launching it on Product Hunt, where it also performed considerably well.

So, all together, these initial efforts combined gave my product a good initial marketing presence. To this day, I haven’t really done much else to market it, except some twitter posts (and this post, if you want to consider it marketing 🤑).

How I Monetized It

When I first launched in March 2023, I didn’t really expect anyone to pay for the product, but I wanted to learn how to use Stripe as a payments processor, thinking that the skills might be useful in the future.

So I started simple, and just put a one-time payment link for tips. No paywall, no subscriptions. It was entirely free to use with any tip amount welcome.

To my surprise, tips started coming in, with some as high as $10 dollars!

This encouraged me to force users to login to use the product, and add a paywall after users used up 3 credits.

My initial payment options were:

  • $4.95 for a 3 months access
  • $2.95 for 10 cover letter generations
pricing page

That went reasonably well until I implemented the ability for users to use GPT to make finer edits to their generated cover letters. That’s when I changed my pricing and that’s when better profits started to come in:

  • $5.95 / month subscription with GPT-4
  • $2.95 / month subscription with GPT-3.5-turbo

Currently, over 90% of my customers choose the more powerful, more expensive plan with GPT-4, even though the 3 trial credits use the GPT-3.5-turbo model.

(I also integrated Bitcoin Lightning payments — check out the repo if you want to learn how — but haven’t received any yet.)

Now, with an MRR of ~$203, my monthly profit of course depends on my costs, which are:

  • Domain Name: $10/year
  • OpenAI bill: ~ $15/month
  • Hosting bill: ~ $3/month

Which leaves me at about ~ $183/month in profits 😀

Future Plans

One of the most surprising aspects about CoverLetterGPT.xyz’s success is that, on the surface, the product is very simple. Also, I’ve done very little in the way of SEO marketing, and haven’t continued to market it much at all. The current growth is mostly organic at this point thanks to my initial marketing efforts.

But I still have some plans to make it better:

  • buy a better top-level domain (TLD), like CoverLetterGPT.ai
  • add more features, like the ability to generate interview questions based on the cover letters
  • improve the UX and make it look more “professional”

If you have any other ideas how I could improve it, drop me a comment, message me on twitter/x, or submit a PR to the repo.

Final Words + More Resources

My intention with this article was to help others who might be considering launching their own SaaS product. So I hope that’s been the case here. If you still have any questions, don’t hesitate to ask.

Here are also the most important links from this article along with some further resources that will help in building and marketing your own profitable side-project:

Oh, and if you found these resources useful, don’t forget to support Wasp by starring the repo on GitHub!

star wasp

⭐️ Thanks For Your Support 🙏