Portland customers narrow by quadrant and neighborhood, and the bridge between you decides everything.
Use the names people actually type
Alberta, Hawthorne, Sellwood, St Johns, Montavilla, Laurelhurst, Kenton. People search the neighborhood with the quadrant attached, and outside the line they search Beaverton or Gresham by name.
Match the vocabulary. A heading built on a name nobody uses will never surface for the one everybody types into a phone in Sellwood.
Stop publishing one page eight times
The usual shortcut writes one page and search-replaces the name. That was worked out years ago, and somebody in Sellwood spots it the moment the details stop matching their street.
Delete the place name from your Sellwood page and the one next to it. If they now read identically, you wrote one page and published it twice.
The housing stock is the real difference
Sellwood and Hawthorne run 1910s and 1920s bungalows and foursquares with basements, old panels, and no ductwork. The Pearl is converted warehouse and newer towers. St Johns and outer Northeast mix post-war ranch with recent infill.
Then connect it to the work: what makes the job awkward in Sellwood, what you get called out for most, and where the quote lands higher than people were expecting.
Write the boundary as a bridge, not a radius
A five-mile radius is meaningless when the five miles include a lift bridge and a river. Crossing at four in the afternoon is a different proposition to crossing at ten.
Put it the way you dispatch. Eastside daily. West of the river on scheduled days. Anything past 205 by quote.
Let the cooling gap carry part of the page
An area page that says which pockets are almost entirely houses without ducts, or which streets lose power first in an ice storm, reads as genuinely local.
It is also genuinely useful to somebody dealing with a week over a hundred degrees, which is the part most local SEO advice quietly leaves out.
Count jobs, not sessions
Judge each page on jobs booked, not visits counted. Three a month from a quiet Sellwood page beats a busy one that never rings.
Two months is a fair trial. A page earning nothing by then almost never said anything only a Portland heat pump and retrofit crew could have said.