← back to Homesonspec

collectors/clayton-properties/RECON.md

137 lines

# 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. |