Monthly Retrospective - April 2024

By Max Sherman ยท May 2, 2024

Conversion rates need to go up

Stats

  • Worked 61.5 hours (-26% M/M)
  • Streamed 53.75 hours on Twitch (-33% M/M)
  • Stripe payouts $715.49 (+20% M/M)
  • 305 Twitter followers (-2% M/M)
  • 158 Twitch followers (+3% M/M)

April Goals

Drive down failed transcripts to 0

Grade: B-

I drove the failure rate from 46% to 9% over the course of the month, but they are ticking back up to ~15% in the first few days of the month. There is still more work to do.

This is due to a few improvements. The biggest cause of failures is failed uploads. Users with slow internet connections were leaving the site before the upload was complete.

Moving to a model where uploads are done in the background via the background sync api has helped more uploads succeed, but required a significant amount of engineering. The background sync stuff is more async than uploading in the foreground, so there is a time to first byte sent over the network tradeoff.

Even with background sync, some uploads would take too long, and so I also started storing the file locally in the browser via IndexedDB. Then on subsequent page loads, the service worker can resume an upload for unfinished chunks. The upload is "chunked" because I also switched the upload to a multipart upload.

Multipart uploads have a better chance of succeeding partially, because smaller chunks upload faster. Take too long and the user will leave, and if they don't leave, then there's a chance the service worker times out and kills your task.

The task can be killed due to system resource constraints, and there is no exit handler, so all retry logic has to have a timeout component. For example, "this chunk had an upload attempt longer than 2 hours ago, and isn't marked as completed locally, so we will retry".

I never imagined uploading a file would be this complicated.

Another factor here is that the Facebook and Instagram in-app browsers don't support background sync API, which means reliable uploads cannot be supported in this context. At first this seems ok - but actually all ad traffic starts in these browsers.

People would create an account and try to upload, only to have it fail, and essentially have no hope of being retried or run in the background. It was a huge problem.

I changed the entire sign up flow of my website for users acquired from paid ads because of this - more on that later.

Other failures were due to unsupported file types, and supporting Word document uploads fixed many of those - more on that later as well.

Finish upload transcripts feature for Word docs and PDFs.

Grade: B+

I built this for Word documents but not PDFs. I'm happy we have a solution for folks here - Word docs are more common than PDFs.

The flip side is that only 15% of uploads are Word documents, and zero sales have come from paywalling this functionality. It's hard to justify investing in it with such a minority of users depending on it.

The paywall also comes in super slow and there are some other UI polish issues that could be better. But it's there.

Make 15 sales via FB ads

Grade: A

We had 17 sales from FB ads this month!

This number needs to go higher because we spend about $1000/month, and average sale price is $20/month. Pessimistically assuming 100% churn, that puts us at $340, $660 short of break even for that acquisition channel.

Ensure FB conversions API has 8/10 score or higher for Purchase events

Grade: A

We had a match score of 9/10 last time I checked.

We still don't get enough purchase events to reliably track this, but there was a huge improvement because it used to be 6/10 score.

The improvement is due to saving the FB click ids attatched to the URL when the visitor first hits the landing page and creates an account.

We can then always send the click id with the conversions API call when the customer makes a purchase.

Build "email-only" invite sign up flow for FB ad traffic

Grade: A

I built it and it was great. We went from a sign up conversion rate of 5% to 25%, a 5x increase!

This is huge and I think there's still more work to do. The visitors to the landing page are engaged leads because they already clicked on an ad to get there. I think we should be able to get conversions to 50% at least.

Possible improvements are having the email form stick to the top as the user scrolls, and overall just making the landing page more clear.

Improve landing page -> sign up conversion rate to 10% or higher.

Grade: A

See the above section.

Things I am Thinking About

Churn is down

April compared to March saw churn go from $199 -> $89.65, a 55% improvement!

I'm going to credit improvements to upload failures, and also lower prices causing higher customer retention.

4x plan

I made a to 4x my revenue. It has two parts:

Part 1 is to double my paywall -> purchase conversion rate which is currently 10%.

Part 2 is to double my sign up -> upload conversion rate which is currently 20%.

Both are low, and so have a lot of room for improvement. The plan is to programmatically set up an email campaign for both cohorts using the Instantly API.

We'll see where conversion rates end up, but I don't think it's crazy to imagine that we could double the current rates with good enough copy.

This is the biggest priority for May. If I 4x, then that will make the business profitable.

OpenAI bills

My bills are a little higher than anticipated and may end up becoming a good target for optimization. 75% of costs are the whisper API, and this is an open source model. There may even be potential for running whisper in the user's browser.

I'm not going to optimize it until profitability, but it's on my radar.

Analytics

I'm investing in improving my analytics so I can get a clear picture of what's working vs. not. The biggest dimensions I want to track are:

  • Upload kind (Audio, Word doc)
  • Customer acquisition channel (organic search, fb ads)
  • Device type (desktop, mobile)

I can get some of this info now, but I have to do some analytics gymnastics to make it happen. I want it to be way easier.

Having this be easy is going to help identify where more investment is needed and where the big opportunities are.

Disputed payment

We had our first disputed payment this month. The user let their subscription run too long and got billed for another month. When they realized, they had their card company dispute the payment rather than asking for a refund.

This scared me because I've heard horror stories of Stripe shutting down people's accounts. I pulled a list of users who hadn't use the product in the last 30 days and found about 15% of users fell into this category.

I'm considering implementing a system to email these "forgetters", but not sure exactly how long I should wait to email them, because it's not crazy to maintain a subscription for an extra month if you, let's say, take minutes every other month.

New business

I have a new idea for a business that I think will print money. I'm going to carve out some time this month to at least set up a landing page for it. I don't want to say too much more yet.

Goals for May

  • Drive down failed transcripts to 0
  • Improve FB ads sign up conversion rate to 40%
  • Improve sign up -> upload conversion rate to 40%
  • Improve paywall -> purchase conversion rate to 20%
  • Set up analytics for device type, acquisition channel, upload kind
  • Set up landing page for new business