Skip to content

Commit

Permalink
Merge pull request #345 from wasp-lang/coverletter-making-550
Browse files Browse the repository at this point in the history
Adding a new blog post about cover letter gpt microsaas
  • Loading branch information
mmaksimovic authored Dec 17, 2024
2 parents 6e41a10 + 83231af commit 9c9ec7e
Show file tree
Hide file tree
Showing 8 changed files with 187 additions and 0 deletions.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
20 changes: 20 additions & 0 deletions opensaas-sh/blog/src/components/StarOpenSaaSCTA.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
interface Props {
trailingText?: string;
}
const { trailingText = 'and support open-source tools for builders, by builders!' } = Astro.props;
---

<div class="bg-yellow-300 p-4 text-center text-md font-bold rounded-lg text-black">
<span>
⭐️ Star the{' '}
</span>
<a href="https://github.com/wasp-lang/open-saas" class="!text-yellow-800 underline hover:!text-yellow-600">
Open SaaS repo
</a>
<span>
{trailingText}
</span>
</div>

48 changes: 48 additions & 0 deletions opensaas-sh/blog/src/components/Tweet.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
interface Props {
id: string;
}
const { id } = Astro.props;
---

<style>
.tweet-wrapper {
transform: scale(0.85);
margin: -3rem 0;
}
/* Target the Twitter iframe to reduce padding */
:global(.twitter-tweet-rendered) {
margin: 0 !important;
padding: 0 !important;
}
</style>

<div class="tweet-wrapper">
<blockquote class="twitter-tweet">
<a href={`https://twitter.com/x/status/${id}`}></a>
</blockquote>
</div>

<script>
declare global {
interface Window {
twttr: any;
}
}

window.twttr = (function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0],
t = window.twttr || {};
if (d.getElementById(id)) return t;
js = d.createElement(s) as HTMLScriptElement;
js.id = id;
js.src = "https://platform.twitter.com/widgets.js";
fjs.parentNode?.insertBefore(js, fjs);
t._e = [];
t.ready = function(f: () => void) {
t._e.push(f);
};
return t;
}(document, "script", "twitter-wjs"));
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,10 @@ app myApp {
}
```

<div style="background-color: #FFD700; padding: 1rem; text-align: center; font-size: 1.2rem; font-weight: bold; border-radius: 8px; color: black;">
⭐️ Star <a href="https://github.com/wasp-lang/open-saas" style="color: #0000FF; text-decoration: underline;">Open SaaS repo</a> and support tools that help you build fast!
</div>

### Out-of-the-box Stripe integration

Another significant advantage for Peter was how Open SaaS handled third-party integrations. Setting up services like [**Stripe for payments**](https://docs.opensaas.sh/guides/payments-integration/) often requires a lot of effort, but Wasp's OpenSaaS streamlined the process - you just need to add your API key and you're good to go.
Expand Down
115 changes: 115 additions & 0 deletions opensaas-sh/blog/src/content/docs/blog/2024-12-16-my-gpt-wrapper.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
---
title: My GPT Wrapper Makes $550 MRR One Year After Launch
date: 2024-12-16
tags:
- gpt
- saas
- sideproject
- indiehacker
authors: vince
---

import { Image } from 'astro:assets';
import Tweet from '../../../components/Tweet.astro';
import landingPage from '../../../assets/cover-letter-gpt/coverlettergpt.webp';
import mrrGraph from '../../../assets/cover-letter-gpt/mrr-graph.webp';
import StarOpenSaaSCTA from '../../../components/StarOpenSaaSCTA.astro';
import redditPost from '../../../assets/cover-letter-gpt/coverlettergpt-reddit.png';

Hey builders,

I wanted to share my journey building a micro-SaaS, [CoverLetterGPT](https://coverlettergpt.xyz/), 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.
<Tweet id="1863553258586820976" />

### Quick Stats:

- **Built in 1 week**
- using [Wasp](https://wasp-lang.dev/), a React, NodeJS, & Prisma framework
- and [Chakra UI](https://chakra-ui.com/) 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](https://railway.app/) & [Netlify](https://netlify.com/)

---

BTW, I built [Open SaaS](https://opensaas.sh), 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.

<StarOpenSaaSCTA />

### 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.

<Image src={mrrGraph} alt="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

<Image src={redditPost} alt="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](https://wasp-lang.dev/) 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](https://chakra-ui.com/), 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.

<Image src={landingPage} alt="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.

### Links & Resources

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

- 👨‍💻 [CoverLetterGPT (Live App)](https://coverlettergpt.xyz/)
- 💸 [Open-Source SaaS Template](https://github.com/wasp-lang/open-saas)
- 🛠️ [Framework: Wasp](https://wasp-lang.dev/)
-[UI Components: Chakra UI](https://chakra-ui.com/)
- 🛠️ [Hosting: Railway](https://railway.app/) & [Netlify](https://netlify.com/)
- ✍️ [My Original Reddit Post](https://www.reddit.com/r/SideProject/comments/1h4t8vk/my_saas_only_makes_550_a_month_and_i_think_thats/)

### 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](https://x.com/hot_town/status/1863553258586820976) where I like to build in public and share what I'm learning and building.

---

<StarOpenSaaSCTA trailingText="and support tools that help you build fast!" />

1 comment on commit 9c9ec7e

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.