Data processing agreement
The Article 28 agreement that governs the file you upload. You are the controller of what is in it; we process it on your instructions and nothing else.
Version 0.5, 15 September 2026, acceptance version 2026-09-15. Last updated . It takes effect when you accept the terms of use, which incorporate it, and it continues for as long as we process personal data on your behalf. You accept it together with the terms by ticking the box when you sign in, and we record the version and the date. A counter-signed copy is available on request.
- For the file you upload, you are in charge of it and we handle it for you.
- We act only on your instructions, which are this agreement, the terms, and the settings you choose for each run.
- We never use your data to train or improve our models.
- One other company touches your file, and it is in the United States: Amazon Web Services hosts everything, and also supplies the language model that three steps call, through Amazon Bedrock. Clause 6.5 lists the three places a model is used and how you avoid each one; what is sent, and the fact that none of it trains anything, is set out once under where your data goes in the privacy notice. Stripe takes credit purchases and never sees your data.
- If we change that list we tell you by email; if you do not accept the change, you can stop using the service and delete your data yourself.
- You can delete an upload, a run or your whole account at any time, closing your account produces a written record of the deletion, and results expire after 30 days whatever you do.
- If your data is ever breached, we tell you within 72 hours.
- One cap covers everything we owe you, the greater of twelve months of fees and USD 1,000; Wyoming law applies; and there is no continuity arrangement yet.
This summary is for orientation; the full text below is what applies.
Contents
- 1. Parties and status
- 2. What this agreement covers, and what you get under it
- 3. Documented instructions
- 4. Confidentiality
- 5. Security
- 6. Sub-processors
- 7. International transfers and data location
- 8. Assistance with data subject rights
- 9. Assistance with security, breach, impact assessment and consultation
- 10. Deletion and return
- 11. Audit and information
- 12. Liability
- 13. Governing law
- 14. Term and changes
- 15. Continuity
- 16. Contacts
- Schedule 1: standard contractual clauses
- Annex 1: details of the processing
- Annex 2: security measures
- Annex 3: sub-processors
1. Parties and status
1.1 This agreement is made between you, the customer (the Customer), and the company below (VarnaOps).
| Legal name | VarnaOps LLC |
| Registration number | 2026-001911287 (Wyoming Secretary of State Filing ID) |
| Registered address | 30 North Gould Street Ste N, Sheridan, WY 82801, United States |
| Operated from | the European Union |
| Contact | support@varnaops.com |
1.2 Roles. For the contents of the file you upload for analysis, and for the results derived from it, you are the controller and we are your processor. For your account data, access-request decisions, run records, billing and operational logs, we are a controller in our own right, and that processing is described in the privacy notice rather than here.
1.3 Each party is responsible for its own compliance with applicable data protection law. Nothing here makes us a joint controller with you for the uploaded file.
2. What this agreement covers, and what you get under it
2.1 This agreement applies to our processing of personal data contained in the files you upload, and in the results derived from them. It forms part of the terms of use and is accepted with them. Where they conflict on the processing of that data, this agreement prevails.
2.2 Annex 1 sets out the subject matter, duration, nature, purpose, categories of personal data and categories of data subject. Annex 2 sets out the technical and organisational measures. Annex 3 sets out the sub-processors. Schedule 1 governs the standard contractual clauses.
2.3 Your rights under this agreement, collected in one place. At any time you may:
- give and withdraw instructions (clause 3);
- receive notice before a change that materially reduces the security measures (clause 5.2);
- receive notice of a change of sub-processor (clause 6.3);
- avoid every language-model call by the choices you make on the run (clause 6.5);
- require assistance with a data subject's request (clause 8);
- receive breach notification (clause 9.2);
- delete any upload, any run or your whole account yourself (clause 10.1);
- choose deletion or return on termination (clause 10.3);
- obtain the deletion attestation (clause 10.5);
- request the information in clause 11.1;
- ask for a remote audit once in any twelve month period (clause 11.2);
- request the standard contractual clauses (Schedule 1);
- and terminate on unreachability (clause 15.3).
Your own obligations are in the terms of use and in Annex 1 under "Customer warranties".
3. Documented instructions
3.1 We process the uploaded file only on your documented instructions, including as to transfers to a third country.
3.2 Your documented instructions are: this agreement, the terms of use, and the run configuration you submit for each run. The run configuration is the reference atlas selected, the analyses selected, the roles you assign to the columns of your own file, and any free-text question you type for the interpretation section. It is recorded with the run and is available to you.
3.3 Processing required by law. A law may require us to process the uploaded file otherwise than on your instructions. That may be a law of the Union, of a Member State, or of a third country to which we are subject. Where it happens, we inform you of that legal requirement before processing. The one exception is a law that prohibits the notification on important grounds of public interest. Clause 7.4 governs requests from public authorities.
3.4 We immediately inform you if, in our opinion, an instruction infringes applicable data protection law. We may suspend the processing concerned until the instruction is withdrawn or confirmed, and will state the ground for the suspension in writing at the time. Suspension is limited to the processing concerned and lasts no longer than is reasonably necessary.
3.5 Purpose limitation. We do not use the uploaded file, or anything derived from it, to train or improve our own models. Nor do we use it for any purpose other than providing the service to you under this agreement. Reference atlases are built from public data only. We do record operational metrics about each run, such as the size band your file falls in, the analyses selected, and the time and resources the run consumed. We use those metrics for capacity planning and pricing. They contain no expression value and no metadata value from your file.
3.6 Diagnosing a failed run. If a run of yours fails, we may open your uploaded file inside our cloud account to find out why, and only for that. The access is recorded in the audit trail described in Annex 2, and we tell you by email that it happened. The file is not copied outside the United States or onto any machine outside that account for the purpose.
4. Confidentiality
4.1 We ensure that every person authorised to process the uploaded file is subject to an obligation of confidentiality.
4.2 Every person with access to the uploaded file, today the founder, owes that obligation of confidentiality under this agreement. It is personal to that person as well as binding on VarnaOps, and it survives the termination of this agreement and of their role. We impose an equivalent written confidentiality obligation on any employee, contractor or other person to whom we later grant access, including any person named under clause 15.
5. Security
5.1 We implement the technical and organisational measures set out in Annex 2.
5.2 We may change a measure provided the change does not reduce the overall level of security. We notify you before making any change that materially reduces the overall level of security described in Annex 2. Annex 2 is dated, is updated when the measures change, and the current version is available to you on request at any time.
6. Sub-processors
6.1 You give us general authorisation to engage the sub-processors listed in Annex 3, on the terms stated there. Everything that touches your files runs inside our own Amazon Web Services account; Stripe, who take payment, never see a file. That holds for every system in the chain. Object storage (Amazon S3), compute (AWS Batch), the language model (Amazon Bedrock), email (Amazon SES) and sign-in (Amazon Cognito). The run, account and billing records (Amazon DynamoDB), the application logs (Amazon CloudWatch Logs), the access trail (AWS CloudTrail) and the site itself (Amazon CloudFront). The hosting sub-processor processes the uploaded file on every run. The model provider is engaged only where you select a feature that calls it.
6.2 We impose on each sub-processor data protection obligations that are, in substance, those of this agreement, and we remain fully liable to you for our sub-processors' performance. On written request, and subject to the sub-processor's own confidentiality terms, we make available the data protection terms agreed with each sub-processor.
6.3 Change notice. The sub-processors are listed in Annex 3. When we add or replace one, we update that list and notify you by email at the address on your account. If you do not accept the change, your remedy is to stop using the service and delete your data, which you can do yourself at any time under clause 10.1.
6.4 Annex 3 is the list. The same recipients are published for a general reader under who else sees your data in the privacy notice.
6.5 Where a language model is used, and how to avoid each one. A language model is used in three places, and each one is switched on by a choice you make. A run with no model call at all is therefore available by your own choices, with no request to us:
- Automatic column detection. It runs only when you press the detect button. Choose the columns by hand instead and nothing is sent.
- The interpretation outcome. It runs only when it is ticked. Leave it unticked and nothing is sent.
- Label matching, on a run with your own labels. It runs whenever you use your own cell-type labels; it sends your distinct label names and the reference vocabulary. Run without your own cell-type labels to avoid it.
In every case the model receives metadata and text, never your expression matrix, and it runs on Amazon Bedrock inside our own Amazon Web Services account. The run's manifest and the report both record whether any model call was made.
6.6 Retention and training at the model provider. The model provider is the hosting sub-processor itself. It does not keep what is sent to a model or what comes back, and nothing sent to it is used to train any model. The company that built the model receives no content at all and so cannot train on it. What each step sends, which models are called and where that position comes from is published once, under where your data goes in the privacy notice.
7. International transfers and data location
7.1 The uploaded file, the results and the operational logs are stored and processed in Amazon Web Services, region us-east-1 (Northern Virginia, United States), in our own AWS account. A model call under clause 6.5 may be processed in another United States region, as Annex 3 states. There is no region choice and no EU-hosted option today. We do not store or process the uploaded file or the results outside the United States.
7.2 Every sub-processor in Annex 3 is reached in the United States. The transfer mechanism for each is stated in Annex 3. The model call runs inside the Amazon Web Services transfer already assessed. A written transfer impact assessment for each is on file and is available to you on request.
7.3 Your own transfer to us. We are established in the European Union. Our position is that an EU customer sending us the file is not itself making a Chapter V transfer, and that the transfer happens when we place the data in us-east-1, where the safeguards in clause 7.2 apply. On request, and whether or not you agree with that reading, we will execute the module two controller-to-processor standard contractual clauses under Schedule 1.
7.4 Requests from public authorities. If we receive a legally binding request from a public authority for the uploaded file or the results, we will:
- notify you without undue delay, unless we are prohibited from doing so;
- seek a waiver of any such prohibition;
- challenge the request where there are reasonable grounds to consider it unlawful;
- disclose no more than the minimum the request requires;
- and keep a record of every such request.
If we are prohibited from notifying you we will use reasonable efforts to inform you of the number and type of requests received over a period.
8. Assistance with data subject rights
8.1 Taking into account the nature of the processing, we assist you by appropriate technical and organisational measures. That assistance is with your own duty to respond to requests from data subjects under Chapter III of the GDPR, including access, rectification, erasure, restriction, portability and objection. Assistance is provided without undue delay and is free of charge for routine requests. Where your requests are repeated or unusually burdensome, we may charge our reasonable costs, notified to you in advance.
8.2 We do not hold the key that links the uploaded file to an identifiable person; you do. In practice our assistance is: identifying which runs and which stored objects relate to a file you name, and correcting, exporting or deleting them. The self-service controls in clause 10 are the primary route and are available to you at any time without contacting us. This is not a statement that the uploaded file is anonymous. Annex 1 records our shared understanding that it is pseudonymised personal data.
8.3 If a data subject contacts us directly about data in an uploaded file, we will not respond substantively and will refer the request to you without undue delay.
9. Assistance with security, breach, impact assessment and consultation
9.1 We assist you in ensuring compliance with the obligations in Articles 32 to 36 GDPR, taking into account the nature of the processing and the information available to us. The flow description that supports your own impact assessment is published at data handling.
9.2 Breach notification. We notify you without undue delay after becoming aware of a personal data breach affecting the uploaded file, and in any event within 72 hours of becoming aware. The notification will describe the nature of the breach, the categories and approximate number of data subjects and records concerned so far as known, the likely consequences and the measures taken or proposed. Where not all of that is known within the period, we send an interim notification of what is known within the period and complete it in phases without further undue delay.
9.2A Handling of a breach. We notify the contact named under clause 16, preserve the evidence and records relating to the breach, and cooperate with your own investigation. We do not notify a supervisory authority or any data subject about a breach affecting the uploaded file on your behalf, and do not do so in your name, unless you instruct us to.
9.3 We maintain an incident log and record, for each incident, whether it constituted a personal data breach.
10. Deletion and return
10.1 Self-service deletion, available at any time during the term. You can delete a single uploaded file, a single run and all its results, or your entire account. Any per-object failure is reported as a failure rather than as partial success. Deletion removes every version of every object concerned, and every delete marker, so no record of it survives in the storage the deletion empties. The security audit records in clause 10.2 are the exception.
10.2 Automatic expiry. Uploaded files are deleted on a lifecycle rule shortly after the seventh day. Results, including copies of your expression data derived from the upload, are deleted on a lifecycle rule shortly after the thirtieth day. Request and job logs are deleted after 30 days. Security audit records are retained for 400 days in a separate audit store. Those records show which principal read or wrote which stored object, and when. They hold no expression value and no content from your file, only the identity of the object and of whoever touched it. The run record has no automatic expiry today. It holds the run id, its status and timings, your email address, the reference selected, and the file name you uploaded, and it is removed when you delete the run or the account. We are a controller for that record under clause 1.2. A file name of your own choosing can itself carry a study accession or a specimen label.
10.3 On termination, at your choice, we delete or return the uploaded files and results and delete existing copies, unless retention is required by law.
- (a) Return. For 30 days after termination we retain
the results then held so that you can retrieve them. Return is by download, in the formats
the service produces: the annotated dataset as
.h5ad, the predictions as CSV, the report as a single self-contained HTML file, and the per-analysis outputs in the result bundle. We assist with retrieval on request and at no charge. The 30 day automatic expiry in clause 10.2 continues to apply during that window and is not suspended. - (b) Your uploaded file itself will normally already be gone, because clause 10.2 deletes uploads 7 days after upload.
- (c) Deletion. At the end of the window, or immediately if you choose deletion, we delete the uploaded files and the results. Only the residues in clause 10.4 survive, and we issue the attestation described in clause 10.5.
10.4 What deletion does not reach, and for how long. These residues survive a deletion:
- the credit balance and credit ledger, retained indefinitely for accounting;
- database point-in-time recovery, 35 days;
- log lines already written, up to 30 days;
- the security audit records described in clause 10.2, 400 days;
- the run record, which has no automatic expiry and is removed by your own deletion of the run or the account;
- the destruction record issued under clause 10.5, retained in the separate audit store;
- a job record of what each run cost us to execute, kept for 365 days for cost accounting. It carries the job's own identifier, its timings and the resources it consumed. The file name and the account identifier are removed before it is written, and the record is deleted when you close your account;
- nothing at the model provider. This residue does not arise: the model runs inside the hosting sub-processor, in our own account, at its zero-retention default (clause 6.6), so there is no separate copy to reach;
- the payment processor's own record of a purchase, on its own schedule.
10.5 Deletion attestation. Closing an account produces a durable written destruction record, suitable if you must confirm destruction to a data access committee. Before the record is issued we re-list every storage prefix concerned and refuse to issue anything if any object survives. The record states how many stored objects and which storage prefix patterns were deleted, when, that the prefixes were verified empty afterwards, and what deletion does not reach (clause 10.4). It deliberately does not record run ids, object keys or file names. It is held in a separate audit store outside the storage the deletion empties, and a copy is returned in the response to the deletion request.
11. Audit and information
11.1 We make available to you the information necessary to demonstrate compliance with Article 28 GDPR. On written request, and no more than once in any twelve month period unless a breach has occurred, we will provide:
- this agreement's annexes, current as at the date of the request;
- the transfer impact assessments named in clause 7.2;
- a written response to a reasonable security questionnaire;
- an extract from the audit trail described in Annex 2 covering access to your own objects over a stated period, where technically available, and at our reasonable cost for periods longer than 30 days;
- the data protection terms agreed with each sub-processor, under clause 6.2.
11.2 Audit. Where the information in clause 11.1 is insufficient to demonstrate compliance, we will cooperate with an audit conducted remotely. You may conduct it yourself, or mandate an independent auditor who is bound by confidentiality and is not a competitor of ours. The audit runs at most once in any twelve month period, on 30 days' prior notice, and at your cost. We contribute by making available the material in clause 11.1, by answering the auditor's questions and by providing evidence from our own systems.
11.3 An audit under clause 11.2 is conducted against the configuration, the records and the audit trail rather than against a location, and the hosting sub-processor's own audit reports and certifications are available from it directly.
12. Liability
12.1 The disclaimer in the terms does not reach this agreement. The "as is" disclaimer and any other exclusion or limitation in the terms of use do not apply to our obligations under this agreement or to our liability for breach of them. The single cap in clause 12.2 is the same cap as section 7 of the terms and is not affected by this clause.
12.2 The cap. Except as clause 12.3 provides, there is one cap on each party's total liability arising out of or in connection with this agreement. It is the greater of the fees paid by you in the twelve months preceding the event and USD 1,000. The cap covers liability for breach of the data protection obligations in this agreement, and for breach of confidentiality under clause 4.
12.3 What cannot be limited. Nothing in this agreement limits either party's liability for death or personal injury caused by negligence, for fraud, or for anything else that cannot lawfully be limited.
12.4 Article 82 is preserved. Nothing in this agreement affects a data subject's rights under Art. 82 GDPR, or either party's liability to a data subject, or either party's right of recourse against the other under Art. 82(5).
13. Governing law and jurisdiction
13.1 This agreement, and any non-contractual obligation arising out of it, is governed by the law of the State of Wyoming, United States. The parties submit to the exclusive jurisdiction of the courts of the State of Wyoming. This clause governs this agreement only.
13.2 Nothing in clause 13.1 deprives a data subject of any right. Nothing in it deprives you of any mandatory consumer or data protection protection available under the law of your own habitual residence or establishment. And nothing in it displaces the supervisory authority competent under the GDPR.
14. Term, precedence and changes
14.1 This agreement takes effect when you accept the terms of use. It continues for as long as we process personal data on your behalf.
14.2 Annexes 2 and 3 may be updated as described in clauses 5.2 and 6.3. Any other change requires the agreement of both parties, and no amendment to the terms of use varies this agreement.
14.3 Form of acceptance. This agreement is accepted as part of the terms of use, without signature. We will, on request, execute a counter-signed copy of it, identical in substance, if your own procedures require one.
15. Continuity
15.1 The position today. One person holds the administrative credential to the account in which the uploaded file, the results and the logs are held, and there is no continuity arrangement of the kind clause 15.4 describes.
15.2 We will notify you without undue delay of any event that makes us, or is likely to make us, unable to operate the service for more than 30 days.
15.3 If we are unreachable for more than 30 days, you may terminate this agreement immediately by notice, and the deletion obligations in clause 10 apply. We will tell you which of those obligations we have been unable to perform, and why.
15.4 Continuity arrangement: none today. There is no arrangement naming another person able to reach the account for the limited purposes of deletion under clause 10, notification under clause 9 and return under clause 10.3. We will put such an arrangement in place as the business grows, bound by an obligation of confidentiality equivalent to clause 4.2.
16. Contacts
16.1 Notices under clauses 6.3, 9.2, 9.2A, 15.2 and 15.3 are given to the contacts each party names, and each party keeps its contact current. Our contact for data protection and for breach notification is support@varnaops.com, which is the address the privacy notice publishes and is read by a person.
Schedule 1: standard contractual clauses
On your request under clause 7.3, the parties execute the standard contractual clauses for the transfer of personal data to third countries. Those are the clauses set out in Commission Implementing Decision (EU) 2021/914, module two (controller to processor). Where UK data protection law applies, the parties also execute the UK International Data Transfer Addendum (version B1.0). Annex 1 of this agreement serves as Annex I (parties, description of transfer); the competent supervisory authority is completed on execution. Annex 2 serves as Annex II (technical and organisational measures) and Annex 3 as Annex III (sub-processors). The docking clause applies.
Annex 1: details of the processing
| Subject matter | Automated annotation of single-cell data by mapping it to a reference atlas, and the analyses you select for each run. |
| Nature of the processing | Storage, format conversion, gene-identifier harmonisation, statistical analysis, machine-learning inference, generation of a report, transmission of the report to you, and deletion. For the runs where you select them, transmission of certain metadata to the model provider named in Annex 3. |
| Purpose | Your own research question. We have no independent purpose for the uploaded file. |
| Duration | For each uploaded file, from upload until the expiry periods in clause 10.2 or an earlier deletion by you. For the relationship, the term of the terms of use. |
| Frequency | Continuous for as long as your data is stored; per-run for the compute and for any transfer to the model provider. |
| Retention | Uploads 7 days, results 30 days, logs 30 days, security audit records 400 days, cost-accounting job records 365 days, run records until you delete them. The residues deletion does not reach are in clause 10.4. |
| Categories of personal data | Single-cell gene expression matrices, and the per-cell and per-sample metadata columns your file carries. In practice those columns commonly include a donor or sample identifier you assigned, a disease or health status value, sex, developmental stage or age, self-reported ethnicity, and study or tissue identifiers. You determine what your file contains. |
| Special-category data | Health status is special-category data whether or not the person is identifiable to us. We process it only on your instructions and take no independent Art. 9 gateway for it. |
| Categories of data subject | The donors or research participants whose specimens your dataset is derived from. |
| Customer warranties | You warrant that you are entitled to upload the file, that your ethics approval and participant consent cover the processing described here, and that you will not upload directly identifying data or protected health information. Those warranties are in the terms of use. |
Pseudonymised data is personal data. The parties record their shared understanding that a de-identified single-cell submission is pseudonymised rather than anonymous, because you hold the re-identification key and because genotype is reconstructible from single-cell RNA data. The de-identification requirement in the terms reduces risk; it does not take the data outside data protection law.
What is sent to the model provider, and when. Three cases, each one your own choice: (a) an optional, separately priced column-role proposal sends each column's name, data type, cardinality, populated fraction and three real example values from that column; (b) label matching sends your distinct label names and the reference vocabulary; (c) the interpretation section sends computed results, gene symbols, cell-type names, the condition column name and its values, the donor column name, and your own typed question. No expression value and no per-cell row is ever sent. Outside case (a) no donor or sample identifier is sent.
Annex 2: technical and organisational measures
Measures in place as at 12 September 2026. Each line is a measured state, not an intention.
| Measure | What is actually in place |
|---|---|
| Encryption in transit | Every request to the storage bucket is denied when aws:SecureTransport is false, so a plaintext upload is refused at the bucket. The web application and the API are served over TLS. |
| Encryption at rest, object storage | Server-side encryption with AES-256 and AWS-managed keys on the bucket holding uploads and results. There is no customer-managed key, so there is no key you can hold or revoke. |
| Encryption at rest, database | The run records are held in a managed database encrypted at rest with the AWS-owned default key. |
| Encryption at rest, compute | The volume attached to the machine that runs each job is encrypted, and account-level default encryption is on. The volume is destroyed when the machine terminates, and the fleet scales to zero between runs. |
| Audit logging | A CloudTrail trail records management events and object-level read and write events on the bucket holding uploads and results, with log-file validation enabled. Those records are held for 400 days in a separate audit store, as clause 10.2 states. Nothing before 31 August 2026 is recorded. |
| Access control | No IAM users exist in the account; access is through AWS single sign-on only, and one named individual holds administrative access. Multi-factor authentication is enabled on the account root, and the single-sign-on directory enforces device registration at sign-in with context-aware prompting for that administrator. The customer-facing sign-in is covered by the internal register available under clause 11.1. |
| Access to the service | Self-service registration: you sign up with an email address and a password, and confirm a code we email you before the account is created. We can suspend an individual account or self-service registration as a whole. |
| Separation of your data | Each customer's uploads are stored under a prefix keyed on that customer's account identifier, and result downloads are issued only after an ownership check that returns "not found" rather than "forbidden" on another customer's run. A running job cannot reach the upload area at all: the container obtains its own object through a broker that refuses unless the calling task is the task of the job whose command names that key. Each run writes its results with a credential scoped to that run's own prefix, so one run's process cannot reach another run's results either. |
| Result delivery | Reports and result bundles are delivered by a link that expires one hour after it is issued. Within that hour the link is a bearer link and anyone you forward it to can fetch it. |
| Retention limits | Uploads 7 days, results 30 days, logs 30 days, cost-accounting job records 365 days, all enforced by lifecycle configuration on the storage itself rather than by an application step. Security audit records run the other way and are kept 400 days, in a separate audit store, so that an incident found at the end of a year can still be investigated: they record which principal read or wrote which stored object, and no content from any file. |
| Logging discipline | No expression value is written to any log on any path. Metadata column names are logged; the values of a condition column are logged; donor and sample values are not logged on the customer path. Model prompts and responses are not logged. |
| What the report contains | One row per value of your own sample or donor column in the per-sample quality table. Everything else is aggregate: differential expression prints donor counts and never donor names, and no age value is read into any analysis or report. |
| Testing of disclosures | The claims made on the privacy notice about sub-processors, retention and browser storage are enforced by an automated test suite that fails if the published page and the underlying record disagree. This tests the accuracy of what is published; it is not a test of the security controls themselves. |
| Minimising what leaves for the language model | The three model-facing steps send what Annex 1 lists and no expression value or per-cell row, and each of the three is reached only by a choice you make on the run, so a run with no model call at all is available by your own choices under clause 6.5. Whether any model call was made is recorded in the manifest and the report. |
| Deletion attestation | Account deletion verifies that every prefix re-lists empty before it issues a written destruction record, and refuses to issue one if anything survives. The record is held in a separate audit store outside the storage the deletion empties. |
| Availability and backup | The run records are held in a managed database with point-in-time recovery over a rolling 35 day window. The uploaded file, the results and the reference data are not backed up beyond the storage service's own durability, by design: the retention rules delete them on a schedule, and a backup would outlive the deletion it is supposed to survive. No restoration test has been performed and no disaster-recovery procedure exists. |
Measures not in place, disclosed rather than omitted. No customer-managed encryption key. No EU hosting option and no choice of region. No independent security certification and no third-party penetration test. No tested restoration procedure. No regular testing of the effectiveness of the security measures themselves for the purposes of Art. 32(1)(d): the automated suite above tests the accuracy of published claims, which is a different thing. No pseudonymisation of your own sample or donor values in the report: the per-sample quality table prints them as they appear in your file, the report names the column it used, and the remedy today is to rename or replace those values before upload. No rehearsed breach response: the runbook behind the notification period in clause 9.2 exists but has not been exercised. The complete register, including the measures whose absence is security-sensitive, is held internally and is available to you under clause 11.1.
Annex 3: sub-processors
Current as at 9 September 2026.
Sub-processors of the personal data in the uploaded file, which is what this agreement covers:
| Sub-processor | What it does | Engaged | Location | Transfer mechanism |
|---|---|---|---|---|
| Amazon Web Services | Hosts the platform: object storage for uploads and results, and the compute that runs each job. | On every run | United States, us-east-1 | EU Standard Contractual Clauses, controller to processor, plus the UK IDTA. |
| Amazon Web Services (Amazon Bedrock) | Supplies the language model used by the optional column-role proposal, label matching and interpretation steps. Receives metadata and text only, never the expression matrix. The same company and the same account as the row above. | Only where you select a feature that calls it. Clause 6.5 lists the three occasions and how each one is avoided. | United States. The call is placed in us-east-1 and may be processed in us-east-2 or us-west-2 under a United States routing profile. | EU Standard Contractual Clauses, controller to processor, plus the UK IDTA, the same instrument as the row above, because it is the same counterparty. |
Not a sub-processor under this agreement:
| Recipient | Why it is listed here | Location | Transfer mechanism |
|---|---|---|---|
| Stripe | Takes credit purchases and receives the buyer's name, email, payment details and account identifier. It never receives the uploaded file or anything derived from it. We are a controller for that processing under clause 1.2, not a processor, so Stripe is not a sub-processor of your data and your authorisation under clause 6.1 is not needed for it. | United States | EU-US Data Privacy Framework, with the Standard Contractual Clauses as contractual fallback. |
Clauses 6.5 and 6.6 state what the model provider may and may not do, and clause 10.4 records that no residue arises there.
Something here that does not match what you need? Ask before you upload.