The two searches, and only one of them pays
Somebody who types your business name already knows you. They got your card, a neighbor gave them your name, or they saw the truck. Google's job on that search is easy: one business has that name, and it hands back your site.
The searches that bring work aren't like that. Somebody types the job and the town, because they don't know a single company that does it. That's the search you want to be in, and your name isn't in it anywhere.
So a site that comes up for your name and nothing else isn't broken. It's just never been given anything to match except the name over the door.
What Google matches a job search to
For a job-and-town search, Google looks for a page about that job in that town. Not a home page that lists twelve services and one address. A page whose whole subject is the one job, in the one town, with your name and number on it.
If your site has a services page that names a job and never names a town, you're in the running for your own town at best. Every other town is a separate list, and there's nothing on your site to put you on it.
Why the home page can't cover it
A home page has to say who you are, what you do, where you work and how to reach you, all at once. That's the right job for it and it's why it can't win a job search: it's about everything, so it's not clearly about anything.
Google picks the page that answers the search, not the site that mentions the words somewhere. One page about one job in one town beats a home page that lists both, every time, because it's the page that answers the question.
How to check this on your own site
Open a private browser window and type the way a customer would: the job, then the town. Do it for the town you drive to most, not the one your shop sits in. Look for your site in the list under the map.
Then search your business name and watch what comes back. If the name search finds you and the job search doesn't, that's the gap, and it's a writing job, not a settings job.