Data Processing Agreement — version 3

1. Definition of roles

With respect to the client's personal data, **the coach is the data
controller; the platform operator is the data processor**. By registering
their client on the platform, the coach accepts that they assume this role.

This division of roles changes when the client signs up on their own and has
not yet been linked to a coach: at that stage, the data controller is the
platform operator.

2. Scope of processing

SubjectContent
PurposeProviding the coaching service: preparing programs, tracking, communication
DurationAs long as the coach's account remains open
Data typeIdentity, contact, measurements, health statements, program and tracking records
Data subjectsThe coach's clients

3. Obligations of the processor

of the service.

4. Sub-processors

Sub-processorPurposeLocation
Cloud infrastructure providerHosting the application and databaseFinalized at deployment — the EU region will be chosen
AI marketplace (OpenRouter) and its sub-providersProgram draft generation, interpretation of posture measurements, item estimation from meal photos (with the client's explicit consent)USA or EU (below)
Error tracking providerTechnical error recordsEU

Technical safeguards provided on the artificial intelligence side

These safeguards are not contract text; they are **settings that the code
applies on every request** (backend/app/services/llm/providers/openai_compatible.py):

  1. De-identification. Name, surname, email, phone and date of birth are not

sent; every call passes a machine check. What is sent: age, sex,
measurements, goal, health codes and posture angles calculated on the phone.

  1. Zero data retention (ZDR). Requests are routed only to endpoints that

declare "Zero Data Retention". If there is no such endpoint, the request
returns an error; it does not fall through to a provider that retains
data.

  1. Not used for model training. Requests are sent with

data_collection: deny; a provider that collects data is never used.

  1. Country restriction. The sub-provider list is limited to **the USA and

the EU** (decision of 13 September 2026). The list is derived from
OpenRouter's country data (scripts/saglayici_cografyasi.py); endpoints in
China and Singapore and providers that do not declare their country are
excluded. Details: docs/kvkk/alt-saglayici-yonlendirmesi.md.

  1. Photos are sent only for meals and only under three conditions.

circumstances. Posture is measured on the phone (MediaPipe, on-device);
only angle values go to the provider, and only when the coach requests it.

on (VISION_ENABLED), the client has given a **separate explicit
consent** for meal photos (client consent text v3 and later), and an image
model is defined. If one is missing, the request is not built. The image
model is currently Google Gemini (via OpenRouter); if it changes, this
agreement and the client consent text are updated first.

location. No identity data is sent with the photo.

on depends on measuring the accuracy of item estimation.

Which sub-provider each call went to is recorded in the
ai_runs.upstream_provider field and can be audited.

5. Client requests

The coach handles the data subject's requests for access, correction and
deletion; the platform provides the necessary technical support (export and
permanent deletion functions).

6. Termination of the agreement

When the service ends, the data is exported to the coach and deleted from the
platform.