← 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
A apps/workers/scripts/register-pacific-regionals.ts
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 →