Data processing agreement
Draft for review by counsel. This is not legal advice. Text in [square brackets] must be filled in or confirmed before signature. Check the annexes against the code before each release.
Effective [date]. Version 0.1.
This agreement is part of the CasinoOS terms of service between [CasinoOS legal entity] ("the Processor") and the Customer ("the Controller"). It applies when the Processor processes personal data for the Controller in providing the Service. It is written to meet Article 28 of the EU General Data Protection Regulation (GDPR) and of the UK GDPR. Where other data protection laws apply, the parties read it so that it meets their equivalent requirements.
1. Roles
- The Controller decides why and how player, staff and affiliate personal data is processed in the Service. The Processor processes it only for the Controller.
- The Processor is a controller only for its own business data: customer account contacts, billing, and its own website. Its privacy notice covers that data.
- Annex 1 describes the processing.
2. The Processor's obligations
The Processor:
- processes personal data only on the Controller's documented instructions, including on transfers. The agreement, the Controller's configuration of the Service and the actions of its staff in the Service are those instructions. If the law requires other processing, the Processor tells the Controller first, unless the law forbids it.
- tells the Controller at once if it believes an instruction breaks data protection law.
- makes sure everyone who processes the data is bound by confidentiality.
- applies the technical and organisational measures in annex 2, and keeps them at least as protective during the term.
- uses subprocessors only as section 3 allows.
- helps the Controller, taking into account the nature of the processing, to respond to data subjects exercising their rights (section 4).
- helps the Controller with security, breach notification, data protection impact assessments and prior consultation (Articles 32 to 36), taking into account the information available to it.
- deletes or returns the data when the Service ends (section 6).
- makes available the information needed to show compliance with this agreement and allows audits (section 7).
3. Subprocessors
- The Controller gives general authorisation for the subprocessors in annex 3.
- The Processor gives at least [30] days' notice of a new or replacement subprocessor, by email and on the subprocessor list. The Controller may object on reasonable data protection grounds within that period. If the parties cannot resolve the objection, the Controller may end the affected part of the Service and receive a pro-rata refund of prepaid fees.
- The Processor puts data protection terms in place with each subprocessor that are at least as protective as this agreement, and remains liable for its subprocessors.
- Some integrations are chosen and contracted by the Controller itself, such as its email or SMS provider, Slack or Microsoft Teams workspace, and self-exclusion registers. When the Controller connects one, data passes to it on the Controller's instruction. Those providers are not the Processor's subprocessors. They are listed in annex 3 for completeness.
4. Data subject rights
- The Service sends messages that look like data-rights requests (access, erasure and similar) to a person on the Controller's data protection team. It never answers them with an AI draft.
- The Processor gives the Controller the means to find, export, correct and delete a data subject's data, through the Service or, where that is not yet possible, on request within [10] business days.
- If a data subject contacts the Processor directly, the Processor passes the request to the Controller and does not answer it unless the Controller asks.
5. Personal data breaches
- The Processor tells the Controller without undue delay, and in any case within [24] hours, after becoming aware of a personal data breach affecting Controller data.
- The notice describes, as far as known, the nature of the breach, the categories and approximate number of data subjects and records, the likely consequences, and the measures taken or proposed. Information may be given in stages.
- The Processor does not notify a supervisory authority or data subjects about a breach of Controller data unless the Controller asks or the law requires it.
6. Retention, return and deletion
- The Controller sets retention per market in the Service's jurisdiction profiles. The defaults are 5 years for the audit trail and AML records and 2 years for chat.
- The Service deletes support and live chat conversations automatically once the chat period for their market has passed since the last message, except a case still open with a person. When the Controller records a data subject's erasure request in the Service, the Service deletes that person's conversations at once and keeps the records the Controller must keep under anti-money laundering law. Each deletion run is recorded in the audit trail.
- Current limit: the audit trail is not deleted automatically, because it is hash chained. Entries past their period are kept until the Controller and the Processor agree how to archive them; the Processor deletes them on the Controller's written request within [30] days, without breaking the chain for the entries that remain.
- When the agreement ends, the Controller can export its data for [30] days. The Processor then deletes it, including from backups within [90] days, unless the law requires it to be kept. Records the Controller must keep under anti-money laundering law are returned to the Controller, not kept by the Processor.
7. Audits
- The Processor answers the Controller's reasonable security questionnaires once a year, and after a personal data breach.
- If the answers and the Processor's reports are not enough to show compliance, the Controller, or an independent auditor bound by confidentiality, may audit the Processor once a year with [30] days' notice, during business hours and at the Controller's cost.
- A regulator of the Controller may audit the Processor as the Controller's licence requires. The Processor cooperates.
- The Processor does not currently hold ISO/IEC 27001, SOC 2 or PCI DSS certification. [Update when that changes.]
8. International transfers
- The Processor processes Controller data in [hosting region]. Some subprocessors in annex 3 may process data outside the EEA and the UK.
- For each such transfer, the Processor relies on an adequacy decision (including the EU-US Data Privacy Framework where the recipient is certified) or the European Commission's standard contractual clauses (Module 3, processor to processor) with the UK addendum, plus a transfer risk assessment. [Confirm the mechanism for each provider and region.]
- Before any model call, the Service removes direct identifiers (see annex 2), which reduces what is transferred to model providers.
9. Liability and order of precedence
Liability under this agreement is subject to the limits in the terms of service [unless counsel agrees a separate cap for data protection]. On data protection matters, this agreement prevails over the terms of service.
Annex 1: Description of the processing
| Subject matter | Providing the Service: support inbox, live chat and web form intake, AI-assisted triage and drafting, CRM segments, compliance checks (responsible gambling, AML, eligibility, self-exclusion), affiliate tracking, chat tools and audit. |
| Duration | The term of the agreement, plus the return and deletion period in section 6. |
| Nature and purpose | Storing, organising, displaying, analysing and scoring data so the Controller's staff can answer players, protect players, meet licence conditions and pay affiliates. Sending data to AI models for triage, reply drafts and live chat answers after identifiers are removed. |
| Data subjects | The Controller's players and prospective players, people who contact it by chat, web form, email or SMS, its staff users, and its affiliates. |
| Personal data | Players: player id, name, contact details, country and market, date of birth or age status, account status, KYC status, balance band, deposit, withdrawal and play summaries, limits, self-exclusion status, messages and case history. Contacts: name, email address and message (web form), chat messages (live chat). Staff: name, email, role, password hash, session data, actions in the audit trail. Affiliates: company, contact name, email, password hash, website, country, payment details they provide, clicks and attributed player tokens. |
| Special categories | The Service is not designed to process special category data. Player messages may reveal health data (for example about gambling harm or mental health). Such messages are routed to a person, and the crisis and responsible gambling handling exists for this reason. |
| Profiling | Responsible gambling risk scoring and AML scoring. Scores lead to protective actions (stopping marketing, withdrawing offers, lowering a limit) or to review by a person. A hold, closure or final AML decision needs a person. |
| Frequency | Continuous. |
Annex 2: Technical and organisational measures
Measures marked in place exist in the Service today. Measures marked planned are not yet in place and must not be relied on until this annex is updated.
| Area | Measure | Status |
|---|---|---|
| Access | Staff sign in with email and password. The session cookie is HttpOnly and SameSite=Strict, and expires after 12 hours idle or 7 days. Roles (owner, compliance, support, viewer) limit who may reply, approve, export and change settings. | In place |
| Access | Only owner and compliance roles can read the audit trail. | In place |
| Access | Multi-factor authentication or single sign-on. | Planned |
| Access | A four-eyes rule for replies while the Customer's Approve all setting is on, and always on responsible gambling and handed-off cases: the staff account that writes a reply cannot approve it, in the hub, Slack or Teams. Slack and Teams users must be linked to a staff account to write or approve. There is no override, and each refusal is recorded in the audit trail. | In place |
| Access | The same four-eyes rule for other actions that need a person, such as holds and offers. | Planned |
| Human control | Every offer and hold needs approval by a person with the right role. Every reply does too while Approve all is on. With it off (the default), low-risk replies are sent without review and each one is recorded in the audit trail. | In place |
| Data minimisation for AI | Before any model call, player ids are replaced with keyed tokens, the player's known name, email, phone and postcode are removed, contact and payment data are stripped, and the account is reduced to VIP tier, KYC status and a balance band. | In place |
| Payment data | Card numbers are masked to the last four digits wherever text is stored, shown, logged or sent to a model. Card-like numbers are refused in live chat and blocked in replies. IBANs and account numbers are masked. | In place |
| Audit | Append-only, hash-chained audit log with an fsync on every write, and an optional HMAC key so the chain cannot be rebuilt without the key. Each AI action records the provider, model, prompt version, hashes of input and output, and the reason. | In place |
| Audit | Anchoring the head hash in WORM storage or a timestamp service. | Planned |
| Transport | TLS through the HTTPS proxy in front of the Service. The server binds to localhost unless configured otherwise. | In place for the documented deployment |
| Abuse | Rate limits on the public web form. Message length limits and a message cap per chat. | In place |
| Retention | Retention periods per market. A daily job deletes support and live chat conversations past their period, applies recorded erasure requests while keeping AML records, and records each run in the audit trail. A dry run shows what would be deleted. | In place |
| Retention | Archiving and deleting audit trail entries past their period without breaking the hash chain. | Planned |
| Security programme | Information security policy, incident response plan, supplier reviews, yearly penetration test, vulnerability scanning. | Drafted, see docs/compliance/policies/; programme not yet operating |
| Backups | Encrypted backups of the data volume with tested restores. | [Describe the hosting provider's backup setup] |
Annex 3: Subprocessors
| Subprocessor | Purpose | Data | Location | When used |
|---|---|---|---|---|
| [hosting provider] | Hosting the Service and its data volume | All Controller data | [hosting region] | Always |
| Anthropic PBC (Claude API) | AI triage, reply drafts and live chat answers | Message text and minimised case context, with identifiers removed (annex 2) | [Confirm region and transfer mechanism] | When the deployment has an ANTHROPIC_API_KEY |
Integrations the Controller chooses and contracts for itself (not the Processor's subprocessors, see section 3.4):
| Integration | What it receives |
|---|---|
| Slack or Microsoft Teams | Case summaries and approval requests posted to the Controller's workspace, and staff actions from it. |
| GAMSTOP and other self-exclusion registers | The identifiers each register requires for an exclusion check. |
| The Controller's email and SMS providers | Approved replies to players. |
| The Controller's back office, payment and KYC systems | Read requests and protective actions the Controller approves. |