The pages are optimized. That isn't why the site doesn't rank. On almost every on-page measure the site is ahead of the pages in Nashville's top 10, and more on-page work won't fix this.
It doesn't rank because there's too little real authority behind good pages. The domain is 17 months old, it has 13 clean linking sites against 96 and 390 for the leaders, and the May 2026 core update pushed its city pages down. The site's structure also makes it worse: Google often ranks the wrong page, and the same intent is split across several pages.
The hack is over and no malicious code showed up in this scan. Do this first: stop paid links, earn real local links, and give each search one clear page.
Homepage against the 8 pages that reached the top 10 for "house painters Nashville" in at least one of 5 reads:
| On-page factor | Client homepage | Top 8 median | Read |
|---|---|---|---|
| Keyword and city in title | Yes | Yes (mostly) | Done |
| Keyword and city in H1 | Yes | Keyword 50%, city no | Done |
| Related terms covered | 85% | 56% | Ahead |
| Entities covered | 100% | 75% | Ahead |
| Topics covered | 100% | 88% | Ahead |
| Schema types | 20 | 8 | Ahead |
| Images | 62 | 34 | Ahead |
| Reviews on page | 3 | 1 | Ahead |
| Map embed, phone, address | Yes | Phone and address, usually no map | Ahead |
| Word count | 2,374 | 589 | Four times longer; more length won't help |
| Headings | 45 | 19 | Heavy |
| City mentions | 17 | 1.5 | Well above ranking pages; don't add more |
| Google's read of "service" as the topic | 0.13 | 0.29 | Page's main topic is less sharp; not shown to affect rank |
Across our 55 searches, word count, headings, term coverage and keyword placement didn't separate who ranks. That's why this isn't the lever, even where the client is behind on a measure.
Technical check: all 107 sitemap pages return 200. None are noindexed, canonicals match, and titles and descriptions are unique. All 10 URLs I inspected in Search Console are indexed, with Google using the declared canonical. The 36 city pages are unique (6–12% overlap).
The one possible content gap: 3 of the top 8 say "commercial painting", and the site never does. If Alan does commercial work, it deserves a page. If not, leave it.
On searches that clearly map to one page, 44% of impressions (537 of 1,224, last 28 days) land on a different page. City hubs beat the page built for the job, and city pages beat the main service pages.
| Search | Page Google shows | Position | Page that should show |
|---|---|---|---|
| interior painters | /belle-meade-tn/ | 27.5 | /interior-painting/ |
| interior house painting near me | /franklin-tn/ | 26.9 | /interior-painting/ |
| cabinet painting near me | /nashville-tn/cabinet-painting/ | 28.0 | /cabinet-painting/ |
| interior painter brentwood | /brentwood-tn/ | 77.9 | /brentwood-tn/interior-painting/ |
| interior painting franklin | /franklin-tn/ | 77.5 | /franklin-tn/interior-painting/ |
| exterior painter brentwood | /brentwood-tn/ | 86.2 | /brentwood-tn/exterior-painting/ |
City hubs and main service pages are linked from all 107 pages. The 30 city-plus-service pages get 10–20 internal links each, and /nashville-tn/interior-painting/ gets 12. Google last crawled that page on 22 Aug. The pages meant to win "interior painter Brentwood" are the weakest pages on the site.
The homepage ("Nashville House Painters") and /nashville-tn/ ("House Painters in Nashville, TN") target one search. So do /interior-painting/ and /nashville-tn/interior-painting/, and the same goes for each service. Three layers (main service, city hub, city plus service) share limited authority. Nashville searches sit at positions 50–90 on both sets of pages.
This is the main gap. Competitors with thinner pages outrank the site because more stands behind them. Not in the top 50 for "house painters Nashville":
| Business | Avg position | Page words | Linking sites | Clean links | Seen before 2026 | New since Oct | Spam-score 40+ |
|---|---|---|---|---|---|---|---|
| thehousepainters.com | 9.4 | 692 | 212 | 96 | 130 | 26 | 77 |
| nashpainting.com | 15.0 | 328 | 659 | 390 | 433 | 103 | 170 |
| thevillepaintingco.com | 17.2 | 191 | 80 | 9 | 10 | 24 | 53 |
| hiswaypainting.com | 19.2 | 1,161 | 112 | 22 | 21 | 27 | 60 |
| allbrightpropainting.com | 24.2 | 1,277 | 260 | 30 | 43 | 27 | 71 |
| newdirectionpainting.com | 25.2 | 961 | 119 | 25 | 17 | 27 | 58 |
| cumberlandpainting.com | 28.4 | 719 | 120 | 35 | 17 | 32 | 65 |
| ipaintnashville.com | 33.4 | 673 | 136 | 20 | 43 | 27 | 73 |
| thoseguyspaintingco.com | 50.2 | 944 | 73 | 3 | 17 | 25 | 52 |
| alanrobinsonpainting.com | not in top 50 | 2,374 | 198 | 13 | 2 | 165 | 61 |
Clean links: followed, spam score under 40, not press-release copies. Link dates are when the crawler first saw them.
Only 2 linking sites were seen before 2026, against 10–433 for competitors. Name searches are 40 a month against about 70 for businesses Google shows. Moz (7) and Semrush (2) are low because the profile is new and thin. A few sites with fewer clean links still rank, so links aren't the whole story; age and the core update are also in play.
Google's update ran 21 May to 2 Jun. The site was improving until then and slid from 3 June.
| Non-brand organic | Apr | May | Jun 3–30 | Jul | Aug | Sep | Oct 3–Nov 3 |
|---|---|---|---|---|---|---|---|
| Average position | 49 | 42 | 51 | 67 | 64 | 56 | 63 |
| Clicks | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
| Page | May 1–Jun 2 | Oct 7–Nov 3 | Change |
|---|---|---|---|
| /brentwood-tn/ | 42.1 | 67.4 | −25 |
| /franklin-tn/ | 46.0 | 67.4 | −21 |
| /nashville-tn/ | 37.0 | 60.4 | −23 |
| /brentwood-tn/deck-staining-sealing/ | 18.4 | 44.9 | −27 |
| /fairview-tn/ | 21.2 | 31.8 | −11 |
| /deck-staining-sealing/ | 58.9 | 42.5 | +16 |
| /interior-painting/ | 66.0 | 33.9 | +32 (few impressions) |
| /fence-staining-sealing/ | 62.7 | 57.4 | +5 |
| /cabinet-painting/ | 53.1 | 60.0 | −7 |
May is non-brand and October is all queries, so treat this as a guide. City pages lost ground and most main service pages held or gained. My read: a young domain with 36 long, same-shaped location pages isn't being trusted for towns it isn't based in. That's an interpretation. Our 55-search data doesn't show that city-page uniqueness matters either way, so test this before changing everything.
Registered 6 Jun 2025. The median site in the top 10 across our 55 searches is 13 years old, and older sites beat younger ones 57 times in 100 at equal authority. The business dates to 2007, but Google has only 17 months of this domain to judge.
Around 10–14 Sep 2025 Google stopped supporting the &num=100 parameter, and many sites lost desktop impressions while average position "improved". This site shows that pattern: average position on non-hack pages went from about 43 to 16 between 10 and 12 Sep.
That doesn't explain everything. Comparing 15 Aug–8 Sep with 20 Sep–14 Oct, real pages went from 2,324 impressions to 13. Desktop fell from 1,146 to 1, which fits the change, but mobile also fell from 1,172 to 12, and that change mostly affected desktop. So some of the loss looks real, happening while spam pages were still ranking around position 8. The data can't show whether the hack caused it. By February–March 2026, the homepage was the only page with impressions, until the new site launched.
117 of the 198 linking sites are copies of one press release, all nofollow, on sites like lifestyle.loopbiz.com. Paid-looking listicles and profiles add more (aimention.bcz.com, theomnibuzz.com, mystrikingly, mataroa.blog). Position went from 56 in September to 63 afterward, so the burst didn't help. The 36 "PBN backlinks" sites are automated noise every site gets, and spam levels match competitors, so disavowing won't change much.
The Google profile is claimed, with 82 reviews at 5.0 and 1,747 photos. It's #1 from Bellevue, #9 from West Nashville and missing from the 72 results downtown, which is normal distance fall-off. In the last 28 days about 32 clicks came in, 15 through the profile link and 12 to the homepage. Impression counts look inflated: 77–93% of non-brand impressions are desktop, and many #1 profile searches have no clicks, which suggests rank-tracking tools.
/intake.eval, encoded payloads or injected redirects. The only JavaScript redirect sends the careers form to its thank-you page.The hack was large: at least 137 spam sitemaps of 2,500 URLs each in August 2025, and at least 905 spam pages got impressions. Spam pages kept appearing until about 15 Oct 2025, then dropped to 2 impressions over the next 6 weeks.
mail, ftp and autodiscover point through Cloudflare and return a 520 error. Remove them if they're unused.apm-online.com, patrickasmith.com), and SPF still allows an old mail host. Confirm the old account and its files are deleted, and tighten SPF.From outside I can't see Cloudflare Workers or firewall rules, or anything keyed to Google's real IP addresses. To close that gap, use URL Inspection → View crawled page on the homepage and compare it to the live page.
sitemap-index.xml and sitemap-0.xml, which now 404. Submit /sitemap.xml./fence-stain-seal/ and /deck-stain-seal/ to their current pages.Judge progress at the next one or two core updates, using non-brand position (excluding the profile link) and real leads.
/bellevue-nashville-tn/? That hub now sits at 81.5.Limits: Search Console is read-only through the API, so Manual Actions, Security Issues, the Sitemaps report and Page Indexing totals weren't visible. I inspected 10 of 107 URLs. The on-page comparison is the homepage on one search, and Bellevue and Franklin got one top-10 check each (the site is in neither). The name-search comparison rests on 2 businesses.