Show HN: Side project passed $2.5k/mo revenue after 2 years (Phoenix and Vue)
When the client loved the solution, I knew I was on to something. However, the no-code platform wasn't very customizable, so I decided to rebuild the process as a SaaS product. The client's CTO wanted in and we became cofounders.
Today, we passed the $2,500/mo. threshold, and couldn't be more excited! (https://pricetable.io)
Things started slow. I wasn't a software developer by trade, so I was constantly "drinking from the fire hose." Also, my cofounder and I had disagreements regarding features, UX, sales strategy... you name it. We never fought, but initially there was a sense of disconnect.
Then one day, everything clicked. His company started to pilot our product, and after a few months became our first customer. Receiving feedback from real users was a breath of fresh air. It was also really eye-opening to see which assumptions we had made were slam dunks and which were hilariously wrong!
Things might have been easier had I picked a more mainstream stack like Rails/Django, but once I got up to speed with Elixir and Vue, development became a Zen-like experience. Both communities are very welcoming and immensely helpful. HN has also been an extraordinary source of inspiration; reading success stories always makes me launch my code editor! Similarly, hearing from companies that didn't make it helps us keep our expectations realistic.
Now we shift focus to finding new clients. We have a very solid success story and metrics to back it up. However, both my partner and I still have day jobs we need the income from, and the product requires a fairly high-touch sales approach. Any advice would be appreciated. :)
92 comments
[ 3.6 ms ] story [ 161 ms ] threadGiven the growth you're having organically on just two people and not that much time, I'd try to keep on your own a little bit more rather than searching for investors. That will take time, and hiring more people will also take even more time. Maybe it's worth it to put that time into getting new clients, knowing the market (i.e., what's your upper limit, what companies you can't reach, etc) and maybe growing revenue so when you do take investors and hire more people you're closer to breaking even.
You can always keep this thing bootstrapped. If you reach a point you need an extra pair of hands, you can evaluate if it makes sense to hire someone, and if debt or equity financing is necessary. But if you're not at that point, there's no reason to take that on.
A key thing to remember is being invested in is a means to an end. Ultimately it requires giving up a level of control, or taking on a level of debt; it's not simply 'a good thing to do'.
So even without considering the downsides of a customer as a shareholder, you may want to avoid doing it just because you don't know how the money will advance your goals.
Go on YouTube and watch some MicroConf videos. Most of the most popular videos are exactly this theme.
For me, the challenge isn't really lack of knowledge of B2B sales (I do a fair bit of it in my day job) but rather lack of time. Prospecting and qualifying leads tends to be very time-consuming, and neither of us can dedicate ourselves to it since we both have day jobs. But I think you're right that our focus should be to expand our client base a bit more before looking to raise money.
I hadn't even heard of Phoenix (I am not a web dev by trade, so maybe that's why!), so I am a bit surprised to see something less mainstream as a 'goto'.
Phoenix is pretty stable and fast. I'd assume it's pretty popular here.
I'd recommend .net core because i have the most experience with it ( but it moves fast since .net framework). But it's less popular here ( i think)
A couple of years ago, it was RoR ( and that is still a viable solution).
A long time ago, it was PHO and that's still a valid solution.
There are multiple answers to this and some people will prefer one over the other. It mostly has to do what they are used to and heard of.
I just wouldn't recommend a young and new javascript framework. Many have come and go.
Pick something stable and don't use the "latest and greatest" is the only advice i can give you.
*that's how I heard of it, at least. I'm not a developer, more of a sysadmin / analyst
You could say that I was technical enough to be dangerous, but before PriceTable I did not have any "real-life" experience (or the depth and breadth of knowledge) that comes with building and maintaining a SaaS app with paying users.
I started playing with Rails back in... 2010 I think? And about five years ago someone in the Rails community introduced me to Elixir, and I fell in love with it. So when I conceived of PriceTable, I figured, why not use Elixir for it.
There were other challenges too. Rails is a pretty mature ecosystem, and there are libraries and guides and examples for almost anything you can imagine. With Elixir/Phoenix, I ended up having to learn many concepts and system design principles and then implement them myself. For example, at the time I was working on the billing modules, the only Stripe library for Elixir was in a limbo, so I developed my own integration. With Ruby you'd literally install the official Stripe Ruby library and go wild.
Stuff like that wasn't necessarily a bad thing, mind you. I feel like a lot of things I took for granted in Rails (a lot of the "magic"), I had to actually learn with Elixir, and it made me a better engineer.
Elixir and Phoenix documentation is fantastic, and the community is both extremely friendly and very knowledgeable. There's an Elixir Slack that gets a fair amount of traffic, and both Jose Valim (Elixir creator) and Chris McCord (Phoenix creator) are very active both there and on the Elixir forums.
If you're interested in making the switch, I'd love to help. Shoot me an email at ege@pricetable.io!
If the motivation is to build something I actually need independent of the stack - in other words, something I expect to be paid for building, or has some other utility - then I'll use what I know. That doesn't mean I won't learn new things, but I'll learn those things in order to get the job done, rather than for their own sake. That doesn't rule out small experiments - for example, trying out an individual library to accomplish a task - but the overall stack will be something I'm familiar with.
I also use Phoenix for my SaaS project (took me 5 years to hit $2.5k/mo so congrats!) but I went all-in on liveview. It's some solid tech and I'm pretty happy with it but I'm wondering what the limits are when there is a lot of interactivity which seems to be the case with your app.
Generally, when I create an app I use the typical route of react front-end and the backend is the API. To me, this almost feels like writing/maintaining the app twice especially on solo projects.
With liveview this isn't the case at all. You still have your separations of concerns but you get the server-side rendering workflow with all the benefits of a highly interactive front-end.
I want to emphasize though that I've been using liveview for less than a year on a relatively small app so I am by no means an expert. I'm certainly not suggesting that everyone drop javascript-heavy workflows and switch to phoenix/liveview but I do feel comfortable enough suggesting that it is a serious candidate to be considered.
Regarding OTP I'm still learning, but I am utilizing GenServers and of course passing messages between processes via the actor model which has been very useful.
Once you realize that everything is a process and those processes can pass messages (including to one's self) it allows for some pretty interesting stuff.
Every time I think "this is going to be tricky".. nope. Ecto seems to have thought of that.
If you ever want to talk about how you build and deploy your app along with your tech stack in detail let me know. I've love to have you on the https://runninginproduction.com podcast.
There's 14 Phoenix episodes at https://runninginproduction.com/tags/phoenix but the more the merrier since every story is unique.
If you wanted to come on the show click the "become a guest" button on the top right to get the ball rolling.
For an idea of what would be like, check out my interview with Arvid Kahl or Julien Klapetch.
https://www.youtube.com/watch?v=vj2hfq5GZ8Q&list=PLFhQVxlaKQ...
The OP responded and we're in the process of scheduling a time.
Also, thanks a lot everyone!
I checked my email this morning and there were 10 new submissions to be on the show.
I will be responding to all of you with follow ups today.
It feels like quite a conflict of interest and a risk, if the winds on that (sole, as I understand) customer's side will change...
Building a SaaS product without a first customer is, to me, riskier, so I say well done.
You are correct about the risk. They aren't our only customer but are the largest one. If they left, we would continue to be profitable, but just barely. :)
Regarding conflict of interest, he has handled it well. Like me with my own boss, he was transparent with his boss from day one, and is very good about defending his employer's interests with anything related to PriceTable. We have actually given his company a pretty great deal in terms of pricing — and that's because he negotiated like hell with me, his cofounder, on their behalf!
Regardless, that's why I'm anxious to expand our client base, because it would greatly reduce the risk of having most of our eggs in this one client's basket.
There is an mp4 video embedded immediately underneath the header section, so maybe that's what caused the issue for you?
Somebody spending 4 hours a week on skillful promotion could make a lot of difference here, at a rather moderate expense.
Thanks!
You can also email the job opportunity to me. I collect all part-time jobs on ParttimeCareers (https://parttime.careers).
I have been part of a startup working on 401k industry, and everything there is custom and time consuming. I helped build a very user-friendly tool to build 401K proposals, and I can see how your tool can be very very useful.
the main unanswered question I have: "is this for me?". (My company is a marketing agency).
normally I'd expect to see examples of your other clients, testimonials from customers, or case studies.
I saw 0 of this (whether it doesn't exist or I missed it is a separate problem).
Even if your customers are not notable brands, just knowing that someone else uses this and it works for them gives me more confidence as a potential customer.
Note how Stripe for example uses customer logos and real customer examples throughout their sales page. https://stripe.com/
If you're concerned about this, just try asking your existing customers. It sounds like they're involved with sales, so they probably understand the value of a testimonial. You could start the conversation by asking "How do use quotes, reviews, or testimonials in your sales process?".
side note: I like the demo video on the home page. I'm on a laptop screen and wanted to view it full screen so i double clicked the video, but this did nothing.
2nd side note: if you establish yourself within one type of customer, word will spread more quickly about your product, assuming it's actually a better solution.
Based on the example video, it looks like your product is used by remodeling companies
What stands out to me:
- thought out support for mobile devices
- integration with online payments
My main feedback would be that it would be really useful if you could include a video demo on the main website. I clicked on it and will probably come back to sign up and see if it meets needs later, but if I could get a good feel for if it matches requirements quicker it might improve conversion.
At the moment to do a quote we have an excel document, which is basically a project plan which runs by week and we put the hours into each cell in the appropriate week (and on each row, specify the consultant). The output we get is a project plan which goes in our proposal document, and a fixed price which goes in there too.
Then we take the final number of hours estimated and input it into our accounting program which generates an invoice and tracks it through the lifecycle (with all the weird payment terms you get!). When we meet project hurdles we have an admin assistant which will then invoice on milestones.
Almost all our work is fixed price, but if we do need T&M we use Clockify to track time for free.
What would be the workflow with PriceTable? Can I replace the excel document or would I still need that to work out the overall hours requirement?
Once the customer accepts the proposal, you can create a project in PriceTable directly from the estimate, which carries over the title and description and automatically links it to the estimate. Then you plug in the total hours you quoted, and assign a cost code (your fixed rate). Then, as you log time against the project (similar to Clockify, which we used previously!), it counts those hours against the total, which is really nice because you can easily see how much billable time is remaining.
At any point in time, your admin assistant can run a report and pull up the billable time associated with any project or customer within a time range and generate an invoice from it. We currently do the invoicing outside PriceTable, but there is a "generate invoice from time entries" feature coming soon.
It looks like loads of work has gone into the product though so I wish you luck :)
We will be adding a currency toggle soon. It's on the roadmap for the June update.
https://www.viget.com/articles/multi-tenancy-with-postgres-s...