Security
What leaves your shop — and what doesn't.
CrossCode uses Anthropic Claude Sonnet 4.6 (with OpenAI GPT-4o-mini as a fallback) to apply GRI reasoning over the line items in your invoice. Both providers are accessed under enterprise zero-retention terms — your data is not used for training, and they retain nothing after the request returns. Before any payload leaves our perimeter, it passes through a sanitization chokepoint that enforces the separation below.
Sent for classification
Allowlist · enforced- Normalized line-item description
- Quantity and unit
- Country of origin
- Material composition
- Retrieved HTS candidates
- Retrieved CBP CROSS rulings
Never leaves your perimeter
Blocklist · enforced- Unit and total prices
- Supplier and manufacturer names
- Invoice and PO numbers
- Buyer name and address
- Bank account and routing info
- Payment and freight terms
- Raw invoice text and free-form notes
Pydantic-enforced allowlist
Every outbound payload is constructed as an immutable schema with extra="forbid". Any attempt to attach a blocked field — even by mistake — raises a validation error at the call site, not silently at the API boundary.
Append-only audit log
Every byte that crosses the perimeter is hashed and logged in a database table with no UPDATE or DELETE paths. You can subpoena the log if a CBP examiner asks what was sent.
Red-team tests in CI
The test suite injects PII marker strings into mock invoices and fails the build if any marker appears in an outbound payload. A regression in the sanitizer cannot ship to production.
Full security overview, including subprocessor list and SOC 2 status, is available on request — email founders@crosscode.pro.