(With 2018 coming to a close, it's time to reflect on how I did and gaze off towards the FUTURE.)
2018 Roundup: How Did I Do?
December was a rough month with one big ray of good stuff. Revenue was down about 10%, largely due to several render server outages which drove average render time way above normal. I had a family trip for Christmas that left me with no access to the internet for a week. I semi-prepared for that, restarting everything and making a major tweak to the "old" render code before I left. Even with the tweak (more on that below), one server went down about 4 days into the trip and led to some pretty flaky performance until I got back.
The way the render servers currently work, there are "preview" renderers and "final" renderers. Each of these does what you'd expect, either rendering a free preview intro or rendering out a final HD intro. For the past few months, I've been running with about six preview nodes and three final nodes. One of the big changes I'm making with the new system I'm writing is to soften this distinction. Preview renderers will just do previews, but final renderers are going to get a little fuzzier. They will prefer to do final renders if anything is waiting in the queue, but rather than sit idle they'll pick up slack in the preview queue when needed. I don't know why it took me so long to think of it, but there's no reason the current system can't do the same thing!
I pushed this change just before heading off for my holiday trip, and it appears to have worked. Though the average render time for the month was still quite poor, the median dropped from about two minutes in November to just 44 seconds in December. I don't have the ability to measure queue time (how long a request waits for a render node to take it) in the current system, but I'm confident that queue time should now be quite a bit lower and overall conversion rates improved. It's too soon to say whether that conversion rate lift is from the server tweak or from people doubling down on New Year's resolutions, but (hopefully) this takes some pressure off and lets me buckle down on the new and improved render servers.
Email Problem or Attribution Problem?
In my last post, I reflected a bit on how much harder doing basic email marketing was than I thought it would be. I'm reading Jason Fried and DHH's It Doesn't Have to Be Crazy at Work, and there's a chapter in there that felt like a slap in the face: "Low-Hanging Fruit Can Still Be Out of Reach." The whole chapter is great, but there were a couple of really good nuggets in there:
Declaring that an unfamiliar task will yield low-hanging fruit is almost always an admission that you have little insight about what you're setting out to do...The idea that you'll instantly move needles because you've never tried to move them until now is, well, delusional. Sometimes you get lucky and things are as easy as you had imagined, but that's rarely the case. Most conversion work, most business-development work, most sales work is a grind—a lot of effort for a little movement.
After digging through my analytics for a while, there is some cause for optimism. I ran a report comparing how many sales come from new visitors versus returning visits. If the email newsletters were completely ineffective, I would expect the ratio to remain constant when comparing pre-newsletter and post-newsletter. This isn't purely scientific, of course. Lots of users make a preview render and don't purchase straight away. The ratio before I started sending emails was roughly 47%/53% for new/returning.
In the months since I started sending out newsletters, that ratio has gone to 44%/56%. That doesn't sound like much change, but it's a meaningful number of sales when I'm trying to justify spending a couple hundred dollars a month on a better email provider. Using the earlier ratio, it gives me about 157 intro sales "more" than I would've expected using the old ratios. 56 of these are directly attributable to coupons, which leaves about 100 fuzzy conversions (roughly $750 in revenue before expenses). While it's tempting to claim all of those as "ooh I did that!" the real number is probably somewhere in between the $210 I can directly count from coupon conversions and the $750 or so in "extra" conversions. That means email, on the whole, is worth somewhere in the $35-to-$80/month range.
One thing I'd like to sort out in 2019 is closing some of that attribution gap. Most modern email providers provide webhooks for email events such as opens and clicks, so—with a little bit of work—I should be able to start tracking those with a bit more accuracy than the current system (just basic UTM parameters).
2018 in Numbers
I had three major capital expenses with IntroCave in 2018: the site itself, the first couple of earnouts, and a new domain. When I first started doing due diligence on the site, I noticed that the majority of search traffic comes from terms related to "intro maker" or some variant. IntroMaker.com was a parked domain, so I reached out and started negotiating a price. Long-term, I'd like to keep adding template-based intros to IntroCave and design/build a much more dynamic intro maker from scratch for the new domain.
Between the main acquisition, the new domain, escrow fees, LLC and legal fees, I estimate the total price tag on everything IntroCave-related will come out to around $127,000. As far as mid-life crises go, that's about on par with a Tesla Roadster. Most of that will depreciate over about 15 years, which is both good and bad. The good part is that I get about $8,000 in tax-free income every year until it depreciates to nothing (assuming I can make that much). The bad part is that 15 years is an insaaaaanely long time on the internet. The odds of IntroCave (or even YouTube) existing in its current format 15 years from now are pretty low.
Cashflow for 2018 ended up at just a hair over $13,000, which is not bad for a little over half a year! Using broad numbers, it's about a 20% cash-on-cash-return. It would be closer to 25% without interest, but as expected that puts the site on a 4-5 year break even timeline (with no growth). This is a fantastic return compared to something like a rental property, BUT this site has been waaaaaay more work than a rental property (and will not hold its value the same, but that's another rant). I estimate that I spent 4 full-time weeks and roughly twenty hours per week for the remaining half a year. Let's call it about 660 hours total. $13k sounds great, but it only comes out to about $20/hour.
$20/hour is not bad, but I don't know a lot of software engineers who would take a second job for that rate (speaking entirely from a super-privileged US point of view). It's even worse when you factor in self-employment taxes and the fact that I dropped down in salary to have an extra day to work on side hustles like this. Half a year into the IntroCave experiment, the total balance sits at -$115k.
Let's Go 2019!
Generally speaking, I'm not a fan of setting/chasing goals. I like to work on improving things bit-by-bit, and if you keep doing that for long enough you should end up in a pretty good place. My main goal for IntroCave in 2019 is simple:
Make IntroCave better in 2019 than it was in 2018.
Easy, right? Here are a few of the things on my TODO list that I hope will get me to that goal.
- Finish the new render servers!
- Keep growing traffic and revenue.
- Start adding new templates to IntroCave
- Create a Knowledge Center for more evergreen articles and tutorials.
- Migrate to a more fully featured email service and put a welcome sequence in place.
- Grow net income to $45k (in a world without taxes, that would put me on a path to have the loan paid off at the 3-year mark). This is probably a bit ambitious.
- Start work on IntroMaker.com