Skip to content
2 changes: 1 addition & 1 deletion frontend/src/__tests__/pages/product.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ describe("ProductPage Inflow impact illustration", () => {
expect(screen.getByRole("heading", { name: "Fix before evidence" })).toBeInTheDocument();
expect(screen.getByRole("heading", { name: "Persist and prove" })).toBeInTheDocument();
expect(screen.getByRole("heading", { name: "Tenant-scoped evidence" })).toBeInTheDocument();
expect(screen.getByRole("heading", { name: "Export-ready package" })).toBeInTheDocument();
expect(screen.getByRole("heading", { name: "Export package from stored records" })).toBeInTheDocument();
});
});
12 changes: 6 additions & 6 deletions frontend/src/app/product/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ const inflowEffects = [

const engineResults = [
{
title: "Blocked or corrected",
detail: "Bad supplier data is routed back through the fix queue instead of polluting the evidence ledger.",
title: "Flagged for fix",
detail: "Incomplete or inconsistent supplier rows are surfaced in the fix queue so operators can correct them before treating them as production evidence. Rule blocking is advisory in production today; rejection is not assured.",
icon: PackageX,
},
{
Expand All @@ -67,8 +67,8 @@ const engineResults = [
icon: Lock,
},
{
title: "Export-ready package",
detail: "Coverage and completeness checklist results, recall posture, and FDA/retailer exports use checked records only.",
title: "Export package from stored records",
detail: "Coverage and completeness checklist results, recall posture, and export packages are built from records stored for the tenant. RegEngine helps with recordkeeping. How those packages are used stays with the operator.",
icon: FileOutput,
},
];
Expand Down Expand Up @@ -105,7 +105,7 @@ function InflowImpactDiagram() {
<div>
<p className="font-mono text-label uppercase text-re-text-muted">Raw supplier feed</p>
<p className="mt-1 text-subheading text-re-text-primary">
CSV/XLSX upload or supplier portal, the JSON events API, or EPCIS-shaped records (EPCIS in Preview)
CSV upload or the JSON events API (Live). EPCIS-shaped records are Preview. Other feeds are Beta.
</p>
</div>
</div>
Expand Down Expand Up @@ -161,7 +161,7 @@ function InflowImpactDiagram() {
<p className="font-mono text-label uppercase text-re-text-muted">Commit gate says yes</p>
<h3 className="mt-3 text-subheading text-re-text-primary">Persist and prove</h3>
<p className="mt-2 text-ui text-re-text-secondary">
RegEngine promotes checked records into tenant-scoped evidence, then uses that evidence for scores and exports.
RegEngine can promote records that passed the commit gate into tenant-scoped evidence and use that stored evidence for scores and export packages. Enforcement remains advisory unless RULES_ENGINE_ENFORCE is explicitly set and the route opts in.
Comment thread
PetrefiedThunder marked this conversation as resolved.
Resolved
</p>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,19 +182,19 @@ export function DataImportClient() {
return (
<FreeToolPageShell
title="Data Import Hub"
subtitle="Get your traceability data into RegEngine. Upload CSV or XLSX files (including Sensitech TempTale logs), or connect via the JSON events API."
subtitle="Get your traceability data into RegEngine. Upload CSV files for Critical Tracking Events, or connect via the JSON events API. Live today: CSV upload and the JSON events API. Other connectors are Beta or Preview."
relatedToolIds={['ftl-checker', 'cte-mapper', 'kde-checker']}
>
<LeadGate
source="data-import"
headline="Unlock the Data Import Hub"
subheadline="Upload CSV or XLSX files (including IoT temperature logs), or connect via the JSON events API to start building your traceability records."
subheadline="Upload CSV files for Critical Tracking Events, or connect via the JSON events API to start building your traceability records. Live today: CSV upload and the JSON events API. Other connectors are Beta or Preview."
ctaText="Access Import Tools"
teaser={
<Card padding="spacious" className="text-center">
<Upload className="mx-auto mb-3 h-6 w-6 text-re-text-tertiary" strokeWidth={1.75} aria-hidden="true" />
<p className="text-subheading text-re-text-primary">Three Ways to Import</p>
<p className="mt-2 text-ui text-re-text-secondary">CSV and XLSX upload with templates for every Critical Tracking Event (CTE) type, Sensitech TempTale CSV import, and the JSON events API.</p>
<p className="mt-2 text-ui text-re-text-secondary">CSV upload with templates for every Critical Tracking Event (CTE) type, and the JSON events API. Live today: CSV upload and the JSON events API. Other connectors are Beta or Preview.</p>
</Card>
}
>
Expand Down Expand Up @@ -392,9 +392,9 @@ export function DataImportClient() {
<div className="flex items-center gap-3">
<Thermometer className="h-5 w-5 shrink-0 text-re-text-tertiary" strokeWidth={1.75} aria-hidden="true" />
<div>
<CardTitle>Sensitech TempTale Import</CardTitle>
<CardTitle>Sensitech TempTale (Beta)</CardTitle>
<CardDescription>
Upload Sensitech TempTale CSV exports to create temperature-linked CTE events.
Sensitech TempTale CSV import is experimental and is not enabled on the production router allowlist.
</CardDescription>
</div>
</div>
Expand Down Expand Up @@ -436,11 +436,11 @@ export function DataImportClient() {
Upload Sensitech TempTale CSV
</div>
<div className="break-words font-mono text-[0.8125rem] text-re-text-tertiary">
POST /api/v1/ingest/iot/sensitech. Available now via API
POST /api/v1/ingest/iot/sensitech exists on experimental routers; not on the production allowlist.
</div>
<div className="mt-4">
<Badge tone="neutral" size="sm" mono>
API Available Now
Beta / not in production allowlist
</Badge>
</div>
</div>
Expand Down
10 changes: 5 additions & 5 deletions frontend/src/app/tools/data-import/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ import { Skeleton } from "@/components/ui/skeleton";
import { filterExperimentalToolLinks } from "@/lib/experimental-features";

export const metadata: Metadata = {
title: "FSMA 204 Data Import Hub | Upload CSV, XLSX & JSON Traceability Data | RegEngine",
description: "Import FSMA 204 traceability data via CSV or XLSX upload (including Sensitech TempTale temperature logs), or the JSON events API. Supports all Critical Tracking Event (CTE) types with schema checks and field auto-mapping.",
title: "FSMA 204 Data Import Hub | Upload CSV & JSON Traceability Data | RegEngine",
description: "Import FSMA 204 traceability data via CSV upload or the JSON events API. Supports all Critical Tracking Event (CTE) types with schema checks and field auto-mapping.",
alternates: {
canonical: "https://regengine.co/tools/data-import",
},
openGraph: {
title: "FSMA 204 Data Import Hub | RegEngine",
description: "Import traceability data via CSV, XLSX, or the JSON events API with FSMA 204 schema checks. Free tool.",
description: "Import traceability data via CSV or the JSON events API with FSMA 204 schema checks. Free tool.",
type: "website",
url: "https://regengine.co/tools/data-import",
},
Expand All @@ -28,7 +28,7 @@ const jsonLd = {
"name": "RegEngine Data Import Hub",
"operatingSystem": "All",
"applicationCategory": "BusinessApplication",
"description": "Import traceability data via CSV, XLSX, or the JSON events API for FSMA 204 compliance.",
"description": "Import traceability data via CSV or the JSON events API; helps with FSMA 204 recordkeeping.",
};

function DataImportFallback() {
Expand All @@ -37,7 +37,7 @@ function DataImportFallback() {
<Container width="tool">
<div className="mx-auto max-w-2xl text-center">
<h1 className="text-title text-re-text-primary">Data Import Hub</h1>
<p className="mx-auto mt-3 max-w-[70ch] text-ui text-re-text-secondary">Import your traceability data into RegEngine via CSV upload, XLSX spreadsheets (including IoT temperature logs), or the JSON events API. Supports all FSMA 204 Critical Tracking Event (CTE) types with automatic validation and auto-cleaning of common formatting issues.</p>
<p className="mx-auto mt-3 max-w-[70ch] text-ui text-re-text-secondary">Import your traceability data into RegEngine via CSV upload or the JSON events API. Supports all FSMA 204 Critical Tracking Event (CTE) types with automatic validation and auto-cleaning of common formatting issues.</p>
</div>
<div className="mt-8 space-y-4">
<Skeleton className="h-10 w-1/3 rounded-md" />
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/app/trust/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ const STATUS_SUMMARY = [
},
{
label: 'Preview',
detail: 'Capability is usable for evaluation in supported workspaces, but has not reached general release. GS1 EPCIS 2.0 export and ingest stay Preview until separately promoted.',
detail: 'Capability is usable for evaluation in supported workspaces only and has not reached general release. GS1 EPCIS 2.0 export and ingest stay Preview until separately promoted.',
},
{
label: 'Pilot',
Expand Down
6 changes: 3 additions & 3 deletions frontend/src/lib/customer-readiness.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export const INTEGRATION_TYPE_LABELS: Record<IntegrationType, string> = {
export const INTEGRATION_TYPE_DESCRIPTIONS: Record<IntegrationType, string> = {
standards_based: 'Standards-oriented ingest and export support without a claim of managed two-way sync or source-system write-back.',
api_based_custom: 'Customer-managed integration via RegEngine API and implementation guidance. The customer builds and maintains the workflow unless otherwise scoped.',
file_based_import: 'Manual CSV/XLSX upload with field mapping and exception handling. Scheduled file delivery is on the roadmap.',
file_based_import: 'Manual CSV upload with field mapping and exception handling. XLSX is not accepted in the current Data Import Hub.',
one_way_export: 'RegEngine prepares outbound packages. No write-back to source system.',
};

Expand Down Expand Up @@ -184,10 +184,10 @@ export const CAPABILITY_REGISTRY: CapabilityRegistryEntry[] = [
id: 'sensitech',
name: 'Sensitech TempTale',
category: 'food_safety_iot',
status: 'implemented',
status: 'preparation',
delivery_mode: 'csv_sftp_import',
integration_type: 'file_based_import',
customer_copy: 'Sensitech CSV exports are supported in the data-import flow for temperature-linked events.',
customer_copy: 'Sensitech TempTale CSV import is experimental and excluded from the production router allowlist.',
evidence_url: '/tools/data-import',
},
{
Expand Down
Loading