Slopes Diaries #37: A Commitment to Y-Axis Values
Slopes Diaries is my ongoing journey to turn my indie app into a more sustainable part of my business. First time reading? Catch up on the journey so far.
What is Slopes? Think Nike+, Runkeeper, Strava, MapMyRun, etc for skiers and snowboarders.
I've put off writing about how the 2019/20 season went for three reasons.
First, the numbers are starting to feel big. 2019/20 is ~2X+ what I'd need to live on in Philadelphia, so it is really starting to be a bit crazy talking out loud about. It is going from "cool, he's an indie finding success!" to "uh, ok, that's a lot of money ... did he buy a money bin to swim in, greedy SOB?"
I'm also seeing these bigger numbers at a time when the world, for many people, is collapsing. Walking around Old City in Philadelphia I'm seeing business after business close down due to COVID. So talking about success, and even continued growth, feels super awkward.
But lastly, for the first time since 2015, the season didn't live up to my expectations. And that sucks. Somehow that fact has escaped hitting me mentally as hard as I expected it to, but it still isn't fun to write about and admit publicly.
Don't worry though, I'm not about to stop publishing my proceeds numbers.
So how'd it not live up? Since I switched to subscriptions in 2015, I've been seeing 2.x X growth in revenue year over year. I wasn't going to take that growth for granted, so I was really working hard to ensure another 2.x+ X year:
- I was finally taking the user journey out of the app with email marketing (which, by the way, went pretty well).
- I was spending a lot of effort fighting my tendency to minimize my upselling.
- I had started the season shipping my vision for a privacy-first social aspect to Slopes. Now you have a selfish reason to get your friends on Slopes.
- I tried my first Black Friday sale (which also went well, ~1k new subscriptions).
- I was offering 2 free day passes with subscriptions, encouraging users to share them with their friends (didn't really work).
- And a lot more...
So going into the season I felt pretty good that 2.x X was very realistic. After all, I was doing all the right things and I had a trend line!
I'm always conservative with money and I don't like debt, so I didn't dig myself into any holes I couldn't abort as needed. I didn't buy a Tesla knowing I'd 2X. But I did start taking on more monthly costs. I started Android development in Aug 2019, which has been a sink of ~$10k a month. That new email marketing is around $1k a month to run, the biggest single non-human cost to Slopes. This was my first season spending real money on advertising, around $20k on App Store Search Ads (which did net a profit).
This was the year I finally let myself live a little, business wise, and upgraded my database server from a $10/mo Digital Ocean machine I administered myself to their managed PostgreSQL cluster w/ replication for a whopping ~$80/mo (big spender, I know). Little things like that happened more often. I wasn't as focused on only taking on a cost if I 100% needed it, I was worrying a bit about my quality of life and the nice-to-haves.
It felt like it was all building towards a major milestone: hitting that 2x goal would have given me the breathing room I needed to safely take Slopes from one-man-shop to the start of a team.
This season ended at 1.4 X growth.
So of course after missing that milestone, a lot of the mid-to-late season was spent with me trying to figure out "what did I screw up?" After a lot of reflection over the summer I think I've realized (well I mean I knew this, but I think I started to internalize it) that it's just hard to keep growing at that rate naturally, and this is why VCs and money come into play because you need gasoline, not natural wood, to keep accelerating at this rate.
Continuing past where I am requires a relentless focus on product-market fit, perfecting onboarding and funnels, pricing experiments, and a whole lot more. I'm getting well into the "average consumer market" at this point, and that's hard.
It wasn't just that though, I did realize as the early season was progressing that I had some things working against me:
- This was the worst winter in recent history around the world. I noticed this early on, in Nov/Dec. Vail resorts (big ski corporation that owns dozens of resorts world-wide) reported ~10% drop in attendance in their January report. That's huge when they've been seeing growth. Whistler in Canada reported the worst early season on record in 30 years. Many resorts in Europe never opened because they rely more on natural snow that snowmaking. That all leads to less people going out to record. Of course all of the resorts said were hoping to make up the difference in the mid-to-late season...
- COVID cost me ~$60k. Ski resorts shut down early-to-mid March world-wide, and my revenue hit a cliff abruptly as a result. I hit $0/day over a month earlier than normal. I probably would have ended around 1.6x or 1.7x if it weren't for that.
Running a lot of numbers, my conversion rate sill seemed healthy. My churn was OK. What was really killing me was activations - there were just less people using Slopes than expected.
So I dunno, I'm weathering the storm of not hitting my 2X goal surprisingly well. I had a lot stacked against me, and it isn't like I'm a growth expert and I already know how to make this jump.
I'll just keep shipping, and keep learning.
All that is a long-winded way of saying "boo-hoo, I only grew by 40% during a global pandemic and climate change threatening my business."
This all did make for an interesting summer with lots of calculations.
I had to decide if I wanted to keep Android going (see: Release Notes podcast episode). Obviously "because, COVID" would be a reasonable excuse to hit pause for now.
My runway math showed if I halted Android shortly after COVID locksdowns started, and the 2020/21 season was like my March/April 2020 was (AKA, non-existent), Slopes would run out of money in Oct 2021 ... not quite making it until the next season where things in theory should be back to normal. If I kept Android going to be able to ship in 2020, I'd last until May 2021 or so.
(Keep in mind, I earn < 5% of my revenue during the summer w/ the southern hemisphere, so I need to make it until ~Jan 1 2021 when I get my first "real" paycheck from Apple again.)
On top of this I had to decide how much I wanted to work on the iOS version even. Because after all, it isn't like the 2020/21 season is a guarantee given everything (as I write this most of Europe is locked down with ski resorts closed in Nov 2020 until Dec 1). Skiing or snowboarding itself is a very COVID-safe activity, but everything surrounding it, not so much. People don't feel safe to fly, which will kill a ton of ski business. Travel restrictions will hurt European ski resorts even after they can re-open. But at the same time people are going stir-crazy, and many bought houses at the mountains to escape cities during this time, so it could be offset by more "locals" riding all season. But with skiing being such an unknown, it might be wise to split my time 1/3 Slopes and 2/3 something new that I could have in place before that May 2021 moment-of-truth.
In the end I decided I'd keep working on Slopes full-steam until the end of 2020 and see how the season is looking before considering another revenue stream. I did end up keeping Android going, because I was screwed either way on that one 😅. I'm playing the long game with Android, but it isn't like canceling it would get me to Jan 2022 when I'd be "safe" again, so I'll roll the dice with it while keeping its costs manageable. I'm not planning on dumping a lot into advertising this season, and I'll trim fat as needed from services Slopes relies on. I held back on my original hope of bringing on more part-time help this season, too.
I'm staying nimble, but I'm using the season to focus on the long game. The ski market will be back next year, so I'm trying to focus on A) just surviving this year so I can B) be in an even better position then. I've had 1 major competitor w/ funding drop out in late March, another very popular free one finally pull their ski apps after pivoting to soccer 3 years ago, and yet another free one pull their Android app after it seemingly flopped (nothing but 1-stars and no updates for ~2 seasons). This year is thinning the market out, and if I'm smart I can be in a really strong position come next season.
So far, things are not a disaster for the 2020/21 season. People are skiing, and revenue is coming in. I need to earn ~$120k this season to make it into next winter, and that looks like (knock on wood) it'll happen based on the early season numbers I'm seeing.