It usually happens by accident over time. Someone writes a blog post about ac repair, a service page exists for ac repair, and two city pages mention ac repair prominently. Search engines have to pick one, they may pick the weakest, and the choice can flip around between them. Internal links and external links get spread across the set rather than concentrating on one page. You spot it in Search Console by filtering a query and seeing multiple URLs taking impressions for it, or by site searching your own domain for the phrase.
The fix is consolidation, not deletion for its own sake. Choose the page you want to rank, fold the useful content from the others into it, then 301 redirect the retired URLs to the keeper and update internal links to point there. If two pages genuinely serve different intents, keep both and rewrite them so the difference is obvious, such as one page explaining how a repair works and one page selling the repair in a specific city. Contractors with years of blogging and a page per town almost always have some of this to clean up.
Send the site over. We will tell you what is broken, what you could rank for, and whether AI search knows you exist. No charge and no pitch deck.