Show HN: Side project passed $2.5k/mo revenue after 2 years (Phoenix and Vue)

381 points by enraged_camel ↗ HN
Several years ago, I had a client whose salespeople were using Excel to generate sales proposals. This was inefficient and the resulting documents looked awful, so I developed a new process for them using a no-code platform. It featured a web form that was tied to a workflow engine, and a fancy PDF got emailed to the customer to sign.

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 ] thread
It sounds like a good time to raise a bit of money. Don't go crazy, but try to get enough of an investment that one or both of you can start working full time on the company. Or, if neither of you are comfortable with sales, try to bring on a third person who is. Congrats and good luck!!
Yeh try TinySeed - the help is likely more valuable than the money, which in itself likely helps a great deal.
(comment deleted)
Thank you! Interestingly enough, our first customer also offered to invest in us six months ago. We punted at first, but a few weeks ago they brought it up again unprompted, so I think they are serious. I’m just hesitant because I’m not sure how it would work to have a customer also be a shareholder. What are your thoughts?
I'd be wary of going with a customer/inventor, you might end up building a solution too tailored for them that you can't resell easily; and there are conflicts of interest for them.

Given 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.

More than that, what goal are you achieving by letting them invest? Will you use that money to hire a full time sales person, or another dev to accelerate the product, or...? Because if you don't know what you'd do with that money, you don't want that money (nor the extra voice and trouble it would bring).

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.

May I ask how did you get the consulting gig in the first place?
Hey! So the consulting gig is my day job. I’ve been working with no-code platforms for more than a decade, and this client was for one of the projects assigned to me. I’m grateful because consulting is a really good way to look for new ideas in the marketplace since you’re always interfacing with customers and talking about their issues, sometimes in great detail. PriceTable was born out of one such project.
I see, thanks. So I assume you work for an agency and they let you build this SaaS product on the side. Pretty nice of them as some companies have rather draconic stipulations with regards to intellectual property produced while being employed by them.
The original solution probably does belong to that company. The problem it set out to solve does not. A completely different solution also does not. Ergo...
Yes, you are correct. I'm good friends with my boss, and he has known for a while that I work on PriceTable on evenings and weekends, and is completely okay with it, and has even offered to help. So in that sense I feel very fortunate!
Contrary to another commenter here, I would suggest learning a bit about selling to businesses before (or even instead of) looking to raise money.

Go on YouTube and watch some MicroConf videos. Most of the most popular videos are exactly this theme.

Thank you for the advice. I will check those out!

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.

At some point one (ideally both to avoid conflict later) will have to decide to go all in on your idea or otherwise it will always limp along due to the two of you not having enough time to devote to it.
Depends what their goal is. "Limping along" while generating thousands of revenue for each of them, while requiring only minimal attention, may be perfectly acceptable. That's a lifestyle business; they may not want to run a company.
As someone who isn't a software developer by trade, how did you decide on the software stack?

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'.

I don't think there's a real answer to this that doesn't have a time variable.

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.

It could start with identifying concurrency as a priority, then looking up the erlang BEAM as a best in class solution, and finally using recent forums to see what today's practical tools are for taking advantage of the BEAM and coming across elixir/phoenix.

*that's how I heard of it, at least. I'm not a developer, more of a sysadmin / analyst

Haha! I understand what you mean. It's a long story, but the gist of it is that I had been more of a hobby-grade developer, on and off, and had a few side projects that I would occasionally boot up and play with.

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.

Also a hobby dev who learned Rails. What was the switch to Elixir like in terms of learning curve and community support?
To be honest, it wasn't all unicorns and rainbows. On the surface Elixir is very similar to Rails. But there are important differences. For example, Ruby is object oriented, whereas Elixir is not. I'd say it took me some time to ditch my OO habits and to start thinking of problems and solutions in terms of functional programming. Ruby also has a much larger standard library, whereas Elixir takes a plug-and-play approach: it has a small but solid foundation, and for any specialized functionality you're encouraged/required to reach for an external library.

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!

Most of the time it's just because something looks neat, is well documented and might be a useful skill. That's why I learned Ruby back in 2006 with little to no programming experience. I really wanted to make websites, but I hated the idea of learning Java.
As a former business guy who wanted software, I’d recommend that you focus on finding someone you trust over picking a specific tech stack. What you’re looking for is someone who can talk to you about the problem you’re trying to solve, which could be recommending no software, along with the benefits & trade offs of the whatever tools they intend to use. If someone you trust wants to use Elixir & Vue, great. If someone you don’t trust wants to use Elixir & Vue, run far away.
I agree with what you're saying, but I don't think it answers GP's question. OP didn't partner or hire someone to do something on an obscure stack, but OP themself as a non-programmer by trade chose that stack, and GP now wonders how OP came to that choice, as opposed to whatever should be the top hit when searching for a stack.
It depends on motivation: is my motivation to learn something new or play around for fun? Then I'll choose whatever I'm interested in learning.

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.

Just out of curiosity, are you leveraging liveview at all?

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.

Thank you! We are not leveraging LiveView at the moment, since we already have a full-blown Vue frontend. I have been watching it from the sidelines though, and I agree that it's both very solid and very promising. I'd be very interested to hear your experience with it, if you'd be willing to share (either here, or you can email me: ege@pricetable.io).
It was a shift in workflow to no longer use javascript but overall I've really enjoyed it.

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.

What's your SaaS project? Did you end up leveraging OTP or Phoenix channels much?
It's an app in the Shopify App Store.

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.

I am building a property management software (PMS). It's a specialized form of CRM. I have dumped MVC entirely in favor of LiveView. handle_event and handle_info are a better programming model for high-level of interactivity in a page. It also gets you closer to the database, entirely bypassing GraphQL and client-side JavaScript. I had to expose a whole API endpoint to set a flag here, a preference there. No more of that.
Speaking of "closer to the database" Ecto is now one of my all-time favorite libraries.

Every time I think "this is going to be tricky".. nope. Ecto seems to have thought of that.

Hi,

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.

Love the podcast, thanks for doing this.
Had not heard of this podcast yet, it’s just what I’ve been looking for. Thanks for it! Subscribed!
Wanted to say that browserless was on this podcast recently, and was great experience. I’d definitely recommend others do it as well
Just posting an update here.

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.

wow, UI looks really great. I wish I can work on this product, are you guys hiring? ;)
Why is this user being downvoted? The comment seems as innocuous as it gets...
FYI, there's a bug on the home page. The "Try for Free" button takes one to the pricing page, rather than the demo or signup page.
growth rate seems too slow even for a side hustle.
You must be fun at parties.
I am ;) but if everyone was to just blow smoke this guy would never uncover his potential.
Too much information and text on your site. Cut it down to salient information. Same with pricing page, too many plans and too many features. Consolidate features at high level.
Was cofounder still customers CTO when their company started to use your product? Is he/she still employed on customer side?

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...

Hard to launch a biz without risk in some front
Maybe risky if the client company finds out the CTO has been moonlighting, but there are risks worth taking. Many times, this is one of them.

Building a SaaS product without a first customer is, to me, riskier, so I say well done.

He was, and still is.

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.

Depending on local laws and your cofounder‘s contract, there may also be a risk that his employer could claim ownership of the software.
Looked neat, but scrolling down crashed Firefox before I could check out more on the page. It escalated to Windows blocking gpu access :/ (Never seen that one before)
Oh, that's weird. Doesn't happen to me on my Firefox.

There is an mp4 video embedded immediately underneath the header section, so maybe that's what caused the issue for you?

You need to onboard a sales/marketing person. Someone with a few years experience in business software sales. Will the sales increase be enough to pay for the new person is not a given but you have probably reached a point that for growth you need marketing. No matter how good a software is and how much the end user likes it you will need a sales guy to get it pass the purchase department.
A part-time marketing contract is a pretty common thing.

Somebody spending 4 hours a week on skillful promotion could make a lot of difference here, at a rather moderate expense.

Any tips for finding such a person if you don't know anyone in your circles?
I'm also curious!
Please post an update when you guys get a chance. I would also love to know.

Thanks!

I've been looking for this unicorn also... seems like somebody should make a service to play matchmaker here. :)
I would also appreciate any advice you could provide to find such a person.
This is amazing.

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.

feedback from a potential customer (we use pandadoc.com right now, previously proposify.biz):

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

Hey, I’m a senior consultant at a small consulting company (c17 people) and pretty interested in your product actually - it looks great.

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.

Great feedback, thank you! My day job is also at a small consulting firm, and we actually use PriceTable for time keeping and project management. It has been working great for us. I’d be happy to chat more, and give you a demo. You can email me at ege@pricetable.io!
Thanks - I actually missed that you have a small video on your homepage :) (I was on mobile before so maybe that's why!)

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?

I would need to see an example to say for sure, but it does sound like you might be able to replace the Excel document, yes. Each line item in the estimate would be the weekly hour numbers. Once you create the estimate, you can download it as a PDF, and include it in your proposal document as an addendum (this is what we do for larger projects — for smaller ones we send the estimate directly from within PriceTable to the customer, and they just click a link to open it).

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.

Thanks, I tried it out in the end but it seems too heavy and complex for our use. I also couldn't work out how to change the currency (which I would need to change on a per-project basis).

It looks like loads of work has gone into the product though so I wish you luck :)

Thank you for the feedback, and thank you for trying it out! I'm a bit surprised to hear about complexity, but perhaps I've been using it for so long now that I have a skewed perspective. I'd love to read more, if you have a few minutes: ege@pricetable.io

We will be adding a currency toggle soon. It's on the roadmap for the June update.

(comment deleted)
Looks impressive. Anything involving billing has the potential to be huge. If you shopped this around to VCs you would definitely get some bites. Maybe you guys should go "all in" for a couple of years?
This looks great. Just wondering if you can share any details on what hosting / architecture you're running this on? Is each user's space running in it's own container or everything in the same DB for example?
PriceTable is hosted on Gigalixir. The database is Postgres. Everything is in the same database, but each tenant has its own schema. When a new account/workspace is created, we create a new schema and run a set of migrations on it to create tables, indexes, and so on. From there, each request is routed to that schema using the tenant's prefix.

https://www.viget.com/articles/multi-tenancy-with-postgres-s...

Ah Thanks, thats interesting.
Your product looks great. Just had a brief skim over your main page and have seen one grammar error... "We understand that every second counts when you're on the field." should be "...in the field.". I would recommend ensuring grammar etc is correct, as this could easily turn away potential customers, regardless of how great your product is.
Huge amount of space wasted around two buttons. You easily accommodate a video widget too in that space so that new visitors do not need to scroll.
Congratulations! Hard work does seem to pay off.
What do you use for signing documents electronically?