cloro

Our Commitment to Security

Last updated on 26 October 2026

This page sets out cloro’s commitment to security. It documents the technical and organisational controls we operate, organised around the SOC 2 Trust Services Criteria so that security reviewers can map it directly onto their own questionnaires.

We are a small team and we have written this page to be verifiable rather than flattering. Controls we operate are described in the present tense. Controls we do not yet have are listed explicitly in what we don’t have yet. If a reviewer needs a control that appears in that section, tell us — we would rather discuss the gap than have you discover it three weeks into a procurement cycle.

Entity. Cloro Incorporation Ltd., 168 St. Christoph Street, VLT 1467, Valletta, Malta.

Security contact. [email protected]

Data protection contact. Ricardo Batista — reachable through our contact form under “Legal, privacy, or security”.

Compliance status

We state this plainly rather than implying more than we hold.

FrameworkStatus
GDPRAligned. DPA available, incorporating the EU Standard Contractual Clauses (2021/914).
SOC 2 Type INot certified. Currently evaluating auditors and compliance platforms.
SOC 2 Type IINot certified.
ISO 27001Not certified.
Independent penetration testNot yet performed.

The controls below are in place today and are described accurately. They have not been examined by an independent auditor, and we do not claim otherwise.

Control environment and personnel

SOC 2 CC1

Access control

SOC 2 CC6

Internal access

Secrets management

Customer-facing access

We do not currently offer SAML or OIDC single sign-on.

Encryption

SOC 2 CC6.1, CC6.7

System operations

SOC 2 CC7

Vulnerability management

Network security

Monitoring and logging

Incident response

Change management

SOC 2 CC8

Risk mitigation and vendor management

SOC 2 CC9

Availability

SOC 2 Availability criteria (A1)

Backups

SystemBackupRetention
PostgreSQL (primary)Continuous point-in-time recovery to any transactionRolling 7 days
PostgreSQL (secondary)Independent daily logical dumps to separate object storage14 days
ClickHouse (analytics)Full backup daily, incremental backups every 30 minutes, written off-host~3 days of incrementals plus supporting full backups

Recovery objectives

ScenarioRecovery time objective
Analytics host rebuild, storage volume intact~15 minutes
Full analytics restore from object storage~45 minutes

Recovery point objective is effectively zero for PostgreSQL, which supports transaction-level point-in-time recovery, and up to 30 minutes for analytics data, matching the incremental backup interval.

Our infrastructure runs in a single cloud region. A full region outage is outside our current recovery plan, and we say so rather than implying multi-region resilience we do not operate.

Verified restores

A restore drill runs automatically every week. The most recent backup is restored to a temporary database, validated against expected row counts, and then discarded. The drill reports its own heartbeat, so a drill that stops running raises an alert. A backup nobody has restored is a hypothesis, not a backup.

Capacity

Confidentiality and data handling

SOC 2 Confidentiality criteria (C1)

What we process

cloro is a data collection API. The material we handle on your behalf is the queries you submit, the results we return, and the operational telemetry around those requests.

DataRetention
Synchronous request payloads and resultsNot persisted after the response is returned
Asynchronous task records and resultsDeleted 24 hours after the task reaches a completed or failed state
Result files (HTML pages, screenshots)Deleted 2 days after they are created
Request telemetry (request ID, organisation, API key ID, query, model, status, latency, credits)6 months
Application logs from customer-facing services (API, dashboard, collection, async)7 days
Infrastructure and cluster logs30–90 days depending on source
Account, organisation, and billing recordsLife of the account, then per our Privacy Policy

Deleting an organisation cascades to its memberships, API keys, subscription, and credit ledger records, and cancels its Stripe subscription. Deleting a user removes their record and their contact in our email provider (Resend).

Staff access to customer data

Engineering staff can access stored request telemetry, which includes the query text you submit. This access is used only for customer support and technical troubleshooting. It is not used for analysis, benchmarking, or any commercial purpose.

AI tools. Staff use AI assistants for troubleshooting. These tools are configured so that our inputs are not used to train models. We do not have a technical control that blocks consumer AI applications or browser extensions on staff devices.

We do not train on your data

We do not use customer queries, results, or any customer data to train machine learning models, and we do not sell or license customer data to third parties. Your data is processed to deliver the service you requested, and for no other purpose.

Deletion on request

On a verified deletion request we remove customer data from production systems within 30 days. Data may persist in backups until those backups age out on the retention schedule above, after which it is unrecoverable. Records held by Stripe, HubSpot, PostHog and Pylon are not deleted automatically.

Privacy and data residency

SOC 2 Privacy criteria

Data residency. Our primary infrastructure — application services, the PostgreSQL database, the analytics store, and all backups — runs in DigitalOcean’s NYC3 region in the United States. Our browser collection fleet runs on Hetzner infrastructure in Germany. Transfers of EU personal data to the United States are covered by the Standard Contractual Clauses in our DPA.

We do not currently offer an EU-only hosting option. If your organisation requires EU data residency, contact us before you build on cloro so we can tell you honestly whether we can meet the requirement.

Subprocessors

These are the third parties that process the data you send through the API on our behalf: your queries, the results we return, and the request telemetry around them. Each is bound by a data processing agreement. Transfers outside the EEA are covered by the Standard Contractual Clauses incorporated into our DPA.

The providers we use for our own account, billing, support and analytics data, for which cloro is the controller, are not subprocessors. Our Privacy Policy covers that data.

Change notification. We publish every change to this list in the change log at least 7 days before a new subprocessor starts, so you have time to object under Clause 9 of our DPA. Subscribe below and we email you each change when we publish it.

One email per change, sent when we publish it. Reply to any notice to unsubscribe.

SubprocessorPurposeData processedLocation
DigitalOceanCloud hosting, managed PostgreSQL, object storageAll application data and backupsUnited States
HetznerBrowser collection fleetRequest payloads during collectionFinland, Germany
WorldstreamBrowser collection fleetRequest payloads during collectionNetherlands
OVHBrowser collection fleetRequest payloads during collectionFrance
CloudAMQPJob queue between the API and the collection fleetAsynchronous requests and results, held until deliveredUnited States
CloudflareDNS, CDN, website hosting, and result file storageWebsite request metadata; result files (HTML pages, screenshots), deleted after 2 daysGlobal edge network; result files in Western Europe
SnapshooterBackup orchestrationPostgreSQL backup contentsUnited States
Better StackLogging, uptime monitoring, public status pageApplication logs and request metadataGermany, United States

Change log

Each change is published here first. A new subprocessor starts no earlier than its effective date.

PublishedChangeEffective
25 September 2026Removed Amplemarket (signup enrichment)25 September 2026
26 October 2026Added Worldstream (browser collection fleet, Netherlands), in use since 25 September 202625 September 2026
26 October 2026Added OVH (browser collection fleet, France), in use since 16 October 202616 October 2026
26 October 2026Added CloudAMQP (job queue, United States), in use since 16 September 202516 September 2025
26 October 2026Cloudflare also stores result files (Western Europe), since 27 April 202627 April 2026
26 October 2026Corrected the Hetzner location to Finland and Germany26 October 2026
26 October 2026Removed Clerk, Stripe, Resend, Doppler, Mintlify, Pylon, PostHog, HubSpot, Google Ads and Reddit: they process our own account, billing, support, analytics or advertising data, not the data you send through the API26 October 2026

What we don’t have yet

Every trust page lists what a company has. This section lists what we do not, because a reviewer will find out anyway and the discovery is worse than the disclosure.

ControlStatus
SOC 2 Type I certificationEvaluating auditors and compliance platforms
ISO 27001 certificationNot started
Independent penetration testNot yet performed
Formalised written policy setPractices are operating but not yet documented as formal policies
Documented risk assessment programmeNot yet established
Formal security awareness trainingNot yet established
Formal vendor security reviewsVendor selection is not yet a documented review process
Cyber liability insuranceNot currently held
SAML / OIDC single sign-onNot offered
Enforced MFA for dashboard usersSign-in is by email one-time code or Google; a second factor is not enforced
Enforced code reviewPull requests are used; branch rules do not require an approving review or a passing check
Web application firewall on the APINot in place; the website and dashboard are behind Cloudflare
Managed device fleet (MDM / EDR)Endpoint encryption is enabled; central management is not. Production access needs a device signed into our tailnet
Multi-region failoverSingle region; a full region outage is not covered

We are working through this list. If one of these blocks a purchase, say so — customer demand is how we prioritise it.

Reporting a vulnerability

If you believe you have found a security issue in cloro, email [email protected] with enough detail to reproduce it. We will acknowledge your report within 2 business days and keep you updated as we investigate.

Please do not run automated scanning against production, degrade service for other customers, access or modify data that isn’t yours, or perform social engineering against our staff. We will not pursue legal action against researchers who report issues in good faith and stay within those limits.

Our machine-readable policy is published at /.well-known/security.txt per RFC 9116.

Security reviews and documentation

Send security questionnaires, vendor assessments, or DPA signature requests to [email protected]. Tell us your deadline and we will tell you honestly whether we can meet it.