Data Processing Agreement (DPA) — Template
- Status: Approved for use (counsel sign-off 2026-05-09). Per-customer instances live with counsel, not in this repo — this template is the authoritative starting point.
- Last updated: 2026-05-09
- Applies to: All Puccha tenants (free, team, business, growth, enterprise). Enterprise tier may negotiate per-clause amendments.
- Next review: on any sub-processor change (per
§630-day pre-notice rule), any regulatory change in TH/EU jurisdictions, or annually (next: 2027-05-09).
This is the engineering-supplied factual baseline. Counsel adapts wording for execution.
1. Parties
Section titled “1. Parties”- Controller: the tenant organisation
- Processor: Puccha (operated by legal entity name TBD)
2. Subject matter & duration
Section titled “2. Subject matter & duration”- Processing activities: knowledge-base RAG, conversation logging, AI-generated answer drafting, chat attachments (ADR-0043), ticket management, billing.
- Duration: while the tenant has an active subscription + retention period thereafter.
3. Nature & purpose of processing
Section titled “3. Nature & purpose of processing”Per service module:
| Module | Purpose |
|---|---|
| RAG | Index tenant-uploaded documents and answer visitor questions |
| Conversations | Persist visitor ↔ assistant ↔ agent threads for support context |
| Attachments (ADR-0043) | Accept, store, optionally AI-process, and return to tenant agents the images visitors upload during chat |
| Tickets / SLA | Track open issues to compliance SLA |
| Billing | Generate invoices, report usage |
4. Categories of data subjects
Section titled “4. Categories of data subjects”- Tenant agents (employees / contractors of the controller)
- Visitors of tenant websites
- Identified contacts captured via lead-capture (ADR-0030)
5. Categories of personal data
Section titled “5. Categories of personal data”- Standard: name, email, phone (where provided)
- Pseudonymous: visitor cookie ID, conversation ID, message ID, audit IDs
- Sensitive (Art 9 / PDPA §26): present when visitors voluntarily upload images containing biometric, health, racial, religious, or other special-category data — see DPIA
docs/compliance/dpia-attachments.md
6. Sub-processors
Section titled “6. Sub-processors”Tenants MUST be notified 30 days before a new sub-processor is engaged. This list is the authoritative current state.
| Sub-processor | Service | Data | Region | Transfer mechanism |
|---|---|---|---|---|
| Cloudflare, Inc. | Workers, D1, R2, KV, Vectorize, AI Gateway, Email Sending, Workers AI | All categories above | Singapore (APAC primary) + global edge | CF DPA + Standard Contractual Clauses (signed) |
| Anthropic, PBC | Claude Haiku 4.5 (text + vision) inference | Text content of conversations + (with phase-1 attachments) image bytes for vision turns | US-WEST-2 primary; EU available on Enterprise plan | Anthropic Enterprise + Zero Data Retention addendum (signed 2026-05-09 — input bytes are not retained beyond inference; no 30-day abuse-monitoring window applies) + SCCs |
| Cohere, Inc. | Rerank v3.5 | Text query + retrieved chunk text | US | Standard Contractual Clauses (signed) |
| Sentry GmbH | Application error monitoring | Stack traces, redacted request metadata. No attachment URLs or bytes (scrubbed in beforeSend). |
EU + US per project config | EU SCCs + UK addendum |
| Stripe, Inc. | Payment processing | Tenant billing details only — no visitor data | US + EU | Stripe DPA + SCCs |
Resend is NOT in this list — see ADR-0042.
7. Controller responsibilities
Section titled “7. Controller responsibilities”The controller (tenant) warrants:
- Lawful basis for the data they instruct Puccha to process
- That visitors are informed and have consented as appropriate to the controller’s jurisdiction
- That tenant agents accessing visitor data are bound by appropriate confidentiality
- For ADR-0043 attachments specifically: that the controller’s privacy notice covers visitor-uploaded files, AI processing where enabled, and sub-processor disclosure
8. Processor responsibilities
Section titled “8. Processor responsibilities”Puccha:
- Processes only on documented controller instructions (the service contract)
- Implements the technical and organisational measures (TOMs) listed in §10
- Assists the controller with data-subject rights, DPIAs, breach notification
- Does not engage sub-processors without §6 disclosure
- Returns or deletes data on contract end per §11
9. Data subject rights
Section titled “9. Data subject rights”The controller is the primary contact for data subjects. Puccha provides:
| Right | API surface | SLA |
|---|---|---|
| Access | GET /api/visitors/{id}/export (signed-URL ZIP including attachments) |
30 days; target same-session |
| Rectification | per-attachment delete in widget; per-message edit (admin) | Same-session |
| Erasure | DELETE /api/visitors/{id}/data (cascading R2 + D1 + Anthropic Files API + audit-log tombstones) |
30 days |
| Restriction | tenant flag processingPaused on visitor row |
Immediate |
| Portability | same export endpoint, JSON manifest + binaries | 30 days |
| Withdraw consent | revoke flag; forward-only (past uploads survive until erasure) | Immediate |
10. Technical & organisational measures (TOMs)
Section titled “10. Technical & organisational measures (TOMs)”| Domain | Measure |
|---|---|
| Encryption in transit | TLS 1.3 enforced (HSTS, no fallback) |
| Encryption at rest | AES-256 default on all sub-processors |
| Access control | RBAC (owner / admin / editor / viewer per tenant); MFA for agent accounts (MFA ADR pending) |
| Network | CF WAF rules; Worker-level rate limits; KV-backed session limits |
| Application | Strict CSP, HSTS, X-Content-Type-Options, prompt-injection wrapping in <context> blocks |
| Logging | Immutable audit log (ADR-0023); per-event read logs for attachments (ADR-0043 §“Access controls”) |
| Backup / availability | CF R2 11-9s durability; D1 daily backup (d1-backup.yml) |
| Incident response | 72-hour breach notification; runbook at docs/security/runbooks/attachment-breach.md |
| Sub-processor management | §6 list; 30-day pre-notice on changes |
| Data minimisation | Filename hashing, no PII in audit log payloads, scrubbing in Sentry beforeSend |
| Personnel | Confidentiality agreements; background checks for staff with prod access |
11. End-of-contract data handling
Section titled “11. End-of-contract data handling”On contract termination:
- Live tenant data retained for 30 days post-termination (allows reactivation without data loss)
- After 30 days: hard-delete from D1, R2, AI Gateway logs
- Audit-log tombstones survive per §“Tombstone retention” — they record that data existed and was deleted, not what the data was
12. Cross-border transfers
Section titled “12. Cross-border transfers”- PDPA §28 — controller acknowledges transfers to Singapore (R2 APAC), US (Anthropic, Cohere, Sentry-US), and EU (Sentry-EU) under the safeguards listed in §6.
- GDPR Chapter V — SCCs in place for all extra-EU transfers.
13. Breach notification
Section titled “13. Breach notification”- Puccha notifies the controller within 24 hours of becoming aware of a breach affecting controller data.
- Controller is responsible for onward notification to data subjects (where required) and supervisory authority (PDPC / EU DPA) within 72 hours per their jurisdiction.
- Joint runbook:
docs/security/runbooks/attachment-breach.md.
14. Audit & inspection
Section titled “14. Audit & inspection”- SOC 2 Type II audit is on our roadmap (not yet certified); controls/readiness documentation and our security posture summary available to enterprise tenants on request. This DPA will be updated when the report is available.
- Customer-led audit on 30-day notice, scoped to controls relevant to the controller’s data; cost recoverable from controller.
15. Liability & indemnity
Section titled “15. Liability & indemnity”— counsel boilerplate; not in scope for this template scaffold —
16. Governing law & jurisdiction
Section titled “16. Governing law & jurisdiction”— counsel boilerplate; default Thailand, with arbitration option for international tenants —