Back to blogAI Search

The Charleston agency AI recommends is frozen

One Charleston agency has not changed a byte of its site since last October. Ask AI for the best Charleston SEO agency for service businesses and it still gets named.

6 min read·September 7, 2026·By Charlestowne Marketing

I have been auditing one Charleston competitor a week since spring. In June I ran a full health check on a local agency that positions itself almost exactly where we do, service businesses, roofers and HVAC and dentists and contractors. I saved the results. This morning I ran the identical check again, eighty four days later, and compared the two files line by line.

Nothing had changed. Not "roughly the same." Identical.

Same title tag, sixty one characters. Same meta description, one hundred fifty three characters. Same H1. All four H2s in the same order with the same wording. Homepage word count 337 in June, 337 today. One hundred eight links then, one hundred eight links now. Seventeen images, five of them still missing alt text, the same five. Zero structured data in June, zero structured data today.

Then I pulled their sitemap. Every page on the site carries a last-modified date from October 2025. The blog posts are stamped October 13. The newest page of any kind is stamped October 20. That is ten and a half months of a site sitting completely still.

Now the part that should bother you, because it bothers me. I searched "best Charleston SEO agency for service businesses" this morning. The AI answer named them. I searched "Charleston SEO companies for roofers." The AI answer named them there too. A site that has not been touched since last October is one of the handful of Charleston agencies that generative search will hand to a business owner asking who to hire.

Freshness is not the thing

Every Charleston service business owner I talk to has absorbed the same folk wisdom: Google likes fresh content, so blog more. Post to your Google Business Profile weekly. Keep the site "active."

I have spent months on the other side of that bet. I publish here every single week, and I am not the agency getting named in that roofer answer instead of them. (Well. Actually I am in that one, at number two organic and cited in the AI answer, which took a dedicated roofing page and about four months. But you take my point, and I did not get there by posting more often.)

At this point a reasonable person is thinking: Graham, you run a weekly blog and you are telling me publishing does not matter. Pick one.

Fair. Here is the distinction, and it is the whole argument. Publishing builds topical authority slowly, over quarters, and it is how you eventually compete for broad head terms. It is not what makes an AI answer engine confident enough to name you. Those are two different mechanisms and Charleston business owners keep spending on the first one hoping it produces the second.

What the frozen site actually has

So I went through their fifty seven indexable URLs to work out what is carrying them.

It is structure. Not content volume, not freshness, not even technical quality. Their homepage has 337 words and no schema markup at all, which is a genuine deficiency and one I would fix on day one for any client. What they have instead is a grid:

  • Ten vertical pages, where roofing, HVAC, plumbing, general contracting, and dental each get both a {trade}-seo page and a {trade}-web-design page
  • Fourteen location pages, where Charleston, Savannah, Greenville, Columbia, Hilton Head, Myrtle Beach, and Augusta each get both a {city}-seo page and a {city}-web-design page
  • Thirteen individual service pages, one each for local SEO, technical SEO, citation management, Google Business Profile optimization, reputation management, and so on
  • Four pricing pages with actual dollar figures on them

Every cell in that grid is a page that answers one question completely. When a language model is asked "who does roofing SEO in Charleston," there is a document whose entire existence is that answer. It does not have to infer anything. That is what gets you named.

Compare it to what most Charleston service businesses have: a page called Services, listing eight trades as bullet points, mentioning Charleston once in the footer. There is no document on that site that is unambiguously about one trade in one place. The site is not wrong, it is just unreadable as an answer.

The pattern shows up everywhere once you look

I checked "website design near me" this week as part of tracking a set of commercial terms. That query is fully personalized, so I got results from Iowa, Louisiana, and West Virginia rather than anything local. Which turned out to be more useful than a Charleston result would have been, because it let me see the shape without the noise.

Every agency page that ranked used a city-scoped URL. One was /locations/web-design-cedar-rapids-iowa/. Another was /location/lafayette-la/website-design/. A third was /web-design/morgantown-wv. Three unrelated agencies in three unrelated markets, all converging on the same structure, because it is the structure that wins proximity searches.

That same week I noticed something else worth flagging. charleston web design looked completely different than it did seven days earlier. On August 31 the top of that result page was Clutch at number one and Upwork at number three. This week there are no directories in the top six at all, just six real agencies. Google decided, apparently over the course of a week, that local agency pages are a better answer for that query than a directory listing is. If you have been staying out of that fight because directories owned it, the fight just opened up.

What I did about it on my own site

I am not going to write all that and then not act on it, so here is the receipt. We have twelve neighborhood pages on this site and every single one of them was an SEO page. Zero web design pages scoped to a neighborhood. The exact gap I just spent four hundred words describing existed on my own site.

So this week we built Mount Pleasant web design as a proper page: what the build standard is, what a service site has to do in the first eight seconds for somebody whose ceiling is leaking in Snee Farm, why the trade page and the place page have to link to each other, and real pricing. Not a template with the town name swapped in. Interestingly, the frozen competitor's own Charleston web design page, which is genuinely good and runs about 2,500 words with published prices, names zero Charleston neighborhoods anywhere on it. That is the seam.

What to do this week

If you run a service business in the Lowcountry, open your own sitemap and count. Not your blog posts. Count how many pages exist whose subject is one trade in one place.

If the answer is zero or one, that is your project, and it beats another six months of blog posts. Pick your two highest-margin services and the two places you most want work from, and build four pages. Real content on each, different enough that you could not swap one for another. Link each trade page to each place page in both directions. Put LocalBusiness and Service schema on all of them, which is the one thing the frozen site is doing wrong and which costs you an afternoon.

Then keep publishing, because the right kind of post does still get you hired and because head terms are won over quarters. Just stop expecting the blog to do the job the page structure is supposed to do.

Ten and a half months of doing nothing is beating a lot of Charleston businesses right now. That should read as an opportunity, not an insult. The bar is a grid of pages that each answer one question, and almost nobody in this town has built one.

#ai-search#local-seo#site-structure#web-design#charleston#service-businesses

Want this kind of result for your business?

Free SEO audit. Two business days, no obligation, yours to keep.

Get a Free SEO Audit