Carlen.ai
Back to home
Trust & security

How we handle your data

A plain-language account of the security architecture, data residency and AI provenance behind Carlen.ai — written to be checked, not just believed.

Security architecture

Every organization on Carlen.ai is isolated at the database level, not just in the application code.

Per-organization row-level security

Every table (models, products, sessions, generations, budgets, audit log…) is scoped by organization through Postgres Row Level Security policies — one organization cannot query or write another organization’s rows, enforced by the database itself, not by application-layer checks alone.

Encrypted connection credentials

Store and API credentials (e.g. your WooCommerce keys) are encrypted with AES-256-GCM before they are written to the database. Plaintext secrets are never stored at rest.

Role-based access control

Every write action in the app is gated by an explicit permission check against the caller’s role in that organization — see the role list below.

Self-hosted core data

The database, authentication and file storage run as our own infrastructure (open-source Postgres/GoTrue/Storage stack), not a third-party managed database vendor — your data does not sit in someone else’s multi-tenant cloud database by default.

Roles

Viewer— read-only access
Reviewer— can review/approve generations
Editor— can create and run sessions, publish
Owner— full control, billing, user & org management

Data residency

We are honest about what stays in-house and what goes to a specialised third party — and why.

  • Primary deployment is a single, self-hosted stack (database, auth, object storage) rather than a shared multi-region cloud service — the operator chooses where it runs. Our own deployment runbook recommends EU-based hosts (Hetzner, Germany; OVH, France).
  • Database backups are retained for 30 days locally and up to 180 days off-site, per our internal backup policy.
  • A small number of specific functions are delegated to specialised subprocessors rather than built in-house — listed below with what they receive and why.

Subprocessors

We do not fabricate a "zero third parties" story — here is exactly who touches what, and why.

ProviderPurposeData involvedRegion
fal.aiPrimary AI image & video generation (inference + LoRA training)Uploaded product/model reference photos, generated outputsUSA
Black Forest LabsSecondary/failover AI image inference (vendor-risk hedge)Same as fal.ai, only on the fallback pathGermany (EU, HQ)
AnthropicLLM: marketing copy generation and automated quality "judge"Product data, prompts, generated textUSA
ResendTransactional and campaign email deliveryRecipient email address, email contentUSA
InngestBackground job orchestration (training, video generation, scheduled jobs like GDPR anonymization)Job event metadata (IDs, references) — not raw image filesUSA
Slack (optional)Internal operational alerts, only if the operator configures a webhookAlert metadata — no customer imagesUSA
PostHogProduct analytics — planned, not yet integratedEU-hosted option under evaluation

Region reflects each provider’s publicly documented headquarters/primary infrastructure. Each of these is a genuine subprocessor operating under a data processing agreement — contact us for current DPA/SCC documentation.

Your own store platform (WooCommerce, Shopify, Shoper, PrestaShop…) is not one of our subprocessors — we only call its API, with credentials you provide, to publish photos you generate. It stays your system.

AI provenance

How our AI works

Compliance-by-default: what is generated, what we trained, and how it is labelled.

Base models are third-party, general-purpose AI

The underlying image and video models (e.g. FLUX.1, and video engines from providers like ByteDance) are built and maintained by their own vendors. Under the EU AI Act, GPAI obligations such as the Article 53 copyright policy and training-data summary rest with those upstream providers, not with us.

Our fine-tuning uses only our own, licensed photos

We fine-tune small LoRA adapters per model, exclusively on photographs we own the rights to, taken under a documented consent process for that specific model. No scraping of third-party images, ever. Fine-tuning compute for a single model is small — an individual training job on our managed trainer typically completes in 10–30 minutes on a single GPU instance — far below the compute threshold (over a third of a base model’s training compute, itself gated at more than 3×10²¹ FLOP) at which the EU AI Act would treat a fine-tuner as a GPAI provider in its own right. We are a downstream deployer of third-party models, not a GPAI provider.

Every output is labelled

Generated photos carry IPTC digital-source-type metadata, a C2PA content credential (cryptographic provenance), and an invisible pixel-domain watermark (TrustMark) that survives resizing, re-compression and cropping — covering cases where metadata gets stripped by a downstream platform. This is the full pair of mechanisms called for by the EU AI Act Code of Practice. One technical note: the watermarking and C2PA signing rely on a native Rust binary module — the published upstream package only ships a macOS build, so we compile it from source (pinned to a verified upstream commit) as part of building the production Docker image, and have verified a full sign-and-read round trip plus TrustMark invocation inside that exact image on both linux/amd64 and linux/arm64. If this layer were ever unavailable on a given deployment, it safely no-ops rather than breaking generation, and the IPTC metadata layer still satisfies the baseline requirement on its own. Generated video carries the same C2PA signing; invisible watermarking for video is a disclosed gap (no vendor solution covers video today).

Penetration testing

We commit to a third-party penetration test on an annual cadence as we grow toward enterprise customers. As of writing, our first external pentest has not yet been completed — this is a forward commitment, not a claim of a finished engagement.

ISO 27001 — roadmap

We are not ISO 27001 certified today. Formal certification is on our roadmap once we reach enterprise scale, not something we claim to hold now.

Support

We aim to respond to every support request within 24 hours on business days, in Polish or English. Support is available in-app via the chat widget in your dashboard, and by email.

Live status

Uptime and incident history for the app and API are published on our public status page, updated automatically.

status.carlen.ai

Security contact

Found a vulnerability, need our DPA, or have a security question for your own compliance review? Reach us directly.

security@carlen.ai

A standard Data Processing Agreement (GDPR Art. 28) and our Technical & Organizational Measures document are available on request.