[object Object]

← back to Homesonspec

auto-save: 2026-07-27T18:53:10 (95 files) — .env.example README.md apps/admin/next.config.ts apps/admin/package.json apps/admin/src/app/api/review/route.ts

63efe789169437babd2ae669e98e44447b38932e · 2026-07-27 18:53:18 -0700 · Steve Abrams

Files touched

Diff

commit 63efe789169437babd2ae669e98e44447b38932e
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Mon Jul 27 18:53:18 2026 -0700

    auto-save: 2026-07-27T18:53:10 (95 files) — .env.example README.md apps/admin/next.config.ts apps/admin/package.json apps/admin/src/app/api/review/route.ts
---
 .env.example                                  |   4 +-
 README.md                                     |   8 +-
 apps/admin/next.config.ts                     |  12 +--
 apps/admin/package.json                       |  14 +--
 apps/admin/src/app/api/review/route.ts        |   4 +-
 apps/admin/src/app/corrections/page.tsx       |   4 +-
 apps/admin/src/app/layout.tsx                 |   4 +-
 apps/admin/src/app/leads/page.tsx             |   4 +-
 apps/admin/src/app/page.tsx                   |   4 +-
 apps/admin/src/app/review/page.tsx            |   4 +-
 apps/admin/src/app/snapshots/page.tsx         |   4 +-
 apps/admin/src/app/sources/page.tsx           |   4 +-
 apps/admin/src/app/validation/page.tsx        |   4 +-
 apps/admin/src/middleware.ts                  |   2 +-
 apps/admin/tsconfig.json                      |  12 +--
 apps/web/next.config.ts                       |  12 +--
 apps/web/package.json                         |  12 +--
 apps/web/src/app/HeroMap.tsx                  |   4 +-
 apps/web/src/app/[state]/[city]/page.tsx      |   4 +-
 apps/web/src/app/api/corrections/route.ts     |   2 +-
 apps/web/src/app/api/facets/route.ts          |   2 +-
 apps/web/src/app/api/leads/route.ts           |   2 +-
 apps/web/src/app/api/map/route.ts             |   2 +-
 apps/web/src/app/api/search/route.ts          |   2 +-
 apps/web/src/app/builders/[slug]/page.tsx     |   4 +-
 apps/web/src/app/builders/page.tsx            |   2 +-
 apps/web/src/app/communities/[slug]/page.tsx  |   4 +-
 apps/web/src/app/compare/page.tsx             |   4 +-
 apps/web/src/app/contact/page.tsx             |   2 +-
 apps/web/src/app/homes/[id]/page.tsx          |   4 +-
 apps/web/src/app/map/MapExplorer.tsx          |   2 +-
 apps/web/src/app/page.tsx                     |   2 +-
 apps/web/src/app/plans/[id]/page.tsx          |   4 +-
 apps/web/src/app/saved/page.tsx               |   2 +-
 apps/web/src/app/search/SearchClient.tsx      |  12 +--
 apps/web/src/lib/parse-search.ts              |   2 +-
 apps/web/tsconfig.json                        |  12 +--
 apps/workers/package.json                     |  30 +++----
 apps/workers/src/cli.ts                       |  20 ++---
 apps/workers/src/index.ts                     |   4 +-
 apps/workers/src/pipeline.itest.ts            |  10 +--
 apps/workers/src/pipeline.ts                  |  12 +--
 apps/workers/src/verify-cli.ts                |  14 +--
 apps/workers/src/verify.ts                    |   2 +-
 apps/workers/vitest.integration.setup.ts      |   6 +-
 cert-homesonspec.sh                           |   2 +-
 collectors/BUILDERS.md                        |   2 +-
 collectors/common/package.json                |   4 +-
 collectors/common/src/adapter.ts              |   2 +-
 collectors/dr-horton/package.json             |   8 +-
 collectors/dr-horton/src/index.ts             |   4 +-
 collectors/dream-finders/package.json         |   8 +-
 collectors/dream-finders/src/index.ts         |   6 +-
 collectors/kb-home/package.json               |   8 +-
 collectors/kb-home/src/index.ts               |   4 +-
 collectors/lennar/package.json                |   8 +-
 collectors/lennar/src/index.ts                |   6 +-
 collectors/meridian-homes/package.json        |   4 +-
 collectors/meridian-homes/src/extract.test.ts |   2 +-
 collectors/meridian-homes/src/index.ts        |   4 +-
 collectors/pulte/package.json                 |   8 +-
 collectors/pulte/src/index.ts                 |   4 +-
 collectors/taylor-morrison/package.json       |   8 +-
 collectors/taylor-morrison/src/index.ts       |   4 +-
 collectors/toll-brothers/package.json         |   8 +-
 collectors/toll-brothers/src/index.ts         |   6 +-
 collectors/tri-pointe/package.json            |   8 +-
 collectors/tri-pointe/src/index.ts            |   4 +-
 deploy-full.sh                                |  32 +++----
 deploy-heromap.sh                             |  12 +--
 deploy-web.sh                                 |  10 +--
 docs/architecture/ADRS.md                     |   2 +-
 docs/data-rights/POLICY.md                    |   2 +-
 docs/source-runbooks/meridian-homes.md        |   2 +-
 docs/source-runbooks/toll-brothers.md         |   2 +-
 ecosystem.config.js                           |  10 +--
 package.json                                  |  20 ++---
 packages/database/package.json                |   2 +-
 packages/database/prisma/schema.prisma        |   2 +-
 packages/database/prisma/seed.ts              |   2 +-
 packages/publisher/package.json               |   6 +-
 packages/publisher/src/index.ts               |   4 +-
 packages/schemas/package.json                 |   2 +-
 packages/search/package.json                  |   4 +-
 packages/search/src/index.ts                  |   4 +-
 packages/shared-ui/package.json               |   2 +-
 packages/shared-ui/src/index.ts               |   2 +-
 packages/shared/package.json                  |   2 +-
 packages/source-registry/package.json         |   4 +-
 packages/validation/package.json              |   4 +-
 packages/validation/src/rules.ts              |   4 +-
 packages/validation/src/types.ts              |   2 +-
 playwright.config.ts                          |   4 +-
 pnpm-lock.yaml                                | 124 +++++++++++++-------------
 tsconfig.base.json                            |  18 ++--
 95 files changed, 345 insertions(+), 345 deletions(-)

diff --git a/.env.example b/.env.example
index e94bc1e..69918d0 100644
--- a/.env.example
+++ b/.env.example
@@ -1,6 +1,6 @@
 # Copy to .env — never commit real values.
-DATABASE_URL="postgresql://macstudio3@localhost/spechomes?host=/tmp"
-DATABASE_URL_TEST="postgresql://macstudio3@localhost/spechomes_test?host=/tmp"
+DATABASE_URL="postgresql://macstudio3@localhost/homesonspec?host=/tmp"
+DATABASE_URL_TEST="postgresql://macstudio3@localhost/homesonspec_test?host=/tmp"
 # Admin app HTTP Basic Auth (user:pass) — set a strong value; admin fails CLOSED if unset.
 BASIC_AUTH="admin:CHANGE_ME_BEFORE_DEPLOY"
 # Snapshot storage root (raw fetched bodies live on disk, not in PG)
diff --git a/README.md b/README.md
index 12ed3c5..2811eaf 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# SpecHomes.com
+# HomesOnSpec.com
 
 **Every new home. Every builder. One search. Verified from the source.**
 
@@ -17,7 +17,7 @@ published). Top-10 national builder acquisition in progress (source registry + r
 
 ```sh
 pnpm install
-createdb spechomes && psql -d spechomes -c 'CREATE EXTENSION pg_trgm'
+createdb homesonspec && psql -d homesonspec -c 'CREATE EXTENSION pg_trgm'
 cp .env.example .env
 pnpm db:migrate && pnpm db:seed
 pnpm pipeline -- --adapter=meridian-homes-fixtures   # fixture pipeline e2e
@@ -26,7 +26,7 @@ pnpm dev:admin   # admin app     → http://localhost:3101 (Basic Auth, BASIC_AU
 ```
 
 Tests: `pnpm -r test` (unit) ·
-`pnpm --filter @spechomes/workers test:integration` (pipeline vs spechomes_test) ·
+`pnpm --filter @homesonspec/workers test:integration` (pipeline vs homesonspec_test) ·
 `pnpm e2e` (Playwright, boots both apps).
 
 ## Architecture
@@ -46,7 +46,7 @@ docs/          product · data-rights (READ FIRST) · architecture · source-run
 **The invariant that matters:** crawlers never write published tables. Data flows
 source → RawSnapshot → StagedRecord (+ per-field SourceEvidence) → deterministic
 validators (ValidationEvent, verdict) → human review when flagged →
-`@spechomes/publisher` — the single bridge to consumer-facing inventory. Missing values
+`@homesonspec/publisher` — the single bridge to consumer-facing inventory. Missing values
 are null, never guessed; every published fact traces to evidence.
 
 ## Data rights
diff --git a/apps/admin/next.config.ts b/apps/admin/next.config.ts
index 9be57ea..5da9d91 100644
--- a/apps/admin/next.config.ts
+++ b/apps/admin/next.config.ts
@@ -7,12 +7,12 @@ const nextConfig: NextConfig = {
   // Prisma client stays external so the query-engine binary resolves at runtime.
   serverExternalPackages: ["@prisma/client", "pg-boss"],
   transpilePackages: [
-    "@spechomes/database",
-    "@spechomes/schemas",
-    "@spechomes/search",
-    "@spechomes/shared",
-    "@spechomes/shared-ui",
-    "@spechomes/publisher",
+    "@homesonspec/database",
+    "@homesonspec/schemas",
+    "@homesonspec/search",
+    "@homesonspec/shared",
+    "@homesonspec/shared-ui",
+    "@homesonspec/publisher",
   ],
 };
 
diff --git a/apps/admin/package.json b/apps/admin/package.json
index 963e171..c5388cf 100644
--- a/apps/admin/package.json
+++ b/apps/admin/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/admin",
+  "name": "@homesonspec/admin",
   "version": "0.1.0",
   "private": true,
   "scripts": {
@@ -10,18 +10,18 @@
     "typecheck": "tsc --noEmit"
   },
   "dependencies": {
-    "@spechomes/database": "workspace:*",
-    "@spechomes/schemas": "workspace:*",
-    "@spechomes/search": "workspace:*",
-    "@spechomes/shared": "workspace:*",
-    "@spechomes/shared-ui": "workspace:*",
+    "@homesonspec/database": "workspace:*",
+    "@homesonspec/schemas": "workspace:*",
+    "@homesonspec/search": "workspace:*",
+    "@homesonspec/shared": "workspace:*",
+    "@homesonspec/shared-ui": "workspace:*",
     "leaflet": "^1.9.4",
     "react-leaflet": "^5.0.0",
     "next": "16.2.10",
     "react": "19.2.7",
     "react-dom": "19.2.7",
     "zod": "^3.24.1",
-    "@spechomes/publisher": "workspace:*"
+    "@homesonspec/publisher": "workspace:*"
   },
   "devDependencies": {
     "@tailwindcss/postcss": "^4.0.0",
diff --git a/apps/admin/src/app/api/review/route.ts b/apps/admin/src/app/api/review/route.ts
index a611829..1be2f20 100644
--- a/apps/admin/src/app/api/review/route.ts
+++ b/apps/admin/src/app/api/review/route.ts
@@ -1,7 +1,7 @@
 import { NextRequest, NextResponse } from "next/server";
 import { z } from "zod";
-import { prisma } from "@spechomes/database";
-import { publishStagedRecord } from "@spechomes/publisher";
+import { prisma } from "@homesonspec/database";
+import { publishStagedRecord } from "@homesonspec/publisher";
 
 const actionSchema = z.object({
   reviewItemId: z.string(),
diff --git a/apps/admin/src/app/corrections/page.tsx b/apps/admin/src/app/corrections/page.tsx
index 81681de..42bd749 100644
--- a/apps/admin/src/app/corrections/page.tsx
+++ b/apps/admin/src/app/corrections/page.tsx
@@ -1,5 +1,5 @@
-import { prisma } from "@spechomes/database";
-import { CreatedChip } from "@spechomes/shared-ui";
+import { prisma } from "@homesonspec/database";
+import { CreatedChip } from "@homesonspec/shared-ui";
 
 export const dynamic = "force-dynamic";
 
diff --git a/apps/admin/src/app/layout.tsx b/apps/admin/src/app/layout.tsx
index 5a01566..0425406 100644
--- a/apps/admin/src/app/layout.tsx
+++ b/apps/admin/src/app/layout.tsx
@@ -3,7 +3,7 @@ import Link from "next/link";
 import "./globals.css";
 
 export const metadata: Metadata = {
-  title: "SpecHomes Admin",
+  title: "HomesOnSpec Admin",
   robots: { index: false, follow: false },
 };
 
@@ -14,7 +14,7 @@ export default function RootLayout({ children }: { children: React.ReactNode })
         <header className="border-b border-neutral-200 bg-white">
           <nav className="mx-auto flex max-w-7xl items-center gap-6 px-4 py-3 text-sm">
             <Link href="/" className="text-lg font-bold text-neutral-900">
-              SpecHomes <span className="text-teal-700">Admin</span>
+              HomesOnSpec <span className="text-teal-700">Admin</span>
             </Link>
             <Link href="/review" className="hover:text-teal-700">Review queue</Link>
             <Link href="/sources" className="hover:text-teal-700">Sources</Link>
diff --git a/apps/admin/src/app/leads/page.tsx b/apps/admin/src/app/leads/page.tsx
index c9d8c4d..589ad9e 100644
--- a/apps/admin/src/app/leads/page.tsx
+++ b/apps/admin/src/app/leads/page.tsx
@@ -1,5 +1,5 @@
-import { prisma } from "@spechomes/database";
-import { CreatedChip } from "@spechomes/shared-ui";
+import { prisma } from "@homesonspec/database";
+import { CreatedChip } from "@homesonspec/shared-ui";
 
 export const dynamic = "force-dynamic";
 
diff --git a/apps/admin/src/app/page.tsx b/apps/admin/src/app/page.tsx
index 3a9cc97..9780b6f 100644
--- a/apps/admin/src/app/page.tsx
+++ b/apps/admin/src/app/page.tsx
@@ -1,6 +1,6 @@
 import Link from "next/link";
-import { prisma } from "@spechomes/database";
-import { CreatedChip } from "@spechomes/shared-ui";
+import { prisma } from "@homesonspec/database";
+import { CreatedChip } from "@homesonspec/shared-ui";
 
 export const dynamic = "force-dynamic";
 
diff --git a/apps/admin/src/app/review/page.tsx b/apps/admin/src/app/review/page.tsx
index 5051809..7d0ad42 100644
--- a/apps/admin/src/app/review/page.tsx
+++ b/apps/admin/src/app/review/page.tsx
@@ -1,5 +1,5 @@
-import { prisma } from "@spechomes/database";
-import { CreatedChip } from "@spechomes/shared-ui";
+import { prisma } from "@homesonspec/database";
+import { CreatedChip } from "@homesonspec/shared-ui";
 import ReviewActions from "./ReviewActions";
 
 export const dynamic = "force-dynamic";
diff --git a/apps/admin/src/app/snapshots/page.tsx b/apps/admin/src/app/snapshots/page.tsx
index 100cc52..1255a2f 100644
--- a/apps/admin/src/app/snapshots/page.tsx
+++ b/apps/admin/src/app/snapshots/page.tsx
@@ -1,5 +1,5 @@
-import { prisma } from "@spechomes/database";
-import { CreatedChip } from "@spechomes/shared-ui";
+import { prisma } from "@homesonspec/database";
+import { CreatedChip } from "@homesonspec/shared-ui";
 
 export const dynamic = "force-dynamic";
 
diff --git a/apps/admin/src/app/sources/page.tsx b/apps/admin/src/app/sources/page.tsx
index 1064f9b..2be4b12 100644
--- a/apps/admin/src/app/sources/page.tsx
+++ b/apps/admin/src/app/sources/page.tsx
@@ -1,5 +1,5 @@
-import { prisma } from "@spechomes/database";
-import { CreatedChip } from "@spechomes/shared-ui";
+import { prisma } from "@homesonspec/database";
+import { CreatedChip } from "@homesonspec/shared-ui";
 
 export const dynamic = "force-dynamic";
 
diff --git a/apps/admin/src/app/validation/page.tsx b/apps/admin/src/app/validation/page.tsx
index 9deff0d..0e65605 100644
--- a/apps/admin/src/app/validation/page.tsx
+++ b/apps/admin/src/app/validation/page.tsx
@@ -1,5 +1,5 @@
-import { prisma } from "@spechomes/database";
-import { CreatedChip } from "@spechomes/shared-ui";
+import { prisma } from "@homesonspec/database";
+import { CreatedChip } from "@homesonspec/shared-ui";
 
 export const dynamic = "force-dynamic";
 
diff --git a/apps/admin/src/middleware.ts b/apps/admin/src/middleware.ts
index 5053cd4..3d49510 100644
--- a/apps/admin/src/middleware.ts
+++ b/apps/admin/src/middleware.ts
@@ -28,7 +28,7 @@ export function middleware(request: NextRequest) {
   }
   return new NextResponse("Authentication required", {
     status: 401,
-    headers: { "WWW-Authenticate": 'Basic realm="SpecHomes Admin"' },
+    headers: { "WWW-Authenticate": 'Basic realm="HomesOnSpec Admin"' },
   });
 }
 
diff --git a/apps/admin/tsconfig.json b/apps/admin/tsconfig.json
index 840f56f..fc9cf0d 100644
--- a/apps/admin/tsconfig.json
+++ b/apps/admin/tsconfig.json
@@ -14,22 +14,22 @@
       "@/*": [
         "./src/*"
       ],
-      "@spechomes/database": [
+      "@homesonspec/database": [
         "../../packages/database/src/index.ts"
       ],
-      "@spechomes/schemas": [
+      "@homesonspec/schemas": [
         "../../packages/schemas/src/index.ts"
       ],
-      "@spechomes/search": [
+      "@homesonspec/search": [
         "../../packages/search/src/index.ts"
       ],
-      "@spechomes/shared": [
+      "@homesonspec/shared": [
         "../../packages/shared/src/index.ts"
       ],
-      "@spechomes/shared-ui": [
+      "@homesonspec/shared-ui": [
         "../../packages/shared-ui/src/index.ts"
       ],
-      "@spechomes/publisher": [
+      "@homesonspec/publisher": [
         "../../packages/publisher/src/index.ts"
       ]
     }
diff --git a/apps/web/next.config.ts b/apps/web/next.config.ts
index 9be57ea..5da9d91 100644
--- a/apps/web/next.config.ts
+++ b/apps/web/next.config.ts
@@ -7,12 +7,12 @@ const nextConfig: NextConfig = {
   // Prisma client stays external so the query-engine binary resolves at runtime.
   serverExternalPackages: ["@prisma/client", "pg-boss"],
   transpilePackages: [
-    "@spechomes/database",
-    "@spechomes/schemas",
-    "@spechomes/search",
-    "@spechomes/shared",
-    "@spechomes/shared-ui",
-    "@spechomes/publisher",
+    "@homesonspec/database",
+    "@homesonspec/schemas",
+    "@homesonspec/search",
+    "@homesonspec/shared",
+    "@homesonspec/shared-ui",
+    "@homesonspec/publisher",
   ],
 };
 
diff --git a/apps/web/package.json b/apps/web/package.json
index 7063a7c..523b138 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/web",
+  "name": "@homesonspec/web",
   "version": "0.1.0",
   "private": true,
   "scripts": {
@@ -10,11 +10,11 @@
     "typecheck": "tsc --noEmit"
   },
   "dependencies": {
-    "@spechomes/database": "workspace:*",
-    "@spechomes/schemas": "workspace:*",
-    "@spechomes/search": "workspace:*",
-    "@spechomes/shared": "workspace:*",
-    "@spechomes/shared-ui": "workspace:*",
+    "@homesonspec/database": "workspace:*",
+    "@homesonspec/schemas": "workspace:*",
+    "@homesonspec/search": "workspace:*",
+    "@homesonspec/shared": "workspace:*",
+    "@homesonspec/shared-ui": "workspace:*",
     "leaflet": "^1.9.4",
     "react-leaflet": "^5.0.0",
     "next": "16.2.10",
diff --git a/apps/web/src/app/HeroMap.tsx b/apps/web/src/app/HeroMap.tsx
index efcafb7..0ae0c1f 100644
--- a/apps/web/src/app/HeroMap.tsx
+++ b/apps/web/src/app/HeroMap.tsx
@@ -1,11 +1,11 @@
 "use client";
 
 import dynamic from "next/dynamic";
-import type { MapMarker } from "@spechomes/shared-ui/src/MapView";
+import type { MapMarker } from "@homesonspec/shared-ui/src/MapView";
 
 // Leaflet needs window — client-only load, direct file import (not the barrel),
 // matching the search page. Renders on mount, so the hero map is live on page load.
-const MapView = dynamic(() => import("@spechomes/shared-ui/src/MapView").then((m) => m.MapView), {
+const MapView = dynamic(() => import("@homesonspec/shared-ui/src/MapView").then((m) => m.MapView), {
   ssr: false,
   loading: () => (
     <div className="flex h-full w-full items-center justify-center bg-teal-950/40 text-sm text-teal-100">
diff --git a/apps/web/src/app/[state]/[city]/page.tsx b/apps/web/src/app/[state]/[city]/page.tsx
index 477bdd1..d6d9157 100644
--- a/apps/web/src/app/[state]/[city]/page.tsx
+++ b/apps/web/src/app/[state]/[city]/page.tsx
@@ -1,7 +1,7 @@
 import Link from "next/link";
 import { notFound } from "next/navigation";
-import { prisma } from "@spechomes/database";
-import { fmtPrice } from "@spechomes/shared-ui";
+import { prisma } from "@homesonspec/database";
+import { fmtPrice } from "@homesonspec/shared-ui";
 
 export const dynamic = "force-dynamic";
 
diff --git a/apps/web/src/app/api/corrections/route.ts b/apps/web/src/app/api/corrections/route.ts
index 70da4ca..bbb979f 100644
--- a/apps/web/src/app/api/corrections/route.ts
+++ b/apps/web/src/app/api/corrections/route.ts
@@ -1,6 +1,6 @@
 import { NextRequest, NextResponse } from "next/server";
 import { z } from "zod";
-import { prisma } from "@spechomes/database";
+import { prisma } from "@homesonspec/database";
 
 const correctionSchema = z.object({
   entityType: z.enum(["INVENTORY_HOME", "COMMUNITY", "FLOOR_PLAN", "INCENTIVE", "BUILDER"]),
diff --git a/apps/web/src/app/api/facets/route.ts b/apps/web/src/app/api/facets/route.ts
index 18be960..a18cc6f 100644
--- a/apps/web/src/app/api/facets/route.ts
+++ b/apps/web/src/app/api/facets/route.ts
@@ -1,5 +1,5 @@
 import { NextRequest, NextResponse } from "next/server";
-import { runFacets } from "@spechomes/search";
+import { runFacets } from "@homesonspec/search";
 import { parseSearchParams } from "../../../lib/parse-search";
 
 export const dynamic = "force-dynamic";
diff --git a/apps/web/src/app/api/leads/route.ts b/apps/web/src/app/api/leads/route.ts
index 55bdfad..e310c38 100644
--- a/apps/web/src/app/api/leads/route.ts
+++ b/apps/web/src/app/api/leads/route.ts
@@ -1,6 +1,6 @@
 import { NextRequest, NextResponse } from "next/server";
 import { z } from "zod";
-import { prisma } from "@spechomes/database";
+import { prisma } from "@homesonspec/database";
 
 const leadSchema = z.object({
   name: z.string().min(1).max(200),
diff --git a/apps/web/src/app/api/map/route.ts b/apps/web/src/app/api/map/route.ts
index 806af79..856d092 100644
--- a/apps/web/src/app/api/map/route.ts
+++ b/apps/web/src/app/api/map/route.ts
@@ -1,5 +1,5 @@
 import { NextResponse } from "next/server";
-import { prisma } from "@spechomes/database";
+import { prisma } from "@homesonspec/database";
 
 export const dynamic = "force-dynamic";
 
diff --git a/apps/web/src/app/api/search/route.ts b/apps/web/src/app/api/search/route.ts
index b19e7c4..6eb1f6c 100644
--- a/apps/web/src/app/api/search/route.ts
+++ b/apps/web/src/app/api/search/route.ts
@@ -1,5 +1,5 @@
 import { NextRequest, NextResponse } from "next/server";
-import { runSearch } from "@spechomes/search";
+import { runSearch } from "@homesonspec/search";
 import { parseSearchParams } from "../../../lib/parse-search";
 
 export const dynamic = "force-dynamic";
diff --git a/apps/web/src/app/builders/[slug]/page.tsx b/apps/web/src/app/builders/[slug]/page.tsx
index 4125caa..f1b6ed6 100644
--- a/apps/web/src/app/builders/[slug]/page.tsx
+++ b/apps/web/src/app/builders/[slug]/page.tsx
@@ -1,7 +1,7 @@
 import Link from "next/link";
 import { notFound } from "next/navigation";
-import { prisma } from "@spechomes/database";
-import { fmtPrice } from "@spechomes/shared-ui";
+import { prisma } from "@homesonspec/database";
+import { fmtPrice } from "@homesonspec/shared-ui";
 
 export const dynamic = "force-dynamic";
 
diff --git a/apps/web/src/app/builders/page.tsx b/apps/web/src/app/builders/page.tsx
index ee7a1c5..ac44c26 100644
--- a/apps/web/src/app/builders/page.tsx
+++ b/apps/web/src/app/builders/page.tsx
@@ -1,5 +1,5 @@
 import Link from "next/link";
-import { prisma } from "@spechomes/database";
+import { prisma } from "@homesonspec/database";
 
 export const dynamic = "force-dynamic";
 
diff --git a/apps/web/src/app/communities/[slug]/page.tsx b/apps/web/src/app/communities/[slug]/page.tsx
index 5a9d9cf..31c94f6 100644
--- a/apps/web/src/app/communities/[slug]/page.tsx
+++ b/apps/web/src/app/communities/[slug]/page.tsx
@@ -1,7 +1,7 @@
 import Link from "next/link";
 import { notFound } from "next/navigation";
-import { prisma } from "@spechomes/database";
-import { fmtPrice, VerificationBadge } from "@spechomes/shared-ui";
+import { prisma } from "@homesonspec/database";
+import { fmtPrice, VerificationBadge } from "@homesonspec/shared-ui";
 
 export const dynamic = "force-dynamic";
 
diff --git a/apps/web/src/app/compare/page.tsx b/apps/web/src/app/compare/page.tsx
index 792bb2e..0df6f7e 100644
--- a/apps/web/src/app/compare/page.tsx
+++ b/apps/web/src/app/compare/page.tsx
@@ -2,7 +2,7 @@
 
 import { useEffect, useState } from "react";
 import Link from "next/link";
-import { fmtPrice } from "@spechomes/shared-ui";
+import { fmtPrice } from "@homesonspec/shared-ui";
 
 interface Home {
   id: string;
@@ -26,7 +26,7 @@ export default function ComparePage() {
   const [loaded, setLoaded] = useState(false);
 
   useEffect(() => {
-    const ids: string[] = JSON.parse(localStorage.getItem("spechomes.compare") ?? "[]");
+    const ids: string[] = JSON.parse(localStorage.getItem("homesonspec.compare") ?? "[]");
     if (ids.length === 0) {
       setLoaded(true);
       return;
diff --git a/apps/web/src/app/contact/page.tsx b/apps/web/src/app/contact/page.tsx
index 0197605..7d2c2c9 100644
--- a/apps/web/src/app/contact/page.tsx
+++ b/apps/web/src/app/contact/page.tsx
@@ -1,4 +1,4 @@
-import { prisma } from "@spechomes/database";
+import { prisma } from "@homesonspec/database";
 import ContactClient from "./ContactClient";
 
 export const dynamic = "force-dynamic";
diff --git a/apps/web/src/app/homes/[id]/page.tsx b/apps/web/src/app/homes/[id]/page.tsx
index 340eecb..403ae5b 100644
--- a/apps/web/src/app/homes/[id]/page.tsx
+++ b/apps/web/src/app/homes/[id]/page.tsx
@@ -1,7 +1,7 @@
 import Link from "next/link";
 import { notFound } from "next/navigation";
-import { prisma } from "@spechomes/database";
-import { fmtPrice, VerificationBadge } from "@spechomes/shared-ui";
+import { prisma } from "@homesonspec/database";
+import { fmtPrice, VerificationBadge } from "@homesonspec/shared-ui";
 import CorrectionForm from "./CorrectionForm";
 import LeadForm from "./LeadForm";
 
diff --git a/apps/web/src/app/map/MapExplorer.tsx b/apps/web/src/app/map/MapExplorer.tsx
index dd71aae..e9bdded 100644
--- a/apps/web/src/app/map/MapExplorer.tsx
+++ b/apps/web/src/app/map/MapExplorer.tsx
@@ -63,7 +63,7 @@ const COLOR_BY = [
   { v: "builder", label: "Builder" },
 ];
 
-const LS_KEY = "spechomes.map.v1";
+const LS_KEY = "homesonspec.map.v1";
 
 const fmtPrice = (p: number | null) => (p === null ? "Price on request" : `$${p.toLocaleString()}`);
 const statusLabel = (s: string) => STATUS.find((x) => x.v === s)?.label ?? s;
diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx
index 016457f..c8493b6 100644
--- a/apps/web/src/app/page.tsx
+++ b/apps/web/src/app/page.tsx
@@ -1,5 +1,5 @@
 import Link from "next/link";
-import { prisma } from "@spechomes/database";
+import { prisma } from "@homesonspec/database";
 import HeroMap from "./HeroMap";
 
 export const dynamic = "force-dynamic";
diff --git a/apps/web/src/app/plans/[id]/page.tsx b/apps/web/src/app/plans/[id]/page.tsx
index e28625b..b621413 100644
--- a/apps/web/src/app/plans/[id]/page.tsx
+++ b/apps/web/src/app/plans/[id]/page.tsx
@@ -1,7 +1,7 @@
 import Link from "next/link";
 import { notFound } from "next/navigation";
-import { prisma } from "@spechomes/database";
-import { fmtPrice } from "@spechomes/shared-ui";
+import { prisma } from "@homesonspec/database";
+import { fmtPrice } from "@homesonspec/shared-ui";
 
 export const dynamic = "force-dynamic";
 
diff --git a/apps/web/src/app/saved/page.tsx b/apps/web/src/app/saved/page.tsx
index 2caec18..b179245 100644
--- a/apps/web/src/app/saved/page.tsx
+++ b/apps/web/src/app/saved/page.tsx
@@ -7,7 +7,7 @@ import Link from "next/link";
 export default function SavedPage() {
   const [ids, setIds] = useState<string[]>([]);
   useEffect(() => {
-    setIds(JSON.parse(localStorage.getItem("spechomes.saved") ?? "[]"));
+    setIds(JSON.parse(localStorage.getItem("homesonspec.saved") ?? "[]"));
   }, []);
 
   return (
diff --git a/apps/web/src/app/search/SearchClient.tsx b/apps/web/src/app/search/SearchClient.tsx
index 85ea5e4..657c438 100644
--- a/apps/web/src/app/search/SearchClient.tsx
+++ b/apps/web/src/app/search/SearchClient.tsx
@@ -3,10 +3,10 @@
 import { useCallback, useEffect, useMemo, useRef, useState } from "react";
 import dynamic from "next/dynamic";
 import Link from "next/link";
-import { fmtPrice, VerificationBadge } from "@spechomes/shared-ui";
+import { fmtPrice, VerificationBadge } from "@homesonspec/shared-ui";
 
 // Leaflet needs window — client-only load, direct file import (not the barrel).
-const MapView = dynamic(() => import("@spechomes/shared-ui/src/MapView").then((m) => m.MapView), { ssr: false });
+const MapView = dynamic(() => import("@homesonspec/shared-ui/src/MapView").then((m) => m.MapView), { ssr: false });
 
 interface Home {
   id: string;
@@ -86,19 +86,19 @@ export default function SearchClient({ initialQuery }: { initialQuery: string })
   const bboxRef = useRef<string | null>(null);
 
   useEffect(() => {
-    const savedSort = localStorage.getItem("spechomes.sort");
-    const savedCols = localStorage.getItem("spechomes.cols");
+    const savedSort = localStorage.getItem("homesonspec.sort");
+    const savedCols = localStorage.getItem("homesonspec.cols");
     if (savedSort) setSort(savedSort);
     if (savedCols) setCols(Number(savedCols));
   }, []);
 
   const setSortPersist = (value: string) => {
     setSort(value);
-    localStorage.setItem("spechomes.sort", value);
+    localStorage.setItem("homesonspec.sort", value);
   };
   const setColsPersist = (value: number) => {
     setCols(value);
-    localStorage.setItem("spechomes.cols", String(value));
+    localStorage.setItem("homesonspec.cols", String(value));
   };
 
   const queryString = useMemo(() => {
diff --git a/apps/web/src/lib/parse-search.ts b/apps/web/src/lib/parse-search.ts
index a51d0c3..c13c2c9 100644
--- a/apps/web/src/lib/parse-search.ts
+++ b/apps/web/src/lib/parse-search.ts
@@ -1,4 +1,4 @@
-import type { SearchParams } from "@spechomes/search";
+import type { SearchParams } from "@homesonspec/search";
 
 function num(v: string | null): number | undefined {
   if (v === null || v === "") return undefined;
diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json
index 840f56f..fc9cf0d 100644
--- a/apps/web/tsconfig.json
+++ b/apps/web/tsconfig.json
@@ -14,22 +14,22 @@
       "@/*": [
         "./src/*"
       ],
-      "@spechomes/database": [
+      "@homesonspec/database": [
         "../../packages/database/src/index.ts"
       ],
-      "@spechomes/schemas": [
+      "@homesonspec/schemas": [
         "../../packages/schemas/src/index.ts"
       ],
-      "@spechomes/search": [
+      "@homesonspec/search": [
         "../../packages/search/src/index.ts"
       ],
-      "@spechomes/shared": [
+      "@homesonspec/shared": [
         "../../packages/shared/src/index.ts"
       ],
-      "@spechomes/shared-ui": [
+      "@homesonspec/shared-ui": [
         "../../packages/shared-ui/src/index.ts"
       ],
-      "@spechomes/publisher": [
+      "@homesonspec/publisher": [
         "../../packages/publisher/src/index.ts"
       ]
     }
diff --git a/apps/workers/package.json b/apps/workers/package.json
index c6260c6..0243f88 100644
--- a/apps/workers/package.json
+++ b/apps/workers/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/workers",
+  "name": "@homesonspec/workers",
   "version": "0.1.0",
   "private": true,
   "type": "module",
@@ -12,21 +12,21 @@
     "test:integration": "vitest run --config vitest.integration.config.ts"
   },
   "dependencies": {
-    "@spechomes/database": "workspace:*",
-    "@spechomes/schemas": "workspace:*",
-    "@spechomes/validation": "workspace:*",
-    "@spechomes/shared": "workspace:*",
-    "@spechomes/collectors-common": "workspace:*",
-    "@spechomes/collector-meridian-homes": "workspace:*",
+    "@homesonspec/database": "workspace:*",
+    "@homesonspec/schemas": "workspace:*",
+    "@homesonspec/validation": "workspace:*",
+    "@homesonspec/shared": "workspace:*",
+    "@homesonspec/collectors-common": "workspace:*",
+    "@homesonspec/collector-meridian-homes": "workspace:*",
     "pg-boss": "^10.1.5",
-    "@spechomes/publisher": "workspace:*",
-    "@spechomes/collector-toll-brothers": "workspace:*",
-    "@spechomes/collector-lennar": "workspace:*",
-    "@spechomes/collector-dr-horton": "workspace:*",
-    "@spechomes/collector-kb-home": "workspace:*",
-    "@spechomes/collector-pulte": "workspace:*",
-    "@spechomes/collector-tri-pointe": "workspace:*",
-    "@spechomes/collector-taylor-morrison": "workspace:*"
+    "@homesonspec/publisher": "workspace:*",
+    "@homesonspec/collector-toll-brothers": "workspace:*",
+    "@homesonspec/collector-lennar": "workspace:*",
+    "@homesonspec/collector-dr-horton": "workspace:*",
+    "@homesonspec/collector-kb-home": "workspace:*",
+    "@homesonspec/collector-pulte": "workspace:*",
+    "@homesonspec/collector-tri-pointe": "workspace:*",
+    "@homesonspec/collector-taylor-morrison": "workspace:*"
   },
   "devDependencies": {
     "tsx": "^4.19.2",
diff --git a/apps/workers/src/cli.ts b/apps/workers/src/cli.ts
index 88a7963..121b3b9 100644
--- a/apps/workers/src/cli.ts
+++ b/apps/workers/src/cli.ts
@@ -1,18 +1,18 @@
-import { prisma } from "@spechomes/database";
-import { meridianHomesAdapter } from "@spechomes/collector-meridian-homes";
-import { tollBrothersAdapter } from "@spechomes/collector-toll-brothers";
-import { lennarAdapter } from "@spechomes/collector-lennar";
-import { drHortonAdapter } from "@spechomes/collector-dr-horton";
-import { kbHomeAdapter } from "@spechomes/collector-kb-home";
-import { pulteAdapter } from "@spechomes/collector-pulte";
-import { triPointeAdapter } from "@spechomes/collector-tri-pointe";
-import { taylorMorrisonAdapter } from "@spechomes/collector-taylor-morrison";
+import { prisma } from "@homesonspec/database";
+import { meridianHomesAdapter } from "@homesonspec/collector-meridian-homes";
+import { tollBrothersAdapter } from "@homesonspec/collector-toll-brothers";
+import { lennarAdapter } from "@homesonspec/collector-lennar";
+import { drHortonAdapter } from "@homesonspec/collector-dr-horton";
+import { kbHomeAdapter } from "@homesonspec/collector-kb-home";
+import { pulteAdapter } from "@homesonspec/collector-pulte";
+import { triPointeAdapter } from "@homesonspec/collector-tri-pointe";
+import { taylorMorrisonAdapter } from "@homesonspec/collector-taylor-morrison";
 import { runPipeline } from "./pipeline";
 import { recordSourceRun } from "./verify";
 
 /**
  * Direct pipeline runner — no queue required.
- *   pnpm --filter @spechomes/workers pipeline -- --adapter=meridian-homes-fixtures
+ *   pnpm --filter @homesonspec/workers pipeline -- --adapter=meridian-homes-fixtures
  */
 const ADAPTERS = {
   [meridianHomesAdapter.key]: meridianHomesAdapter,
diff --git a/apps/workers/src/index.ts b/apps/workers/src/index.ts
index f01f2e8..13e5138 100644
--- a/apps/workers/src/index.ts
+++ b/apps/workers/src/index.ts
@@ -1,5 +1,5 @@
-import { work } from "@spechomes/shared";
-import { meridianHomesAdapter } from "@spechomes/collector-meridian-homes";
+import { work } from "@homesonspec/shared";
+import { meridianHomesAdapter } from "@homesonspec/collector-meridian-homes";
 import { runPipeline } from "./pipeline";
 
 /**
diff --git a/apps/workers/src/pipeline.itest.ts b/apps/workers/src/pipeline.itest.ts
index 7de3d92..093bdee 100644
--- a/apps/workers/src/pipeline.itest.ts
+++ b/apps/workers/src/pipeline.itest.ts
@@ -1,11 +1,11 @@
 import { beforeAll, describe, expect, it } from "vitest";
-import { prisma } from "@spechomes/database";
-import { meridianHomesAdapter } from "@spechomes/collector-meridian-homes";
-import { publishStagedRecord } from "@spechomes/publisher";
+import { prisma } from "@homesonspec/database";
+import { meridianHomesAdapter } from "@homesonspec/collector-meridian-homes";
+import { publishStagedRecord } from "@homesonspec/publisher";
 import { runPipeline, validateStage } from "./pipeline";
 
 /**
- * Integration: the full fixture pipeline against spechomes_test.
+ * Integration: the full fixture pipeline against homesonspec_test.
  * Proves raw ≠ published separation, verdict gating, idempotence,
  * community auto-creation from staged records, and review-queue flow.
  */
@@ -23,7 +23,7 @@ async function resetDb() {
 }
 
 beforeAll(async () => {
-  expect(process.env.DATABASE_URL).toMatch(/spechomes_test/);
+  expect(process.env.DATABASE_URL).toMatch(/homesonspec_test/);
   await resetDb();
   // Minimal FK targets: builder + fixture source. NO community — the
   // pipeline must create it from the staged community record.
diff --git a/apps/workers/src/pipeline.ts b/apps/workers/src/pipeline.ts
index bcb9ed1..f11a844 100644
--- a/apps/workers/src/pipeline.ts
+++ b/apps/workers/src/pipeline.ts
@@ -5,18 +5,18 @@ import {
   type EntityType,
   type Prisma,
   type SourceRegistry,
-} from "@spechomes/database";
-import { validatePayload, type ExtractedRecord } from "@spechomes/schemas";
-import { canonicalKey } from "@spechomes/shared";
+} from "@homesonspec/database";
+import { validatePayload, type ExtractedRecord } from "@homesonspec/schemas";
+import { canonicalKey } from "@homesonspec/shared";
 import {
   ALL_RULES,
   runValidation,
   VALIDATOR_VERSION,
   type RuleDb,
   type StagedCandidate,
-} from "@spechomes/validation";
-import type { RawPage, SourceAdapter } from "@spechomes/collectors-common";
-import { publishStagedRecord } from "@spechomes/publisher";
+} from "@homesonspec/validation";
+import type { RawPage, SourceAdapter } from "@homesonspec/collectors-common";
+import { publishStagedRecord } from "@homesonspec/publisher";
 import { recordSourceRun } from "./verify";
 
 export { publishStagedRecord };
diff --git a/apps/workers/src/verify-cli.ts b/apps/workers/src/verify-cli.ts
index 50b1236..c3860f8 100644
--- a/apps/workers/src/verify-cli.ts
+++ b/apps/workers/src/verify-cli.ts
@@ -1,15 +1,15 @@
-import { prisma } from "@spechomes/database";
+import { prisma } from "@homesonspec/database";
 import { recomputeFreshness, dedupePass, refreshDue } from "./verify";
 
 /**
  * Verification-engine CLI — the Stage-3 maintenance commands.
  *
- *   pnpm --filter @spechomes/workers verify -- freshness
- *   pnpm --filter @spechomes/workers verify -- dedupe            # dry-run
- *   pnpm --filter @spechomes/workers verify -- dedupe --apply    # write
- *   pnpm --filter @spechomes/workers verify -- refresh-due
- *   pnpm --filter @spechomes/workers verify -- health
- *   pnpm --filter @spechomes/workers verify -- all               # freshness + dedupe(dry) + due + health
+ *   pnpm --filter @homesonspec/workers verify -- freshness
+ *   pnpm --filter @homesonspec/workers verify -- dedupe            # dry-run
+ *   pnpm --filter @homesonspec/workers verify -- dedupe --apply    # write
+ *   pnpm --filter @homesonspec/workers verify -- refresh-due
+ *   pnpm --filter @homesonspec/workers verify -- health
+ *   pnpm --filter @homesonspec/workers verify -- all               # freshness + dedupe(dry) + due + health
  */
 async function health() {
   const sources = await prisma.sourceRegistry.findMany({
diff --git a/apps/workers/src/verify.ts b/apps/workers/src/verify.ts
index 9345ecf..8230ae7 100644
--- a/apps/workers/src/verify.ts
+++ b/apps/workers/src/verify.ts
@@ -1,4 +1,4 @@
-import { prisma, type Freshness, type VerificationLabel } from "@spechomes/database";
+import { prisma, type Freshness, type VerificationLabel } from "@homesonspec/database";
 
 /**
  * Stage-3 verification engine — the maintenance layer that runs OVER already
diff --git a/apps/workers/vitest.integration.setup.ts b/apps/workers/vitest.integration.setup.ts
index fbaf171..641ad28 100644
--- a/apps/workers/vitest.integration.setup.ts
+++ b/apps/workers/vitest.integration.setup.ts
@@ -1,8 +1,8 @@
 // Point the Prisma singleton at the TEST database before any test module
-// imports @spechomes/database. Refuses to run against a non-test DB.
+// imports @homesonspec/database. Refuses to run against a non-test DB.
 const testUrl =
-  process.env.DATABASE_URL_TEST ?? "postgresql://macstudio3@localhost/spechomes_test?host=/tmp";
-if (!/spechomes_test/.test(testUrl)) {
+  process.env.DATABASE_URL_TEST ?? "postgresql://macstudio3@localhost/homesonspec_test?host=/tmp";
+if (!/homesonspec_test/.test(testUrl)) {
   throw new Error(`integration tests require a *_test database, got: ${testUrl}`);
 }
 process.env.DATABASE_URL = testUrl;
diff --git a/cert-homesonspec.sh b/cert-homesonspec.sh
index 9505a0a..21a082e 100644
--- a/cert-homesonspec.sh
+++ b/cert-homesonspec.sh
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 # Valid Let's Encrypt cert for homesonspec.com via webroot (works despite the proxy-all vhost).
-#   ! bash ~/Projects/spechomes/cert-homesonspec.sh
+#   ! bash ~/Projects/homesonspec/cert-homesonspec.sh
 set -euo pipefail
 KH=root@45.61.58.125; WEB=9975; ADMIN=9976
 
diff --git a/collectors/BUILDERS.md b/collectors/BUILDERS.md
index 1d23a11..d13de01 100644
--- a/collectors/BUILDERS.md
+++ b/collectors/BUILDERS.md
@@ -41,5 +41,5 @@ Each carries a per-community sales phone. Adapters are CA-scoped via an env var.
 
 ## Notes
 - Register each in `apps/workers/src/cli.ts` ADAPTERS + add workspace dep in `apps/workers/package.json`.
-- SourceRegistry rows exist for all (inactive). To ingest: activate + set collectionMethod=CRAWL, deploy adapters to Kamatera, run `pnpm --filter @spechomes/workers pipeline -- --adapter=<key>` with the state env.
+- SourceRegistry rows exist for all (inactive). To ingest: activate + set collectionMethod=CRAWL, deploy adapters to Kamatera, run `pnpm --filter @homesonspec/workers pipeline -- --adapter=<key>` with the state env.
 - Pulte/Meritage give lat/lon → homes appear on the map. KB/DR-Horton/TriPointe/TaylorMorrison lack per-home geo in v1 (search/lists only) — geocoding is a follow-up.
diff --git a/collectors/common/package.json b/collectors/common/package.json
index d46211d..d418fea 100644
--- a/collectors/common/package.json
+++ b/collectors/common/package.json
@@ -1,11 +1,11 @@
 {
-  "name": "@spechomes/collectors-common",
+  "name": "@homesonspec/collectors-common",
   "version": "0.1.0",
   "private": true,
   "type": "module",
   "main": "./src/index.ts",
   "types": "./src/index.ts",
   "scripts": { "test": "vitest run --passWithNoTests", "typecheck": "tsc --noEmit" },
-  "dependencies": { "@spechomes/schemas": "workspace:*", "@spechomes/shared": "workspace:*", "node-html-parser": "^7.0.1" },
+  "dependencies": { "@homesonspec/schemas": "workspace:*", "@homesonspec/shared": "workspace:*", "node-html-parser": "^7.0.1" },
   "devDependencies": { "typescript": "^5.7.2", "vitest": "^4.0.0", "@types/node": "^22.10.5" }
 }
diff --git a/collectors/common/src/adapter.ts b/collectors/common/src/adapter.ts
index 87f9f8a..35e1fdd 100644
--- a/collectors/common/src/adapter.ts
+++ b/collectors/common/src/adapter.ts
@@ -1,7 +1,7 @@
 import { createHash } from "node:crypto";
 import { readFile, readdir } from "node:fs/promises";
 import { join } from "node:path";
-import type { ExtractedRecord } from "@spechomes/schemas";
+import type { ExtractedRecord } from "@homesonspec/schemas";
 
 /**
  * The contract every builder collector implements. v1 ships fixture mode
diff --git a/collectors/dr-horton/package.json b/collectors/dr-horton/package.json
index ecade98..beaf362 100644
--- a/collectors/dr-horton/package.json
+++ b/collectors/dr-horton/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/collector-dr-horton",
+  "name": "@homesonspec/collector-dr-horton",
   "version": "0.1.0",
   "private": true,
   "type": "module",
@@ -7,9 +7,9 @@
   "types": "./src/index.ts",
   "scripts": { "test": "vitest run --passWithNoTests", "typecheck": "tsc --noEmit" },
   "dependencies": {
-    "@spechomes/collectors-common": "workspace:*",
-    "@spechomes/schemas": "workspace:*",
-    "@spechomes/shared": "workspace:*"
+    "@homesonspec/collectors-common": "workspace:*",
+    "@homesonspec/schemas": "workspace:*",
+    "@homesonspec/shared": "workspace:*"
   },
   "devDependencies": { "typescript": "^5.7.2", "vitest": "^4.0.0", "@types/node": "^22.10.5" }
 }
diff --git a/collectors/dr-horton/src/index.ts b/collectors/dr-horton/src/index.ts
index 3bd5331..3dad1b8 100644
--- a/collectors/dr-horton/src/index.ts
+++ b/collectors/dr-horton/src/index.ts
@@ -1,4 +1,4 @@
-import type { ExtractedRecord, FieldValue } from "@spechomes/schemas";
+import type { ExtractedRecord, FieldValue } from "@homesonspec/schemas";
 import {
   fetchFixtures,
   LiveFetcher,
@@ -6,7 +6,7 @@ import {
   type FetchContext,
   type RawPage,
   type SourceAdapter,
-} from "@spechomes/collectors-common";
+} from "@homesonspec/collectors-common";
 
 /**
  * D.R. Horton adapter — EMBEDDED_JSON source (recon 2026-07-23).
diff --git a/collectors/dream-finders/package.json b/collectors/dream-finders/package.json
index 60bc81a..432d0c5 100644
--- a/collectors/dream-finders/package.json
+++ b/collectors/dream-finders/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/collector-dream-finders",
+  "name": "@homesonspec/collector-dream-finders",
   "version": "0.1.0",
   "private": true,
   "type": "module",
@@ -7,9 +7,9 @@
   "types": "./src/index.ts",
   "scripts": { "test": "vitest run --passWithNoTests", "typecheck": "tsc --noEmit" },
   "dependencies": {
-    "@spechomes/collectors-common": "workspace:*",
-    "@spechomes/schemas": "workspace:*",
-    "@spechomes/shared": "workspace:*"
+    "@homesonspec/collectors-common": "workspace:*",
+    "@homesonspec/schemas": "workspace:*",
+    "@homesonspec/shared": "workspace:*"
   },
   "devDependencies": { "typescript": "^5.7.2", "vitest": "^4.0.0", "@types/node": "^22.10.5" }
 }
diff --git a/collectors/dream-finders/src/index.ts b/collectors/dream-finders/src/index.ts
index 2900257..f061510 100644
--- a/collectors/dream-finders/src/index.ts
+++ b/collectors/dream-finders/src/index.ts
@@ -1,5 +1,5 @@
-import type { ExtractedRecord, FieldValue } from "@spechomes/schemas";
-import { normalizeStateCode } from "@spechomes/shared";
+import type { ExtractedRecord, FieldValue } from "@homesonspec/schemas";
+import { normalizeStateCode } from "@homesonspec/shared";
 import {
   fetchFixtures,
   LiveFetcher,
@@ -7,7 +7,7 @@ import {
   type FetchContext,
   type RawPage,
   type SourceAdapter,
-} from "@spechomes/collectors-common";
+} from "@homesonspec/collectors-common";
 
 /**
  * Dream Finders adapter — EMBEDDED_JSON source (recon 2026-07-22, difficulty 1).
diff --git a/collectors/kb-home/package.json b/collectors/kb-home/package.json
index 1a18246..deb1512 100644
--- a/collectors/kb-home/package.json
+++ b/collectors/kb-home/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/collector-kb-home",
+  "name": "@homesonspec/collector-kb-home",
   "version": "0.1.0",
   "private": true,
   "type": "module",
@@ -7,9 +7,9 @@
   "types": "./src/index.ts",
   "scripts": { "test": "vitest run --passWithNoTests", "typecheck": "tsc --noEmit" },
   "dependencies": {
-    "@spechomes/collectors-common": "workspace:*",
-    "@spechomes/schemas": "workspace:*",
-    "@spechomes/shared": "workspace:*"
+    "@homesonspec/collectors-common": "workspace:*",
+    "@homesonspec/schemas": "workspace:*",
+    "@homesonspec/shared": "workspace:*"
   },
   "devDependencies": { "typescript": "^5.7.2", "vitest": "^4.0.0", "@types/node": "^22.10.5" }
 }
diff --git a/collectors/kb-home/src/index.ts b/collectors/kb-home/src/index.ts
index 7caf5b9..757c590 100644
--- a/collectors/kb-home/src/index.ts
+++ b/collectors/kb-home/src/index.ts
@@ -1,4 +1,4 @@
-import type { ExtractedRecord, FieldValue } from "@spechomes/schemas";
+import type { ExtractedRecord, FieldValue } from "@homesonspec/schemas";
 import {
   fetchFixtures,
   LiveFetcher,
@@ -6,7 +6,7 @@ import {
   type FetchContext,
   type RawPage,
   type SourceAdapter,
-} from "@spechomes/collectors-common";
+} from "@homesonspec/collectors-common";
 
 /**
  * KB Home adapter — SINGLE_FEED source (recon 2026-07-23).
diff --git a/collectors/lennar/package.json b/collectors/lennar/package.json
index 07f0c1a..abfec4f 100644
--- a/collectors/lennar/package.json
+++ b/collectors/lennar/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/collector-lennar",
+  "name": "@homesonspec/collector-lennar",
   "version": "0.1.0",
   "private": true,
   "type": "module",
@@ -7,9 +7,9 @@
   "types": "./src/index.ts",
   "scripts": { "test": "vitest run --passWithNoTests", "typecheck": "tsc --noEmit" },
   "dependencies": {
-    "@spechomes/collectors-common": "workspace:*",
-    "@spechomes/schemas": "workspace:*",
-    "@spechomes/shared": "workspace:*"
+    "@homesonspec/collectors-common": "workspace:*",
+    "@homesonspec/schemas": "workspace:*",
+    "@homesonspec/shared": "workspace:*"
   },
   "devDependencies": { "typescript": "^5.7.2", "vitest": "^4.0.0", "@types/node": "^22.10.5" }
 }
diff --git a/collectors/lennar/src/index.ts b/collectors/lennar/src/index.ts
index 3608b31..cd43498 100644
--- a/collectors/lennar/src/index.ts
+++ b/collectors/lennar/src/index.ts
@@ -1,5 +1,5 @@
-import type { ExtractedRecord, FieldValue } from "@spechomes/schemas";
-import { normalizeStateCode } from "@spechomes/shared";
+import type { ExtractedRecord, FieldValue } from "@homesonspec/schemas";
+import { normalizeStateCode } from "@homesonspec/shared";
 import {
   fetchFixtures,
   LiveFetcher,
@@ -7,7 +7,7 @@ import {
   type FetchContext,
   type RawPage,
   type SourceAdapter,
-} from "@spechomes/collectors-common";
+} from "@homesonspec/collectors-common";
 
 /**
  * Lennar adapter — EMBEDDED_JSON source (recon 2026-07-22, difficulty 2).
diff --git a/collectors/meridian-homes/package.json b/collectors/meridian-homes/package.json
index 4ebde17..aa49873 100644
--- a/collectors/meridian-homes/package.json
+++ b/collectors/meridian-homes/package.json
@@ -1,11 +1,11 @@
 {
-  "name": "@spechomes/collector-meridian-homes",
+  "name": "@homesonspec/collector-meridian-homes",
   "version": "0.1.0",
   "private": true,
   "type": "module",
   "main": "./src/index.ts",
   "types": "./src/index.ts",
   "scripts": { "test": "vitest run --passWithNoTests", "typecheck": "tsc --noEmit" },
-  "dependencies": { "@spechomes/collectors-common": "workspace:*", "@spechomes/schemas": "workspace:*", "@spechomes/shared": "workspace:*", "node-html-parser": "^7.0.1" },
+  "dependencies": { "@homesonspec/collectors-common": "workspace:*", "@homesonspec/schemas": "workspace:*", "@homesonspec/shared": "workspace:*", "node-html-parser": "^7.0.1" },
   "devDependencies": { "typescript": "^5.7.2", "vitest": "^4.0.0", "@types/node": "^22.10.5" }
 }
diff --git a/collectors/meridian-homes/src/extract.test.ts b/collectors/meridian-homes/src/extract.test.ts
index 775caf0..4603483 100644
--- a/collectors/meridian-homes/src/extract.test.ts
+++ b/collectors/meridian-homes/src/extract.test.ts
@@ -1,7 +1,7 @@
 import { readFile } from "node:fs/promises";
 import { join } from "node:path";
 import { describe, expect, it } from "vitest";
-import { sha256 } from "@spechomes/collectors-common";
+import { sha256 } from "@homesonspec/collectors-common";
 import { meridianHomesAdapter } from "./index";
 
 const FIXTURE_DIR = join(import.meta.dirname, "../../../fixtures/raw-pages/meridian-homes");
diff --git a/collectors/meridian-homes/src/index.ts b/collectors/meridian-homes/src/index.ts
index 6fc531c..e960f6a 100644
--- a/collectors/meridian-homes/src/index.ts
+++ b/collectors/meridian-homes/src/index.ts
@@ -1,11 +1,11 @@
 import { parse, type HTMLElement } from "node-html-parser";
-import type { ExtractedRecord, FieldValue } from "@spechomes/schemas";
+import type { ExtractedRecord, FieldValue } from "@homesonspec/schemas";
 import {
   fetchFixtures,
   type ExtractionOutput,
   type RawPage,
   type SourceAdapter,
-} from "@spechomes/collectors-common";
+} from "@homesonspec/collectors-common";
 
 /**
  * Meridian Homes adapter — the reference fixture adapter. Deterministic
diff --git a/collectors/pulte/package.json b/collectors/pulte/package.json
index 8032bfe..283c157 100644
--- a/collectors/pulte/package.json
+++ b/collectors/pulte/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/collector-pulte",
+  "name": "@homesonspec/collector-pulte",
   "version": "0.1.0",
   "private": true,
   "type": "module",
@@ -7,9 +7,9 @@
   "types": "./src/index.ts",
   "scripts": { "test": "vitest run --passWithNoTests", "typecheck": "tsc --noEmit" },
   "dependencies": {
-    "@spechomes/collectors-common": "workspace:*",
-    "@spechomes/schemas": "workspace:*",
-    "@spechomes/shared": "workspace:*"
+    "@homesonspec/collectors-common": "workspace:*",
+    "@homesonspec/schemas": "workspace:*",
+    "@homesonspec/shared": "workspace:*"
   },
   "devDependencies": { "typescript": "^5.7.2", "vitest": "^4.0.0", "@types/node": "^22.10.5" }
 }
diff --git a/collectors/pulte/src/index.ts b/collectors/pulte/src/index.ts
index 1ce1105..c8c2973 100644
--- a/collectors/pulte/src/index.ts
+++ b/collectors/pulte/src/index.ts
@@ -1,4 +1,4 @@
-import type { ExtractedRecord, FieldValue } from "@spechomes/schemas";
+import type { ExtractedRecord, FieldValue } from "@homesonspec/schemas";
 import {
   fetchFixtures,
   LiveFetcher,
@@ -6,7 +6,7 @@ import {
   type FetchContext,
   type RawPage,
   type SourceAdapter,
-} from "@spechomes/collectors-common";
+} from "@homesonspec/collectors-common";
 
 /**
  * Pulte adapter — JSON_API source (recon 2026-07-23). Cleanest of the set.
diff --git a/collectors/taylor-morrison/package.json b/collectors/taylor-morrison/package.json
index 6545497..47c2927 100644
--- a/collectors/taylor-morrison/package.json
+++ b/collectors/taylor-morrison/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/collector-taylor-morrison",
+  "name": "@homesonspec/collector-taylor-morrison",
   "version": "0.1.0",
   "private": true,
   "type": "module",
@@ -7,9 +7,9 @@
   "types": "./src/index.ts",
   "scripts": { "test": "vitest run --passWithNoTests", "typecheck": "tsc --noEmit" },
   "dependencies": {
-    "@spechomes/collectors-common": "workspace:*",
-    "@spechomes/schemas": "workspace:*",
-    "@spechomes/shared": "workspace:*"
+    "@homesonspec/collectors-common": "workspace:*",
+    "@homesonspec/schemas": "workspace:*",
+    "@homesonspec/shared": "workspace:*"
   },
   "devDependencies": { "typescript": "^5.7.2", "vitest": "^4.0.0", "@types/node": "^22.10.5" }
 }
diff --git a/collectors/taylor-morrison/src/index.ts b/collectors/taylor-morrison/src/index.ts
index 4624688..f21b216 100644
--- a/collectors/taylor-morrison/src/index.ts
+++ b/collectors/taylor-morrison/src/index.ts
@@ -1,4 +1,4 @@
-import type { ExtractedRecord, FieldValue } from "@spechomes/schemas";
+import type { ExtractedRecord, FieldValue } from "@homesonspec/schemas";
 import {
   fetchFixtures,
   LiveFetcher,
@@ -6,7 +6,7 @@ import {
   type FetchContext,
   type RawPage,
   type SourceAdapter,
-} from "@spechomes/collectors-common";
+} from "@homesonspec/collectors-common";
 
 /**
  * Taylor Morrison adapter — Sitecore "fedmodel" source (recon-verified 2026-07-23).
diff --git a/collectors/toll-brothers/package.json b/collectors/toll-brothers/package.json
index bdb3827..75b99f9 100644
--- a/collectors/toll-brothers/package.json
+++ b/collectors/toll-brothers/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/collector-toll-brothers",
+  "name": "@homesonspec/collector-toll-brothers",
   "version": "0.1.0",
   "private": true,
   "type": "module",
@@ -7,9 +7,9 @@
   "types": "./src/index.ts",
   "scripts": { "test": "vitest run --passWithNoTests", "typecheck": "tsc --noEmit" },
   "dependencies": {
-    "@spechomes/collectors-common": "workspace:*",
-    "@spechomes/schemas": "workspace:*",
-    "@spechomes/shared": "workspace:*"
+    "@homesonspec/collectors-common": "workspace:*",
+    "@homesonspec/schemas": "workspace:*",
+    "@homesonspec/shared": "workspace:*"
   },
   "devDependencies": { "typescript": "^5.7.2", "vitest": "^4.0.0", "@types/node": "^22.10.5" }
 }
diff --git a/collectors/toll-brothers/src/index.ts b/collectors/toll-brothers/src/index.ts
index 2285f27..af61354 100644
--- a/collectors/toll-brothers/src/index.ts
+++ b/collectors/toll-brothers/src/index.ts
@@ -1,5 +1,5 @@
-import type { ExtractedRecord, FieldValue } from "@spechomes/schemas";
-import { normalizeStateCode } from "@spechomes/shared";
+import type { ExtractedRecord, FieldValue } from "@homesonspec/schemas";
+import { normalizeStateCode } from "@homesonspec/shared";
 import {
   fetchFixtures,
   LiveFetcher,
@@ -7,7 +7,7 @@ import {
   type FetchContext,
   type RawPage,
   type SourceAdapter,
-} from "@spechomes/collectors-common";
+} from "@homesonspec/collectors-common";
 
 /**
  * Toll Brothers adapter — FEED source (recon 2026-07-22).
diff --git a/collectors/tri-pointe/package.json b/collectors/tri-pointe/package.json
index e30fe5f..4258da1 100644
--- a/collectors/tri-pointe/package.json
+++ b/collectors/tri-pointe/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/collector-tri-pointe",
+  "name": "@homesonspec/collector-tri-pointe",
   "version": "0.1.0",
   "private": true,
   "type": "module",
@@ -7,9 +7,9 @@
   "types": "./src/index.ts",
   "scripts": { "test": "vitest run --passWithNoTests", "typecheck": "tsc --noEmit" },
   "dependencies": {
-    "@spechomes/collectors-common": "workspace:*",
-    "@spechomes/schemas": "workspace:*",
-    "@spechomes/shared": "workspace:*"
+    "@homesonspec/collectors-common": "workspace:*",
+    "@homesonspec/schemas": "workspace:*",
+    "@homesonspec/shared": "workspace:*"
   },
   "devDependencies": { "typescript": "^5.7.2", "vitest": "^4.0.0", "@types/node": "^22.10.5" }
 }
diff --git a/collectors/tri-pointe/src/index.ts b/collectors/tri-pointe/src/index.ts
index 2fb90a3..bb21e82 100644
--- a/collectors/tri-pointe/src/index.ts
+++ b/collectors/tri-pointe/src/index.ts
@@ -1,4 +1,4 @@
-import type { ExtractedRecord, FieldValue } from "@spechomes/schemas";
+import type { ExtractedRecord, FieldValue } from "@homesonspec/schemas";
 import {
   fetchFixtures,
   LiveFetcher,
@@ -6,7 +6,7 @@ import {
   type FetchContext,
   type RawPage,
   type SourceAdapter,
-} from "@spechomes/collectors-common";
+} from "@homesonspec/collectors-common";
 
 /**
  * Tri Pointe adapter — Next.js RSC source (recon 2026-07-23).
diff --git a/deploy-full.sh b/deploy-full.sh
index a594f06..09d51e1 100644
--- a/deploy-full.sh
+++ b/deploy-full.sh
@@ -1,35 +1,35 @@
 #!/usr/bin/env bash
 # Full deploy for the /yolo "Open Design" run: reskin + packages/search freshness
 # filter + Stage-3 verification engine + the additive DB migration.
-#   ! bash ~/Projects/spechomes/deploy-full.sh
+#   ! bash ~/Projects/homesonspec/deploy-full.sh
 set -euo pipefail
-KH=root@45.61.58.125; REMOTE=/root/Projects/spechomes; WEB=9975
+KH=root@45.61.58.125; REMOTE=/root/Projects/homesonspec; WEB=9975
 RP='export PATH=$PATH:/root/.npm-global/bin:/usr/local/bin; export $(grep -E "^DATABASE_URL=" '"$REMOTE"'/.env | head -1 | xargs)'
 
 echo "── 1/5 ship changed source (reskin + search + workers + prisma) ──"
-rsync -az --delete ~/Projects/spechomes/apps/web/src/         $KH:$REMOTE/apps/web/src/
-rsync -az --delete ~/Projects/spechomes/packages/search/src/  $KH:$REMOTE/packages/search/src/
-rsync -az --delete ~/Projects/spechomes/packages/publisher/src/ $KH:$REMOTE/packages/publisher/src/
-rsync -az --delete ~/Projects/spechomes/packages/schemas/src/ $KH:$REMOTE/packages/schemas/src/
-rsync -az --delete ~/Projects/spechomes/apps/workers/src/     $KH:$REMOTE/apps/workers/src/
-rsync -az          ~/Projects/spechomes/apps/workers/package.json $KH:$REMOTE/apps/workers/package.json
+rsync -az --delete ~/Projects/homesonspec/apps/web/src/         $KH:$REMOTE/apps/web/src/
+rsync -az --delete ~/Projects/homesonspec/packages/search/src/  $KH:$REMOTE/packages/search/src/
+rsync -az --delete ~/Projects/homesonspec/packages/publisher/src/ $KH:$REMOTE/packages/publisher/src/
+rsync -az --delete ~/Projects/homesonspec/packages/schemas/src/ $KH:$REMOTE/packages/schemas/src/
+rsync -az --delete ~/Projects/homesonspec/apps/workers/src/     $KH:$REMOTE/apps/workers/src/
+rsync -az          ~/Projects/homesonspec/apps/workers/package.json $KH:$REMOTE/apps/workers/package.json
 # Every collector's src — carries the extractors (image capture etc.).
-rsync -az --delete ~/Projects/spechomes/collectors/          $KH:$REMOTE/collectors/ --exclude node_modules
-rsync -az --delete ~/Projects/spechomes/packages/database/prisma/ $KH:$REMOTE/packages/database/prisma/
-rsync -az          ~/Projects/spechomes/design-system/        $KH:$REMOTE/design-system/
+rsync -az --delete ~/Projects/homesonspec/collectors/          $KH:$REMOTE/collectors/ --exclude node_modules
+rsync -az --delete ~/Projects/homesonspec/packages/database/prisma/ $KH:$REMOTE/packages/database/prisma/
+rsync -az          ~/Projects/homesonspec/design-system/        $KH:$REMOTE/design-system/
 echo "  synced"
 
 echo "── 1.5/5 link workspace packages (new collector adapters) ──"
 ssh $KH "cd $REMOTE; export PATH=\$PATH:/root/.npm-global/bin:/usr/local/bin; pnpm install --silent 2>&1 | tail -1"
 
 echo "── 2/5 apply ADDITIVE migration to live DB (SourceRun + SourceRegistry cols) ──"
-ssh $KH "cd $REMOTE; $RP; pnpm --filter @spechomes/database exec prisma migrate deploy 2>&1 | grep -iE 'migration|applied|already|error' | head"
+ssh $KH "cd $REMOTE; $RP; pnpm --filter @homesonspec/database exec prisma migrate deploy 2>&1 | grep -iE 'migration|applied|already|error' | head"
 
 echo "── 3/5 regenerate Prisma client ──"
-ssh $KH "cd $REMOTE; $RP; pnpm --filter @spechomes/database exec prisma generate 2>&1 | grep -iE 'Generated|error' | head -3"
+ssh $KH "cd $REMOTE; $RP; pnpm --filter @homesonspec/database exec prisma generate 2>&1 | grep -iE 'Generated|error' | head -3"
 
 echo "── 4/5 rebuild web (must compile before restart) ──"
-BUILD=$(ssh $KH "cd $REMOTE; $RP; pnpm --filter @spechomes/web build 2>&1 | grep -iE 'Compiled successfully|Failed|Type error|error TS' | head -4")
+BUILD=$(ssh $KH "cd $REMOTE; $RP; pnpm --filter @homesonspec/web build 2>&1 | grep -iE 'Compiled successfully|Failed|Type error|error TS' | head -4")
 echo "$BUILD"
 if ! echo "$BUILD" | grep -qi 'Compiled successfully'; then
   echo "❌ build did NOT report success — NOT restarting pm2 (old build still serving). Aborting."
@@ -38,12 +38,12 @@ fi
 
 echo "── 5/5 restart + verify ──"
 ssh $KH "cd $REMOTE; $RP
-pm2 restart spechomes-web --update-env >/dev/null; sleep 4
+pm2 restart homesonspec-web --update-env >/dev/null; sleep 4
 echo -n '  local web       → '; curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:$WEB/
 echo -n '  /map page       → '; curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:$WEB/map
 echo -n '  /search page    → '; curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:$WEB/search
 echo -n '  /api/map count  → '; curl -s http://127.0.0.1:$WEB/api/map | python3 -c 'import sys,json;d=json.load(sys.stdin);print(d[\"total\"],\"markers,\",len(d[\"builders\"]),\"builder(s)\")'
-echo -n '  verify CLI ok?  → '; pnpm --filter @spechomes/workers verify -- health 2>/dev/null | python3 -c 'import sys,json;d=json.load(sys.stdin);print(len(d),\"sources tracked\")' 2>/dev/null || echo 'verify CLI FAILED'
+echo -n '  verify CLI ok?  → '; pnpm --filter @homesonspec/workers verify -- health 2>/dev/null | python3 -c 'import sys,json;d=json.load(sys.stdin);print(len(d),\"sources tracked\")' 2>/dev/null || echo 'verify CLI FAILED'
 echo -n '  public https    → '; curl -s -o /dev/null -w '%{http_code}\n' https://homesonspec.com/map
 echo -n '  font shipped?   → '; curl -s http://127.0.0.1:$WEB/ | grep -oiE 'fraunces|inter' | head -1 || echo '(font name not inlined — check rendered CSS)'"
 echo "✅ full deploy complete"
diff --git a/deploy-heromap.sh b/deploy-heromap.sh
index 347beda..8bf7f8b 100644
--- a/deploy-heromap.sh
+++ b/deploy-heromap.sh
@@ -1,21 +1,21 @@
 #!/usr/bin/env bash
 # Ship the homepage hero map to the live Kamatera site. Run:
-#   ! bash ~/Projects/spechomes/deploy-heromap.sh
+#   ! bash ~/Projects/homesonspec/deploy-heromap.sh
 set -euo pipefail
-KH=root@45.61.58.125; REMOTE=/root/Projects/spechomes; WEB=9975
+KH=root@45.61.58.125; REMOTE=/root/Projects/homesonspec; WEB=9975
 
 echo "── 1/3 ship changed sources ──"
-rsync -az ~/Projects/spechomes/apps/web/src/app/HeroMap.tsx \
-          ~/Projects/spechomes/apps/web/src/app/page.tsx \
+rsync -az ~/Projects/homesonspec/apps/web/src/app/HeroMap.tsx \
+          ~/Projects/homesonspec/apps/web/src/app/page.tsx \
           $KH:$REMOTE/apps/web/src/app/ && echo "  synced HeroMap.tsx + page.tsx"
 
 echo "── 2/3 rebuild web ──"
 ssh $KH "cd $REMOTE; export PATH=\$PATH:/root/.npm-global/bin:/usr/local/bin
-pnpm --filter @spechomes/web build 2>&1 | grep -iE 'Compiled successfully|Failed|error TS|Type error' | head -4"
+pnpm --filter @homesonspec/web build 2>&1 | grep -iE 'Compiled successfully|Failed|error TS|Type error' | head -4"
 
 echo "── 3/3 restart + verify ──"
 ssh $KH "cd $REMOTE; export PATH=\$PATH:/root/.npm-global/bin:/usr/local/bin
-pm2 restart spechomes-web --update-env >/dev/null; sleep 4
+pm2 restart homesonspec-web --update-env >/dev/null; sleep 4
 echo -n '  local web  → '; curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:$WEB/
 echo -n '  hero-map present → '; curl -s http://127.0.0.1:$WEB/ | grep -c 'data-testid=\"hero-map\"' | sed 's/^/marker-div x/'"
 echo -n '  public https → '; curl -s -o /dev/null -w '%{http_code}\n' https://homesonspec.com/
diff --git a/deploy-web.sh b/deploy-web.sh
index 2fdd678..a6815da 100644
--- a/deploy-web.sh
+++ b/deploy-web.sh
@@ -1,19 +1,19 @@
 #!/usr/bin/env bash
 # Ship the whole apps/web source tree to the live Kamatera site, rebuild, restart.
-#   ! bash ~/Projects/spechomes/deploy-web.sh
+#   ! bash ~/Projects/homesonspec/deploy-web.sh
 set -euo pipefail
-KH=root@45.61.58.125; REMOTE=/root/Projects/spechomes; WEB=9975
+KH=root@45.61.58.125; REMOTE=/root/Projects/homesonspec; WEB=9975
 
 echo "── 1/3 ship apps/web/src ──"
-rsync -az --delete ~/Projects/spechomes/apps/web/src/ $KH:$REMOTE/apps/web/src/ && echo "  synced apps/web/src"
+rsync -az --delete ~/Projects/homesonspec/apps/web/src/ $KH:$REMOTE/apps/web/src/ && echo "  synced apps/web/src"
 
 echo "── 2/3 rebuild web ──"
 ssh $KH "cd $REMOTE; export PATH=\$PATH:/root/.npm-global/bin:/usr/local/bin
-pnpm --filter @spechomes/web build 2>&1 | grep -iE 'Compiled successfully|Failed|error TS|Type error' | head -4"
+pnpm --filter @homesonspec/web build 2>&1 | grep -iE 'Compiled successfully|Failed|error TS|Type error' | head -4"
 
 echo "── 3/3 restart + verify ──"
 ssh $KH "cd $REMOTE; export PATH=\$PATH:/root/.npm-global/bin:/usr/local/bin
-pm2 restart spechomes-web --update-env >/dev/null; sleep 4
+pm2 restart homesonspec-web --update-env >/dev/null; sleep 4
 echo -n '  local web       → '; curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:$WEB/
 echo -n '  /map page       → '; curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:$WEB/map
 echo -n '  /api/map count  → '; curl -s http://127.0.0.1:$WEB/api/map | python3 -c 'import sys,json;d=json.load(sys.stdin);print(d[\"total\"],\"markers,\",len(d[\"builders\"]),\"builder(s)\")'
diff --git a/docs/architecture/ADRS.md b/docs/architecture/ADRS.md
index 7e5320e..cc71291 100644
--- a/docs/architecture/ADRS.md
+++ b/docs/architecture/ADRS.md
@@ -44,7 +44,7 @@ dimensions exist in the schema at all — this is deliberate Fair Housing hygien
 omission.
 
 ## ADR-007 — publisher package is the only writer of published tables
-`@spechomes/publisher.publishStagedRecord` is the single bridge from staged →
+`@homesonspec/publisher.publishStagedRecord` is the single bridge from staged →
 published, and it throws on any staged status other than VALIDATED (validators passed)
 or APPROVED (human review). Collectors and extractors end at `StagedRecord`. The
 integration suite asserts this invariant directly.
diff --git a/docs/data-rights/POLICY.md b/docs/data-rights/POLICY.md
index 534c7d6..70aa012 100644
--- a/docs/data-rights/POLICY.md
+++ b/docs/data-rights/POLICY.md
@@ -1,4 +1,4 @@
-# SpecHomes Data Rights Policy
+# HomesOnSpec Data Rights Policy
 
 A builder advertising a home for sale does not license its website for wholesale
 copying. Individual facts (address, price, sqft, beds, availability) receive thin
diff --git a/docs/source-runbooks/meridian-homes.md b/docs/source-runbooks/meridian-homes.md
index 0968aa5..c269b64 100644
--- a/docs/source-runbooks/meridian-homes.md
+++ b/docs/source-runbooks/meridian-homes.md
@@ -7,7 +7,7 @@ fetching exists for this source.
 - Registry key: `meridian-homes-fixtures` · method FIXTURE · media rights NONE
 - Adapter: `collectors/meridian-homes` (extractor v1.0.0), contract-pinned by
   `fixtures/expected-records/meridian-homes.json` and `src/extract.test.ts`
-- Run: `DATABASE_URL=… pnpm --filter @spechomes/workers pipeline -- --adapter=meridian-homes-fixtures`
+- Run: `DATABASE_URL=… pnpm --filter @homesonspec/workers pipeline -- --adapter=meridian-homes-fixtures`
 - Page order matters: the community page sorts first (01-…), so the publish stage
   creates the Community row before homes validate FK integrity.
 - Known quirks encoded in fixtures: `03-home-124-silverleaf.html` has no price
diff --git a/docs/source-runbooks/toll-brothers.md b/docs/source-runbooks/toll-brothers.md
index 7f13991..92859df 100644
--- a/docs/source-runbooks/toll-brothers.md
+++ b/docs/source-runbooks/toll-brothers.md
@@ -10,6 +10,6 @@ unauthenticated community feed). Recon 2026-07-22: no bot challenge, no Crawl-de
   `/new-quick-move-in-homes/...` URLs (robots-allowed), volume-controlled.
 - robots constraints honored: never fetch `/siteplans/`, `/nse`, `/compare`,
   `/new-homes`, `/sitesearch`.
-- Run: `pnpm --filter @spechomes/workers pipeline -- --adapter=toll-brothers-site`
+- Run: `pnpm --filter @homesonspec/workers pipeline -- --adapter=toll-brothers-site`
 - Notes: feed carries no zip/street per community → those fields publish null
   (never guessed); zip enrichment arrives with wave-2 QMI pages.
diff --git a/ecosystem.config.js b/ecosystem.config.js
index 143c3fd..8ec241c 100644
--- a/ecosystem.config.js
+++ b/ecosystem.config.js
@@ -2,24 +2,24 @@
 module.exports = {
   apps: [
     {
-      name: "spechomes-web",
+      name: "homesonspec-web",
       cwd: __dirname,
       script: "pnpm",
-      args: "--filter @spechomes/web start",
+      args: "--filter @homesonspec/web start",
       env: { NODE_ENV: "production", PORT: "3100" },
     },
     {
-      name: "spechomes-admin",
+      name: "homesonspec-admin",
       cwd: __dirname,
       script: "pnpm",
-      args: "--filter @spechomes/admin start",
+      args: "--filter @homesonspec/admin start",
       env: { NODE_ENV: "production", PORT: "3101" },
     },
     {
       // tsx-run daemon (pg-boss queue consumer). Unlike the Next apps it does
       // not auto-load .env, so load the (gitignored) root .env via node's
       // --env-file — keeps DATABASE_URL out of this committed file.
-      name: "spechomes-workers",
+      name: "homesonspec-workers",
       cwd: __dirname + "/apps/workers",
       script: "src/index.ts",
       interpreter: "node",
diff --git a/package.json b/package.json
index 2c6663b..c45dff8 100644
--- a/package.json
+++ b/package.json
@@ -1,21 +1,21 @@
 {
-  "name": "spechomes",
+  "name": "homesonspec",
   "version": "0.3.0",
   "private": true,
-  "description": "SpecHomes.com — nationwide search and comparison platform for newly constructed homes. Evidence-backed, verification-labeled inventory.",
+  "description": "HomesOnSpec.com — nationwide search and comparison platform for newly constructed homes. Evidence-backed, verification-labeled inventory.",
   "scripts": {
-    "dev:web": "pnpm --filter @spechomes/web dev",
-    "dev:admin": "pnpm --filter @spechomes/admin dev",
+    "dev:web": "pnpm --filter @homesonspec/web dev",
+    "dev:admin": "pnpm --filter @homesonspec/admin dev",
     "build": "pnpm -r build",
     "test": "pnpm -r --no-bail test",
     "typecheck": "pnpm -r typecheck",
-    "db:migrate": "pnpm --filter @spechomes/database db:migrate",
-    "db:seed": "pnpm --filter @spechomes/database db:seed",
-    "pipeline": "pnpm --filter @spechomes/workers pipeline",
+    "db:migrate": "pnpm --filter @homesonspec/database db:migrate",
+    "db:seed": "pnpm --filter @homesonspec/database db:seed",
+    "pipeline": "pnpm --filter @homesonspec/workers pipeline",
     "e2e": "playwright test",
-    "redeploy:web": "pnpm --filter @spechomes/web build && pm2 restart spechomes-web",
-    "redeploy:admin": "pnpm --filter @spechomes/admin build && pm2 restart spechomes-admin",
-    "redeploy": "pnpm --filter @spechomes/web --filter @spechomes/admin build && pm2 restart spechomes-web spechomes-admin"
+    "redeploy:web": "pnpm --filter @homesonspec/web build && pm2 restart homesonspec-web",
+    "redeploy:admin": "pnpm --filter @homesonspec/admin build && pm2 restart homesonspec-admin",
+    "redeploy": "pnpm --filter @homesonspec/web --filter @homesonspec/admin build && pm2 restart homesonspec-web homesonspec-admin"
   },
   "devDependencies": {
     "@playwright/test": "^1.49.1",
diff --git a/packages/database/package.json b/packages/database/package.json
index f596b07..6e096bf 100644
--- a/packages/database/package.json
+++ b/packages/database/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/database",
+  "name": "@homesonspec/database",
   "version": "0.1.0",
   "private": true,
   "type": "module",
diff --git a/packages/database/prisma/schema.prisma b/packages/database/prisma/schema.prisma
index 6a3336c..ed4e9cd 100644
--- a/packages/database/prisma/schema.prisma
+++ b/packages/database/prisma/schema.prisma
@@ -1,4 +1,4 @@
-// SpecHomes data model.
+// HomesOnSpec data model.
 //
 // Two strictly separated sides:
 //   PUBLISHED side — consumer-facing tables. Only the publish pipeline stage
diff --git a/packages/database/prisma/seed.ts b/packages/database/prisma/seed.ts
index f317885..3cec1c8 100644
--- a/packages/database/prisma/seed.ts
+++ b/packages/database/prisma/seed.ts
@@ -26,7 +26,7 @@ function between(min: number, max: number): number {
   return min + rand() * (max - min);
 }
 
-const DEMO_SOURCE_URL = "https://demo.spechomes.local/synthetic";
+const DEMO_SOURCE_URL = "https://demo.homesonspec.local/synthetic";
 
 interface MarketSpec {
   metro: string;
diff --git a/packages/publisher/package.json b/packages/publisher/package.json
index e3723bc..e31349d 100644
--- a/packages/publisher/package.json
+++ b/packages/publisher/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/publisher",
+  "name": "@homesonspec/publisher",
   "version": "0.1.0",
   "private": true,
   "type": "module",
@@ -7,8 +7,8 @@
   "types": "./src/index.ts",
   "scripts": { "test": "vitest run --passWithNoTests", "typecheck": "tsc --noEmit" },
   "dependencies": {
-    "@spechomes/database": "workspace:*",
-    "@spechomes/shared": "workspace:*"
+    "@homesonspec/database": "workspace:*",
+    "@homesonspec/shared": "workspace:*"
   },
   "devDependencies": { "typescript": "^5.7.2", "vitest": "^4.0.0", "@types/node": "^22.10.5" }
 }
diff --git a/packages/publisher/src/index.ts b/packages/publisher/src/index.ts
index fbbb9c5..6d73084 100644
--- a/packages/publisher/src/index.ts
+++ b/packages/publisher/src/index.ts
@@ -1,5 +1,5 @@
-import { prisma, type CollectionMethod, type VerificationLabel } from "@spechomes/database";
-import { normalizeAddress } from "@spechomes/shared";
+import { prisma, type CollectionMethod, type VerificationLabel } from "@homesonspec/database";
+import { normalizeAddress } from "@homesonspec/shared";
 
 /**
  * THE ONLY WRITER OF PUBLISHED TABLES.
diff --git a/packages/schemas/package.json b/packages/schemas/package.json
index d908071..255076c 100644
--- a/packages/schemas/package.json
+++ b/packages/schemas/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/schemas",
+  "name": "@homesonspec/schemas",
   "version": "0.1.0",
   "private": true,
   "type": "module",
diff --git a/packages/search/package.json b/packages/search/package.json
index 93a3dd4..c268f11 100644
--- a/packages/search/package.json
+++ b/packages/search/package.json
@@ -1,11 +1,11 @@
 {
-  "name": "@spechomes/search",
+  "name": "@homesonspec/search",
   "version": "0.1.0",
   "private": true,
   "type": "module",
   "main": "./src/index.ts",
   "types": "./src/index.ts",
   "scripts": { "test": "vitest run --passWithNoTests", "typecheck": "tsc --noEmit" },
-  "dependencies": { "@spechomes/database": "workspace:*", "@spechomes/shared": "workspace:*" },
+  "dependencies": { "@homesonspec/database": "workspace:*", "@homesonspec/shared": "workspace:*" },
   "devDependencies": { "typescript": "^5.7.2", "vitest": "^4.0.0", "@types/node": "^22.10.5" }
 }
diff --git a/packages/search/src/index.ts b/packages/search/src/index.ts
index 173891d..c14fea1 100644
--- a/packages/search/src/index.ts
+++ b/packages/search/src/index.ts
@@ -1,5 +1,5 @@
-import { prisma, Prisma } from "@spechomes/database";
-import { bboxAround, type BBox } from "@spechomes/shared";
+import { prisma, Prisma } from "@homesonspec/database";
+import { bboxAround, type BBox } from "@homesonspec/shared";
 
 /**
  * Search v1 — two steps:
diff --git a/packages/shared-ui/package.json b/packages/shared-ui/package.json
index 60e9546..8bc9c0d 100644
--- a/packages/shared-ui/package.json
+++ b/packages/shared-ui/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/shared-ui",
+  "name": "@homesonspec/shared-ui",
   "version": "0.1.0",
   "private": true,
   "type": "module",
diff --git a/packages/shared-ui/src/index.ts b/packages/shared-ui/src/index.ts
index c98d724..57018ae 100644
--- a/packages/shared-ui/src/index.ts
+++ b/packages/shared-ui/src/index.ts
@@ -1,4 +1,4 @@
 // MapView is deliberately NOT re-exported here: react-leaflet touches
 // `window` at module scope, so the barrel must stay SSR-safe. Import it
-// directly via `@spechomes/shared-ui/src/MapView` behind next/dynamic.
+// directly via `@homesonspec/shared-ui/src/MapView` behind next/dynamic.
 export * from "./badges";
diff --git a/packages/shared/package.json b/packages/shared/package.json
index f49e00f..7bc285a 100644
--- a/packages/shared/package.json
+++ b/packages/shared/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@spechomes/shared",
+  "name": "@homesonspec/shared",
   "version": "0.1.0",
   "private": true,
   "type": "module",
diff --git a/packages/source-registry/package.json b/packages/source-registry/package.json
index 45acda9..2ff319d 100644
--- a/packages/source-registry/package.json
+++ b/packages/source-registry/package.json
@@ -1,11 +1,11 @@
 {
-  "name": "@spechomes/source-registry",
+  "name": "@homesonspec/source-registry",
   "version": "0.1.0",
   "private": true,
   "type": "module",
   "main": "./src/index.ts",
   "types": "./src/index.ts",
   "scripts": { "test": "vitest run --passWithNoTests", "typecheck": "tsc --noEmit" },
-  "dependencies": { "@spechomes/database": "workspace:*", "zod": "^3.24.1" },
+  "dependencies": { "@homesonspec/database": "workspace:*", "zod": "^3.24.1" },
   "devDependencies": { "typescript": "^5.7.2", "vitest": "^4.0.0", "@types/node": "^22.10.5" }
 }
diff --git a/packages/validation/package.json b/packages/validation/package.json
index 1ae8f46..24f7f5e 100644
--- a/packages/validation/package.json
+++ b/packages/validation/package.json
@@ -1,11 +1,11 @@
 {
-  "name": "@spechomes/validation",
+  "name": "@homesonspec/validation",
   "version": "0.1.0",
   "private": true,
   "type": "module",
   "main": "./src/index.ts",
   "types": "./src/index.ts",
   "scripts": { "test": "vitest run --passWithNoTests", "typecheck": "tsc --noEmit" },
-  "dependencies": { "@spechomes/schemas": "workspace:*", "@spechomes/shared": "workspace:*", "@spechomes/database": "workspace:*" },
+  "dependencies": { "@homesonspec/schemas": "workspace:*", "@homesonspec/shared": "workspace:*", "@homesonspec/database": "workspace:*" },
   "devDependencies": { "typescript": "^5.7.2", "vitest": "^4.0.0", "@types/node": "^22.10.5" }
 }
diff --git a/packages/validation/src/rules.ts b/packages/validation/src/rules.ts
index a84a28c..9d23dfa 100644
--- a/packages/validation/src/rules.ts
+++ b/packages/validation/src/rules.ts
@@ -1,4 +1,4 @@
-import { latLonInState, stateForZip } from "@spechomes/shared";
+import { latLonInState, stateForZip } from "@homesonspec/shared";
 import { fieldValue, type StagedCandidate, type ValidationRule } from "./types";
 
 export const VALIDATOR_VERSION = "1.0.0";
@@ -118,7 +118,7 @@ export const noDuplicateActiveAddress: ValidationRule = {
   async check(record, ctx) {
     const address = record.canonicalHints.address;
     if (!address) return { passed: true };
-    const { normalizeAddress } = await import("@spechomes/shared");
+    const { normalizeAddress } = await import("@homesonspec/shared");
     const normalized = normalizeAddress(address);
     if (!normalized) return { passed: true };
     // Scoped to the same zip — an identical street string in another city
diff --git a/packages/validation/src/types.ts b/packages/validation/src/types.ts
index 5598622..0ef0ad1 100644
--- a/packages/validation/src/types.ts
+++ b/packages/validation/src/types.ts
@@ -1,4 +1,4 @@
-import type { ExtractedEntityType, ExtractedRecord } from "@spechomes/schemas";
+import type { ExtractedEntityType, ExtractedRecord } from "@homesonspec/schemas";
 
 /**
  * Deterministic validation layer. Rules — not the LLM — decide whether a
diff --git a/playwright.config.ts b/playwright.config.ts
index b476e73..6c80607 100644
--- a/playwright.config.ts
+++ b/playwright.config.ts
@@ -9,13 +9,13 @@ export default defineConfig({
   },
   webServer: [
     {
-      command: "pnpm --filter @spechomes/web dev",
+      command: "pnpm --filter @homesonspec/web dev",
       url: "http://localhost:3100",
       reuseExistingServer: true,
       timeout: 60_000,
     },
     {
-      command: "pnpm --filter @spechomes/admin dev",
+      command: "pnpm --filter @homesonspec/admin dev",
       url: "http://localhost:3101",
       reuseExistingServer: true,
       timeout: 60_000,
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8d6ad8c..18659fc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -17,22 +17,22 @@ importers:
 
   apps/admin:
     dependencies:
-      '@spechomes/database':
+      '@homesonspec/database':
         specifier: workspace:*
         version: link:../../packages/database
-      '@spechomes/publisher':
+      '@homesonspec/publisher':
         specifier: workspace:*
         version: link:../../packages/publisher
-      '@spechomes/schemas':
+      '@homesonspec/schemas':
         specifier: workspace:*
         version: link:../../packages/schemas
-      '@spechomes/search':
+      '@homesonspec/search':
         specifier: workspace:*
         version: link:../../packages/search
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../../packages/shared
-      '@spechomes/shared-ui':
+      '@homesonspec/shared-ui':
         specifier: workspace:*
         version: link:../../packages/shared-ui
       leaflet:
@@ -81,19 +81,19 @@ importers:
 
   apps/web:
     dependencies:
-      '@spechomes/database':
+      '@homesonspec/database':
         specifier: workspace:*
         version: link:../../packages/database
-      '@spechomes/schemas':
+      '@homesonspec/schemas':
         specifier: workspace:*
         version: link:../../packages/schemas
-      '@spechomes/search':
+      '@homesonspec/search':
         specifier: workspace:*
         version: link:../../packages/search
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../../packages/shared
-      '@spechomes/shared-ui':
+      '@homesonspec/shared-ui':
         specifier: workspace:*
         version: link:../../packages/shared-ui
       leaflet:
@@ -142,46 +142,46 @@ importers:
 
   apps/workers:
     dependencies:
-      '@spechomes/collector-dr-horton':
+      '@homesonspec/collector-dr-horton':
         specifier: workspace:*
         version: link:../../collectors/dr-horton
-      '@spechomes/collector-kb-home':
+      '@homesonspec/collector-kb-home':
         specifier: workspace:*
         version: link:../../collectors/kb-home
-      '@spechomes/collector-lennar':
+      '@homesonspec/collector-lennar':
         specifier: workspace:*
         version: link:../../collectors/lennar
-      '@spechomes/collector-meridian-homes':
+      '@homesonspec/collector-meridian-homes':
         specifier: workspace:*
         version: link:../../collectors/meridian-homes
-      '@spechomes/collector-pulte':
+      '@homesonspec/collector-pulte':
         specifier: workspace:*
         version: link:../../collectors/pulte
-      '@spechomes/collector-taylor-morrison':
+      '@homesonspec/collector-taylor-morrison':
         specifier: workspace:*
         version: link:../../collectors/taylor-morrison
-      '@spechomes/collector-toll-brothers':
+      '@homesonspec/collector-toll-brothers':
         specifier: workspace:*
         version: link:../../collectors/toll-brothers
-      '@spechomes/collector-tri-pointe':
+      '@homesonspec/collector-tri-pointe':
         specifier: workspace:*
         version: link:../../collectors/tri-pointe
-      '@spechomes/collectors-common':
+      '@homesonspec/collectors-common':
         specifier: workspace:*
         version: link:../../collectors/common
-      '@spechomes/database':
+      '@homesonspec/database':
         specifier: workspace:*
         version: link:../../packages/database
-      '@spechomes/publisher':
+      '@homesonspec/publisher':
         specifier: workspace:*
         version: link:../../packages/publisher
-      '@spechomes/schemas':
+      '@homesonspec/schemas':
         specifier: workspace:*
         version: link:../../packages/schemas
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../../packages/shared
-      '@spechomes/validation':
+      '@homesonspec/validation':
         specifier: workspace:*
         version: link:../../packages/validation
       pg-boss:
@@ -203,10 +203,10 @@ importers:
 
   collectors/common:
     dependencies:
-      '@spechomes/schemas':
+      '@homesonspec/schemas':
         specifier: workspace:*
         version: link:../../packages/schemas
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../../packages/shared
       node-html-parser:
@@ -225,13 +225,13 @@ importers:
 
   collectors/dr-horton:
     dependencies:
-      '@spechomes/collectors-common':
+      '@homesonspec/collectors-common':
         specifier: workspace:*
         version: link:../common
-      '@spechomes/schemas':
+      '@homesonspec/schemas':
         specifier: workspace:*
         version: link:../../packages/schemas
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../../packages/shared
     devDependencies:
@@ -247,13 +247,13 @@ importers:
 
   collectors/dream-finders:
     dependencies:
-      '@spechomes/collectors-common':
+      '@homesonspec/collectors-common':
         specifier: workspace:*
         version: link:../common
-      '@spechomes/schemas':
+      '@homesonspec/schemas':
         specifier: workspace:*
         version: link:../../packages/schemas
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../../packages/shared
     devDependencies:
@@ -269,13 +269,13 @@ importers:
 
   collectors/kb-home:
     dependencies:
-      '@spechomes/collectors-common':
+      '@homesonspec/collectors-common':
         specifier: workspace:*
         version: link:../common
-      '@spechomes/schemas':
+      '@homesonspec/schemas':
         specifier: workspace:*
         version: link:../../packages/schemas
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../../packages/shared
     devDependencies:
@@ -291,13 +291,13 @@ importers:
 
   collectors/lennar:
     dependencies:
-      '@spechomes/collectors-common':
+      '@homesonspec/collectors-common':
         specifier: workspace:*
         version: link:../common
-      '@spechomes/schemas':
+      '@homesonspec/schemas':
         specifier: workspace:*
         version: link:../../packages/schemas
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../../packages/shared
     devDependencies:
@@ -313,13 +313,13 @@ importers:
 
   collectors/meridian-homes:
     dependencies:
-      '@spechomes/collectors-common':
+      '@homesonspec/collectors-common':
         specifier: workspace:*
         version: link:../common
-      '@spechomes/schemas':
+      '@homesonspec/schemas':
         specifier: workspace:*
         version: link:../../packages/schemas
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../../packages/shared
       node-html-parser:
@@ -338,13 +338,13 @@ importers:
 
   collectors/pulte:
     dependencies:
-      '@spechomes/collectors-common':
+      '@homesonspec/collectors-common':
         specifier: workspace:*
         version: link:../common
-      '@spechomes/schemas':
+      '@homesonspec/schemas':
         specifier: workspace:*
         version: link:../../packages/schemas
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../../packages/shared
     devDependencies:
@@ -360,13 +360,13 @@ importers:
 
   collectors/taylor-morrison:
     dependencies:
-      '@spechomes/collectors-common':
+      '@homesonspec/collectors-common':
         specifier: workspace:*
         version: link:../common
-      '@spechomes/schemas':
+      '@homesonspec/schemas':
         specifier: workspace:*
         version: link:../../packages/schemas
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../../packages/shared
     devDependencies:
@@ -382,13 +382,13 @@ importers:
 
   collectors/toll-brothers:
     dependencies:
-      '@spechomes/collectors-common':
+      '@homesonspec/collectors-common':
         specifier: workspace:*
         version: link:../common
-      '@spechomes/schemas':
+      '@homesonspec/schemas':
         specifier: workspace:*
         version: link:../../packages/schemas
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../../packages/shared
     devDependencies:
@@ -404,13 +404,13 @@ importers:
 
   collectors/tri-pointe:
     dependencies:
-      '@spechomes/collectors-common':
+      '@homesonspec/collectors-common':
         specifier: workspace:*
         version: link:../common
-      '@spechomes/schemas':
+      '@homesonspec/schemas':
         specifier: workspace:*
         version: link:../../packages/schemas
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../../packages/shared
     devDependencies:
@@ -448,10 +448,10 @@ importers:
 
   packages/publisher:
     dependencies:
-      '@spechomes/database':
+      '@homesonspec/database':
         specifier: workspace:*
         version: link:../database
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../shared
     devDependencies:
@@ -483,10 +483,10 @@ importers:
 
   packages/search:
     dependencies:
-      '@spechomes/database':
+      '@homesonspec/database':
         specifier: workspace:*
         version: link:../database
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../shared
     devDependencies:
@@ -549,7 +549,7 @@ importers:
 
   packages/source-registry:
     dependencies:
-      '@spechomes/database':
+      '@homesonspec/database':
         specifier: workspace:*
         version: link:../database
       zod:
@@ -568,13 +568,13 @@ importers:
 
   packages/validation:
     dependencies:
-      '@spechomes/database':
+      '@homesonspec/database':
         specifier: workspace:*
         version: link:../database
-      '@spechomes/schemas':
+      '@homesonspec/schemas':
         specifier: workspace:*
         version: link:../schemas
-      '@spechomes/shared':
+      '@homesonspec/shared':
         specifier: workspace:*
         version: link:../shared
     devDependencies:
diff --git a/tsconfig.base.json b/tsconfig.base.json
index 7a4f65a..37e3159 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -18,31 +18,31 @@
     "jsx": "preserve",
     "baseUrl": ".",
     "paths": {
-      "@spechomes/database": [
+      "@homesonspec/database": [
         "packages/database/src/index.ts"
       ],
-      "@spechomes/schemas": [
+      "@homesonspec/schemas": [
         "packages/schemas/src/index.ts"
       ],
-      "@spechomes/validation": [
+      "@homesonspec/validation": [
         "packages/validation/src/index.ts"
       ],
-      "@spechomes/search": [
+      "@homesonspec/search": [
         "packages/search/src/index.ts"
       ],
-      "@spechomes/source-registry": [
+      "@homesonspec/source-registry": [
         "packages/source-registry/src/index.ts"
       ],
-      "@spechomes/shared": [
+      "@homesonspec/shared": [
         "packages/shared/src/index.ts"
       ],
-      "@spechomes/shared-ui": [
+      "@homesonspec/shared-ui": [
         "packages/shared-ui/src/index.ts"
       ],
-      "@spechomes/collectors-common": [
+      "@homesonspec/collectors-common": [
         "collectors/common/src/index.ts"
       ],
-      "@spechomes/publisher": [
+      "@homesonspec/publisher": [
         "packages/publisher/src/index.ts"
       ]
     }

← ff7f593 Scrub non-owned domain spechomes.com -> homesonspec.com (Lay  ·  back to Homesonspec  ·  chore: v0.3.1 (session close — spechomes→homesonspec rename) ce2edb5 →