Data processing agreement
Menzura processes photos and body data of the Customer’s end users only to return their body measurements, and deletes each photo as soon as its scan finishes. This agreement sets out the terms, using the European Commission’s standard clauses for processors. Customers accept it on the dashboard before their first scan.
Agreement
- Parties. Avisio Analytics, trading as Menzura (the Processor), and the customer that accepts this agreement on the Menzura dashboard, in the name of the company it enters there (the Controller), together the Parties.
- Standard Contractual Clauses. The Parties agree to the standard contractual clauses in the Annex to Commission Implementing Decision (EU) 2021/915 of 4 June 2021 (the Clauses). The Clauses are incorporated into this agreement by reference and can be read on EUR-Lex. Annexes I to IV below are the Annexes of the Clauses.
- Options in the Clauses.
- Clause 5 (docking clause): not included.
- Clause 7.7(a): Option 2, general written authorisation. The sub-processors in Annex IV are authorised. The Processor informs the Controller in writing of any intended addition or replacement at least 30 days in advance.
- Clause 9.2: the Processor notifies the Controller of a personal data breach without undue delay, and in any case within 48 hours of becoming aware of it.
- No other purposes. The Processor does not use the personal data to identify or authenticate any person, to train or improve models, or for any purpose of its own. It only counts successful scans per Controller for invoicing.
- The Controller’s responsibilities. The Controller has a lawful basis for each scan it submits and informs its end users, including where they are children. It sends no names, email addresses or other direct identifiers of end users to the Processor, including in the
Idempotency-Keyheader. - Requests from end users. The Processor cannot link a scan to a person. The Controller identifies scans by the scan ID it received. The Processor deletes the scans the Controller names within 14 days of a written request to [email protected].
- Liability. Each Party’s total liability under this agreement is limited to the greater of the fees the Controller paid in the 12 months before the event and EUR 10,000. This limit does not apply to damage caused by intent or deliberate recklessness, nor to liability towards data subjects under Article 82 GDPR.
- Term. This agreement applies as long as the Processor processes personal data for the Controller. It ends when the Controller asks to close its account or the Processor closes it. Clause 10 of the Clauses governs what happens to the data afterwards.
- Precedence and law. If this agreement conflicts with the Clauses, the Clauses prevail. Dutch law governs this agreement, and the District Court of Amsterdam (Rechtbank Amsterdam), the Netherlands, decides disputes.
- Acceptance. The Controller accepts this agreement electronically on the Menzura dashboard. The Processor records who accepted, for which company, when, which version, and the IP address and browser used. This record is the Parties’ signature. A new version is published on this page and accepted on the dashboard in the same way.
Annex I: List of parties
| Controller | Processor | |
|---|---|---|
| Name | The company named when accepting this agreement on the dashboard | Avisio Analytics, trading as Menzura |
| Registration | Provided on request | KvK 78674514, VAT NL003371649B33 |
| Address | As provided on request | Hermitage 122, 1506 TX Zaandam, the Netherlands |
| Contact for data protection | The email address of its Menzura account | [email protected] |
| Role | Controller | Processor |
Annex II: Description of the processing
The Processor estimates body measurements from photos that the Controller sends through the Menzura API.
Categories of data subjects. People whose photos the Controller submits for a measurement: the Controller’s end users, such as shoppers or app users.
Categories of personal data.
| Data | Detail |
|---|---|
| Photos | 1 to 8 photos of one person per scan, JPEG, PNG or HEIC, up to 10 MB each |
| Inputs | Height in cm, weight in kg and sex (male or female) |
| Results | Body measurements in cm (ISO 8559-1 names) with 95% confidence ranges, and the share of the body visible in the photos |
| Scan records | Scan ID, status, error code and message, timestamps, the API key used, and the Idempotency-Key if the Controller sends one |
Sensitive data. None is intended. The Processor does not use the photos to uniquely identify or authenticate anyone, so they are not biometric data under Article 4(14) GDPR. Photos may still show health or other special categories incidentally. Safeguards: photos are processed automatically, deleted as soon as the scan finishes, and served only to the Processor’s processing server while it holds the scan (Annex III). No one at Menzura views the photos.
Nature of the processing. Receiving photos and inputs through the API, storing them until processing, automated analysis on the Processor’s own GPU server, storing the results, and returning them to the Controller through the API.
Purpose. Estimating the data subject’s body measurements for the Controller, scan by scan, as the Controller requests through the API. Counting successful scans per Controller for invoicing.
Duration and retention.
| Data | Kept |
|---|---|
| Photos | Only while the scan waits or is processed; deleted as soon as it succeeds or fails |
| Inputs, results and Idempotency-Key | Deleted 90 days after the scan; sooner on the Controller’s request (Agreement, clause 6) |
| Everything, after the agreement ends | Deleted within 30 days (Clause 10(d)); the Controller can retrieve its results through the API until then |
After 90 days only the scan record remains, without inputs and results: scan ID, status, error code and message, number of photos, timestamps and the API key used, for invoicing and usage figures. Deleted data can remain in the database provider’s point-in-time recovery for up to 30 days.
Processing by sub-processors. Hosting, database and photo storage by Cloudflare for the duration of the agreement (Annex IV).
Annex III: Technical and organisational measures
Photos exist only until their scan finishes, are encrypted wherever they are stored, and only the processing server can read them while it holds that scan.
| Area | Measures |
|---|---|
| Encryption | All traffic uses HTTPS (TLS). Photos (Cloudflare R2) and the database (Cloudflare D1) are encrypted at rest with AES-256 (R2, D1) |
| API access | API keys are random secrets stored only as SHA-256 hashes, and can be revoked on the dashboard at once. Each key reaches only its own account’s scans |
| Dashboard access | Login with a one-time code sent by email, stored as a hash, with limited attempts. Sessions are HttpOnly, Secure cookies, stored as hashes and valid for 30 days. Login and access forms are protected by Cloudflare Turnstile |
| Uploads | File types are checked from their content, not their name; at most 8 photos of 10 MB each |
| Processing server | The Processor’s own GPU server pulls scans. It needs a secret worker token and a current 120-second hold on the scan to download its photos; the token alone reads no photos |
| Photos on the processing server | Kept in memory or a temporary directory deleted when the scan ends. Never written to persistent storage, caches or training data. Photo addresses, tokens and image contents are never logged |
| Processing server location and security | At the Processor’s office, Hermitage 122, Zaandam, the Netherlands. Its disk is encrypted |
| Minimisation | No names, email addresses or other identifiers of end users are requested. Photos are deleted as soon as a scan succeeds or fails (Annex II) |
| Separation | Testing uses a separate database and photo storage; production data is not used for testing |
| Secrets | Tokens and keys are kept in Cloudflare’s secret store, not in code |
| Staff access | Only the owner has access to the processing server and production systems |
| Recovery | The database can be restored to any point in the last 30 days (D1 Time Travel) |
| Incidents | Breaches are reported to the Controller within 48 hours (Agreement, clause 3) |
Annex IV: List of sub-processors
Cloudflare is the only sub-processor. The processing server is the Processor’s own machine, and the payment and email providers receive no end-user data.
| Sub-processor | Service | Data | Location | Transfer safeguard |
|---|---|---|---|---|
| Cloudflare, Inc., 101 Townsend Street, San Francisco, CA 94107, USA | API and dashboard hosting (Pages), database (D1), photo storage (R2) | All data in Annex II | Cloudflare’s global network; storage not restricted to the EU | EU–US Data Privacy Framework; Cloudflare’s DPA with the EU standard contractual clauses (Decision 2021/914) for other transfers |