My PostgreSQL Side Project Makes $30K ARR
Hello! Who are you and what business did you start?
Hi, I’m Michael Christofides. I run pgMustard, which is an online tool for developers that helps them troubleshoot slow PostgreSQL queries.
I love working in small, high-trust, fun teams and wanted to design a dream job I could enjoy for decades. Developers are wonderful customers but can be tricky when it comes to pricing.
After a bumpy start, we fixed our pricing, and have been growing steadily ever since — recently passing $30k ARR.
Our annual recurring revenue chart courtesy of ChartMogul (one of our customers)What's your backstory and how did you come up with the idea?
I started pgMustard with a friend and former colleague, Dave. We met several years before, at Redgate Software, building various database tools. We started it as a side project, and both went down to working 4 days per week at our jobs to make time for it.
Postgres seemed an awesome platform to build for, since it was growing in popularity, and had a wonderful community. It is also not controlled by a single commercial entity, meaning less platform risk. I knew a lot of Postgres fans from my time at GoCardless, so was able to speak with them as a starting point.
Lots of people I spoke with already used a tool already for reading query execution plans. While a couple were well-loved, we saw that folks were still often needing to ask for help, which gave us a bunch of ideas.
Take us through the process of building the first version of your product.
Having been in software for nearly 10 years by this point, we were keen to keep the MVP scope as small as possible! Dave was super keen to use technologies he already used and loved, including Clojure, ClojureScript, Google Cloud, and Kubernetes. I had my doubts but trusted his judgment, and these choices have held up well to this day.
For the rest of the business, we didn’t need many tools, but still tried to use ones we were already familiar with, or that were easy to use — some examples include G Suite, Trello, and Balsamiq. Even so, only working one day per week (plus some evenings and weekends) progress was pretty slow.
We lived several hours apart in the UK, so worked mostly remotely. When Dave came to stay with me in Guildford, we put together a founder's agreement that has served us well and agreed on some milestones where we’d quit our jobs and go full-time.
View from a walk we did when meeting up, in Guildford UK:
However, with progress slow, and the day job taking its toll, Dave quit his job way before we agreed! I soon got jealous, so quit to go full-time too, albeit with a 3-month notice period to serve first.
We got some great suggestions from our alpha users, iterated a bunch, then set a date to launch v1…
Our homepage shortly after we launched our v1, courtesy of the Wayback MachineDescribe the process of launching the business.
Our launch strategy was far from great. One thing we’d done ok was to blog a bit along the way and grow a small newsletter, so we let those folks know at least.
Luckily, the Postgres community had a couple of wonderful resources we could also make use of. Planet PostgreSQL sharing our educational blog posts helped folks know we existed. The official site’s news policy also allowed for an announcement email to their list, as well as showing on the homepage for a few days (until newer news stories came in).
We launched with a 7-day trial, and options to pay either 50€ per month or 500€ per year for up to 10 users. We didn’t want teams to stick to their current process of relying on one or two people to do performance work since part of our value was empowering others to be able to do it too.
We’d heard the advice “charge more” and “charge for value”, but I’m now of the opinion that being too cheap, or too good value, in the early days would have led to much easier problems!
Given we had a 7-day unlimited trial, we were shocked when the first subscription came through only 3 days after launch! They paid 500€ for a year, having had no contact with us, which was a huge boost. Well… it was, after we panicked, wondered if it could somehow be a scam, and then scrambled to give them access to the product (we hadn’t quite automated that part yet)!
We also got a ton of new trial users and feedback. We offered pgMustard t-shirts to early supporters, and to anyone who filled out our feedback questionnaire. Ordering t-shirts yourselves is not a good idea btw — while we have great quality ones, ordering the right number, the right sizes, and the right fits are not worth the hassle. I still have several women’s fits and a couple of small men's ones in my cupboard.
One feature we quickly added as a result of the early feedback was a new visualization to show the timing of each operation. This is such an important part of the product to this day!
Sadly, it took us a couple of (long) months to get our second subscription, so without the initial boost of confidence from those first ones, it’s unlikely I’d be writing this today.
In the months afterward, we tried several small paid experiments too. Google Ads and sponsoring an excellent community newsletter looked promising, but it was hard to see how they’d be profitable. Since we were living off savings, we were cautious about paid channels.
For our launch swag t-shirts — we went for the classic, minimalist, absolutely massive logo design 🙈
Since launch, what has worked to attract and retain customers?
We spent a year making the product better with only limited commercial success. In early 2020 we changed our pricing to charge per-user, which lowered the entry price a lot. We immediately saw that it was working, but less than 2 months later the start of COVID slammed the brakes on.
It seemed to us that most organizations were cautious with spending at this time. Dave went back to full-time work elsewhere, and I started contracting part-time to pay the bills.
Despite the lower revenue per user (<$10/user/month), things picked up, and we started seeing some word of mouth for the first time! The other thing that started to work in 2020 was that we began ranking for some relevant things in Google searches. I learned a lot about it and decided to put together a glossary for EXPLAIN. It’s a maintenance nightmare, but people like it, and it’s working well for our niche.
Our customer retention has always been decent. Our product can be low use, but can also sometimes pay for itself in a single use. As such, our churn tends to be low, even taking into account that we only offer annual subscriptions now. I’m a big believer in optimizing for the long term, fixing issues when they come up, and doing right by folks. These help with retention, but also with sleeping well.
About 18 months ago I also started a weekly postgres.fm podcast with Nikolay Samokhvalov. We now get more than 1000 listeners per episode, and recently shared our other stats. Podcasting is a lot of work, but I find it easier than blogging for some reason.
I’ve also kept up a monthly newsletter of the best performance articles and videos I come across each month, as well as any pgMustard news (most of this is things I’m doing anyway, but some months it serves as a welcome forcing function).
A couple of years ago, we added an optional “How did you hear about us?” question when people start a pgMustard trial, which about 22% of folks share. It’s likely very biased but suggests a bunch is word of mouth, a bunch is Google searches, the podcast helps, and there is a long tail of other ways too (that vary from week to week).
The most recent answers to “How did you hear about pgMustard?”
How are you doing today and what does the future look like?
pgMustard has great gross profit margins. It took a lot of R&D and time to build and doesn’t yet pay me well, but it doesn’t have high hosting costs. Also, our setup won’t need to scale with user growth for quite some time yet (I dream of the day we have database performance issues ourselves!)
Another friend and former colleague of mine is currently handling the infrastructure and adding some features. They’re happy working when needed for equity in the business, which works great for both of us.
Until it can afford to pay two great salaries I plan to continue contracting about 10 hours per week. For the past 18 months, this has been with the wonderful folks at Userlist. I’ve loved working for small companies with impressive teams, that are (quite) a few steps ahead of pgMustard. I learn a lot of relevant stuff, and it keeps me sane too.
Through starting the business, have you learned anything particularly helpful or advantageous?
Our founders' agreement worked well to keep things fair and also as a reminder of what we said (it was years before we needed it). I’m super grateful to still have Dave as a cheerleader, friend, and sounding board.
The biggest mistakes we made were all around pricing at the beginning. We’d heard the advice “charge more” and “charge for value”, but I’m now of the opinion that being too cheap, or too good value, in the early days would have led to much easier problems!
What platform/tools do you use for your business?
Our app is Clojure (and ClojureScript), deployed via Kubernetes, backed by a PostgreSQL database (of course), all running on the Google Cloud Platform in Finland.
We chose Squarespace for a quick landing page and initial blog in 2018, and are still on it today. I am planning to migrate off it this year, for something faster and with better uptime, but it has served us for longer than expected.
The rest of our tooling is mostly boring — Stripe, Quaderno, Starling Bank, Mailchimp, Fathom Analytics, and Slack.
On the dev side, I do have a couple of editors I love and would highlight — Nova and Postico.
What have been the most influential books, podcasts, or other resources?
The most influential by far was Small Giants by Bo Burlingham. It was so eye opening to see that you didn’t have to optimize for growth, and could still run a successful and fulfilling business.
In a similar vein, the six-episode Panic Podcast was a wonderful reminder to keep things fun along the way too.
Advice for other entrepreneurs who want to get started or are just starting out?
In my teens and twenties, I used to love giving advice! These days, I try to resist — at least before understanding what someone’s goals are. Instead of advice, here are a few quotes I’ve found surprisingly helpful myself…
The market can stay irrational longer than you can stay solvent (Keynes)
The most basic form of human stupidity is forgetting what we are trying to accomplish (Nietzsche)
Where can we go to learn more?
Download the report and join our email newsletter packed with business ideas and money-making opportunities, backed by real-life case studies.
Download the report and join our email newsletter packed with business ideas and money-making opportunities, backed by real-life case studies.
Download the report and join our email newsletter packed with business ideas and money-making opportunities, backed by real-life case studies.
Download the report and join our email newsletter packed with business ideas and money-making opportunities, backed by real-life case studies.
Download the report and join our email newsletter packed with business ideas and money-making opportunities, backed by real-life case studies.
Download the report and join our email newsletter packed with business ideas and money-making opportunities, backed by real-life case studies.
Download the report and join our email newsletter packed with business ideas and money-making opportunities, backed by real-life case studies.
Download the report and join our email newsletter packed with business ideas and money-making opportunities, backed by real-life case studies.