diff --git a/api/src/routes/compliance-orders.ts b/api/src/routes/compliance-orders.ts index ff8e4cc..187d303 100644 --- a/api/src/routes/compliance-orders.ts +++ b/api/src/routes/compliance-orders.ts @@ -12,6 +12,7 @@ import { Router } from "express"; import { pool } from "../db.js"; import { randomBytes } from "crypto"; +import { COMPLIANCE_SERVICES } from "../service-catalog.js"; const router = Router(); @@ -34,479 +35,6 @@ function emailError(raw: unknown): string | null { return null; } -// ── Service catalog (prices in cents) ────────────────────────────────────── -const COMPLIANCE_SERVICES: Record< - string, - { name: string; price_cents: number; gov_fee_cents?: number; gov_fee_label?: string; erpnext_item: string; discountable: boolean } -> = { - "fcc-compliance-checkup": { - name: "FCC Carrier Compliance Checkup", - price_cents: 79900, - erpnext_item: "FCC-COMPLIANCE-CHECKUP", - discountable: true, - }, - "fcc-499a": { - name: "FCC Form 499-A Filing", - price_cents: 49900, - erpnext_item: "FCC-499A", - discountable: true, - }, - "fcc-499a-zero": { - name: "FCC Form 499-A Filing (Zero Revenue)", - price_cents: 17900, - erpnext_item: "FCC-499A-ZERO", - discountable: true, - }, - "fcc-499a-499q": { - name: "FCC Form 499-A + 499-Q Bundle", - price_cents: 59900, - erpnext_item: "FCC-499A-499Q", - discountable: true, - }, - "fcc-full-compliance": { - name: "FCC Full Compliance Bundle", - price_cents: 149900, - erpnext_item: "FCC-FULL-COMPLIANCE", - discountable: true, - }, - "cpni-certification": { - name: "CPNI Annual Certification", - price_cents: 19900, - erpnext_item: "CPNI-CERT", - discountable: true, - }, - "rmd-filing": { - name: "RMD Registration / Recertification", - price_cents: 24900, - gov_fee_cents: 10000, - gov_fee_label: "FCC RMD filing fee", - erpnext_item: "RMD-FILING", - discountable: true, - }, - "stir-shaken": { - name: "STIR/SHAKEN Implementation Assistance", - price_cents: 49900, - erpnext_item: "STIR-SHAKEN", - discountable: true, - }, - "dc-agent": { - name: "D.C. Registered Agent (Annual)", - price_cents: 14900, - erpnext_item: "DC-AGENT", - discountable: false, - }, - // BDC filings — the FCC retired Form 477 in Dec 2022 and folded voice - // subscription data into BDC. Broadband-only and voice-only SKUs let - // carriers pay for just what they need; bdc-filing remains as a bundle. - "bdc-broadband": { - name: "BDC Broadband Deployment Filing", - price_cents: 24900, - erpnext_item: "BDC-BROADBAND", - discountable: true, - }, - "bdc-voice": { - name: "BDC Voice Subscription Filing (formerly Form 477 Voice)", - price_cents: 19900, - erpnext_item: "BDC-VOICE", - discountable: true, - }, - "bdc-filing": { - name: "BDC Filing (Broadband + Voice)", - price_cents: 34900, - erpnext_item: "BDC-FILING", - discountable: true, - }, - // New-carrier entry point — register in CORES + obtain FRN - "cores-frn-registration": { - name: "CORES / FRN Registration", - price_cents: 14900, - erpnext_item: "CORES-FRN", - discountable: true, - }, - // 499-A New Filer Registration (distinct from the annual revenue filing) - "fcc-499-initial": { - name: "Form 499 Initial Registration", - price_cents: 34900, - erpnext_item: "FCC-499-INITIAL", - discountable: true, - }, - // CALEA System Security & Integrity plan (47 USC 229) - "calea-ssi": { - name: "CALEA SSI Plan", - price_cents: 79900, - erpnext_item: "CALEA-SSI", - discountable: true, - }, - // 47 CFR § 63.11 Foreign Carrier Affiliation Notification - "fcc-63-11-notification": { - name: "Foreign Carrier Affiliation Notification (47 CFR § 63.11)", - price_cents: 34900, - erpnext_item: "FCC-63-11", - discountable: true, - }, - // One-click onboarding for a brand-new carrier (composes 5 filings) - "new-carrier-bundle": { - name: "New Carrier Onboarding Bundle (FRN + 499 Initial + RMD + CPNI + CALEA)", - price_cents: 179900, - erpnext_item: "NEW-CARRIER-BUNDLE", - discountable: true, - }, - // NECA OCN registration — required for VoIP/IPES carriers that need - // their own Operating Company Number for STIR/SHAKEN signing, LRN - // assignments, or direct numbering authority. NECA charges $550 - // standard / $675 expedited; we pass through + margin for prep work. - "ocn-registration": { - name: "NECA OCN + Sponsoring CLEC Agreement", - price_cents: 265000, - erpnext_item: "OCN-REGISTRATION", - discountable: false, - }, - "fcc-499q": { - name: "FCC Form 499-Q Quarterly Filing", - price_cents: 0, // included in 499-A+Q bundle — not sold standalone - erpnext_item: "FCC-499Q", - discountable: false, - }, - "fcc-499a-discontinuance": { - name: "Form 499-A Discontinuance Filing", - price_cents: 29900, - erpnext_item: "499A-DISCONTINUANCE", - discountable: false, - }, - // Standalone CDR Traffic Study — customers who want the classified - // study (unlocks the current reporting year) without buying the - // full 499-A filing service. Either slug unlocks the study via the - // cdr_study_access_grants paywall hook. - "cdr-analysis": { - name: "CDR Traffic Study (Annual)", - price_cents: 49900, - erpnext_item: "CDR-ANALYSIS", - discountable: true, - }, - // CDR storage / processing tiers. Annual subscription; renew alongside - // the filing. Each tier is additive — customer picks the smallest tier - // that covers their worst of (storage bytes, classified rows). - "cdr-storage-tier1": { - name: "CDR Storage Tier 1 (50 GB / 50M calls)", - price_cents: 9900, - erpnext_item: "CDR-STORAGE-TIER1", - discountable: false, - }, - "cdr-storage-tier2": { - name: "CDR Storage Tier 2 (250 GB / 250M calls)", - price_cents: 29900, - erpnext_item: "CDR-STORAGE-TIER2", - discountable: false, - }, - "cdr-storage-tier3": { - name: "CDR Storage Tier 3 (1 TB / 1B calls)", - price_cents: 79900, - erpnext_item: "CDR-STORAGE-TIER3", - discountable: false, - }, - // ── Foreign qualification (Certificate of Authority) ───────────────── - // Per-state fees are added on top of these flat service fees at order - // time (state fee + NWRA RA wholesale, looked up from jurisdictions + - // state_filing_fees). Handler fans out one filing per selected state. - // - // Pricing model: - // - `foreign-qualification-single`: flat service fee ($149) + state - // fee + optional NWRA RA. One state per order. - // - `foreign-qualification-multi`: discounted per-state service fee - // ($99) + state fees + RAs. For FCC carriers filing across their - // operating territory. - "foreign-qualification-single": { - name: "Foreign Qualification (One State)", - price_cents: 14900, - erpnext_item: "FOREIGN-QUAL-SINGLE", - discountable: true, - }, - "foreign-qualification-multi": { - name: "Foreign Qualification (Multi-State)", - price_cents: 9900, // per-state service fee - erpnext_item: "FOREIGN-QUAL-MULTI", - discountable: true, - }, - // State PUC/PSC Registration — $399 per-state service fee + state - // filing fees. Bond procurement coordinated separately. - "state-puc": { - name: "State PUC/PSC Registration", - price_cents: 39900, // per-state service fee - erpnext_item: "STATE-PUC", - discountable: true, - }, - // ── DOT / FMCSA Motor Carrier Services ────────────────────────────── - "mcs150-update": { - name: "MCS-150 Biennial Update", - price_cents: 3900, - erpnext_item: "MCS150-UPDATE", - discountable: true, - }, - "boc3-filing": { - name: "BOC-3 Process Agent Filing", - price_cents: 8900, - erpnext_item: "BOC3-FILING", - discountable: false, // passthrough cost — $25 to Process Agent LLC - }, - "ucr-registration": { - name: "UCR Annual Registration", - price_cents: 3900, - gov_fee_cents: 4600, // minimum tier ($46 for 0-2 power units) - gov_fee_label: "UCR registration fee (tier-based, minimum shown)", - erpnext_item: "UCR-REGISTRATION", - discountable: true, - }, - "dot-registration": { - name: "New USDOT Number Registration", - price_cents: 8900, - erpnext_item: "DOT-REGISTRATION", - discountable: true, - }, - "mc-authority": { - name: "MC Operating Authority Application", - price_cents: 19900, // $199 + $300 FMCSA gov fee - gov_fee_cents: 30000, // $300 FMCSA application fee - gov_fee_label: "FMCSA operating authority application fee", - erpnext_item: "MC-AUTHORITY", - discountable: false, // $300 FMCSA gov fee makes this non-discountable - }, - "usdot-reactivation": { - name: "USDOT Number Reactivation", - price_cents: 14900, - erpnext_item: "USDOT-REACTIVATION", - discountable: true, - }, - "emergency-temporary-authority": { - name: "Emergency Temporary Authority (ETA)", - price_cents: 49900, - erpnext_item: "EMERGENCY-TEMP-AUTH", - discountable: false, // urgent service, premium pricing - }, - "dot-drug-alcohol": { - name: "DOT Drug & Alcohol Compliance Program", - price_cents: 14900, - erpnext_item: "DOT-DRUG-ALCOHOL", - discountable: true, // instant PDF binder we generate — our own deliverable, no passthrough cost - }, - "dot-audit-prep": { - name: "New Entrant Safety Audit Preparation", - price_cents: 39900, - erpnext_item: "DOT-AUDIT-PREP", - discountable: true, - }, - "dot-full-compliance": { - name: "DOT Full Compliance Bundle", - price_cents: 39900, // $399 — includes MCS-150+BOC-3+UCR+D&A+Audit ($775 individual) - erpnext_item: "DOT-FULL-COMPLIANCE", - discountable: true, - }, - "carrier-closeout": { - name: "Trucking Wrap-Up (USDOT Shutdown)", - price_cents: 19900, // $199 — final MCS-150 (out of business) + MC revoke + UCR cancel + state account closures - erpnext_item: "CARRIER-CLOSEOUT", - discountable: true, - }, - "entity-dissolution": { - name: "Business Entity Dissolution (LLC/Corp)", - price_cents: 4900, // $49 add-on to the wrap-up — LLC/Corp dissolution + final report; state filing fees billed separately - gov_fee_label: "State dissolution filing fee (varies by state, billed at cost)", - erpnext_item: "ENTITY-DISSOLUTION", - discountable: true, - }, - // ── State-Level Trucking Compliance ────────────────────────────────── - // For these services the price_cents is our flat SERVICE fee only. The - // actual state government charges (apportioned IRP registration, IFTA decal - // fees, weight-distance/HUT account setup, permit/decal costs) vary by the - // carrier's fleet weight, mileage, and base state, so they are passed - // through AT COST and billed separately once the state issues the invoice — - // we never mark them up. The gov_fee_label is shown to the customer at - // checkout so the pass-through is disclosed up front. - "irp-registration": { - name: "IRP Registration Assistance", - price_cents: 10900, // + state fees (apportioned registration billed at cost) - gov_fee_label: "Apportioned IRP registration & plate fees (state, by jurisdictions + weight, billed at cost)", - erpnext_item: "IRP-REGISTRATION", - discountable: true, - }, - "ifta-application": { - name: "IFTA Application + Decals", - price_cents: 10900, // + state fees - gov_fee_label: "IFTA license & decal fees (state, billed at cost)", - erpnext_item: "IFTA-APPLICATION", - discountable: true, - }, - "ifta-quarterly": { - name: "IFTA Quarterly Filing", - price_cents: 10900, - gov_fee_label: "IFTA taxes due (remitted to the state at cost based on your mileage)", - erpnext_item: "IFTA-QUARTERLY", - discountable: true, - }, - "or-weight-mile-tax": { - name: "Oregon Weight-Mile Tax Setup", - price_cents: 10900, // + state fees - gov_fee_label: "Oregon weight-mile tax account & bond/deposit (state, billed at cost)", - erpnext_item: "OR-WEIGHT-MILE-TAX", - discountable: true, - }, - "ny-hut-registration": { - name: "NY Highway Use Tax Registration", - price_cents: 10900, // + state fees - gov_fee_label: "NY HUT certificate & decal fees (state, billed at cost)", - erpnext_item: "NY-HUT-REGISTRATION", - discountable: true, - }, - "ky-kyu-registration": { - name: "KY Weight-Distance Tax Setup", - price_cents: 10900, // + state fees - gov_fee_label: "KYU weight-distance account fees (state, billed at cost)", - erpnext_item: "KY-KYU-REGISTRATION", - discountable: true, - }, - "nm-weight-distance": { - name: "NM Weight-Distance Tax Setup", - price_cents: 10900, // + state fees - gov_fee_label: "NM weight-distance permit & account fees (state, billed at cost)", - erpnext_item: "NM-WEIGHT-DISTANCE", - discountable: true, - }, - "ct-highway-use-fee": { - name: "CT Highway Use Fee Setup", - price_cents: 10900, // + state fees - gov_fee_label: "CT Highway Use Fee registration (state, billed at cost)", - erpnext_item: "CT-HIGHWAY-USE-FEE", - discountable: true, - }, - "ca-mcp-carb": { - name: "California MCP + CARB Compliance", - price_cents: 22900, // $229 + state fees (CA is more complex: MCP + CARB) - gov_fee_label: "CA MCP permit fee + CARB/Clean Truck Check fees (state, by fleet size, billed at cost)", - erpnext_item: "CA-MCP-CARB", - discountable: true, - }, - "state-dot-registration": { - name: "State DOT Registration", - price_cents: 10900, // + state fees - gov_fee_label: "State DOT/intrastate registration fee (state, billed at cost)", - erpnext_item: "STATE-DOT-REGISTRATION", - discountable: true, - }, - "intrastate-authority": { - name: "Intrastate Operating Authority", - price_cents: 10900, // + state fees - gov_fee_label: "State intrastate authority filing fee (state, billed at cost)", - erpnext_item: "INTRASTATE-AUTHORITY", - discountable: true, - }, - "osow-permit": { - name: "Oversize/Overweight Permit", - price_cents: 10900, // + state permit fees - gov_fee_label: "State oversize/overweight permit fees (per trip/route, billed at cost)", - erpnext_item: "OSOW-PERMIT", - discountable: true, - }, - "state-trucking-bundle": { - name: "State Compliance Bundle", - price_cents: 49900, // $499 — IRP+IFTA+weight tax+intrastate ($796 individual) - gov_fee_label: "State registration, decal & tax fees for each included filing (billed at cost)", - erpnext_item: "STATE-TRUCKING-BUNDLE", - discountable: true, - }, - // ── Hazmat / Emissions ─────────────────────────────────────────────── - "hazmat-phmsa": { - name: "PHMSA Hazmat Registration", - price_cents: 14900, // $149 admin-assisted; PHMSA gov fee billed at cost - gov_fee_label: "PHMSA registration fee ($25 + $250-$3,000 processing, by business size, billed at cost)", - erpnext_item: "HAZMAT-PHMSA", - discountable: true, - }, - "state-emissions": { - name: "State Clean-Truck / Emissions Compliance", - price_cents: 10900, // $109 + state fees — NY/CO/MD/NJ/MA clean-truck / ACT advisory + registration assist - erpnext_item: "STATE-EMISSIONS", - 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, - }, - "virtual-mailbox": { - name: "Virtual Mailbox (1 Year)", - price_cents: 14900, - erpnext_item: "VIRTUAL-MAILBOX", - discountable: true, - }, - "ein-application": { - name: "EIN Application (IRS SS-4)", - price_cents: 7900, - erpnext_item: "EIN-APPLICATION", - discountable: true, - }, - "entity-upgrade-bundle": { - name: "Entity Upgrade Package (Sole Prop → LLC)", - price_cents: 59900, - erpnext_item: "ENTITY-UPGRADE-BUNDLE", - discountable: true, - }, - // ── Healthcare / NPI compliance ────────────────────────────────────── - // CMS/NPPES provider compliance. Handlers are review-staged (a human - // files in PECOS/NPPES) — same safety default as the FCC auto-filing - // toggle. HIPAA is intentionally out of scope (separate specialty). - // Flagship = npi-revalidation (CMS 5-yr Medicare revalidation, dateable - // overdue signal from the free CMS revalidation list). - "npi-revalidation": { - name: "Medicare PECOS Revalidation Filing", - price_cents: 59900, - erpnext_item: "NPI-REVALIDATION", - discountable: true, - }, - "npi-reactivation": { - name: "NPI Reactivation", - price_cents: 44900, - erpnext_item: "NPI-REACTIVATION", - discountable: true, - }, - "nppes-update": { - name: "NPPES Data Update / Attestation", - price_cents: 34900, - erpnext_item: "NPPES-UPDATE", - discountable: true, - }, - "medicare-enrollment": { - name: "Medicare Enrollment (PECOS)", - price_cents: 69900, - erpnext_item: "MEDICARE-ENROLLMENT", - discountable: true, - }, - "oig-sam-screening": { - name: "OIG/SAM Exclusion Screening (Annual)", - price_cents: 29900, - erpnext_item: "OIG-SAM-SCREENING", - discountable: false, - }, - "provider-compliance-bundle": { - name: "Provider Compliance Bundle (Annual)", - price_cents: 89900, - erpnext_item: "PROVIDER-COMPLIANCE-BUNDLE", - discountable: true, - }, -}; // ── Intake validation map ───────────────────────────────────────────── // diff --git a/api/src/service-catalog.ts b/api/src/service-catalog.ts new file mode 100644 index 0000000..9ba9765 --- /dev/null +++ b/api/src/service-catalog.ts @@ -0,0 +1,494 @@ +/** + * Canonical compliance service catalog -- SINGLE SOURCE OF TRUTH for pricing. + * + * This is the authority: checkout charges order.service_fee_cents which is set + * from this catalog at order-creation time. The public site does NOT keep its + * own copy; site/src/lib/service-catalog.generated.ts is generated from this + * file by scripts/gen-service-catalog.mjs (run automatically before site build), + * and intake_manifest.ts re-exports it as SERVICE_META. To change a price, edit + * ONLY this file. + * + * Keep slug set in sync with: + * - api/src/routes/compliance-orders.ts REQUIRED_FIELDS (intake validation) + * - scripts/workers/services/__init__.py SERVICE_HANDLERS (fulfillment) + */ + +export interface ComplianceService { + name: string; + price_cents: number; + gov_fee_cents?: number; + gov_fee_label?: string; + erpnext_item: string; + discountable: boolean; +} + +export const COMPLIANCE_SERVICES: Record = { + "fcc-compliance-checkup": { + name: "FCC Carrier Compliance Checkup", + price_cents: 79900, + erpnext_item: "FCC-COMPLIANCE-CHECKUP", + discountable: true, + }, + "fcc-499a": { + name: "FCC Form 499-A Filing", + price_cents: 49900, + erpnext_item: "FCC-499A", + discountable: true, + }, + "fcc-499a-zero": { + name: "FCC Form 499-A Filing (Zero Revenue)", + price_cents: 17900, + erpnext_item: "FCC-499A-ZERO", + discountable: true, + }, + "fcc-499a-499q": { + name: "FCC Form 499-A + 499-Q Bundle", + price_cents: 59900, + erpnext_item: "FCC-499A-499Q", + discountable: true, + }, + "fcc-full-compliance": { + name: "FCC Full Compliance Bundle", + price_cents: 149900, + erpnext_item: "FCC-FULL-COMPLIANCE", + discountable: true, + }, + "cpni-certification": { + name: "CPNI Annual Certification", + price_cents: 19900, + erpnext_item: "CPNI-CERT", + discountable: true, + }, + "rmd-filing": { + name: "RMD Registration / Recertification", + price_cents: 24900, + gov_fee_cents: 10000, + gov_fee_label: "FCC RMD filing fee", + erpnext_item: "RMD-FILING", + discountable: true, + }, + "stir-shaken": { + name: "STIR/SHAKEN Implementation Assistance", + price_cents: 49900, + erpnext_item: "STIR-SHAKEN", + discountable: true, + }, + "dc-agent": { + name: "D.C. Registered Agent (Annual)", + price_cents: 14900, + erpnext_item: "DC-AGENT", + discountable: false, + }, + // BDC filings — the FCC retired Form 477 in Dec 2022 and folded voice + // subscription data into BDC. Broadband-only and voice-only SKUs let + // carriers pay for just what they need; bdc-filing remains as a bundle. + "bdc-broadband": { + name: "BDC Broadband Deployment Filing", + price_cents: 24900, + erpnext_item: "BDC-BROADBAND", + discountable: true, + }, + "bdc-voice": { + name: "BDC Voice Subscription Filing (formerly Form 477 Voice)", + price_cents: 19900, + erpnext_item: "BDC-VOICE", + discountable: true, + }, + "bdc-filing": { + name: "BDC Filing (Broadband + Voice)", + price_cents: 34900, + erpnext_item: "BDC-FILING", + discountable: true, + }, + // New-carrier entry point — register in CORES + obtain FRN + "cores-frn-registration": { + name: "CORES / FRN Registration", + price_cents: 14900, + erpnext_item: "CORES-FRN", + discountable: true, + }, + // 499-A New Filer Registration (distinct from the annual revenue filing) + "fcc-499-initial": { + name: "Form 499 Initial Registration", + price_cents: 34900, + erpnext_item: "FCC-499-INITIAL", + discountable: true, + }, + // CALEA System Security & Integrity plan (47 USC 229) + "calea-ssi": { + name: "CALEA SSI Plan", + price_cents: 79900, + erpnext_item: "CALEA-SSI", + discountable: true, + }, + // 47 CFR § 63.11 Foreign Carrier Affiliation Notification + "fcc-63-11-notification": { + name: "Foreign Carrier Affiliation Notification (47 CFR § 63.11)", + price_cents: 34900, + erpnext_item: "FCC-63-11", + discountable: true, + }, + // One-click onboarding for a brand-new carrier (composes 5 filings) + "new-carrier-bundle": { + name: "New Carrier Onboarding Bundle (FRN + 499 Initial + RMD + CPNI + CALEA)", + price_cents: 179900, + erpnext_item: "NEW-CARRIER-BUNDLE", + discountable: true, + }, + // NECA OCN registration — required for VoIP/IPES carriers that need + // their own Operating Company Number for STIR/SHAKEN signing, LRN + // assignments, or direct numbering authority. NECA charges $550 + // standard / $675 expedited; we pass through + margin for prep work. + "ocn-registration": { + name: "NECA OCN + Sponsoring CLEC Agreement", + price_cents: 265000, + erpnext_item: "OCN-REGISTRATION", + discountable: false, + }, + "fcc-499q": { + name: "FCC Form 499-Q Quarterly Filing", + price_cents: 0, // included in 499-A+Q bundle — not sold standalone + erpnext_item: "FCC-499Q", + discountable: false, + }, + "fcc-499a-discontinuance": { + name: "Form 499-A Discontinuance Filing", + price_cents: 29900, + erpnext_item: "499A-DISCONTINUANCE", + discountable: false, + }, + // Standalone CDR Traffic Study — customers who want the classified + // study (unlocks the current reporting year) without buying the + // full 499-A filing service. Either slug unlocks the study via the + // cdr_study_access_grants paywall hook. + "cdr-analysis": { + name: "CDR Traffic Study (Annual)", + price_cents: 49900, + erpnext_item: "CDR-ANALYSIS", + discountable: true, + }, + // CDR storage / processing tiers. Annual subscription; renew alongside + // the filing. Each tier is additive — customer picks the smallest tier + // that covers their worst of (storage bytes, classified rows). + "cdr-storage-tier1": { + name: "CDR Storage Tier 1 (50 GB / 50M calls)", + price_cents: 9900, + erpnext_item: "CDR-STORAGE-TIER1", + discountable: false, + }, + "cdr-storage-tier2": { + name: "CDR Storage Tier 2 (250 GB / 250M calls)", + price_cents: 29900, + erpnext_item: "CDR-STORAGE-TIER2", + discountable: false, + }, + "cdr-storage-tier3": { + name: "CDR Storage Tier 3 (1 TB / 1B calls)", + price_cents: 79900, + erpnext_item: "CDR-STORAGE-TIER3", + discountable: false, + }, + // ── Foreign qualification (Certificate of Authority) ───────────────── + // Per-state fees are added on top of these flat service fees at order + // time (state fee + NWRA RA wholesale, looked up from jurisdictions + + // state_filing_fees). Handler fans out one filing per selected state. + // + // Pricing model: + // - `foreign-qualification-single`: flat service fee ($149) + state + // fee + optional NWRA RA. One state per order. + // - `foreign-qualification-multi`: discounted per-state service fee + // ($99) + state fees + RAs. For FCC carriers filing across their + // operating territory. + "foreign-qualification-single": { + name: "Foreign Qualification (One State)", + price_cents: 14900, + erpnext_item: "FOREIGN-QUAL-SINGLE", + discountable: true, + }, + "foreign-qualification-multi": { + name: "Foreign Qualification (Multi-State)", + price_cents: 9900, // per-state service fee + erpnext_item: "FOREIGN-QUAL-MULTI", + discountable: true, + }, + // State PUC/PSC Registration — $399 per-state service fee + state + // filing fees. Bond procurement coordinated separately. + "state-puc": { + name: "State PUC/PSC Registration", + price_cents: 39900, // per-state service fee + erpnext_item: "STATE-PUC", + discountable: true, + }, + // ── DOT / FMCSA Motor Carrier Services ────────────────────────────── + "mcs150-update": { + name: "MCS-150 Biennial Update", + price_cents: 3900, + erpnext_item: "MCS150-UPDATE", + discountable: true, + }, + "boc3-filing": { + name: "BOC-3 Process Agent Filing", + price_cents: 8900, + erpnext_item: "BOC3-FILING", + discountable: false, // passthrough cost — $25 to Process Agent LLC + }, + "ucr-registration": { + name: "UCR Annual Registration", + price_cents: 3900, + gov_fee_cents: 4600, // minimum tier ($46 for 0-2 power units) + gov_fee_label: "UCR registration fee (tier-based, minimum shown)", + erpnext_item: "UCR-REGISTRATION", + discountable: true, + }, + "dot-registration": { + name: "New USDOT Number Registration", + price_cents: 8900, + erpnext_item: "DOT-REGISTRATION", + discountable: true, + }, + "mc-authority": { + name: "MC Operating Authority Application", + price_cents: 19900, // $199 + $300 FMCSA gov fee + gov_fee_cents: 30000, // $300 FMCSA application fee + gov_fee_label: "FMCSA operating authority application fee", + erpnext_item: "MC-AUTHORITY", + discountable: false, // $300 FMCSA gov fee makes this non-discountable + }, + "usdot-reactivation": { + name: "USDOT Number Reactivation", + price_cents: 14900, + erpnext_item: "USDOT-REACTIVATION", + discountable: true, + }, + "emergency-temporary-authority": { + name: "Emergency Temporary Authority (ETA)", + price_cents: 49900, + erpnext_item: "EMERGENCY-TEMP-AUTH", + discountable: false, // urgent service, premium pricing + }, + "dot-drug-alcohol": { + name: "DOT Drug & Alcohol Compliance Program", + price_cents: 14900, + erpnext_item: "DOT-DRUG-ALCOHOL", + discountable: true, // instant PDF binder we generate — our own deliverable, no passthrough cost + }, + "dot-audit-prep": { + name: "New Entrant Safety Audit Preparation", + price_cents: 39900, + erpnext_item: "DOT-AUDIT-PREP", + discountable: true, + }, + "dot-full-compliance": { + name: "DOT Full Compliance Bundle", + price_cents: 39900, // $399 — includes MCS-150+BOC-3+UCR+D&A+Audit ($775 individual) + erpnext_item: "DOT-FULL-COMPLIANCE", + discountable: true, + }, + "carrier-closeout": { + name: "Trucking Wrap-Up (USDOT Shutdown)", + price_cents: 19900, // $199 — final MCS-150 (out of business) + MC revoke + UCR cancel + state account closures + erpnext_item: "CARRIER-CLOSEOUT", + discountable: true, + }, + "entity-dissolution": { + name: "Business Entity Dissolution (LLC/Corp)", + price_cents: 4900, // $49 add-on to the wrap-up — LLC/Corp dissolution + final report; state filing fees billed separately + gov_fee_label: "State dissolution filing fee (varies by state, billed at cost)", + erpnext_item: "ENTITY-DISSOLUTION", + discountable: true, + }, + // ── State-Level Trucking Compliance ────────────────────────────────── + // For these services the price_cents is our flat SERVICE fee only. The + // actual state government charges (apportioned IRP registration, IFTA decal + // fees, weight-distance/HUT account setup, permit/decal costs) vary by the + // carrier's fleet weight, mileage, and base state, so they are passed + // through AT COST and billed separately once the state issues the invoice — + // we never mark them up. The gov_fee_label is shown to the customer at + // checkout so the pass-through is disclosed up front. + "irp-registration": { + name: "IRP Registration Assistance", + price_cents: 10900, // + state fees (apportioned registration billed at cost) + gov_fee_label: "Apportioned IRP registration & plate fees (state, by jurisdictions + weight, billed at cost)", + erpnext_item: "IRP-REGISTRATION", + discountable: true, + }, + "ifta-application": { + name: "IFTA Application + Decals", + price_cents: 10900, // + state fees + gov_fee_label: "IFTA license & decal fees (state, billed at cost)", + erpnext_item: "IFTA-APPLICATION", + discountable: true, + }, + "ifta-quarterly": { + name: "IFTA Quarterly Filing", + price_cents: 10900, + gov_fee_label: "IFTA taxes due (remitted to the state at cost based on your mileage)", + erpnext_item: "IFTA-QUARTERLY", + discountable: true, + }, + "or-weight-mile-tax": { + name: "Oregon Weight-Mile Tax Setup", + price_cents: 10900, // + state fees + gov_fee_label: "Oregon weight-mile tax account & bond/deposit (state, billed at cost)", + erpnext_item: "OR-WEIGHT-MILE-TAX", + discountable: true, + }, + "ny-hut-registration": { + name: "NY Highway Use Tax Registration", + price_cents: 10900, // + state fees + gov_fee_label: "NY HUT certificate & decal fees (state, billed at cost)", + erpnext_item: "NY-HUT-REGISTRATION", + discountable: true, + }, + "ky-kyu-registration": { + name: "KY Weight-Distance Tax Setup", + price_cents: 10900, // + state fees + gov_fee_label: "KYU weight-distance account fees (state, billed at cost)", + erpnext_item: "KY-KYU-REGISTRATION", + discountable: true, + }, + "nm-weight-distance": { + name: "NM Weight-Distance Tax Setup", + price_cents: 10900, // + state fees + gov_fee_label: "NM weight-distance permit & account fees (state, billed at cost)", + erpnext_item: "NM-WEIGHT-DISTANCE", + discountable: true, + }, + "ct-highway-use-fee": { + name: "CT Highway Use Fee Setup", + price_cents: 10900, // + state fees + gov_fee_label: "CT Highway Use Fee registration (state, billed at cost)", + erpnext_item: "CT-HIGHWAY-USE-FEE", + discountable: true, + }, + "ca-mcp-carb": { + name: "California MCP + CARB Compliance", + price_cents: 22900, // $229 + state fees (CA is more complex: MCP + CARB) + gov_fee_label: "CA MCP permit fee + CARB/Clean Truck Check fees (state, by fleet size, billed at cost)", + erpnext_item: "CA-MCP-CARB", + discountable: true, + }, + "state-dot-registration": { + name: "State DOT Registration", + price_cents: 10900, // + state fees + gov_fee_label: "State DOT/intrastate registration fee (state, billed at cost)", + erpnext_item: "STATE-DOT-REGISTRATION", + discountable: true, + }, + "intrastate-authority": { + name: "Intrastate Operating Authority", + price_cents: 10900, // + state fees + gov_fee_label: "State intrastate authority filing fee (state, billed at cost)", + erpnext_item: "INTRASTATE-AUTHORITY", + discountable: true, + }, + "osow-permit": { + name: "Oversize/Overweight Permit", + price_cents: 10900, // + state permit fees + gov_fee_label: "State oversize/overweight permit fees (per trip/route, billed at cost)", + erpnext_item: "OSOW-PERMIT", + discountable: true, + }, + "state-trucking-bundle": { + name: "State Compliance Bundle", + price_cents: 49900, // $499 — IRP+IFTA+weight tax+intrastate ($796 individual) + gov_fee_label: "State registration, decal & tax fees for each included filing (billed at cost)", + erpnext_item: "STATE-TRUCKING-BUNDLE", + discountable: true, + }, + // ── Hazmat / Emissions ─────────────────────────────────────────────── + "hazmat-phmsa": { + name: "PHMSA Hazmat Registration", + price_cents: 14900, // $149 admin-assisted; PHMSA gov fee billed at cost + gov_fee_label: "PHMSA registration fee ($25 + $250-$3,000 processing, by business size, billed at cost)", + erpnext_item: "HAZMAT-PHMSA", + discountable: true, + }, + "state-emissions": { + name: "State Clean-Truck / Emissions Compliance", + price_cents: 10900, // $109 + state fees — NY/CO/MD/NJ/MA clean-truck / ACT advisory + registration assist + erpnext_item: "STATE-EMISSIONS", + 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, + }, + "virtual-mailbox": { + name: "Virtual Mailbox (1 Year)", + price_cents: 14900, + erpnext_item: "VIRTUAL-MAILBOX", + discountable: true, + }, + "ein-application": { + name: "EIN Application (IRS SS-4)", + price_cents: 7900, + erpnext_item: "EIN-APPLICATION", + discountable: true, + }, + "entity-upgrade-bundle": { + name: "Entity Upgrade Package (Sole Prop → LLC)", + price_cents: 59900, + erpnext_item: "ENTITY-UPGRADE-BUNDLE", + discountable: true, + }, + // ── Healthcare / NPI compliance ────────────────────────────────────── + // CMS/NPPES provider compliance. Handlers are review-staged (a human + // files in PECOS/NPPES) — same safety default as the FCC auto-filing + // toggle. HIPAA is intentionally out of scope (separate specialty). + // Flagship = npi-revalidation (CMS 5-yr Medicare revalidation, dateable + // overdue signal from the free CMS revalidation list). + "npi-revalidation": { + name: "Medicare PECOS Revalidation Filing", + price_cents: 59900, + erpnext_item: "NPI-REVALIDATION", + discountable: true, + }, + "npi-reactivation": { + name: "NPI Reactivation", + price_cents: 44900, + erpnext_item: "NPI-REACTIVATION", + discountable: true, + }, + "nppes-update": { + name: "NPPES Data Update / Attestation", + price_cents: 34900, + erpnext_item: "NPPES-UPDATE", + discountable: true, + }, + "medicare-enrollment": { + name: "Medicare Enrollment (PECOS)", + price_cents: 69900, + erpnext_item: "MEDICARE-ENROLLMENT", + discountable: true, + }, + "oig-sam-screening": { + name: "OIG/SAM Exclusion Screening (Annual)", + price_cents: 29900, + erpnext_item: "OIG-SAM-SCREENING", + discountable: false, + }, + "provider-compliance-bundle": { + name: "Provider Compliance Bundle (Annual)", + price_cents: 89900, + erpnext_item: "PROVIDER-COMPLIANCE-BUNDLE", + discountable: true, + }, +}; + diff --git a/deploy.sh b/deploy.sh index 1cda66f..9ea2f6b 100755 --- a/deploy.sh +++ b/deploy.sh @@ -31,6 +31,16 @@ echo "" echo "=== Syncing canonical site header (Services dropdown) ===" python3 scripts/sync_nav.py +# Single source of truth for service pricing: the API catalog +# (api/src/service-catalog.ts) is the authority (it is what checkout charges). +# The site build context is ./site only and cannot read ../api, so we generate +# site/src/lib/service-catalog.generated.ts here on the host before the docker +# build. This guarantees displayed prices == charged prices. +echo "" +echo "=== Generating site service catalog from API source ===" +node scripts/gen-service-catalog.mjs +node scripts/check-service-catalog-drift.mjs + # Render the Alertmanager config from its template. Alertmanager does NOT expand # ${ENV} placeholders in its YAML, so the raw template (with ${TELEGRAM_BOT_TOKEN} # / ${TELEGRAM_CHAT_ID}) crash-loops it ("cannot unmarshal !!str `${TELEG...`"). diff --git a/scripts/check-service-catalog-drift.mjs b/scripts/check-service-catalog-drift.mjs new file mode 100644 index 0000000..e9ceb99 --- /dev/null +++ b/scripts/check-service-catalog-drift.mjs @@ -0,0 +1,52 @@ +#!/usr/bin/env node +/** + * Drift guard: the site's generated catalog MUST match the API source. + * + * Run in CI / pre-deploy. Regenerates the catalog into memory from + * api/src/service-catalog.ts and compares it to the committed + * site/src/lib/service-catalog.generated.ts. Fails (exit 1) on any difference, + * so a price edited in the API but not regenerated, or the generated file + * hand-edited, is caught before it reaches customers. + * + * Usage: node scripts/check-service-catalog-drift.mjs + */ +import { readFileSync } from "node:fs"; +import { fileURLToPath } from "node:url"; +import { dirname, resolve } from "node:path"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const ROOT = resolve(__dirname, ".."); +const GEN = resolve(ROOT, "site/src/lib/service-catalog.generated.ts"); + +// Regenerate to a temp string by invoking the generator's parse logic inline. +const SRC = resolve(ROOT, "api/src/service-catalog.ts"); +const tsSource = readFileSync(SRC, "utf8"); +const m = tsSource.match(/export const COMPLIANCE_SERVICES[^=]*=\s*(\{[\s\S]*?\n\});/); +if (!m) { console.error("drift-check: cannot parse API catalog"); process.exit(1); } +const apiCatalog = Function(`"use strict"; return (${m[1]});`)(); + +// Parse the committed generated file's SERVICE_META. +const genSource = readFileSync(GEN, "utf8"); +const gm = genSource.match(/export const SERVICE_META[^=]*=\s*(\{[\s\S]*?\n\});/); +if (!gm) { console.error("drift-check: cannot parse generated SERVICE_META"); process.exit(1); } +const gen = Function(`"use strict"; return (${gm[1]});`)(); + +let problems = []; +for (const slug of Object.keys(apiCatalog)) { + const a = apiCatalog[slug]; + const g = gen[slug]; + if (!g) { problems.push(`${slug}: missing from generated file`); continue; } + if (a.price_cents !== g.price_cents) problems.push(`${slug}: price API=${a.price_cents} generated=${g.price_cents}`); + if (a.name !== g.name) problems.push(`${slug}: name mismatch`); + if ((a.gov_fee_label || undefined) !== (g.gov_fee_label || undefined)) problems.push(`${slug}: gov_fee_label mismatch`); +} +for (const slug of Object.keys(gen)) { + if (!apiCatalog[slug]) problems.push(`${slug}: in generated file but not in API`); +} + +if (problems.length) { + console.error("SERVICE CATALOG DRIFT DETECTED (run: node scripts/gen-service-catalog.mjs):"); + for (const p of problems) console.error(" - " + p); + process.exit(1); +} +console.log(`drift-check: OK -- ${Object.keys(apiCatalog).length} services, API and generated catalog match.`); diff --git a/scripts/gen-service-catalog.mjs b/scripts/gen-service-catalog.mjs new file mode 100644 index 0000000..c8bacf3 --- /dev/null +++ b/scripts/gen-service-catalog.mjs @@ -0,0 +1,72 @@ +#!/usr/bin/env node +/** + * Generate the site's read-only service catalog from the API's single source. + * + * Source : api/src/service-catalog.ts (COMPLIANCE_SERVICES -- the authority) + * Output : site/src/lib/service-catalog.generated.ts (SERVICE_META for display) + * + * Run automatically before the site build (site `prebuild` script). Never edit + * the generated file by hand. To change a price or name, edit the API catalog. + * + * We import the API module directly (it is plain TS with a literal object), via + * a tiny transpile-free parse: the catalog is a static object literal, so we + * evaluate it in a sandboxed module context. + */ +import { readFileSync, writeFileSync } from "node:fs"; +import { fileURLToPath } from "node:url"; +import { dirname, resolve } from "node:path"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const ROOT = resolve(__dirname, ".."); +const SRC = resolve(ROOT, "api/src/service-catalog.ts"); +const OUT = resolve(ROOT, "site/src/lib/service-catalog.generated.ts"); + +const tsSource = readFileSync(SRC, "utf8"); + +// Extract the object literal assigned to COMPLIANCE_SERVICES. +const m = tsSource.match(/export const COMPLIANCE_SERVICES[^=]*=\s*(\{[\s\S]*?\n\});/); +if (!m) { + console.error("[gen-service-catalog] could not locate COMPLIANCE_SERVICES object literal in", SRC); + process.exit(1); +} +// The object literal is valid JS (string keys, number/bool/string values, trailing commas). +// Evaluate it safely in an isolated function scope (no access to anything). +let catalog; +try { + catalog = Function(`"use strict"; return (${m[1]});`)(); +} catch (e) { + console.error("[gen-service-catalog] failed to evaluate catalog literal:", e); + process.exit(1); +} + +const slugs = Object.keys(catalog).sort(); +const lines = slugs.map((slug) => { + const s = catalog[slug]; + const parts = [`name: ${JSON.stringify(s.name)}`, `price_cents: ${s.price_cents}`]; + if (s.gov_fee_label) parts.push(`gov_fee_label: ${JSON.stringify(s.gov_fee_label)}`); + return ` ${JSON.stringify(slug)}: { ${parts.join(", ")} },`; +}); + +const out = `/** + * AUTO-GENERATED -- DO NOT EDIT. + * + * Source of truth: api/src/service-catalog.ts (COMPLIANCE_SERVICES). + * Regenerate with: node scripts/gen-service-catalog.mjs (runs on site prebuild). + * + * Display-only subset (name, price_cents, gov_fee_label) of the API catalog, + * so the public site can never drift from what the API actually charges. + */ + +export interface ServiceMeta { + name: string; + price_cents: number; + gov_fee_label?: string; +} + +export const SERVICE_META: Record = { +${lines.join("\n")} +}; +`; + +writeFileSync(OUT, out); +console.log(`[gen-service-catalog] wrote ${slugs.length} services -> ${OUT}`); diff --git a/site/src/lib/intake_manifest.ts b/site/src/lib/intake_manifest.ts index 51dcbfc..084c722 100644 --- a/site/src/lib/intake_manifest.ts +++ b/site/src/lib/intake_manifest.ts @@ -165,67 +165,11 @@ export const CATEGORY_GATED_STEPS: Record = { audio_bridging: ["audio_bridging"], }; -// ── Pricing + human name lookup (mirrors COMPLIANCE_SERVICES server-side) -export const SERVICE_META: Record = { - "fcc-compliance-checkup": { name: "FCC Carrier Compliance Checkup", price_cents: 79900 }, - "fcc-499a": { name: "FCC Form 499-A Filing", price_cents: 49900 }, - "fcc-499a-499q": { name: "FCC Form 499-A + 499-Q Bundle", price_cents: 59900 }, - "fcc-full-compliance": { name: "FCC Full Compliance Bundle", price_cents: 149900 }, - "cpni-certification": { name: "CPNI Annual Certification", price_cents: 19900 }, - "rmd-filing": { name: "RMD Registration / Recertification", price_cents: 24900 }, // + $100 FCC filing fee passthrough - "stir-shaken": { name: "STIR/SHAKEN Implementation Assistance", price_cents: 49900 }, - "dc-agent": { name: "D.C. Registered Agent (Annual)", price_cents: 14900 }, - "bdc-broadband": { name: "BDC Broadband Deployment Filing", price_cents: 24900 }, - "bdc-voice": { name: "BDC Voice Subscription (formerly Form 477)", price_cents: 19900 }, - "bdc-filing": { name: "BDC Filing (Broadband + Voice)", price_cents: 34900 }, - "ocn-registration": { name: "NECA OCN / Company Code Registration", price_cents: 265000 }, - "cdr-analysis": { name: "CDR Traffic Study (Annual)", price_cents: 49900 }, - "cores-frn-registration": { name: "CORES / FRN Registration", price_cents: 14900 }, - "fcc-499-initial": { name: "Form 499 Initial Registration", price_cents: 34900 }, - "calea-ssi": { name: "CALEA SSI Plan", price_cents: 79900 }, - "fcc-63-11-notification": { name: "Foreign Carrier Affiliation Notification", price_cents: 34900 }, - "new-carrier-bundle": { name: "New Carrier Onboarding Bundle", price_cents: 179900 }, - "foreign-qualification-single": { name: "Foreign Qualification (One State)", price_cents: 14900 }, - "foreign-qualification-multi": { name: "Foreign Qualification (Multi-State)", price_cents: 9900 }, - // DOT / FMCSA - "mcs150-update": { name: "MCS-150 Biennial Update", price_cents: 3900 }, - "boc3-filing": { name: "BOC-3 Process Agent Filing", price_cents: 8900 }, - "ucr-registration": { name: "UCR Annual Registration", price_cents: 3900, gov_fee_label: "UCR registration fee (tier-based, minimum shown)" }, - "dot-registration": { name: "New USDOT Number Registration", price_cents: 8900 }, - "mc-authority": { name: "MC Operating Authority Application", price_cents: 19900, gov_fee_label: "FMCSA operating authority application fee" }, - "dot-drug-alcohol": { name: "DOT Drug & Alcohol Compliance Program", price_cents: 14900 }, - "dot-audit-prep": { name: "New Entrant Safety Audit Preparation", price_cents: 39900 }, - "dot-full-compliance": { name: "DOT Full Compliance Bundle", price_cents: 39900 }, - "usdot-reactivation": { name: "USDOT Reactivation", price_cents: 14900 }, - // State-level trucking - "irp-registration": { name: "IRP Registration Assistance", price_cents: 10900, gov_fee_label: "Apportioned IRP registration and plate fees (state, by jurisdictions and weight)" }, - "ifta-application": { name: "IFTA Application + Decals", price_cents: 10900, gov_fee_label: "IFTA license and decal fees (state)" }, - "ifta-quarterly": { name: "IFTA Quarterly Filing", price_cents: 10900, gov_fee_label: "IFTA taxes due, based on your mileage" }, - "or-weight-mile-tax": { name: "Oregon Weight-Mile Tax Setup", price_cents: 10900, gov_fee_label: "Oregon weight-mile tax account and bond/deposit fees (state)" }, - "ny-hut-registration": { name: "NY Highway Use Tax Registration", price_cents: 10900, gov_fee_label: "NY HUT certificate and decal fees (state)" }, - "ky-kyu-registration": { name: "KY Weight-Distance Tax Setup", price_cents: 10900, gov_fee_label: "KYU weight-distance account fees (state)" }, - "nm-weight-distance": { name: "NM Weight-Distance Tax Setup", price_cents: 10900, gov_fee_label: "NM weight-distance permit and account fees (state)" }, - "ct-highway-use-fee": { name: "CT Highway Use Fee Setup", price_cents: 10900, gov_fee_label: "CT Highway Use Fee registration and usage fees (state)" }, - "ca-mcp-carb": { name: "California MCP + CARB Compliance", price_cents: 22900, gov_fee_label: "CA MCP permit fee and CARB/Clean Truck Check fees (state, by fleet size)" }, - "state-dot-registration": { name: "State DOT Registration", price_cents: 10900, gov_fee_label: "State DOT/intrastate registration fee (state)" }, - "intrastate-authority": { name: "Intrastate Operating Authority", price_cents: 10900, gov_fee_label: "State intrastate authority filing fee" }, - "osow-permit": { name: "Oversize/Overweight Permit", price_cents: 10900, gov_fee_label: "State oversize/overweight permit fees, per trip/route" }, - "state-trucking-bundle": { name: "State Compliance Bundle", price_cents: 49900, gov_fee_label: "State registration, decal and tax fees for each included filing" }, - // Hazmat / emissions - "hazmat-phmsa": { name: "PHMSA Hazmat Registration", price_cents: 14900, gov_fee_label: "PHMSA registration fee, by business size" }, - "state-emissions": { name: "State Clean-Truck / Emissions Compliance", price_cents: 10900 }, - // DOT lifecycle - "emergency-temporary-authority": { name: "Emergency Temporary Authority", price_cents: 49900, gov_fee_label: "FMCSA emergency/temporary authority fee" }, - "carrier-closeout": { name: "Carrier Closeout / Deactivation", price_cents: 19900 }, - "entity-dissolution": { name: "Entity Dissolution Filing", price_cents: 4900, gov_fee_label: "State dissolution filing fee" }, - // Healthcare / NPI - "npi-revalidation": { name: "Medicare PECOS Revalidation Filing", price_cents: 59900 }, - "npi-reactivation": { name: "NPI Reactivation", price_cents: 44900 }, - "nppes-update": { name: "NPPES Data Update / Attestation", price_cents: 34900 }, - "medicare-enrollment": { name: "Medicare Enrollment (PECOS)", price_cents: 69900 }, - "oig-sam-screening": { name: "OIG/SAM Exclusion Screening (Annual)", price_cents: 29900 }, - "provider-compliance-bundle": { name: "Provider Compliance Bundle (Annual)", price_cents: 89900 }, -}; +// ── Pricing + human name lookup ────────────────────────────────────────── +// Re-exported from the generated catalog so the site can never drift from the +// API's prices. SINGLE SOURCE OF TRUTH: api/src/service-catalog.ts. +// Regenerated by scripts/gen-service-catalog.mjs on site prebuild. +export { SERVICE_META, type ServiceMeta } from "./service-catalog.generated.js"; export function formatUSD(cents: number): string { return `$${(cents / 100).toLocaleString("en-US", { diff --git a/site/src/lib/service-catalog.generated.ts b/site/src/lib/service-catalog.generated.ts new file mode 100644 index 0000000..8111e97 --- /dev/null +++ b/site/src/lib/service-catalog.generated.ts @@ -0,0 +1,84 @@ +/** + * AUTO-GENERATED -- DO NOT EDIT. + * + * Source of truth: api/src/service-catalog.ts (COMPLIANCE_SERVICES). + * Regenerate with: node scripts/gen-service-catalog.mjs (runs on site prebuild). + * + * Display-only subset (name, price_cents, gov_fee_label) of the API catalog, + * so the public site can never drift from what the API actually charges. + */ + +export interface ServiceMeta { + name: string; + price_cents: number; + gov_fee_label?: string; +} + +export const SERVICE_META: Record = { + "annual-report-filing": { name: "Annual Report / Franchise Tax Filing", price_cents: 14900 }, + "bdc-broadband": { name: "BDC Broadband Deployment Filing", price_cents: 24900 }, + "bdc-filing": { name: "BDC Filing (Broadband + Voice)", price_cents: 34900 }, + "bdc-voice": { name: "BDC Voice Subscription Filing (formerly Form 477 Voice)", price_cents: 19900 }, + "boc3-filing": { name: "BOC-3 Process Agent Filing", price_cents: 8900 }, + "ca-mcp-carb": { name: "California MCP + CARB Compliance", price_cents: 22900, gov_fee_label: "CA MCP permit fee + CARB/Clean Truck Check fees (state, by fleet size, billed at cost)" }, + "calea-ssi": { name: "CALEA SSI Plan", price_cents: 79900 }, + "carrier-closeout": { name: "Trucking Wrap-Up (USDOT Shutdown)", price_cents: 19900 }, + "cdr-analysis": { name: "CDR Traffic Study (Annual)", price_cents: 49900 }, + "cdr-storage-tier1": { name: "CDR Storage Tier 1 (50 GB / 50M calls)", price_cents: 9900 }, + "cdr-storage-tier2": { name: "CDR Storage Tier 2 (250 GB / 250M calls)", price_cents: 29900 }, + "cdr-storage-tier3": { name: "CDR Storage Tier 3 (1 TB / 1B calls)", price_cents: 79900 }, + "cores-frn-registration": { name: "CORES / FRN Registration", price_cents: 14900 }, + "cpni-certification": { name: "CPNI Annual Certification", price_cents: 19900 }, + "ct-highway-use-fee": { name: "CT Highway Use Fee Setup", price_cents: 10900, gov_fee_label: "CT Highway Use Fee registration (state, billed at cost)" }, + "dc-agent": { name: "D.C. Registered Agent (Annual)", price_cents: 14900 }, + "dot-audit-prep": { name: "New Entrant Safety Audit Preparation", price_cents: 39900 }, + "dot-drug-alcohol": { name: "DOT Drug & Alcohol Compliance Program", price_cents: 14900 }, + "dot-full-compliance": { name: "DOT Full Compliance Bundle", price_cents: 39900 }, + "dot-registration": { name: "New USDOT Number Registration", price_cents: 8900 }, + "ein-application": { name: "EIN Application (IRS SS-4)", price_cents: 7900 }, + "emergency-temporary-authority": { name: "Emergency Temporary Authority (ETA)", price_cents: 49900 }, + "entity-dissolution": { name: "Business Entity Dissolution (LLC/Corp)", price_cents: 4900, gov_fee_label: "State dissolution filing fee (varies by state, billed at cost)" }, + "entity-reinstatement": { name: "Entity Reinstatement", price_cents: 29900 }, + "entity-upgrade-bundle": { name: "Entity Upgrade Package (Sole Prop → LLC)", price_cents: 59900 }, + "fcc-499-initial": { name: "Form 499 Initial Registration", price_cents: 34900 }, + "fcc-499a": { name: "FCC Form 499-A Filing", price_cents: 49900 }, + "fcc-499a-499q": { name: "FCC Form 499-A + 499-Q Bundle", price_cents: 59900 }, + "fcc-499a-discontinuance": { name: "Form 499-A Discontinuance Filing", price_cents: 29900 }, + "fcc-499a-zero": { name: "FCC Form 499-A Filing (Zero Revenue)", price_cents: 17900 }, + "fcc-499q": { name: "FCC Form 499-Q Quarterly Filing", price_cents: 0 }, + "fcc-63-11-notification": { name: "Foreign Carrier Affiliation Notification (47 CFR § 63.11)", price_cents: 34900 }, + "fcc-compliance-checkup": { name: "FCC Carrier Compliance Checkup", price_cents: 79900 }, + "fcc-full-compliance": { name: "FCC Full Compliance Bundle", price_cents: 149900 }, + "foreign-qualification-multi": { name: "Foreign Qualification (Multi-State)", price_cents: 9900 }, + "foreign-qualification-single": { name: "Foreign Qualification (One State)", price_cents: 14900 }, + "hazmat-phmsa": { name: "PHMSA Hazmat Registration", price_cents: 14900, gov_fee_label: "PHMSA registration fee ($25 + $250-$3,000 processing, by business size, billed at cost)" }, + "ifta-application": { name: "IFTA Application + Decals", price_cents: 10900, gov_fee_label: "IFTA license & decal fees (state, billed at cost)" }, + "ifta-quarterly": { name: "IFTA Quarterly Filing", price_cents: 10900, gov_fee_label: "IFTA taxes due (remitted to the state at cost based on your mileage)" }, + "intrastate-authority": { name: "Intrastate Operating Authority", price_cents: 10900, gov_fee_label: "State intrastate authority filing fee (state, billed at cost)" }, + "irp-registration": { name: "IRP Registration Assistance", price_cents: 10900, gov_fee_label: "Apportioned IRP registration & plate fees (state, by jurisdictions + weight, billed at cost)" }, + "ky-kyu-registration": { name: "KY Weight-Distance Tax Setup", price_cents: 10900, gov_fee_label: "KYU weight-distance account fees (state, billed at cost)" }, + "mc-authority": { name: "MC Operating Authority Application", price_cents: 19900, gov_fee_label: "FMCSA operating authority application fee" }, + "mcs150-update": { name: "MCS-150 Biennial Update", price_cents: 3900 }, + "medicare-enrollment": { name: "Medicare Enrollment (PECOS)", price_cents: 69900 }, + "new-carrier-bundle": { name: "New Carrier Onboarding Bundle (FRN + 499 Initial + RMD + CPNI + CALEA)", price_cents: 179900 }, + "nm-weight-distance": { name: "NM Weight-Distance Tax Setup", price_cents: 10900, gov_fee_label: "NM weight-distance permit & account fees (state, billed at cost)" }, + "npi-reactivation": { name: "NPI Reactivation", price_cents: 44900 }, + "npi-revalidation": { name: "Medicare PECOS Revalidation Filing", price_cents: 59900 }, + "nppes-update": { name: "NPPES Data Update / Attestation", price_cents: 34900 }, + "ny-hut-registration": { name: "NY Highway Use Tax Registration", price_cents: 10900, gov_fee_label: "NY HUT certificate & decal fees (state, billed at cost)" }, + "ocn-registration": { name: "NECA OCN + Sponsoring CLEC Agreement", price_cents: 265000 }, + "oig-sam-screening": { name: "OIG/SAM Exclusion Screening (Annual)", price_cents: 29900 }, + "or-weight-mile-tax": { name: "Oregon Weight-Mile Tax Setup", price_cents: 10900, gov_fee_label: "Oregon weight-mile tax account & bond/deposit (state, billed at cost)" }, + "osow-permit": { name: "Oversize/Overweight Permit", price_cents: 10900, gov_fee_label: "State oversize/overweight permit fees (per trip/route, billed at cost)" }, + "provider-compliance-bundle": { name: "Provider Compliance Bundle (Annual)", price_cents: 89900 }, + "registered-agent": { name: "Registered Agent Service (1 Year)", price_cents: 9900 }, + "rmd-filing": { name: "RMD Registration / Recertification", price_cents: 24900, gov_fee_label: "FCC RMD filing fee" }, + "state-dot-registration": { name: "State DOT Registration", price_cents: 10900, gov_fee_label: "State DOT/intrastate registration fee (state, billed at cost)" }, + "state-emissions": { name: "State Clean-Truck / Emissions Compliance", price_cents: 10900 }, + "state-puc": { name: "State PUC/PSC Registration", price_cents: 39900 }, + "state-trucking-bundle": { name: "State Compliance Bundle", price_cents: 49900, gov_fee_label: "State registration, decal & tax fees for each included filing (billed at cost)" }, + "stir-shaken": { name: "STIR/SHAKEN Implementation Assistance", price_cents: 49900 }, + "ucr-registration": { name: "UCR Annual Registration", price_cents: 3900, gov_fee_label: "UCR registration fee (tier-based, minimum shown)" }, + "usdot-reactivation": { name: "USDOT Number Reactivation", price_cents: 14900 }, + "virtual-mailbox": { name: "Virtual Mailbox (1 Year)", price_cents: 14900 }, +};