Hello! What's your background, and what are you working on?
Hi, my name is Nick Swan, and I live in Bude, UK.
Bude is a small seaside town in Cornwall with lovely beaches and a relaxed way of life. We moved here a couple of years ago to get away from the hustle and bustle of big cities as we wanted a nicer place to bring our children up.
I've been developing software and websites and doing online marketing since 1998-ish. I worked on a family business site from '98 onwards while also doing various software development jobs. In 2007 I co-founded a software tools company for Microsoft SharePoint and worked in that arena until 2013.
After that, I was wondering what to do, so as usual, I ended up doing a bit of affiliate marketing and SEO. While I was working a lot with Google Search Console, I became frustrated with the number of clicks it took to get at certain data and the fact it only made 3 months of data available. With an API available, I started to hack a few things together to help my own work process and to stop manually recording information in Excel spreadsheets.
Fast forward to today, and SanityCheck is a SaaS tool with $1,100 MRR.
What motivated you to get started with SanityCheck?
I was looking for a SaaS idea. I had done a downloadable product and affiliate marketing, so exploring and learning a new product/market is what I find interesting. Launching another affiliate website would be extremely boring to me.
I have always found that I do better at "scratch your own itch" kinds of problems, rather than building something to solve others' problems. I find as it is solving something for me, the motivation to keep working on the product is always there, regardless of whether you have 0 or 100 other users. I have tried both approaches, but this is always what has worked best for me.
While doing SEO for affiliate websites, I was clicking around lots in Google Search Console and spending time manually tracking clicks, click-through rate (CTR), position and ranking in spreadsheets whenever I made a change to a page, to see how it affected traffic from Google.
With the Google Search Console API available, I started hacking around and seeing what data was available. I realized I could quickly put together a tool that ran once a day to archive the information from GSC. I could also track the changes in clicks, CTR, etc., for the pages that I had changed. This saved a huge amount of time each day, and once I started working with the API and looking through the data, I realized there were other useful insights and reports I could put together.
I had an MVP up and working — it was really basic using the default bootstrap template. I asked a few friends to try it and they could see the value straight away. I then posted about it on several Facebook SEO groups I was a member of and on Twitter and got some good signups and feedback. The archiving part of SanityCheck was the killer feature initially. Without SanityCheck you would have to go in every month and download spreadsheets from GSC — and even then you would be missing information. Automatically archiving a site's GSC data each day solved a real issue.
SanityCheck was still just a side project, though. I was building it to solve my needs and help me with my affiliate sites. The fact that others were finding it useful was a nice bonus — and made me think there was the potential of building a recurring SaaS income from it.
What went into building the initial product?
Mostly my own time. I have had my own business in one shape or another since 2007 — with the main benefit of this being I can mostly work on whatever motivates me at the time. Like most developers I am attracted by new ideas and projects — so getting started on SanityCheck was easy.
I am not a designer — so the marketing pages were pretty sketchy to start with, and I used (and still use) the INSPINIA WrapBootstrap template for all the app pages.
I have always worked with the Microsoft technology stack, so the product itself is built with ASP.NET MVC, C# and Microsoft SQL Server for data storage. I know this isn't what the cool kids use these days, but at 38 I am too old to be classed as one of the cool kids and prefer to work with what I know to quickly get the job done.
I started writing the first code around November 2016. By the start of December, I had started to get friends to register and try it out. Then I slowly started to post about it on the various Facebook groups and forum communities that I was a member of.
I co-hosted a small podcast around this time as well that had a small listenership of 150 or so subscribers and a few early users certainly came from that.
What are the biggest challenges you've faced and obstacles you've overcome?
In January 2017, our third child was born. When he was 3 weeks old he ended up in intensive care in Bristol Children's hospital with bronchiolitis, and a partially collapsed lung. This was followed by another few 2-3 days stints in the local hospital when he struggled with his breathing. It was a very scary time — but little did we know this was just the warm-up act…
After March, life got back to a little bit of normalcy and I continued to work on SanityCheck. Around May, I had all the components working to be able to start charging a monthly subscription. SanityCheck was archiving quite a lot of data each day for the websites that were signed up — so I knew I'd have to start charging at some point.
Around this time, our eldest daughter, who was only 3 at the time, started to become unwell. After a doctor's visit, and an instant referral to hospital on the second visit — she was diagnosed with leukemia. Suddenly, nothing else mattered, and the excitement of being able to start charging for SanityCheck was put way at the back of my mind.
We were rushed up to Bristol Children's Hospital again where we spend an initial 2 weeks. Isabel became very weak and withdrawn as she underwent an operation to fit a central line and started high-dose chemotherapy.
Thankfully, at our initial meeting with Isabel's lead consultant, we had the news that she had the most treatable and common type of leukemia, and her young age would help her, too, but it still meant a lot of time in hospital and 2.5 years of treatment.
After our 2 weeks in Bristol we were allowed home, and Isabel could continue her treatment at a closer hospital. This still meant 3 hours of driving for each visit which sometimes was 5 days a week. All of a sudden, the move to rural Bude didn't seem like such a good idea.
At first, I thought this wouldn't impact my ability to work too much. There was a lot of sitting around at the hospital and I'd have my laptop so I assumed I could get on with work. But I forgot that a small 3-year-old would also need to be entertained while having her treatment and confined to a bed!
But I also had a lot of time sitting around at hospital planning things out in my head and prioritizing, so when a day did come up that I could work, I knew what to do and how I was going to do it.
I did eventually manage to turn billing on in July 2017 and was very happy when the first beta users started signing up for paid plans.
Thankfully, Isabel has gotten through a lot of her treatment now. She still has to take medication at home every evening and have weekly blood tests and monthly check-ups for another 18 months, but life is mostly back to normal and she is enjoying her first year at school.
Were there downsides to building on someone else's platform?
My first company that had any meaningful success built tools and add-ons for Microsoft SharePoint. We were basically filling functionality holes in the platform. With each new SharePoint release there was a risk it would make our software redundant.
I knew about the risk of building SanityCheck on top of the Google Search Console API — and the fact the archiving functionality which was one of the initial pain points it solved would easily be removed by Google making more data than 3 months' worth available.
And in 2017 this was what started to happen through a limited beta: 18 months of search data was being made available.
Thankfully, from archiving the data, using my experience in SEO, and using SanityCheck every day myself, I was able to see other things I could build, such as highlighting content ideas, CTR improvement opportunities, SEO tests, rank tracking and the daily running of PageSpeed reports.
By the time Google made the new beta of Search Console available to everyone else in January 2018, I felt SanityCheck had enough other strong use cases to continue as a product — and so far this has proven to be true.
Either way — as I am building the tool for myself, SanityCheck isn't going anywhere. It is a key part of my day-to-day SEO work, so I have a keen interest in keeping it running and improving it further.
How have you attracted users and grown SanityCheck?
When I launched paid plans, I knew I would need to find a way to attract new trial users.
Twitter had been a good avenue to get beta signups and there is a good SEO community on Twitter, so I set up some Twitter ads and promoted some of the tweets that had been doing well. This led to a steady stream of trial users; between 1 — 3 each day. I tried Facebook Ads as well, even recently with the lookalike audiences — but have not been able to get good results from them.
Another good source has been personal recommendations and tweets. It seems the trial users either register and then forget about it, or absolutely fall in love with the tool and it becomes a part of their daily workflow. These users have been very nice in tweeting about SanityCheck and retweeting my tweets — which has always helped get a new bunch of signups.
I am currently researching other paid advertising platforms as I feel as though I might have plateaued with Twitter.
Throughout the development of SanityCheck I have tried to send out a monthly update on the product and with sales and revenue information included. I also included a personal update on how Isabel was doing — as her diagnosis had a big effect on how quickly things could progress with SanityCheck. I didn't want beta users and customers thinking the tool wasn't being worked on for no good reason.
I think being open with our family story of 2017 and revenue numbers has helped people stay interested in the SanityCheck story and has helped people keep switched on and become a customer once it made sense from their timing or a new feature point of view.
I also received a lot of support and encouragement from other developers and founders who were subscribed which, when you are sitting in hospital with your child hooked up to chemotherapy, means a huge amount. Probably more than they will ever realize.
What are your goals for the future?
The goals for SanityCheck are around Marketing, Conversion and Product Improvement.
As the monthly revenue has grown, SanityCheck has moved from a tool I use myself, to one I could potentially live off if I needed to. For that to happen I need to find more consistent sources of trial users and improvements in conversion. The trial to conversion rate is currently 16% — which I am quite happy with. But the 84% who do not covert generally will not interact in any way through email or in-app messages. I'd like to be able to learn more from them about what SanityCheck is missing and what it needs for them to become customers.
I also have some good ideas to work on around improving your site's content to help with rankings in Google, and also looking at other data sources that would be useful from a SEO perspective.
What's your advice for indie hackers who are just starting out?
Scratch your own itch! At least you will always have an initial customer. And by using the product yourself, you will always have your own feedback on how to improve it.
Where can we go to learn more?
I'm always happy to answer questions from other founders and entrepreneurs with side project or startup questions — or even SEO questions and problems. 😊
—, Founder of SanityCheck
Want to build your own business like SanityCheck?
You should join the Indie Hackers community! 🤗
We're a few thousand founders helping each other build profitable businesses and side projects. Come share what you're working on and get feedback from your peers.
Not ready to get started on your product yet? No problem. The community is a great place to meet people, learn, and get your feet wet. Feel free to just browse!
—, Indie Hackers founder