I work for a company in the decidedly not-sexy area of pet hospitality. We began building our own software when revenue was under $1M and we're now about 1/4th the size of your company and operate completely on our own software platform. The CEO of my company would convince you to at least try it in a heartbeat. As the original freelance developer and now the CTO, I'll give you the pros and cons from my perspective.

For the first few years as a single shop, they used one then another suite of SaaS designed for the industry. These had some basic public-facing reservations website and a billing system tied to a database of customers, pets, vets, and calendar entries that employees could manage. But the owner was developing his own operational techniques in all areas of the business, with an eye toward building a franchising platform. Operational "secret sauce" he wanted to add in software included: How animals are separated and managed in groups, intelligent maximization of kennel space over time given inter-pet relationships (e.g. family, friend, enemy), tracking pet health and eating habits, matching employee schedules to volume, how reservation slots are filled or saved for most-loyal customers, rewards programs, seasonal rates, franchise-level business variables, getting customer feedback, daily photos and communication with customers, a mobile app for employees to track pets around the facilities in realtime, custom printed collars, projecting volume to fine-tune upcoming sale prices or peak rates, and on and on. It was difficult or impossible to get any features or even bug fixes from the SaaS developers.

He hired me, as a lone freelancer, and paid me half of my estimate up front to spend a year writing him a software platform from scratch. Version 1 did all the basic things he was getting from the SaaS, and then we began iterating on all of the ideas and unique methods. It's been 15 years and one complete rewrite in a more modern language. The company has grown to 8 locations, managing roughly 200 pets per facility at any given time. I have - very rarely - brought on other developers to help, but basically the entire platform is easily manageable by one person and it's not even a full-time job. Our entire operating cost for servers, storage and backup is about $500/mo.

Upsides: They can get pretty much any feature they want, built quickly and cheaply. I understand the business model inside out by now, so I'm able to quickly spot any potential operational or technical pitfalls in new ideas, and work with them to align the software to exactly what their intentions are in new policies, as opposed to just following a feature spec. Just as a small example, when they changed their rules about deposit amounts and cancellation deadlines and fees a couple times over the years, it became much easier to write a subsystem that allowed them to manage those things themselves. Being so tailored, the software prevents employees from making common mistakes. Rollouts are VERY fast, sometimes in the same day as a minor feature is ordered up. We can make new versions available to one facility to test in production and see what bugs crop up, then roll out to the rest. Over time it has been more expensive than any SaaS, but at this point it would be impossible for the company to do what it does without the custom software. Owning the software has itself been a tremendous value addition for both investors and franchisees.

Downsides: As my friends in the tech industry love to point out, all of this constitutes a lot of technical debt. If I die or something, they're gonna be pretty screwed for awhile. As it stands, it would take someone else awhile to come up to speed on the 500k LOC we have across 5 different apps in the suite. The software runs itself, it hasn't gone down in years, and it's recoverable if it does, but as far as bug fixes or new features or dealing with forced upgrades it would take awhile. It didn't have to be this way; they could have hired a team or transitioned to one. Given the CEO's outlook on building things himself, he would have built a team if he felt he needed to. Knowing what I know, they're lucky they chose me as a single point of failure and not someone who might decide to switch careers or retire early. But those are avoidable pitfalls.

Final advice: Take time to choose well-supported technology stacks that will be around a long time. Documenting code. Most importantly, have your coder(s) work directly with the people responsible for writing and developing your operational / business procedures, and have them collaborate on writing the software manual. That way the logic of the business is understood by the coders and the logic of the software is understood by the people responsible for creating and implementing operations.

It doesn't have to cost a fortune to get up and running and it's way, way cheaper than hiring an outside firm. Personally I love working for companies outside the tech industry who need in-house software, it's a much better culture and the results are immediate and tangible.