[object Object]

← back to Homesonspec

workers: register 29 Pacific-region regional builders as onboarding targets

fbd5fc6cf5d8d129e3e160077509e86af0733736 · 2026-07-27 20:39:02 -0700 · Steve

Inactive Builder + SourceRegistry rows (CRAWL, mediaRights=NONE, active=false,
health=PAUSED) for CA/AZ/WA/OR/NV/HI regionals (Trumark, New Home Co, Fulton,
Holt, Pahlisch, Castle & Cooke, etc.) with verified websites. Tracked 'coming
soon' targets; no crawl until bespoke adapters are built (Loop B backlog).

Files touched

Diff

commit fbd5fc6cf5d8d129e3e160077509e86af0733736
Author: Steve <steve@designerwallcoverings.com>
Date:   Mon Jul 27 20:39:02 2026 -0700

    workers: register 29 Pacific-region regional builders as onboarding targets
    
    Inactive Builder + SourceRegistry rows (CRAWL, mediaRights=NONE, active=false,
    health=PAUSED) for CA/AZ/WA/OR/NV/HI regionals (Trumark, New Home Co, Fulton,
    Holt, Pahlisch, Castle & Cooke, etc.) with verified websites. Tracked 'coming
    soon' targets; no crawl until bespoke adapters are built (Loop B backlog).
---
 apps/workers/scripts/register-pacific-regionals.ts | 87 ++++++++++++++++++++++
 1 file changed, 87 insertions(+)

diff --git a/apps/workers/scripts/register-pacific-regionals.ts b/apps/workers/scripts/register-pacific-regionals.ts
new file mode 100644
index 0000000..50fe584
--- /dev/null
+++ b/apps/workers/scripts/register-pacific-regionals.ts
@@ -0,0 +1,87 @@
+/**
+ * Register Pacific-region REGIONAL builders as tracked onboarding targets.
+ * Upserts Builder + SourceRegistry rows (idempotent by slug / key), INACTIVE:
+ *   collectionMethod=CRAWL, mediaRights=NONE (facts-only), active=false,
+ *   health=PAUSED — so NOTHING is crawled until each builder gets a bespoke
+ *   adapter. This just makes them visible "coming soon" targets (same shape as
+ *   the existing 30 national builders) so the overnight loop can prioritize them.
+ * Run: DATABASE_URL=… pnpm --filter @homesonspec/workers exec tsx scripts/register-pacific-regionals.ts
+ */
+import { prisma } from "@homesonspec/database";
+
+type Row = { name: string; site: string | null; states: string; note?: string };
+const ROWS: Row[] = [
+  // California regionals
+  { name: "Trumark Homes", site: "trumarkhomes.com", states: "CA;NV" },
+  { name: "The New Home Company", site: "newhomeco.com", states: "CA;AZ;OR" },
+  { name: "Warmington Residential", site: "homesbywarmington.com", states: "CA;NV" },
+  { name: "Elliott Homes", site: "elliotthomes.com", states: "CA;AZ" },
+  { name: "Christopherson Builders", site: "christophersonbuilders.com", states: "CA" },
+  { name: "City Ventures", site: "cityventures.com", states: "CA" },
+  { name: "Signature Homes", site: "sighomes.com", states: "CA" },
+  { name: "Discovery Homes", site: "discoveryhomes.com", states: "CA" },
+  { name: "Van Daele Homes", site: "vandaele.com", states: "CA" },
+  { name: "SummerHill Homes", site: "summerhillhomes.com", states: "CA" },
+  { name: "DeNova Homes", site: "denovahomes.com", states: "CA" },
+  { name: "Raymus Homes", site: "raymushomes.com", states: "CA" },
+  { name: "JMC Homes", site: "jmchomes.com", states: "CA" },
+  { name: "Wathen Castanos Homes", site: "wathencorp.com", states: "CA" },
+  { name: "Granville Homes", site: "granvillehomes.com", states: "CA" },
+  // Arizona regionals
+  { name: "Fulton Homes", site: "fultonhomes.com", states: "AZ" },
+  { name: "Camelot Homes", site: "camelothomes.com", states: "AZ" },
+  { name: "Rosewood Homes", site: "rosewoodhomes.com", states: "AZ" },
+  { name: "Cachet Homes", site: "cachethomes.net", states: "AZ" },
+  { name: "Blandford Homes", site: "blandfordhomes.com", states: "AZ" },
+  // WA / OR regionals
+  { name: "Holt Homes", site: "holthomes.com", states: "WA;OR" },
+  { name: "Stone Bridge Homes NW", site: "stonebridgehomesnw.com", states: "WA;OR" },
+  { name: "Soundbuilt Homes", site: "soundbuilthomes.com", states: "WA" },
+  { name: "Pahlisch Homes", site: "pahlischhomes.com", states: "OR;WA" },
+  { name: "Sekisui House US", site: "sekisuihouse.com", states: "WA;OR" },
+  // Nevada
+  { name: "Harmony Homes", site: null, states: "NV", note: "recon-pending: verify NV Las Vegas domain before crawl" },
+  // Hawaii
+  { name: "Castle & Cooke Homes", site: "castlecooke.com", states: "HI" },
+  { name: "Gentry Homes", site: "gentryhawaii.com", states: "HI" },
+  { name: "Alexander & Baldwin", site: "alexanderbaldwin.com", states: "HI" },
+];
+
+const slugify = (s: string) =>
+  s.toLowerCase().replace(/&/g, "and").replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
+
+async function main() {
+  let builders = 0, sources = 0;
+  for (const r of ROWS) {
+    const slug = slugify(r.name);
+    const websiteUrl = r.site ? `https://www.${r.site}` : null;
+    const builder = await prisma.builder.upsert({
+      where: { slug },
+      update: { name: r.name, websiteUrl, coverageArea: r.states },
+      create: { slug, name: r.name, websiteUrl, coverageArea: r.states, isDemo: false },
+    });
+    builders++;
+    const key = `${slug}-site`;
+    await prisma.sourceRegistry.upsert({
+      where: { key },
+      update: { builderId: builder.id, baseUrl: websiteUrl, notes: r.note ?? "pacific-regional onboarding target; adapter pending" },
+      create: {
+        key,
+        name: `${r.name} (builder website)`,
+        builderId: builder.id,
+        baseUrl: websiteUrl,
+        collectionMethod: "CRAWL",
+        mediaRights: "NONE",
+        rateLimitRpm: 10,
+        health: "PAUSED",
+        active: false,
+        notes: r.note ?? "pacific-regional onboarding target; adapter pending",
+      },
+    });
+    sources++;
+    console.log(`  ✓ ${r.name} (${slug}) ${r.site ?? "[no domain]"}`);
+  }
+  console.log(`\nregistered ${builders} builders + ${sources} source rows (all inactive/facts-only; no crawl until adapters built)`);
+  await prisma.$disconnect();
+}
+main().catch(async (e) => { console.error(e); await prisma.$disconnect(); process.exit(1); });

← 76c1d27 auto-save: 2026-07-27T20:24:23 (1 files) — scripts/build-loo  ·  back to Homesonspec  ·  auto-save: 2026-07-27T20:54:34 (4 files) — apps/workers/pack c612735 →