My trouble has been that I automate everything and document it so well, that I basically "code myself out of a job."
I also strive for instant response time (my wife hates that) and often, I'll already be working on a client issue that the servers emailed/paged me about by the time the client gets in touch (that definitely impresses them).
So, the typical pattern is this: I meet a new client, understand their needs, build a RESTful API back-end (Python, Django, Terraform, AWS), automate any internal processes and/or build internal tools, and then support their front-end team in building their web/mobile apps that consume the API.
Usually, it's a few days to a couple of weeks of full-time work, and then my hours drop off a cliff: either 1) the client's team takes over completely, or 2) if I stay on, any subsequent feature or issue takes just minutes for me to do, so then I'm back to square one, looking for the next client. So far, I've been lucky enough to make all the clients happy and have them become "clients for life," but that "life," added up between all the existing clients, is just a few billable hours a week.
It sounds like you are doing $10k-$20k jobs in a few days or weeks.
Charge way more than you're charging. If you're successfully building our their entire backend, their internal tools and their automation in a few weeks, you should be charging for a few months instead of a few weeks.
In your case, it sounds like project work is better for you. I wouldn't recommend that you work hourly since that's probably where you're being burned. If you quote a REST API, automation system and internal tools for $10k-$30k and you finish it in 2 weeks, then you're golden and so is the startup since they just saved a lot of time.
I would highly recommend that you get on retainers with your clients. If they appreciate your work, and need help from time-to-time, you shouldn't be charged for 1 hour whenever they need you. They should pay for you to be available for them, so perhaps try to get on $500 - $1000 / month retainers. They may only need you a few times a month, but you're not billing them for $100-$200 for 1 hour of work, what a bad deal for you (and a great deal for them!)
I also strive for instant response time (my wife hates that) and often, I'll already be working on a client issue that the servers emailed/paged me about by the time the client gets in touch (that definitely impresses them).
So, the typical pattern is this: I meet a new client, understand their needs, build a RESTful API back-end (Python, Django, Terraform, AWS), automate any internal processes and/or build internal tools, and then support their front-end team in building their web/mobile apps that consume the API.
Usually, it's a few days to a couple of weeks of full-time work, and then my hours drop off a cliff: either 1) the client's team takes over completely, or 2) if I stay on, any subsequent feature or issue takes just minutes for me to do, so then I'm back to square one, looking for the next client. So far, I've been lucky enough to make all the clients happy and have them become "clients for life," but that "life," added up between all the existing clients, is just a few billable hours a week.
Any advice for me to break this pattern?