From 07027acd52b37f88a9c36c094092f690f8d0309f Mon Sep 17 00:00:00 2001 From: Christopher Sellers <1@christophersellers.com> Date: Wed, 28 Oct 2026 08:29:07 -0700 Subject: [PATCH 1/2] feat(site): A-2155 pricing, remove retailer deadlines and compliance overclaims - Add frontend/src/lib/pricing-terms.ts with the owner-approved terms: $999/mo per facility list, $499/mo per facility founding design partner price, $2,000 90-day pilot on 1 facility or $1,500 on conversion within 30 days, pilot fee credited to the first invoice. - /pricing always shows the approved terms; drop billing-sourced tier prices, "50% off", and annual-billing copy; add pilot FAQ. - Replace $425/$849 and tier stickers on /why-regengine, /buyer-programs (served for /retailer-readiness), /about, /supplier-compliance and /compare/*. - Remove the Albertsons deadline card from /buyer-programs. - Replace "Get Compliant", "FSMA 204 compliant" and similar overclaims with recordkeeping wording. - Ratchet copy-lint baseline down (removals only) for entries now at 0. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Christopher Sellers <1@christophersellers.com> --- .../src/__tests__/pages/about-copy.test.tsx | 7 +- .../__tests__/pages/pre-revenue-copy.test.ts | 35 +++++-- frontend/src/app/about/page.tsx | 10 +- frontend/src/app/buyer-programs/page.tsx | 26 ++--- frontend/src/app/compare/foodlogiq/page.tsx | 14 +-- frontend/src/app/compare/repositrak/page.tsx | 16 ++-- frontend/src/app/compare/tracegains/page.tsx | 10 +- frontend/src/app/compliance/labels/page.tsx | 2 +- frontend/src/app/fsma-204/page.tsx | 2 +- frontend/src/app/pricing/page.tsx | 95 +++++-------------- frontend/src/app/supplier-compliance/page.tsx | 4 +- .../src/app/tools/knowledge-graph/page.tsx | 2 +- .../components/ROICalculatorClient.tsx | 4 +- frontend/src/app/why-regengine/page.tsx | 55 +++++------ .../components/pricing/PricingPageClient.tsx | 69 +++++++------- frontend/src/lib/pricing-terms.ts | 17 ++++ scripts/copy-lint/baseline.json | 26 ----- 17 files changed, 176 insertions(+), 218 deletions(-) create mode 100644 frontend/src/lib/pricing-terms.ts diff --git a/frontend/src/__tests__/pages/about-copy.test.tsx b/frontend/src/__tests__/pages/about-copy.test.tsx index 0eb030688..ee8c44b0d 100644 --- a/frontend/src/__tests__/pages/about-copy.test.tsx +++ b/frontend/src/__tests__/pages/about-copy.test.tsx @@ -22,7 +22,8 @@ describe('about page public copy', () => { ); expect(source).not.toContain('Design-partner feedback is scoped to'); expect(source).not.toContain('quarterly release trains'); - expect(source).toContain('$425/mo'); + expect(source).toContain('List price is $999 per month, per facility.'); + expect(source).not.toContain('$425'); }); it('renders the two sentences as continuous copy', () => { @@ -34,7 +35,9 @@ describe('about page public copy', () => { expect(text).toContain( 'No committee approvals. Early tester feedback is scoped by the founder and ships when the change is ready to verify, without waiting on a large release committee.', ); - expect(text).toContain('$425/mo'); + expect(text).toContain('List price is $999 per month, per facility.'); + expect(text).toContain('The founding design partner price is $499 per month, per facility.'); + expect(text).not.toContain('$425'); expect(text).not.toContain('Customers can independently verify'); expect(text).not.toContain('Design-partner feedback is scoped to'); expect(text).not.toContain('quarterly release trains'); diff --git a/frontend/src/__tests__/pages/pre-revenue-copy.test.ts b/frontend/src/__tests__/pages/pre-revenue-copy.test.ts index 62bf50397..9c3c0a07c 100644 --- a/frontend/src/__tests__/pages/pre-revenue-copy.test.ts +++ b/frontend/src/__tests__/pages/pre-revenue-copy.test.ts @@ -47,16 +47,39 @@ describe('pre-revenue public copy', () => { } }); - it('shows no hardcoded prices on pricing surfaces', () => { + it('pricing surfaces take prices only from the approved terms module', () => { const client = read('src/components/pricing/PricingPageClient.tsx'); - expect(client).not.toContain('$425'); - expect(client).toContain('Founding rate\n'); + expect(client).toContain("from '@/lib/pricing-terms'"); + expect(client).not.toMatch(/tier\.(gaAnnual|gaMonthly|partnerAnnual|partnerMonthly)/); + expect(client).not.toContain('50% off'); + expect(client).not.toMatch(/annual billing/i); const page = read('src/app/pricing/page.tsx'); - expect(page).not.toContain('$425'); + expect(page).toContain("from '@/lib/pricing-terms'"); expect(page).not.toMatch(/gaMonthly: \d/); - expect(page).toContain('Pricing is temporarily unavailable'); - expect(page).toContain('What does the Founding rate include?'); + expect(page).toContain('How does the pilot work?'); + }); + + it('approved terms module carries the A-2155 prices and pilot terms', () => { + const terms = read('src/lib/pricing-terms.ts'); + expect(terms).toContain("'$999 per month, per facility'"); + expect(terms).toContain("'$499 per month, per facility'"); + expect(terms).toContain("'$2,000 for 90 days on 1 facility'"); + expect(terms).toContain("'$1,500 if you convert to a subscription within 30 days'"); + expect(terms).toContain('credited toward your first subscription invoice'); + }); + + it.each([ + ...PUBLIC_FILES, + 'src/app/about/page.tsx', + 'src/app/buyer-programs/page.tsx', + 'src/lib/pricing-terms.ts', + ])('%s carries no stale prices, retailer deadlines, or billed-annually terms', (file) => { + const source = read(file); + for (const stale of ['$425', '$849', '$850', '$549', '$1,099', '$639', '$1,275', 'billed annually']) { + expect(source, `${file} still contains "${stale}"`).not.toContain(stale); + } + expect(source).not.toMatch(/sysco|albertsons/i); }); it('home page and root layout never say pre-revenue (metadata and JSON-LD included)', () => { diff --git a/frontend/src/app/about/page.tsx b/frontend/src/app/about/page.tsx index 9446d6b6f..e9b7f36c7 100644 --- a/frontend/src/app/about/page.tsx +++ b/frontend/src/app/about/page.tsx @@ -20,11 +20,11 @@ import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; export const metadata: Metadata = { - title: "About RegEngine | FSMA 204 Compliance Infrastructure", + title: "About RegEngine | FSMA 204 Recordkeeping Infrastructure", description: "RegEngine was built by Christopher Sellers (AmeriCorps alum, former Senate staffer, and solo technical founder) to make FSMA 204 compliance accessible to mid-market food companies without six-figure platforms.", openGraph: { - title: "About RegEngine | FSMA 204 Compliance Infrastructure", + title: "About RegEngine | FSMA 204 Recordkeeping Infrastructure", description: "RegEngine was built by Christopher Sellers to make FSMA 204 compliance accessible to mid-market food companies without six-figure platforms.", url: "https://regengine.co/about", @@ -64,7 +64,7 @@ const PRINCIPLES = [ Icon: Target, title: "Accessible by default", description: - "Mid-market food companies deserve modern compliance tooling. RegEngine starts at $425/mo (billed annually).", + "Mid-market food companies deserve modern recordkeeping tools for FSMA 204. List price is $999 per month, per facility. The founding design partner price is $499 per month, per facility.", }, { Icon: Shield, @@ -102,7 +102,7 @@ export default function AboutPage() { } description={ <> - RegEngine is FSMA 204 compliance infrastructure built for mid-market + RegEngine is FSMA 204 recordkeeping infrastructure built for mid-market food companies, by someone who saw the gap from inside government, enterprise sales, and the regulatory stack itself. @@ -253,7 +253,7 @@ export default function AboutPage() {

- Ready to talk compliance? + Ready to organize your traceability records?

Book a free gap analysis call. We'll review your current FSMA 204 diff --git a/frontend/src/app/buyer-programs/page.tsx b/frontend/src/app/buyer-programs/page.tsx index 69700dba1..39e4fa97b 100644 --- a/frontend/src/app/buyer-programs/page.tsx +++ b/frontend/src/app/buyer-programs/page.tsx @@ -6,6 +6,7 @@ import { Button } from "@/components/ui/button"; import { Callout } from "@/components/ui/callout"; import { Card } from "@/components/ui/card"; import { Container } from "@/components/layout/container"; +import { FOUNDING_PRICE_LINE, LIST_PRICE_LINE, PILOT_LINE } from "@/lib/pricing-terms"; export const metadata: Metadata = { title: "Buyer traceability programs | RegEngine", @@ -90,20 +91,6 @@ export default function BuyerProgramsPage() {

- -

- Albertsons Companies -

-

- Source: Letter dated 17 September 2025 (PDF at suppliers.safeway.com) -

-
    -
  • • All food and non-alcoholic beverages
  • -
  • • Albertsons deadline January 1, 2027
  • -
  • • FDA enforcement not before July 20, 2028
  • -
-
-

Kroger Food Traceability Policy @@ -165,12 +152,13 @@ export default function BuyerProgramsPage() { Pricing

-
- $425 - per month, billed annually -
+
    +
  • • {LIST_PRICE_LINE}
  • +
  • • {FOUNDING_PRICE_LINE}
  • +
  • • {PILOT_LINE}
  • +

- No facility/CTE cap. No SLA. No retailer-specific benchmark. No quarterly compliance review. No audit. No readiness score. No FDA/buyer approval. No three-tier ladder or strikethrough list prices. + No CTE cap. No SLA. No retailer-specific benchmark. No quarterly compliance review. No audit. No readiness score. No FDA/buyer approval. No three-tier ladder or strikethrough list prices.

diff --git a/frontend/src/app/compare/foodlogiq/page.tsx b/frontend/src/app/compare/foodlogiq/page.tsx index e23f8d0b5..d20f1e0cb 100644 --- a/frontend/src/app/compare/foodlogiq/page.tsx +++ b/frontend/src/app/compare/foodlogiq/page.tsx @@ -8,12 +8,12 @@ import { PageHeader } from "@/components/layout/page-header"; import { CheckCircle, XCircle, Minus, ArrowRight, Shield, Clock, Code, Zap } from "lucide-react"; export const metadata: Metadata = { - title: "RegEngine vs FoodLogiQ (Aptean): FSMA 204 Compliance Comparison", + title: "RegEngine vs FoodLogiQ (Aptean): FSMA 204 Traceability Comparison", description: - "Compare RegEngine and FoodLogiQ for FSMA 204 compliance. See how self-serve setup, rule evaluation, and transparent pricing differ from enterprise-only deployment.", + "Compare RegEngine and FoodLogiQ for FSMA 204 traceability recordkeeping. See how self-serve setup, rule evaluation, and transparent pricing differ from enterprise-only deployment.", openGraph: { - title: 'RegEngine vs FoodLogiQ (Aptean): FSMA 204 Compliance Comparison', - description: 'Compare RegEngine and FoodLogiQ for FSMA 204 compliance. See how self-serve setup, rule evaluation, and transparent pricing differ from enterprise-only deployment.', + title: 'RegEngine vs FoodLogiQ (Aptean): FSMA 204 Traceability Comparison', + description: 'Compare RegEngine and FoodLogiQ for FSMA 204 traceability recordkeeping. See how self-serve setup, rule evaluation, and transparent pricing differ from enterprise-only deployment.', url: 'https://regengine.co/compare/foodlogiq', type: 'website', }, @@ -28,7 +28,7 @@ const FEATURES = [ { feature: "CSV upload and JSON events API", regengine: "check", competitor: "partial", note: "Both; verify FoodLogiQ's current ingestion surface" }, { feature: "Supplier portal with compliance scoring", regengine: "check", competitor: "check", note: "Both offer supplier management" }, { feature: "Recall drills", regengine: "check", competitor: "check", note: "FoodLogiQ's original strength" }, - { feature: "Published pricing on website", regengine: "check", competitor: "x", note: "List price from $849/mo (Founding rates from $425/mo, billed annually) vs custom enterprise quotes" }, + { feature: "Published pricing on website", regengine: "check", competitor: "x", note: "List price $999 per month, per facility. Founding design partner price $499 per month, per facility. FoodLogiQ: custom enterprise quotes" }, ]; const WHY_SWITCH = [ @@ -38,7 +38,7 @@ const WHY_SWITCH = [ { title: "Self-serve onboarding", desc: "RegEngine evaluates your first CSV against the FSMA 204 rule set on upload, with no implementation project to get a readiness answer. FoodLogiQ ships through enterprise implementation; verify current onboarding timelines with their team." }, { title: "Purpose-built for FSMA 204", desc: "FoodLogiQ originated as recall management; FSMA 204 capabilities were added later per their public roadmap. RegEngine was designed for the Food Traceability Rule from day one with KDE validation and cross-event integrity checks." }, { title: "Open data egress", desc: "RegEngine ships a public API, OpenAPI docs, and CSV export of every record. Confirm FoodLogiQ's current data-egress options with their team before committing." }, - { title: "Published pricing", desc: "Facility-based list pricing from $849/mo, with Founding rates from $425/mo (billed annually) and no multi-year commitment required. FoodLogiQ pricing is custom-quoted, so request both to compare for your facility count." }, + { title: "Published pricing", desc: "List price is $999 per month, per facility. The founding design partner price is $499 per month, per facility. FoodLogiQ pricing is custom-quoted, so request both to compare for your facility count." }, ]; @@ -71,7 +71,7 @@ export default function FoodLogiQCompare() { } description={ <> - FoodLogiQ was built for enterprise recall management. RegEngine was built for FSMA 204 compliance from day one. + FoodLogiQ was built for enterprise recall management. RegEngine was built for FSMA 204 recordkeeping from day one. FoodLogiQ was acquired by Aptean in 2023; check their roadmap for current direction. } diff --git a/frontend/src/app/compare/repositrak/page.tsx b/frontend/src/app/compare/repositrak/page.tsx index ce555458f..19b1d4466 100644 --- a/frontend/src/app/compare/repositrak/page.tsx +++ b/frontend/src/app/compare/repositrak/page.tsx @@ -8,12 +8,12 @@ import { PageHeader } from "@/components/layout/page-header"; import { CheckCircle, XCircle, Minus, ArrowRight, Shield, ShoppingCart, Zap, Code } from "lucide-react"; export const metadata: Metadata = { - title: "RegEngine vs ReposiTrak: FSMA 204 Compliance Comparison", + title: "RegEngine vs ReposiTrak: FSMA 204 Traceability Comparison", description: - "Compare RegEngine and ReposiTrak for FSMA 204 compliance. Deep rule validation vs retailer compliance tracking.", + "Compare RegEngine and ReposiTrak for FSMA 204 traceability recordkeeping. Deep rule validation vs retailer compliance tracking.", openGraph: { - title: 'RegEngine vs ReposiTrak: FSMA 204 Compliance Comparison', - description: 'Compare RegEngine and ReposiTrak for FSMA 204 compliance. Deep rule validation vs retailer compliance tracking.', + title: 'RegEngine vs ReposiTrak: FSMA 204 Traceability Comparison', + description: 'Compare RegEngine and ReposiTrak for FSMA 204 traceability recordkeeping. Deep rule validation vs retailer compliance tracking.', url: 'https://regengine.co/compare/repositrak', type: 'website', }, @@ -28,11 +28,11 @@ const FEATURES = [ { feature: "CSV upload and JSON events API", regengine: "check", competitor: "partial", note: "Both; verify ReposiTrak's current ingestion options" }, { feature: "Retailer compliance network", regengine: "partial", competitor: "check", note: "ReposiTrak's core strength" }, { feature: "Supplier portal", regengine: "check", competitor: "check", note: "Both offer supplier management" }, - { feature: "Published pricing on website", regengine: "check", competitor: "x", note: "List price from $849/mo (Founding rates from $425/mo, billed annually) vs custom retailer quotes" }, + { feature: "Published pricing on website", regengine: "check", competitor: "x", note: "List price $999 per month, per facility. Founding design partner price $499 per month, per facility. ReposiTrak: custom retailer quotes" }, ]; const WHY_SWITCH = [ - { title: "Validation, not just submission tracking", icon: Zap, desc: "ReposiTrak focuses on supplier-data submission tracking. RegEngine validates whether the underlying data is FSMA 204 compliant, checking KDEs, cross-event integrity, and mass balance. You can use both." }, + { title: "Validation, not just submission tracking", icon: Zap, desc: "ReposiTrak focuses on supplier-data submission tracking. RegEngine checks the underlying CTE/KDE records for gaps, including KDE coverage, cross-event integrity, and mass balance. Checks are advisory and RegEngine does not certify compliance. You can use both." }, { title: "Works beyond one retailer", icon: Shield, desc: "ReposiTrak is optimized for retailer-supplier compliance mandates. RegEngine works across your supply chain regardless of which retailers you serve." }, { title: "Public API and open egress", icon: Code, desc: "RegEngine ships a public REST API, OpenAPI spec, JSON events API, and CSV export at any time. Confirm ReposiTrak's current integration options for your stack." }, { title: "Complement your retailer tools", icon: ShoppingCart, desc: "Use ReposiTrak for retailer compliance tracking AND RegEngine for FSMA 204 validation. They solve adjacent problems." }, @@ -64,8 +64,8 @@ export default function ReposiTrakCompare() { title={"RegEngine vs ReposiTrak"} description={ <> - ReposiTrak connects suppliers to retailer compliance mandates. RegEngine validates your traceability data - against FSMA 204 rules before the FDA asks to see it. + ReposiTrak connects suppliers to retailer compliance mandates. RegEngine helps you check CTE/KDE gaps + in your traceability records before you assemble an FDA-oriented export. Checks are advisory. } /> diff --git a/frontend/src/app/compare/tracegains/page.tsx b/frontend/src/app/compare/tracegains/page.tsx index caf4bd9a0..c1b013ece 100644 --- a/frontend/src/app/compare/tracegains/page.tsx +++ b/frontend/src/app/compare/tracegains/page.tsx @@ -8,12 +8,12 @@ import { PageHeader } from "@/components/layout/page-header"; import { CheckCircle, XCircle, Minus, ArrowRight, Shield, FileText, Zap, Users } from "lucide-react"; export const metadata: Metadata = { - title: "RegEngine vs TraceGains: FSMA 204 Compliance Comparison", + title: "RegEngine vs TraceGains: FSMA 204 Traceability Comparison", description: - "Compare RegEngine and TraceGains for FSMA 204 compliance. Supplier document management vs CTE-level traceability rule evaluation.", + "Compare RegEngine and TraceGains for FSMA 204 traceability recordkeeping. Supplier document management vs CTE-level traceability rule evaluation.", openGraph: { - title: 'RegEngine vs TraceGains: FSMA 204 Compliance Comparison', - description: 'Compare RegEngine and TraceGains for FSMA 204 compliance. Supplier document management vs CTE-level traceability rule evaluation.', + title: 'RegEngine vs TraceGains: FSMA 204 Traceability Comparison', + description: 'Compare RegEngine and TraceGains for FSMA 204 traceability recordkeeping. Supplier document management vs CTE-level traceability rule evaluation.', url: 'https://regengine.co/compare/tracegains', type: 'website', }, @@ -28,7 +28,7 @@ const FEATURES = [ { feature: "CSV upload and JSON events API", regengine: "check", competitor: "partial", note: "Both; verify TraceGains' current ingestion options" }, { feature: "Supplier document management (COAs, specs)", regengine: "partial", competitor: "check", note: "TraceGains' core strength" }, { feature: "Supplier onboarding portal", regengine: "check", competitor: "check", note: "Both offer supplier management" }, - { feature: "Published pricing on website", regengine: "check", competitor: "x", note: "List price from $849/mo (Founding rates from $425/mo, billed annually) vs custom quotes" }, + { feature: "Published pricing on website", regengine: "check", competitor: "x", note: "List price $999 per month, per facility. Founding design partner price $499 per month, per facility. TraceGains: custom quotes" }, ]; const WHY_SWITCH = [ diff --git a/frontend/src/app/compliance/labels/page.tsx b/frontend/src/app/compliance/labels/page.tsx index 71a136150..53781b5bb 100644 --- a/frontend/src/app/compliance/labels/page.tsx +++ b/frontend/src/app/compliance/labels/page.tsx @@ -168,7 +168,7 @@ export default function LabelsPage() { {/* Input Form */} diff --git a/frontend/src/app/fsma-204/page.tsx b/frontend/src/app/fsma-204/page.tsx index a7157ad16..82be30ff4 100644 --- a/frontend/src/app/fsma-204/page.tsx +++ b/frontend/src/app/fsma-204/page.tsx @@ -11,7 +11,7 @@ import { Card } from "@/components/ui/card"; export const metadata: Metadata = { title: "FSMA 204 Compliance Guide: What Your Farm Needs to Know | RegEngine", description: - "Plain-English guide to the FDA Food Traceability Rule. Learn what FSMA 204 requires, whether your products are covered, and how to get compliant. No developer needed.", + "Plain-English guide to the FDA Food Traceability Rule. Learn what FSMA 204 requires, whether your products are covered, and how to organize your traceability records. No developer needed.", openGraph: { title: 'FSMA 204 Compliance Guide: What Your Farm Needs to Know', description: 'Plain-English guide to the FDA Food Traceability Rule: what it requires, whether your products are covered, and how to comply.', diff --git a/frontend/src/app/pricing/page.tsx b/frontend/src/app/pricing/page.tsx index 4fefdd330..1f8ae1306 100644 --- a/frontend/src/app/pricing/page.tsx +++ b/frontend/src/app/pricing/page.tsx @@ -1,34 +1,29 @@ import type { Metadata } from 'next'; -import Link from 'next/link'; import { PricingPageClient } from '@/components/pricing/PricingPageClient'; import type { PricingComparisonRow, PricingFaqItem } from '@/components/pricing/PricingPageClient'; -import { Container } from '@/components/layout/container'; -import { Button } from '@/components/ui/button'; +import { FOUNDING_PRICE_LINE, LIST_PRICE_LINE, PILOT_LINE, PRICING_SUMMARY } from '@/lib/pricing-terms'; export const metadata: Metadata = { title: 'FSMA 204 Pricing | RegEngine', - description: 'FSMA 204 traceability workspace pricing with transparent Founding rate figures. Onboarding terms are controlled by your agreement.', + description: `FSMA 204 recordkeeping workspace pricing. ${PRICING_SUMMARY}`, openGraph: { title: 'FSMA 204 Pricing | RegEngine', - description: 'FSMA 204 traceability workspace pricing with transparent Founding rate figures. Onboarding terms are controlled by your agreement.', + description: `FSMA 204 recordkeeping workspace pricing. ${PRICING_SUMMARY}`, url: 'https://regengine.co/pricing', type: 'website', }, }; -// Cache pricing for 1 hour server-side so the page stays fast even when -// the billing service is slow. When billing is unreachable the page renders -// an honest unavailable state instead of hardcoded prices. +// Cache plan copy for 1 hour server-side so the page stays fast even when +// the billing service is slow. Prices come from the approved terms in +// lib/pricing-terms; the billing service only refines plan descriptions +// and feature lists. export const revalidate = 3600; interface BillingPlan { id: string; name: string; description?: string; - ga_monthly?: number; - ga_annual?: number; - partner_monthly?: number; - partner_annual?: number; features?: string[]; } @@ -57,13 +52,13 @@ async function fetchBillingPlans(): Promise { if (!Array.isArray(plans) || plans.length === 0) return null; return plans; } catch { - // Billing service unreachable: caller renders the unavailable state. + // Billing service unreachable: caller falls back to static plan copy. return null; } } -// Static tier copy (names, feature lists, CTAs). Prices come only from the -// billing service; nothing here may carry a number. +// Static tier copy (names, feature lists, CTAs). Prices come only from +// lib/pricing-terms; nothing here may carry a price. const PRICING_TIERS = [ { id: 'base', @@ -129,7 +124,7 @@ const COMPETITOR_COMPARISON: PricingComparisonRow[] = [ { feature: 'Self-Serve Signup', regengine: 'Available in staged rollout', foodlogiq: 'Validate directly', repositrak: 'Validate directly', tracegains: 'Validate directly' }, { feature: 'Hash-manifested audit trail', regengine: 'Supported where export workflow creates manifests', foodlogiq: 'Validate directly', repositrak: 'Validate directly', tracegains: 'Validate directly' }, { feature: 'Free Trial', regengine: 'Design-partner terms', foodlogiq: 'Validate directly', repositrak: 'Validate directly', tracegains: 'Validate directly' }, - { feature: 'Pricing Model', regengine: 'Indicative design-partner ranges; agreement controls', foodlogiq: 'Validate directly', repositrak: 'Validate directly', tracegains: 'Validate directly' }, + { feature: 'Pricing Model', regengine: 'Published per-facility pricing; agreement controls', foodlogiq: 'Validate directly', repositrak: 'Validate directly', tracegains: 'Validate directly' }, ]; /** Keep Preview on any live billing feature string that names EPCIS without a status label. */ @@ -143,75 +138,33 @@ function ensureEpcisPreviewLabel(features: string[]): string[] { const FAQ: PricingFaqItem[] = [ { q: 'How do I choose between Base, Standard, and Premium?', a: 'It comes down to facility count. Base covers 1 facility with up to 500 CTEs/month. Standard (Beta) handles 2 to 3 facilities with unlimited CTEs. Premium (Beta) is for 4+ facilities with dedicated support and quarterly compliance reviews.' }, - { q: 'What does the Founding rate include?', a: 'Founding rate discounts are documented in the executed order form or design-partner agreement, including term, scope, renewal, taxes, add-ons, plan-change treatment, onboarding, and integration support.' }, + { q: 'What does RegEngine cost?', a: `${LIST_PRICE_LINE} ${FOUNDING_PRICE_LINE} The founding design partner price applies under an executed design-partner agreement.` }, + { q: 'How does the pilot work?', a: PILOT_LINE }, { q: 'Can I switch plans anytime?', a: 'Plan changes are handled under your executed order form or design-partner agreement. We scope upgrades, downgrades, facility count, and billing changes before applying them.' }, - { q: 'Do you offer annual billing?', a: 'Annual and monthly billing can be scoped during procurement. Pricing shown is indicative; the executed agreement controls final plan, billing period, and checkout availability.' }, - { q: 'Does my Founding rate ever change?', a: 'Your Founding rate is controlled by the executed order form or design-partner agreement, including renewal, scope, add-ons, taxes, and plan changes.' }, + { q: 'How is billing set up?', a: 'Published prices are per month, per facility. Your executed order form or design-partner agreement controls scope, taxes, add-ons, and renewal.' }, { q: 'What integrations are available?', a: 'Core APIs and export flows are available today. ERP, retailer, and partner-system integrations are evaluated per delivery mode: CSV upload, the JSON events API, or custom-scoped implementation. EPCIS 2.0 is in Preview.' }, { q: 'What am I paying for if I must archive externally?', a: 'FSMA 204 requires at least two-year retention of traceability records under 21 CFR 1.1455. RegEngine is a compliance evidence layer with contract-defined retention, not a long-term archive. Your subscription pays for workspace access, ingestion, validation, and export workflows. You keep off-platform archives for long-term retention. See the Trust Center retention guidance for export and archive posture.' }, { q: 'What if the FDA delays enforcement again?', a: 'Major retailers are already requiring traceability data from suppliers regardless of the FDA timeline. RegEngine gives you the tooling and records to support either trigger: the FDA rule or a retailer mandate.' }, - { q: 'Do I need this if I\'m a small farm?', a: 'FSMA 204 applies to entities on the Food Traceability List handling specific foods. Use our free FTL Checker to see if your products are covered.' }, + { q: 'Do I need this if I\'m a small farm?', a: 'FSMA 204 applies to covered persons who manufacture, process, pack, or hold foods on the Food Traceability List. Being on the list is not the same as being a covered person. Use our free FTL Checker as a starting point, not a determination.' }, { q: 'Can I integrate with my existing ERP?', a: 'RegEngine accepts data via API, CSV upload, or scoped ERP integration. Guided onboarding is available for approved design-partner workspaces. Timeline, support, and commercial terms are confirmed during scoping.' }, { q: 'What happens to my data?', a: 'Data is encrypted in transit. Encryption at rest is provided by our managed database and storage providers (see the Trust Center subprocessor list). Tenant data is isolated via PostgreSQL row-level policies; tenant-trust hardening is in active rollout. We do not share or sell your data.' }, ]; export default async function PricingPage() { - // Load live pricing from the billing service. When it is unreachable or - // returns no usable plans, show an honest unavailable state rather than - // any hardcoded figures. + // Live plan copy refines descriptions and features when billing is + // reachable; otherwise the static tier copy is shown. Prices never come + // from here. const livePlans = await fetchBillingPlans(); - if (!livePlans) { - return ( -
- -

- Pricing is temporarily unavailable -

-

- We could not load current plan pricing from our billing service, so no figures are shown here. - Plan rates are confirmed in your executed order form or design-partner agreement. -

-
- - -
-
-
- ); - } - - const pricingTiers = PRICING_TIERS.flatMap((tier) => { - const live = livePlans.find((p) => p.id === tier.id); - if (!live) return []; - const { ga_monthly, ga_annual, partner_monthly, partner_annual } = live; - if ( - typeof ga_monthly !== 'number' || - typeof ga_annual !== 'number' || - typeof partner_monthly !== 'number' || - typeof partner_annual !== 'number' - ) { - return []; - } - return [{ + const pricingTiers = PRICING_TIERS.map((tier) => { + const live = livePlans?.find((p) => p.id === tier.id); + return { ...tier, - gaMonthly: ga_monthly, - gaAnnual: ga_annual, - partnerMonthly: partner_monthly, - partnerAnnual: partner_annual, - description: live.description ?? tier.description, + description: live?.description ?? tier.description, features: ensureEpcisPreviewLabel( - Array.isArray(live.features) && live.features.length > 0 ? live.features : tier.features, + live && Array.isArray(live.features) && live.features.length > 0 ? live.features : tier.features, ), - }]; + }; }); return ; diff --git a/frontend/src/app/supplier-compliance/page.tsx b/frontend/src/app/supplier-compliance/page.tsx index 263607109..ad5ac636b 100644 --- a/frontend/src/app/supplier-compliance/page.tsx +++ b/frontend/src/app/supplier-compliance/page.tsx @@ -74,7 +74,7 @@ const FAQ = [ }, { q: 'What does this cost me?', - a: 'Submitting data through a portal link is free. Your buyer pays for RegEngine. If you want your own RegEngine account to manage traceability across all your buyers, plans start at $425/mo (billed annually) at the Founding rate.', + a: 'Submitting data through a portal link is free. Your buyer pays for RegEngine. If you want your own RegEngine account to manage traceability across all your buyers, list price is $999 per month, per facility. The founding design partner price is $499 per month, per facility.', }, ]; @@ -101,7 +101,7 @@ export default function SupplierCompliancePage() {

- FSMA 204 Compliance,{' '} + FSMA 204 Recordkeeping,{' '} Built for You @@ -216,7 +217,7 @@ export default function WhyRegEnginePage() { Six Reasons Teams Choose RegEngine

- We built RegEngine for technical teams, ops managers, and founders who need compliance fast without compromise. + We built RegEngine for technical teams, ops managers, and founders who need traceability records organized fast without compromise.

@@ -437,19 +438,19 @@ HTTP 201
-

Base Plan

-

$425/mo $849/mo

-

Founding rate, billed annually ($499/mo monthly) • 1 facility • 500 CTEs/mo

+

List price

+

$999/mo

+

Per month, per facility

-

Standard Plan

-

$549/mo $1,099/mo

-

Founding rate, billed annually ($649/mo monthly) • 2 to 3 facilities • Unlimited CTEs

+

Founding design partner price

+

$499/mo

+

Per month, per facility

-

Premium Plan

-

$639/mo $1,275/mo

-

Founding rate, billed annually ($749/mo monthly) • 4+ facilities • Dedicated support

+

90-day pilot

+

$2,000

+

1 facility. $1,500 if you convert to a subscription within 30 days. Pilot fee credited toward your first subscription invoice.

@@ -461,13 +462,13 @@ HTTP 201 Open pricing builds trust. We list prices on our website. No "contact sales" gatekeeping. No surprise enterprise minimums.

- The Founding rate is preferred pricing for the life of your account. Plans start at $425/mo (billed annually) or $499/mo monthly. Honest pricing for honest work. + {LIST_PRICE_LINE} {FOUNDING_PRICE_LINE} {PILOT_LINE}