[object Object]

← back to Homesonspec

clayton-properties: DEFER recon — scope mismatch (manufactured-only + federated site-built brands)

8d0fbaf19164e68fc4f86404031a6f0a62fb1302 · 2026-08-10 21:56:33 -0700 · Steve

claytonhomes.com inventory is 100% manufactured/mobile/modular (933 floor-plans,
0 site-built); move-in-ready feed is a SPA behind robots-DISALLOWED /api/. Genuine
site-built product (Clayton Properties Group) is ~15+ separate brand domains
(goodallhomes, brohnhomes, mungo, chafin, etc); claytonproperties.com is a parked
lander. No single Clayton feed to build — future path is one adapter per CPG brand.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 8d0fbaf19164e68fc4f86404031a6f0a62fb1302
Author: Steve <steve@designerwallcoverings.com>
Date:   Mon Aug 10 21:56:33 2026 -0700

    clayton-properties: DEFER recon — scope mismatch (manufactured-only + federated site-built brands)
    
    claytonhomes.com inventory is 100% manufactured/mobile/modular (933 floor-plans,
    0 site-built); move-in-ready feed is a SPA behind robots-DISALLOWED /api/. Genuine
    site-built product (Clayton Properties Group) is ~15+ separate brand domains
    (goodallhomes, brohnhomes, mungo, chafin, etc); claytonproperties.com is a parked
    lander. No single Clayton feed to build — future path is one adapter per CPG brand.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 collectors/clayton-properties/RECON.md | 136 +++++++++++++++++++++++++++++++++
 1 file changed, 136 insertions(+)

diff --git a/collectors/clayton-properties/RECON.md b/collectors/clayton-properties/RECON.md
new file mode 100644
index 00000000..7729774d
--- /dev/null
+++ b/collectors/clayton-properties/RECON.md
@@ -0,0 +1,136 @@
+# Clayton Properties Group — RECON (2026-08-10, TK-10001)
+
+**Status: DEFERRED — SCOPE MISMATCH (site-built-vs-manufactured), NOT a robots/bot
+blocker, NOT bucket-D.** The target — SITE-BUILT new-construction spec inventory for
+"Clayton Properties Group" (slug `clayton-properties`) — **does not exist as a
+collectible unified feed on `claytonhomes.com`, nor on any single Clayton-owned
+corporate domain.** `claytonhomes.com` is plain-fetch friendly and robots-open, but the
+only inventory reachable there is **manufactured / mobile / modular** homes (off-target
+for HomesOnSpec, whose product is site-built spec homes). This adapter was intentionally
+NOT built. This file documents the exact verified findings and the future path.
+
+---
+
+## Why it's deferred (scope mismatch — the CLAYTON SCOPE NOTE case)
+
+The TK-10001 brief anticipated this exact fork:
+
+> "If the only plain-fetch-reachable inventory is manufactured/mobile homes (off-target),
+> or the site-built inventory needs a browser/XHR, that is a legitimate DEFER … Do NOT
+> force an off-target manufactured-home adapter."
+
+Recon confirms **both** disqualifying conditions:
+
+1. **`claytonhomes.com` inventory is 100% manufactured/mobile/modular — 0 site-built.**
+2. The one place `claytonhomes.com` surfaces actual for-sale *homes* (the
+   `/homes-for-sale/move-in-ready/` search) is a **client-side SPA that reads from the
+   robots-DISALLOWED `/api/` endpoint** — no inline listings, no `__NEXT_DATA__`.
+3. The genuine **site-built** product ("Clayton Properties Group") is **~15+ independent
+   regional builder brands, each on its own separate domain** (see below). There is no
+   Clayton-operated site that aggregates their site-built inventory. The corporate
+   `claytonproperties.com` is a **parked JS-redirect lander** (114-byte shell → `/lander`,
+   single-URL sitemap), not an operating inventory site.
+
+Forcing an adapter against the manufactured floor-plan pages would stage off-target
+(non-spec) data. That is the wrong product, so it is a DEFER, not a build.
+
+---
+
+## robots.txt — the site IS open (this is not a robots blocker)
+
+`https://www.claytonhomes.com/robots.txt` (verified against UA token `homesonspecbot`
+under the standard longest-match precedence — falls in the `User-agent: *` group):
+
+```
+User-Agent: *
+Allow: /
+Disallow: /api/
+Disallow: /account/favorites
+Disallow: /account/saved-searches
+Disallow: /info/
+```
+
+- `Allow: /` — the marketing + floor-plan + locations pages are all allowed.
+- **`Disallow: /api/`** — the JSON inventory/search feed that the `move-in-ready` SPA
+  calls is off-limits. Our shared `LiveFetcher` would (correctly) throw `DisallowedError`
+  on any `/api/...` URL. So even the *off-target manufactured* inventory feed is
+  robots-blocked to us — there is no allowed structured feed to read.
+
+Homepage: `200`, `text/html`, ~957 KB (plain-fetch fine, honest UA, no bot-wall).
+
+---
+
+## VERIFIED findings (what's actually on `claytonhomes.com`)
+
+Sitemap: `https://www.claytonhomes.com/sitemap.xml` (~5,055 `<loc>` entries). Path-prefix
+breakdown of the inventory-relevant slices:
+
+| Prefix                                  | Count  | What it is                                                        |
+|-----------------------------------------|--------|-------------------------------------------------------------------|
+| `/homes-for-sale/manufactured-homes/…`  | **933** | **Manufactured-home floor-plan / model pages** (off-target).      |
+| `/homes-for-sale/{home-finder,move-in-ready}/` | 2 (×6 dup) | SPA search entry points — data via robots-**disallowed** `/api/`. |
+| `/locations/…`                          | ~2,937 | **Home CENTERS / dealerships** (`clayton-homes-knoxville`, `mobile-home-liquidators`, …), not per-home inventory. |
+| `/crossmod/…`                           | ~6     | Only FAQ / newsroom pages — **no CrossMod inventory listings**.   |
+| `/newsroom/`, `/faq/`, `/learning-support/`, `/homeowner-stories/` | ~1,077 | Editorial content, not inventory. |
+
+- **Manufactured floor-plan pages are plain-fetch + fact-rich but OFF-TARGET.** e.g.
+  `https://www.claytonhomes.com/homes-for-sale/manufactured-homes/aria/` → `200`, ~786 KB,
+  self-identifies as a "manufactured home" (8× in the page, 0× "site-built"). These are
+  MODEL / product pages (a floor plan sold nationwide through dealers), **not per-home
+  spec inventory with a street address + geo** — a different data shape from every
+  site-built builder in this repo. Not a fit even setting the manufactured-vs-site-built
+  question aside.
+- **`/homes-for-sale/move-in-ready/`** → `200`, ~664 KB, but the HTML is an SPA shell
+  with **zero inline home records** (`"beds"/"price"/"streetAddress"` count = 0) and **no
+  `__NEXT_DATA__`**. Listings are fetched client-side from `/api/…`, which robots
+  **disallows**. So there is no allowed, plain-fetch, per-home feed here.
+- **`crossmod`** — Clayton's site-built-*appearing* HUD-alternative product — appears
+  ONLY as FAQ/press pages in the sitemap; there is **no browsable CrossMod inventory**.
+
+## The genuine site-built product lives on SEPARATE brand domains
+
+"Clayton Properties Group" is Clayton's **site-built division**: an umbrella of
+independent regional homebuilder brands. `claytonhomes.com/our-builders` (verified `200`,
+~870 KB) links each brand out to its **own domain**, e.g. (all verified reachable):
+
+- `goodallhomes.com` (TN/AL — `200`)  · `brohnhomes.com` (Austin TX — `200`)
+- `oakwoodhomesco.com` · `mungo.com` · `chafincommunities.com` · `summithomeskc.com`
+- `legacyhomesal.com` · `elitebuilthomes.com` · `berkeleybuildingco.com`
+- `silverthornehomes.com` · `harrisdoyle.com` · `yourarborhome.com` … (~15+ total)
+
+Each is a distinct site (own CMS, own inventory feed). There is **no single Clayton feed**
+that aggregates their per-home spec inventory. `claytonproperties.com` =
+`<script>window.location.href="/lander"</script>` (a 114-byte parking shell,
+1-URL sitemap → `/lander`); `claytonpropertiesgroup.com` 302s to
+`claytonhomebuildinggroup.com`. Neither is an operating inventory site.
+
+---
+
+## What to do to ship site-built Clayton inventory (future path)
+
+There is **no single `clayton-properties` adapter to build** — the site-built inventory is
+federated across the ~15+ brand domains. The correct future path is **one adapter per
+brand** (same discipline as the existing per-builder adapters), added as separate
+`collectors/<brand>/` packages (e.g. `collectors/goodall-homes`, `collectors/brohn-homes`),
+each recon'd on its own. Several of those brands are large enough to warrant their own
+BUILDERS.md entry. This `clayton-properties` slug, as a *single* Clayton feed, is a
+non-target: retire it or repurpose it as the umbrella note pointing at the per-brand
+adapters.
+
+If a future browser-enabled shared fetcher (see richmond-american RECON) ever lands AND
+the manufactured line is ever declared in-scope, the `claytonhomes.com` `move-in-ready`
+inventory could be collected — but its data would still need to reach through the
+robots-**disallowed** `/api/`, so it is blocked by robots regardless of render mode. That
+remains off-target and off-limits; do not pursue it for the site-built spec-home product.
+
+---
+
+## Summary verdict
+
+| Question                                              | Finding |
+|-------------------------------------------------------|---------|
+| Is `claytonhomes.com` plain-fetch / robots-open?      | Yes (`Allow: /`, honest UA, no bot-wall). |
+| Is there SITE-BUILT spec inventory on it?             | **No** — inventory is 100% manufactured/mobile/modular. |
+| Is the for-sale-home feed plain-fetch reachable?      | **No** — SPA reads the robots-**disallowed** `/api/`. |
+| Is there a unified Clayton Properties Group feed?     | **No** — `claytonproperties.com` is a parked lander; site-built lives on ~15+ separate brand domains. |
+| Correct action                                         | **DEFER** — do NOT force an off-target manufactured-home adapter (per the CLAYTON SCOPE NOTE). Future site-built collection = one adapter per CPG brand domain. |

← ec4d72cf collectors: add Smith Douglas Homes inventory adapter (facts  ·  back to Homesonspec  ·  stanley-martin: DEFERRED — Vite/React SPA, facts via runtime ef74e6c5 →