diff --git a/api/src/routes/compliance-orders.ts b/api/src/routes/compliance-orders.ts index 3d55de9..8bf1d4e 100644 --- a/api/src/routes/compliance-orders.ts +++ b/api/src/routes/compliance-orders.ts @@ -348,6 +348,26 @@ const COMPLIANCE_SERVICES: Record< erpnext_item: "STATE-TRUCKING-BUNDLE", discountable: true, }, + + // ── Corporate / Entity Services ── + "annual-report-filing": { + name: "Annual Report / Franchise Tax Filing", + price_cents: 14900, + erpnext_item: "ANNUAL-REPORT", + discountable: true, + }, + "registered-agent": { + name: "Registered Agent Service (1 Year)", + price_cents: 9900, + erpnext_item: "REGISTERED-AGENT", + discountable: true, + }, + "entity-reinstatement": { + name: "Entity Reinstatement", + price_cents: 29900, + erpnext_item: "ENTITY-REINSTATEMENT", + discountable: true, + }, }; // ── Intake validation map ───────────────────────────────────────────── diff --git a/api/src/routes/dot-lookup.ts b/api/src/routes/dot-lookup.ts index 6165b09..24cff50 100644 --- a/api/src/routes/dot-lookup.ts +++ b/api/src/routes/dot-lookup.ts @@ -431,6 +431,30 @@ router.get("/api/v1/dot/lookup", async (req, res) => { } } + // ── Check 15: Corporate / LLC Compliance ── + { + const entityName = (name || "").toUpperCase(); + const isLLC = /\bLLC\b|\bL\.L\.C\b/.test(entityName); + const isCorp = /\bINC\b|\bINC\.\b|\bCORP\b|\bCORP\.\b|\bINCORPORATED\b|\bCORPORATION\b/.test(entityName); + const isLTD = /\bLTD\b|\bLTD\.\b|\bLIMITED\b/.test(entityName); + const isLP = /\bLP\b|\bL\.P\.\b|\bLLP\b/.test(entityName); + const isFormalEntity = isLLC || isCorp || isLTD || isLP; + + if (isFormalEntity) { + const entityType = isLLC ? "LLC" : isCorp ? "Corporation" : isLTD ? "Ltd" : "LP/LLP"; + const state = carrier?.phyState || census?.phy_state || ""; + checks.push({ + id: "corporate_compliance", + label: "Corporate / Entity Compliance", + status: "yellow", + detail: `${entityType} registered in ${state || "your state"} — most states require annual reports, ` + + `franchise tax filings, and a registered agent. Failure to file can result in ` + + `administrative dissolution and loss of liability protection. ` + + `Performance West can handle your annual filings and registered agent service.`, + }); + } + } + // Build response const redCount = checks.filter(c => c.status === "red").length; const yellowCount = checks.filter(c => c.status === "yellow").length;