Retrospective - Apr 2024
This is my 3rd month’s retro and 8th overall of my monthly journey of building a bootstrapped SaaS business.
Last month’s goals #
Engineering upgrades (Increase test coverage, Upgrade ruby & rails) #
The test coverage is now in a healthy state. I’ve resorted to higher unit tests in favour of UI tests as they’ll cover a good base. But following the test pyramid, I ideally would like to have a healthy share of UI tests as well. This is an ideal candidate for outsourcing it and would like to get around to it at some point.
Haven’t been able to complete the Rails upgrade to 7. There’s some web of complexity with the OAuth libraries I’m using. I’m also using a couple of gems that are custom forks that haven’t been updated for Rails 7 compatibility. So, this has to wait.
Reducing friction for new customers #
Rolled out a couple of onboarding changes that guide newly installed users through essential steps like Adding members and Creating the first roster.
The ideal outcome I wanted to have was to eliminate the addition of members completely and rely on Slack’s user list when creating Rosters. Unfortunately, Slack’s user list API isn’t suited for this use case. They don’t have a user search functionality, which means I’d have to get the entire list and provision the search myself. This isn’t feasible to do on the go. I’ve played around caching the user’s list, but then I have organizations that have 5000+ users and they end up with a poor experience.
If the app lives completely within the app, ie, the roster addition happens only within Slack, then it is possible as Slack exposes the “user select” as an input we can rely on. All said it wasn’t a worthy tradeoff. There are some advantages to having explicit invitations as it is presently, as that will give organizations better control over their billing users vs Slack users. So, this is as far as it can go.
SEO research & switching back to keenly #
I also did some marketing research for RosterBird as part of the overall marketing efforts. I ended up concluding that the size of the niche RosterBird is serving is very low and I need to switch back to Keenly.
The search volumes, especially the primary and associated keywords for RosterBird are all very low volume (< 30 mo). I tried going after any other related keywords at one step above in the funnel with broad Slack-related stuff, but I’m not too positive about the impact it would have. It also doesn’t have sufficient ROI as I’ll be catching a wider net with broad content in the hopes some would end up giving the product a try. But with the main intent keyword itself that low, the wider doesn’t guarantee any reasonable acquisition of new users. That rules out content marketing.
The only way forward is outbound and the option left is to go after cold outreach through Email/LinkedIn. I’m not an expert on this space but I spoke to a few who are and found out that the cost of doing such efforts. Long story short, it doesn’t get enough returns for RosterBird’s revenue/ARPU even with the best-in-class conversion rates. Basically, the CAC would be way over the current LTV. That coupled with the size of the niche, I’ve decided to not expend any more efforts to actively grow it, instead focusing on existing customers’ needs. This new direction wouldn’t occupy much of my efforts, so I’ve been experimenting with other product ideas. Instead of starting another new one, I’d most likely be settling on Keenly, which I had paused a few months ago to give attention to RosterBird because of the TinySeed. The development is 60% done, I have some interesting new ideas I want to bring to the product, so have to dust off and get started.
Goals for May #
- Memo detailing Keenly, highlighting the differentiators.
- Do the 50/50 marketing vs coding. As part of the marketing efforts, outline content strategy.
- Learn & Experiment with Google Ads.