← back to Homesonspec
packages/database/prisma/seed-national-builders.ts
97 lines
import { prisma } from "../src/index.js";
/**
* Top-10 national builders (by closings) — REAL companies. This seed creates
* Builder rows + SourceRegistry entries only. Sources start INACTIVE with
* health PAUSED: nothing collects until recon findings (terms, robots,
* feasibility) are recorded and the source is explicitly activated.
* No media rights are assumed (mediaRights NONE — facts only, link back).
*/
const BUILDERS: {
slug: string;
name: string;
legalName: string;
website: string;
termsUrl: string;
coverage: string;
}[] = [
{ slug: "dr-horton", name: "D.R. Horton", legalName: "D.R. Horton, Inc.", website: "https://www.drhorton.com", termsUrl: "https://www.drhorton.com/terms-of-use", coverage: "National — 33+ states" },
{ slug: "lennar", name: "Lennar", legalName: "Lennar Corporation", website: "https://www.lennar.com", termsUrl: "https://www.lennar.com/legal/terms-of-use", coverage: "National — 26+ states" },
{ slug: "pultegroup", name: "PulteGroup", legalName: "PulteGroup, Inc.", website: "https://www.pulte.com", termsUrl: "https://www.pulte.com/terms-of-use", coverage: "National — Pulte / Del Webb / Centex brands" },
{ slug: "ryan-homes", name: "Ryan Homes (NVR)", legalName: "NVR, Inc.", website: "https://www.ryanhomes.com", termsUrl: "https://www.ryanhomes.com/terms-and-conditions", coverage: "East/Midwest — 15+ states" },
{ slug: "meritage-homes", name: "Meritage Homes", legalName: "Meritage Homes Corporation", website: "https://www.meritagehomes.com", termsUrl: "https://www.meritagehomes.com/terms-of-use", coverage: "Sun Belt — 10+ states" },
{ slug: "kb-home", name: "KB Home", legalName: "KB Home", website: "https://www.kbhome.com", termsUrl: "https://www.kbhome.com/terms-of-use", coverage: "West/South — 8+ states" },
{ slug: "taylor-morrison", name: "Taylor Morrison", legalName: "Taylor Morrison Home Corporation", website: "https://www.taylormorrison.com", termsUrl: "https://www.taylormorrison.com/terms-of-use", coverage: "Sun Belt — 11+ states" },
{ slug: "century-communities", name: "Century Communities", legalName: "Century Communities, Inc.", website: "https://www.centurycommunities.com", termsUrl: "https://www.centurycommunities.com/terms-of-use", coverage: "National — 17+ states" },
{ slug: "lgi-homes", name: "LGI Homes", legalName: "LGI Homes, Inc.", website: "https://www.lgihomes.com", termsUrl: "https://www.lgihomes.com/terms-of-use", coverage: "National — 20+ states" },
{ slug: "toll-brothers", name: "Toll Brothers", legalName: "Toll Brothers, Inc.", website: "https://www.tollbrothers.com", termsUrl: "https://www.tollbrothers.com/terms-of-use", coverage: "National luxury — 24+ states" },
// ── 11–30 (expansion wave) ──
{ slug: "richmond-american", name: "Richmond American Homes", legalName: "M.D.C. Holdings, Inc. (Sekisui House)", website: "https://www.richmondamerican.com", termsUrl: "https://www.richmondamerican.com/terms-of-use", coverage: "National — 16+ states" },
{ slug: "clayton-properties", name: "Clayton Properties Group", legalName: "Clayton Properties Group, Inc.", website: "https://www.claytonhomes.com", termsUrl: "https://www.claytonhomes.com/terms-of-use", coverage: "Southeast/Midwest site-built brands" },
{ slug: "david-weekley", name: "David Weekley Homes", legalName: "Weekley Homes, LLC", website: "https://www.davidweekleyhomes.com", termsUrl: "https://www.davidweekleyhomes.com/terms-of-use", coverage: "Sun Belt — 19+ markets" },
{ slug: "dream-finders", name: "Dream Finders Homes", legalName: "Dream Finders Homes, Inc.", website: "https://www.dreamfindershomes.com", termsUrl: "https://www.dreamfindershomes.com/terms-of-use", coverage: "Southeast/Mid-Atlantic/TX/CO" },
{ slug: "mi-homes", name: "M/I Homes", legalName: "M/I Homes, Inc.", website: "https://www.mihomes.com", termsUrl: "https://www.mihomes.com/terms-of-use", coverage: "Midwest/Southeast — 17 markets" },
{ slug: "tri-pointe", name: "Tri Pointe Homes", legalName: "Tri Pointe Homes, Inc.", website: "https://www.tripointehomes.com", termsUrl: "https://www.tripointehomes.com/terms-of-use", coverage: "West/TX/Southeast" },
{ slug: "beazer", name: "Beazer Homes", legalName: "Beazer Homes USA, Inc.", website: "https://www.beazer.com", termsUrl: "https://www.beazer.com/terms-of-use", coverage: "National — 13 states" },
{ slug: "k-hovnanian", name: "K. Hovnanian Homes", legalName: "Hovnanian Enterprises, Inc.", website: "https://www.khov.com", termsUrl: "https://www.khov.com/terms-of-use", coverage: "National — 14 states" },
{ slug: "ashton-woods", name: "Ashton Woods", legalName: "Ashton Woods Homes", website: "https://www.ashtonwoods.com", termsUrl: "https://www.ashtonwoods.com/terms-of-use", coverage: "Southeast/TX" },
{ slug: "mattamy", name: "Mattamy Homes", legalName: "Mattamy Homes Limited (US)", website: "https://mattamyhomes.com", termsUrl: "https://mattamyhomes.com/terms-of-use", coverage: "FL/AZ/NC/SC/TX" },
{ slug: "shea-homes", name: "Shea Homes", legalName: "Shea Homes Limited Partnership", website: "https://www.sheahomes.com", termsUrl: "https://www.sheahomes.com/terms-of-use", coverage: "West/TX/FL" },
{ slug: "perry-homes", name: "Perry Homes", legalName: "Perry Homes, LLC", website: "https://www.perryhomes.com", termsUrl: "https://www.perryhomes.com/terms-of-use", coverage: "TX" },
{ slug: "highland-homes", name: "Highland Homes", legalName: "Highland Homes, Ltd.", website: "https://www.highlandhomes.com", termsUrl: "https://www.highlandhomes.com/terms-of-use", coverage: "TX" },
{ slug: "stanley-martin", name: "Stanley Martin Homes", legalName: "Stanley Martin Companies, LLC", website: "https://www.stanleymartin.com", termsUrl: "https://www.stanleymartin.com/terms-of-use", coverage: "Mid-Atlantic/Southeast" },
{ slug: "smith-douglas", name: "Smith Douglas Homes", legalName: "Smith Douglas Homes Corp.", website: "https://www.smithdouglas.com", termsUrl: "https://www.smithdouglas.com/terms-of-use", coverage: "Southeast" },
{ slug: "brookfield-residential", name: "Brookfield Residential", legalName: "Brookfield Residential Properties Inc.", website: "https://www.brookfieldresidential.com", termsUrl: "https://www.brookfieldresidential.com/terms-of-use", coverage: "West/TX/DC metro" },
{ slug: "drees-homes", name: "Drees Homes", legalName: "The Drees Company", website: "https://www.dreeshomes.com", termsUrl: "https://www.dreeshomes.com/terms-of-use", coverage: "OH/KY/TN/TX/DC" },
{ slug: "fischer-homes", name: "Fischer Homes", legalName: "Fischer Homes, Inc.", website: "https://www.fischerhomes.com", termsUrl: "https://www.fischerhomes.com/terms-of-use", coverage: "OH/KY/IN/GA/MO" },
{ slug: "gl-homes", name: "GL Homes", legalName: "G.L. Homes of Florida Corporation", website: "https://www.glhomes.com", termsUrl: "https://www.glhomes.com/terms-of-use", coverage: "FL" },
{ slug: "landsea-homes", name: "Landsea Homes", legalName: "Landsea Homes Corporation", website: "https://www.landseahomes.com", termsUrl: "https://www.landseahomes.com/terms-of-use", coverage: "AZ/CA/FL/TX/NY metro" },
];
async function main() {
for (const spec of BUILDERS) {
const builder = await prisma.builder.upsert({
where: { slug: spec.slug },
update: { name: spec.name, legalName: spec.legalName, websiteUrl: spec.website },
create: {
slug: spec.slug,
name: spec.name,
legalName: spec.legalName,
websiteUrl: spec.website,
coverageArea: spec.coverage,
logoRightsStatus: "none",
partnershipStatus: null, // inclusion never implies sponsorship
isDemo: false,
},
});
await prisma.sourceRegistry.upsert({
where: { key: `${spec.slug}-site` },
update: { termsUrl: spec.termsUrl },
create: {
key: `${spec.slug}-site`,
name: `${spec.name} (builder website)`,
builderId: builder.id,
baseUrl: spec.website,
collectionMethod: "CRAWL", // limited factual collection; refined per recon
termsUrl: spec.termsUrl,
mediaRights: "NONE", // facts only — no photos/renderings/descriptions
rateLimitRpm: 10,
freshIntervalHours: 24,
agingIntervalHours: 72,
health: "PAUSED",
active: false, // nothing collects until recon findings are recorded + Steve activates
notes: "Awaiting recon: robots stance, terms review, feed feasibility.",
},
});
console.log(`registered ${spec.name}`);
}
}
main()
.catch((error) => {
console.error(error);
process.exitCode = 1;
})
.finally(() => prisma.$disconnect());