Merge pull request #345 from wasp-lang/coverletter-making-550

Adding a new blog post about cover letter gpt microsaas
This commit is contained in:
Milica 2024-12-17 14:56:51 +01:00 committed by GitHub
commit 9c9ec7ea04
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 187 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

View File

@ -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>

View File

@ -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>

View File

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

View File

@ -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!" />