← Back to all Flat Fee outputs

Read-only local campaign artifact

technical-seo-spec.md

direct-seo-wave-39/technical-seo-spec.md

# Technical SEO Specification

## Status: PARTIAL

### Evidence boundary

This specification uses only `source-facts.json`, derived from the retained visible homepage text. It does **not** assert that the live site currently has, lacks, or serves any tag, header, crawler file, route, or schema.

## Observed retained inputs

| Input | Value |
|---|---|
| Brand | Flat Fee House Cleaners Sarasota |
| Canonical base proposed for review | `https://flatfeehousecleanerssarasota.com/` |
| Retained navigation labels | Home, About, Services, FAQ, Blog, Contact |
| Retained service labels | Residential, commercial, Airbnb, deep, window, pressure washing, emergency, green, move in/out, office, medical-facility cleaning |

## Proposed metadata pattern

These are implementation candidates, not a claim about existing tags.

| Page type | Candidate title pattern | Candidate description pattern |
|---|---|---|
| Homepage | `House Cleaning Services in Sarasota, FL | Flat Fee House Cleaners` | `Explore residential and commercial cleaning options from Flat Fee House Cleaners Sarasota. Request a free estimate for your Sarasota cleaning needs.` |
| Service page | `{Service} in Sarasota, FL | Flat Fee House Cleaners` | `Learn about {service} from Flat Fee House Cleaners Sarasota and request a free estimate for your property.` |
| About | `About Flat Fee House Cleaners Sarasota` | `Learn about the local cleaning team, service approach, and contact options for Flat Fee House Cleaners Sarasota.` |
| FAQ | `House Cleaning FAQs | Flat Fee House Cleaners Sarasota` | `Find answers about cleaning supplies, pricing approach, recurring visits, insurance, and home access.` |
| Contact | `Contact Flat Fee House Cleaners Sarasota` | `Request a free estimate or contact Flat Fee House Cleaners Sarasota by phone or through the approved contact form.` |

Before use, validate title uniqueness and measured character length against the actual route inventory. Do not add city or service claims absent from approved page scope.

## Proposed canonical and indexing rules

1. Use one HTTPS hostname and a consistent trailing-slash policy after the live redirect chain is captured.
2. Use a self-referencing absolute canonical on each indexable public page.
3. Canonicalize tracking/query variants to their clean public URL; do not use robots.txt as an index-removal mechanism.
4. Use `index,follow` only on approved public marketing pages. Use `noindex,follow` for search results and any duplicate/filter state confirmed by the CMS.
5. Do not deploy a blanket canonical, noindex, redirect, or robots change before crawling the existing site and validating the full set together.

## Proposed WordPress crawler policy, pending live review

```text
User-agent: *
Allow: /wp-admin/admin-ajax.php
Disallow: /wp-admin/
Disallow: /?s=
Disallow: /search/
Disallow: /author/
Sitemap: https://flatfeehousecleanerssarasota.com/sitemap_index.xml
```

This is a candidate only. The sitemap filename, existing robots rules, cache/plugin paths, and indexable archive policy are unverified. Do not block CSS, JavaScript, or public page paths needed for rendering.

## Proposed sitemap and AI-discovery requirements

- Include only verified canonical indexable URLs, with accurate `lastmod` if the CMS can supply it.
- Exclude noindex, redirect, error, search, and duplicate parameter URLs.
- After a route inventory is approved, prepare an `llms.txt` that names only confirmed services, approved contact details, and current important pages.
- Match `og:url` to the final canonical, use a verified social image, and set a page-appropriate OG type. Do not invent a logo or image URL.

## Local QA gate

| Check | Current evidence | Result |
|---|---|---|
| Unique metadata | No route inventory or HTML tags retained | BLOCKED |
| Canonicals | No raw HTML/redirect capture | BLOCKED |
| robots and sitemap agreement | No live crawler files retained | BLOCKED |
| AI discoverability | No current `llms.txt` or schema inventory | BLOCKED |

### Required next input

Fresh raw HTML and headers for representative URLs, live `robots.txt`, sitemap(s), current route inventory, existing schema/tag inventory, and written implementation authority.