Selling shovels in a gold rush: building a SaaS product for cryptocurrency enthusiasts
Since joining InReach Ventures as a Data Scientist I have been learning a tremendous amount about entrepreneurship and what it takes to build a company. In the following post, I develop how I applied my learnings while working on my latest side-project: a SaaS product for cryptocurrency enthusiasts.
Cryptocurrency investing is the latest gold rush: adoption is booming and prices are skyrocketing with a total market cap flirting with 150b$. One of my favourite pieces of business trivia is that back in the 19th century gold rush, people who made the most money the most were those who “sold shovels” or provided other services to the miners.
In an attempt to find a lucrative side project, I decided to dedicate my summer to building a cryptocurrency related product and start selling some shovels.
In this article, I try to reflect back on what I did and how I ended up building my smart cryptocurrency prices alert bot.
Find an idea
My first step to find an idea was to turn to cryptocurrencies enthusiasts and simply ask them how I could help. Indeed, my motivation was at its maximum but I did not have a clear view of what I could build.
At the beginning of June, I made various posts on cryptocurrency related sub-reddits, introducing myself to the community, detailing my skills and asking how I could be of any help. I made sure to be upfront and honest about my intention to build a paid product.
I got several answers, with a few ideas coming up several times:
- A portfolio tracking app that combined features from the dozens of existing apps
- A price comparison / analysis website
- A notification tool for price movements
That last one stuck with me. It was indeed a problem I had personally noticed. Cryptocurrencies are extremely volatile assets and in the past few weeks, I had seen myself checking market prices every other hour. If I could have some kind of alert system to notify me when something is actually happening I would save a lot of time and mental energy.
There are already a few services and apps that enable users to set price alerts at defined thresholds, but they don’t help much since you have to manually adjust your alert thresholds every other day. My alert system would have to be “smart” enough to automatically adjust the thresholds.
I was now set with an idea that seemed to have some demand and, more importantly, was useful to me. It has been said again and again, and I personally believe it: there is nothing more motivating than working on a problem you actually have yourself. As both the user and the builder you can notice flaws and fix them, have feature ideas and implement them straight away.
To find an interesting idea, solve your own problems or turn out to the community and be open about your skills and intentions.
Experiment and validate the idea
During my time at university, I got to study forecasting methods. Forecasting is defined as the process of making predictions of the future based on past data and is most commonly done by analysis of trends. While forecasting methods are not a good fit to predict returns they could be of help to automatically define price trends and predict price boundaries.
In short, I could compute the price interval in which I have a strong confidence that the price would fall in in the next three days. And if the price turned out to go above or below the interval boundaries, it would mean that — statistically — something is happening and we should get notified. Remember that here, my objective is not to accurately predict the market prices but to get an interval of where the price is the most likely to be.
This whole solution-finding part turned out to be a fun weekend project. I could have stopped there though, like I have with many weekend projects before, but I had the objective to turn this whole idea into a product.
Before spending more time on engineering the solution, and to avoid the usual mistake of solving a problem no one has, I went back to the cryptocurrency community to validate my idea and approach.
I embraced the “fake it ‘till you make it” motto: without any product to show yet, I put together a slide explaining the problem, my solution and shared it on Reddit. Overwhelmed by the positive reception by the community, I made sure to give an easy way to people to stay updated with the project and put together a newsletter subscription via Tinyletter.
I ended up with a list of 400 cryptocurrency enthusiasts interested enough to be kept updated on the upcoming beta version of the product.
Take time to experiment with your idea and find a plausible solution — but make sure to get enough interest in your solution before spending hours engineering it
In front of such a positive response, I dived into implementing the whole concept and I spent the following weeks building a first MVP.
When it comes down to side projects I believe there are two schools:
- people who use their side projects as a way to try as many new tools as possible and end up over engineering everything for the sake of it,
- people with a more pragmatic approach who just want to get things done.
In retrospective, I think I ended up somewhere in the middle. I used this project as a way to expand my skills but still, the thought of the 400 waiting beta testers kept me in touch with my “just-get-things-done” side and it only took me a couple of weekends to put everything together.
I might dedicate a separate post on the tech stack, but the logic of the final product is as follow:
- A forecasting jobs runs several times a day and forecasts the prices using Facebook’s Prophet library.
- Users can register at CryptoProphet.co, choose which cryptocurrencies to get alerts for and link their account to their Telegram. I used Python + Flask for the backend and Bootstrap for the frontend of the user dashboard.
- I run a bot using Telegram-Python to send alerts to subscribed users directly on their smartphone through the Telegram app.
- Everything is hosted on a DigitalOcean instance.
While developing the MVP, I tried my best to keep the beta testers engaged with me and with the product. People easily forget that you and your service exists if you do not engage with them. Plus, it was a way for me to dive deeper into what features future users actually wanted and it helped me shape the final product.
Be clear about your goal: do you want to have fun over-engineering a solution or do you want to get things in front of your potential customers? Make sure to stay engaged with people that have shown an interest in your project.
Get feedback and iterate
While talking to the beta testers, I noticed that a few thought that I was developing a trading tool. It underlined the fact that I had not been clear with them and most importantly with myself when defining the value proposition of my project.
I suggest you to read the following post by David Bailey who helped me put together a clear description of my product. The gist of his article is the following template that you can use to describe your product:
For ___[target audience], it’s a constant challenge to ___[general problem]. Every ___[time period], these people ___[perform a key activity] in order to ___[achieve a primary goal]. This is especially true if you’re a [niche].
The main problem they face is ___[primary functional problem relating to activity] which leads to ___[bad/worst case outcomes]. Today, their best option is ___[substitutes], but of course, they ___[the most common complaints of each substitute]. With ___[key trend], the problem will only get worse over time.
If only there was a easier/better/cheaper way to ___[perform a key activity], then customers could ___[quantifiable impact on their primary goal] which would lead to ___[positive outcomes / emotions]. With ___[number of potential customers], there is a clear opportunity to meaningfully impact a huge number of people.
Which became for me:
For crypto-enthusiasts, it’s a constant challenge to keep up with the variations of cryptocurrency prices. Every hour of every day, the enthusiasts open their favourite apps in order to check prices. This is especially true if you have a lot of exposure to the market and are new to the cryptocurrency world.
The main problem crypto-enthusiasts face is the high variance of cryptocurrency prices which makes it difficult to follow and understand market movements. Today, their best option is to regularly check the prices and the news, but of course, this is a time consuming activity. With more people getting into cryptocurrencies, the problem will only get worse over time.
If only there was a better way to understand the prices, then customers could get alert only when something happens which would lead to a better peace of mind. With cryptocurrencies totalling a 90b$ market cap today, there is a clear opportunity to meaningfully impact a huge number of people.
I spent some time as well writing down a FAQ focusing on the pain points the beta testers had.
In terms of promotion, my unique channel so far has been Reddit and its various cryptocurrency communities. I have now made it to the front page of those communities several times, each of them getting a couple of hundred users and receiving positive feedback.
Interacting with the community and my users has been one of the most satisfying parts of this project — even more than engineering the whole project. I would advise anyone building a product to listen to their users, collect as much feedback as possible and to reply as soon as possible to every one of them.
Think about this, some random person on the Internet is taking their time to share with you a problem they have and this person might even be ready to pay you to provide a solution. Your users are basically telling you how to increase the value of your product.
Out of respect for all of this, reply as soon as possible and try to implement the soundest of their feedback as quickly as you can. They will thank you for it and you might end up having some thoughtful discussions. (I certainly did!)
By mid-August, I was lucky enough to have had interesting exchanges with a dozen of users on Reddit and by email, and I had built a tool that provided good value to a couple of hundred users.
Still, at this point, I felt a loss of motivation — I was maybe just bored by the whole project. I decided to turn again to my users to re-validate my product and answer a few questions I had:
- Was my tool that useful to them?
- What could I do to improve it?
- How much would they be willing to pay for it?
After a couple of hours of research, I came up with a Google Form that made use of a few tricks:
The first question comes from a tool called the Net Promoter Score that is used to measure customer experience. I added to the questionnaire a few questions on what the users wanted — plus a cheeky motivating questions about what they have liked so far.
At the end, a pricing survey table enabled me to test the most likely pricing people would pay for the product. The wording and shape of this table has to be clever since people are more likely to pick the cheapest options.
Around 5% of my users replied, which might be a low number but provided me with what I actually needed: ideas on where to go next and a motivation boost — especially when learning that people were actually “very likely” to pay for my product.
Engage with your users as much as possible, be open to feedback as they will be grateful for it, and when in doubt just ask them
I launched the product two weeks ago — you can visit the website here. I have already made enough to cover the maintenance costs of the project for a whole year but most importantly I have learned a lot, both on the tech side than on the business side. This is my definition of success for this side project.
I am now taking some time to think about the best next steps. I will first spend time refactoring the codebase, add new requested features, and make sure the product is as self-sufficient and resilient as possible.
This article is a first reflection on how I went from idea to MVP. It will be followed by a series of blog posts describing the evolution of the project — the next write-up will likely be about metrics and user engagement.