A complete GEO-first SEO assessment of backyardparadiso.com covering AI citability, brand authority, content quality, technical foundations, schema, and platform readiness across ChatGPT, Claude, Perplexity, Gemini, AI Overviews, and Bing Copilot. (Part 2 of 2)
01Executive summary
Backyard Paradiso is a multi-market outdoor-living installer with seven physical locations across Colorado, New Jersey, Florida, Illinois, and Texas, serving a wide service portfolio: pergolas, fencing, artificial grass, decks, pavers, glass railings, motorized zip screens, retractable awnings, permanent and landscape lighting, batting cages, expandable homes, outdoor kitchen cabinets, plus four pool series. The site itself is a WordPress build with a clean URL pattern at /services/[service]/ and a small blog at /blog/.
The work that has been done on individual service pages — the Pergolas page in particular — is competent. Decent H1, H2/H3 structure, FAQ section, testimonials, ~1,200 words, breadcrumbs. The team clearly knows how to write a service page. But the layer above and around those pages is failing in ways that prevent any of that work from being seen, indexed, or cited.
Three things are gating everything else.
First: there are no entity signals. No Organization schema, no LocalBusiness schema for any of the seven locations, no FAQPage markup despite FAQ sections existing on most service pages, no Article schema on blog posts. AI systems can crawl the pages but they have no machine-readable way to identify what Backyard Paradiso is, where it operates, or which claims belong to it. There is also no llms.txt file. The domain is functionally invisible to entity-graph builders.
Second: content quality bugs are leaking across pages. The Artificial Grass page contains a “Why Choose Backyard Paradiso?” block that talks about composite fences. The Decks page has an embedded H2 that reads “Composite Fences: Beauty and Durability Combined” followed by fence content. Image alt text on the Decks page is raw Chinese filename strings. The same five testimonials (James Rodriguez / Amanda Lee / Michael Davis / Karen Martinez / Thomas Bennett) appear verbatim on the homepage, About, Contact, Artificial Grass, and Pergola pages — Google’s quality systems and AI systems both downweight content that signals templated or fabricated review copy.
Third: the site has no third-party authority. Searches for “Backyard Paradiso” reviews and combinations with services and cities return nothing — no Reddit, no Wikipedia, no LinkedIn company page, no Yelp/Angi/BBB pages surfacing, no media mentions, no industry citations. The brand has Facebook, Instagram, and a YouTube channel, but the channel doesn’t surface in third-party content. For comparison: searching “aluminum pergola installation Denver Colorado” returns ten competing local installers — Backyard Paradiso doesn’t appear.
The good news: most of this is fixable in 30–60 days because the underlying assets are there. The service pages exist, the locations exist, the blog has started, the technical platform (WordPress) supports schema plugins. The work is structural, not creative.
02Score breakdown
| Category | Score | Weight | Weighted | Status |
|---|---|---|---|---|
| AI Citability | 48 | 25% | 12.0 | Below average |
| Brand Authority | 18 | 20% | 3.6 | Minimal |
| Content E-E-A-T | 38 | 20% | 7.6 | Critical |
| Technical Foundations | 55 | 15% | 8.3 | Needs work |
| Structured Data | 8 | 10% | 0.8 | Critical |
| Platform Optimization | 42 | 10% | 4.2 | Below average |
| Composite GEO Score | — | 100% | 36.5 | Critical |
The composite rounds to 38/100. The weight distribution is doing real work here: the two strongest categories (Citability and Technical) only contribute 20.3 weighted points combined, while the two weakest categories (Brand and Schema) contribute 4.4 — that’s where the headroom is. Fixing schema alone moves the composite by ~7 points; building three months of brand-authority signals could move it another 8–10.
03Critical issues — fix this week
Two confirmed instances of fence-related body content appearing on non-fence service pages:
- /services/artificial-grass/ — the “Why Choose Backyard Paradiso?” section opens with: “Our commitment goes beyond providing premium products. Every composite fence we offer is meticulously crafted…”
- /services/decks/ — contains an H2 heading “Composite Fences: Beauty and Durability Combined” followed by ~200 words of fence content embedded mid-page.
This is almost certainly a copy-paste-and-customize error during page production. AI systems extracting passages from these pages will pull contradictory subject matter, which downweights the page as a citable source for either topic. Audit every service page for similar leakage; the bug pattern suggests it may be present on more than just these two.
No JSON-LD blocks visible on the homepage, About, Contact, blog index, blog post, or any of the three service pages sampled. For a multi-location services business this is the highest-leverage technical gap on the site.
Specifically missing:
- Organization schema on the homepage
- LocalBusiness schema for each of the seven physical locations
- Service schema on each service page
- FAQPage schema on every service page that has an FAQ section
- Article + Person schema on blog posts
- BreadcrumbList schema matching the visible breadcrumbs
The right way to land all of this on a WordPress site is RankMath Pro — global Organization + per-page Service/LocalBusiness via the schema generator. An llms.txt file should ship at the same time so AI crawlers have a curated map of what to cite.
The block of five testimonials attributed to James Rodriguez, Amanda Lee, Michael Davis, Karen Martinez, and Thomas Bennett appears verbatim on the homepage, About Us, Contact, Artificial Grass, and Pergola pages. On each page the names are identical and the wording is service-adjusted only on the Pergola page; on the other four it’s identical artificial-grass language regardless of the page topic.
This pattern is read by both Google’s review-quality systems and by AI extractors as templated/fabricated content. It also creates a trust problem for human visitors who read multiple pages. Two paths forward:
- Replace with verifiable reviews. Pull real Google Business Profile reviews per location and embed them with proper Review schema and explicit source attribution.
- If GBP review volume is thin, launch a 60-day review-collection sprint per location before retiring the placeholder text.
The site has both /services/pergolas/ (the actual service page, ~1,200 words, FAQ, full content) and /pergolas/ (a thin WordPress category archive listing one blog post). Both URLs return 200, both are crawlable, and the breadcrumb on the blog post links to the category archive, not the service page.
Likely the same pattern exists for every blog category that shares a name with a service: pavers, retractable-awnings, glass-railings, decks. Each duplicate creates a thin URL competing for the brand+service phrase against the real page.
Fix in three steps: (1) noindex or 301 the /[category]/ archive URLs to /services/[service]/, (2) update the post category permalink to /blog/category/[name]/ or set categories to noindex by default in RankMath, (3) re-anchor the blog-post breadcrumbs so they point to /blog/ as the parent rather than the category archive.
04High-priority issues — fix this month
Confirmed on the Decks page — alt attributes include strings like 图片 (3), 图片 (8), 微信图片 2021102314211423, 主图264, 追评图 3 (1). These are upload filenames from a Chinese WPC supplier’s photo library that became alt text when the images were uploaded to WordPress without the alt field being filled.
Effect: zero image-SEO value, accessibility failure for screen reader users, and a quality-rater signal that the site isn’t being maintained. The fix is bulk: write proper descriptive alt text for every image (estimated 80–150 images across the service pages), prioritizing service pages and any image used in social/OG sharing.
The rendered homepage body, with chrome stripped, contains: an H1 (“Creating spaces you’ll love to live in”), a long list of service category labels styled as H4, and the duplicated testimonials block. No introductory paragraph, no service descriptions, no location list, no value proposition prose, no “About” section. Word count is below 200 in the main content area.
For a site with seven locations and 14+ services, the homepage should be doing entity-establishment work: who Backyard Paradiso is, what it installs, where it operates, why someone would choose it. As written, the homepage gives Google and AI systems almost nothing to extract or summarize.
Recommended structure for a rewrite:
- Above-fold: H1 + 60-word company description that names the brand, the category, the service breadth, and the geographic footprint
- Service grid with 50-word descriptions per category — still scannable, but populated
- “Where we install” section listing all seven cities with links to a per-city landing page
- One real testimonial per location with verifiable attribution
- FAQ block (4–6 questions) that earns FAQPage schema
The Contact page lists all seven locations with NAP, but no /locations/[city]/ or /[service]-[city]/ pages exist. There is nothing on the site that can rank for the queries that actually convert: “pergola installation Denver”, “artificial grass Orlando”, “deck builder San Antonio”.
The architecture this calls for is the standard Service × Location silo. Seven locations × ten priority services = 70 leaf pages, but the first version only needs the location pillars (7) plus one or two priority service-city combinations per market.
Each location pillar needs: H1 with city name, address with map embed, phone with click-to-call, services-offered list with internal links, 3–5 local project examples, location-specific testimonials, LocalBusiness schema, embedded GBP reviews, hours, service area in plain text.
All four blog posts are bylined “Backyard Paradiso” with the author URL pointing to /author/devteam/. There’s no author bio, no credentials, no LinkedIn, no real human attached to the writing. December 2025 Quality Rater Guidelines updates extend E-E-A-T to all competitive queries, not just YMYL.
Assign blog posts to a real human at Backyard Paradiso. Build out an author page with bio, photo, years of experience, sameAs links, list of authored posts. Wire Person schema to the byline.
Four blog posts total, all published in December 2025. Quality is decent — comparison tables, pros/cons, structured H2/H3. But the volume is far below what’s needed to support 14 services in 7 markets. Each service silo needs 8–15 supporting cluster posts to read as authoritative.
Artificial grass product variants live at root paths: /super-eco-1-1/, /imperial-k92/, /imperial-pro/, /putting-green-max/, etc. Eleven product pages total. These should sit under /services/artificial-grass/products/[slug]/ — a logical hierarchy that reflects the real architecture.
05Medium-priority issues
llms.txt fileSingle Markdown file at the domain root listing each service page, each location landing page, the most useful blog posts, and the canonical About URL.
Different services menus on different page templates (homepage / About / Contact show different sets).
Mirror Google’s “People Also Ask” patterns. Followed immediately by 1–2 sentence direct answers.
Competitors (Angi, Pergola Depot, StruXure) publish ranges and earn AI citations. Add cost ranges per service per city.
AIO and Perplexity deprioritize undated content for time-sensitive queries.
Continue reading: Part 2 of 2 →