Trust • Security • Compliance

How Parsela handles your data.

Shipping data is confidential. Consignees, freight terms, carrier rates, commodity descriptions — all of it is commercial intelligence. Parsela is built with enterprise-grade security from the first line of code, not bolted on after the fact. This page documents how.

Current compliance posture

Parsela is in pre-GA with active design partners. SOC 2 Type II framework is in progress. The technical controls required for certification are already implemented; the audit itself is scheduled post-GA.

Authentication
SOC 2-ready controls shipped
Audit trail
Complete forensic logging
Data segregation
Multi-tenant scoping enforced
SOC 2 Type II
Audit scheduled post-GA

Compliance-grade shipment identity

In freight, merging two shipments that should have stayed separate is a compliance incident — not a data-quality bug. Two customers' cargo appearing on one BL. Two bookings merged because they share a container. One shipper's exports appearing under another's manifest. Any of these triggers customs exposure, regulatory disputes, and — in the worst case — cargo released to the wrong consignee.

Parsela's identity resolution is designed to never make this mistake. The 4-tier identity cascade uses only deterministic legal identifiers — House BL, Master BL, generic BL numbers, booking references — to merge shipments. Weaker signals like container numbers, vessel-voyage pairs, and email IDs are stored in the audit trail but never trigger a merge.

A booking can split into many shipments. Many bookings can merge into one consolidated shipment. But only with explicit operator action and an AMENDED audit event carrying the reason code (carrier re-issue, customer change, consolidation split, consolidation merge, operator correction), the effective date, and the triggering document identifier.

Every amendment is append-only logged. Rolling back an amendment creates another audit event — history is never silently edited. The compliance officer and the customs broker can reconstruct any shipment's identity history end-to-end without trusting the application layer.

On the field level, every shipment field carries an ownership state (Parsela-proposed, human-edited, or locked once a downstream event such as customs filing has committed it). When a value changes, a field_edit_log entry records the old value, new value, actor, source (Parsela, TMS operator, system), and timestamp. When Parsela and a TMS operator disagree, the conflict surfaces in a resolution queue — Parsela does not silently overwrite a human edit.

Authentication & access control

Parsela uses JWT-based authentication with short-lived tokens and server-side revocation. Role-based access control (RBAC) enforces a four-tier authority matrix across every privileged endpoint: Analyst (1), Manager (2), Director (3), Admin (4). Every mutation writes a canonical audit log entry capturing actor identity, target, before/after state, and timestamp.

Password security
Passwords hashed with bcrypt. NIST 800-63B complexity requirements enforced at registration and change. Password reset flow uses one-hour, single-use UUID tokens. Forgot-password never reveals whether an account exists (prevents user enumeration).
SSO & SAML 2.0
Parsela integrates with Okta, Azure AD, OneLogin, and Google Workspace via SAML 2.0. IdP group mapping drives Parsela role assignment. Configuration changes are audit-logged with provenance tracking (request vs preserved vs default mapping source).
Session revocation
When an admin deactivates a user, existing JWTs are immediately invalidated server-side. No wait for natural expiry. Idempotent deactivation: re-running against an already-inactive account is safe and audit-logged.
Audit trail
Every privileged mutation — invite creation, role change, password reset, SSO reconfigure, user deactivation, registration mode change, vendor assignment — writes a canonical audit log entry. Log entries never contain passwords, tokens, or certificate contents.

Data handling

Parsela processes your shipping documents to extract structured data. Here is exactly what happens to that data at each stage.

Document ingestion

Documents arrive via IMAP email polling, web upload, or REST API. At ingestion, Parsela stores the original PDF in customer-controlled object storage (AWS S3, Google Cloud Storage, or on-prem MinIO depending on deployment). Document bytes never transit uncontrolled infrastructure.

AI extraction

Extraction uses frontier AI models under vendor agreements that forbid training on submitted data. For cloud deployments, API calls are made through the provider's standard commercial privacy terms. For customers with stricter data residency requirements, Parsela can be deployed with the hyperscaler's managed AI service (AWS or GCP), keeping document data within the customer's VPC. See the sub-processors section below for the specific vendors.

Data at rest

Extracted structured data is stored in PostgreSQL (RDS for AWS, Cloud SQL for GCP, or self-hosted) with encryption at rest enabled by default. Original PDFs remain in object storage with server-side encryption. Access is limited by vendor scoping — the multi-tenant architecture ensures operators only see documents from vendors they are explicitly assigned to.

Data in transit

All external traffic uses TLS 1.2+. Internal service-to-service calls within the VPC are also TLS. Webhook delivery to your TMS includes HMAC-SHA256 signatures so your TMS can verify the payload originated from Parsela.

PII handling

Shipping documents regularly contain PII (consignee contact names, signatures on PODs). Parsela includes optional PII redaction that runs before any LLM call — controlled by the PARSELA_PII_REDACT deployment flag. When enabled, named entities are replaced with semantic placeholders before extraction, then re-associated after. Standard mode is disabled; enterprise and air-gapped modes default to enabled.

Deployment options

Different customers have different data sovereignty requirements. Parsela ships in four deployment configurations, controlled by environment variable — no code changes required to switch.

Cloud (Standard)
Hosted by Parsela on AWS. Frontier LLM API calls route through the provider's standard commercial privacy terms (no training on submitted data). Suitable for most design partners and non-regulated workloads.
VPC (Enterprise)
Deployed within the customer's AWS or GCP VPC. Frontier LLMs are accessed via the hyperscaler's managed AI service (AWS Bedrock on AWS, Vertex AI on GCP) — document data never leaves the customer's environment. Recommended for carriers, forwarders handling sensitive freight rates, or any customer with data residency requirements.
On-premises
Full self-hosted deployment with open-source infrastructure: object storage, messaging, and Kubernetes orchestration. Frontier LLM API calls are made through customer-provided credentials. Suitable for customers with specific compliance frameworks that require full infrastructure control.
Air-gapped
Locally-hosted classifier and extraction models within the customer's environment, with no external API calls. Suitable for classified workloads or customers in regulated environments where internet egress is not permitted.

Sub-processors

Parsela uses a small set of sub-processors. Each is vetted for security posture and has a DPA in place. The list below applies to Cloud (Standard) deployments; VPC, on-premises, and air-gapped deployments have reduced or zero external sub-processors.

Vulnerability reporting

If you believe you've found a security vulnerability in Parsela, please email [email protected] with a description and reproduction steps. We commit to acknowledging all reports within 48 hours and publishing a fix timeline within 7 days. Responsible disclosure is appreciated and we're happy to discuss bounty arrangements for substantive findings.

Questions about how Parsela handles your data?

We're happy to walk through the architecture, DPA, and compliance roadmap on a call. Design partners get a more detailed security review as part of onboarding.

Book a security discussion →