My AI-powered service sent 500 podcast summaries yesterday (up from 0 the day before 😂)

Here are 10 lessons I learned from scaling it up so quickly 👇

[1/20]
But first a shoutout to @bentossel for mentioning podmate.co in his newsletter AND to @levelsio, whose bootstrapped approach discussed in makebook.io inspired ALL of this 🙏

[2/20]
1) Log everything! 🪵

I use @googlecloud logging libraries for all the components of this service and it has been *instrumental* in tracking down errors. I actually get a text message anytime something breaks, so it’s really easy to quickly debug + fix.

[3/20]
I wouldn't have sent more than 30 emails yesterday if I didn’t have a paper trail of what went wrong initially!

Implement transparent logging first — it's key to understanding how users are using your service 🔎

[4/20]
2) Test in the wild 🦊

So I did _some_ testing beforehand…but there’re only so many edge cases I could discover on my own. A list of things we only began supporting yesterday:

- Mobile-optimized web pages 🤦🏼‍♂️
- Long bullet summaries
- Languages other than English 😱

[5/20]
3) Multi-language support multiplies your reach 🌏

It was a 4-line code change to:
a) recognize the podcast language and
b) transcribe in that language (previously everything assumed ‘en’)

But suddenly the tool (mostly) works across most languages!

[6/20]
4) Sanitizing input = ⬆️UX and ⬇️stress

Podmate v1 required users to paste an RSS URL…and had no instructions on where to find that 🤷🏼‍♂️ Oops!

Within an ~hour of my first alert, I built a search results page in @flutterflow so users could use plain text. Conversions:📈

[7/20]
5) Stress test API limits 📈

I never ran into external throttling issues when I was testing Podmate with 3 podcasts 🙈

When that grew overnight to 50+ podcasts * N podcasts/week * podcast duration * Y GPT-3 models, and emailing to K users…I started to hit some limits!

[8/20]
It would have been great to do some basic planning and calculations beforehand! In one case, I just needed to verify my domain name which unlocked my limit.

Always plan for growth, especially across external dependencies.

Which leads to …costs 💰

[9/20]
6) Budget thresholds are your FRIEND 💸

You see something like GPT-3 charging $0.0200/ 1K tokens and it’s kinda like a combo of video game money and tap water prices. Tough to comprehend in non-standard units of measurement and only expensive at scale.

[10/20]
As a former capacity planner, I should have known better! I racked up ~$350 in charges over the course of the day 🙃

Luckily budget thresholds saved me! Each external service I used let me set a $ limit to ensure I was always in control of my spend.

[11/20]
7) Solopreneurship is not quite accurate 👩‍❤️‍👨

At least for me, it was *instrumental* to have a partner offering advice/emotional support. It's stressful when it feels like everything is breaking and ppl might be unhappy! Thanks @magzthomz for always sticking by my side ❤️

[12/20]
8) Always see what the user sees 🧐

It can be really easy as a creator to slip into “admin” mode and get tunnel vision.

Early on, I ensured every email sent to a user was *always* sent to me too. Debugging sometimes became as easy as searching my Gmail inbox! 📨

[13/20]
9) Choose frameworks that deploy fast 🏃💨

Podmate was built in a ~week using a combination of tools — @flutterflow, @Firebase, @googlecloud, @OpenAI, @SendGrid

All of them have one thing in common ➡️ they enable ⚡️fast deployments.

[14/20]
- Patch a UI change in <5 mins? @flutterflow
- Modify an email template in 2 mins? @SendGrid
- Manually change a config in seconds? @Firebase
- Deploy new logic in 4 mins? @googlecloud
- Test a new prompt format in 1 minute? @OpenAI

[15/20]
10) Just SHIP it 📦

Disclaimer: up until ~yesterday I NEVER followed this advice. I’m a perfectionist!

But shipped today is better than 6 months too late.

[16/20]
Embracing the messiness of fast, real-world, iterative development is transformational. It means I get instant feedback on what works and can generally keep users happy even when things break*

*It helps that this is a free service in beta 🤠

[17/20]
To recap:
1) Log everything
2) Test in the wild
3) Multi-language FTW
4) Sanitize input
5) Stress test APIs
6) Set budgets
7) Solopreneurship isn't quite accurate
8) Become your user
9) Deploy with fast frameworks
10) Just SHIP it

[18/20]
If you found these learnings helpful, follow me @michaelmcroskey for more insights on building cloud services as an indie coder 👨🏼‍💻

And reach out if you have any comments or questions about Podmate! podmate.co

[19/20]
And special thanks to @awilkinson for his perfect timing + the straw that broke the camel's back, encouraging me to go live with Podmate!

#gpt3 #solopreneur
[20/20]
Oops I mean @bentossell! 😆 Super thanks for featuring Podmate in Ben's Bites — we emailed 500+ AI-powered podcast summaries yesterday 🙀

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Michael McRoskey

Michael McRoskey Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(