25
Pages indexable
Up from a single set of shared head tags across the old site.
Residential and commercial painting, Lakewood Ranch FL
Moved off a template builder onto 25 prerendered pages with per-page metadata, structured data, and an automated audit that fails the build.
4 The Love of Color is a family business. Nimbus built and maintains the site — this is a family project rather than a client engagement, and the numbers below are measured from the build either way.
The business was on a hosted site builder, which is a reasonable place to start and a hard place to stay. Every page shared one set of head tags, so each URL told Google it was a duplicate of the homepage — the fastest way to keep a page out of the index regardless of what's written on it.
There was also no separation between services. Interior painting, exterior painting, cabinet refinishing and commercial work were all competing on the same page for four different searches, which meant losing all four.
Every indexable URL — path, title, description, Open Graph image — defined in a single typed file. The page components, the static build and the sitemap all read from it, so the sitemap physically cannot list a page that doesn't exist or omit one that does.
The build renders each route to static HTML with its own title, description and self-referencing canonical already in the served markup. Google reads those before running any JavaScript, and most AI crawlers never run it at all.
Four service pages, four city pages and six city-plus-service pages — each written by hand. No templated matrix: the hand-written city pages measured about 25% text overlap with each other, which is what keeps them from being clustered and ignored.
One HousePainter entity declared once with an @id, and every Service and Breadcrumb node on every page points at it instead of restating the business. One place to change a phone number.
Titles, descriptions, canonicals, h1 counts, image alt text, JSON-LD validity, sitemap coverage in both directions, orphan pages, and internal links that don't resolve — all checked on every build, which fails if anything regresses.
Responsive variants generated at build time so a phone downloads a phone-sized photo, with explicit dimensions on every image to stop the layout jumping as they load.
Every figure here is reproducible from the site's own build output. Traffic and ranking numbers are deliberately absent — the site had not launched when this was written, and a number nobody measured is a number nobody should print.
25
Up from a single set of shared head tags across the old site.
25 of 25
Generated from the route table, verified in both directions by the audit.
2.47MB → 576KB
Responsive image variants; a 77% reduction on the heaviest page.
58 characters
Inside the range Google displays rather than rewrites.
0
Across all 25 pages, on every build.
The site is built and passing its own checks. It goes live when the domain moves off the old host — the remaining work is DNS and a Google Business Profile, not code.
Send over your domain and you'll get back a specific list of what's working and what isn't — including when the honest answer is that nothing needs replacing.