Record of Processing Activities (GDPR Article 30(2))¶
Purpose. Soon's processor record of processing activities, required by Article 30(2) GDPR. It is the document a supervisory authority asks for first, and the one enterprise buyers request during security review. It also satisfies A.5.34 (privacy and protection of PII) and supports A.5.31 (legal requirements).
Soon is a processor, not a controller, for customer workforce data. The customer decides why and how their employees' data is processed; Soon processes it on their documented instructions. Soon is a controller for its own employee and prospect data, which is recorded separately in §6.
1. The processor and its representative¶
| Processor | Soon Technologies B.V., Netherlands |
| Contact for data protection | security@soon.works |
| Representative in the EU | Not applicable — Soon is established in the EU |
| Data Protection Officer | Not appointed. Assessed under Art. 37: Soon does not carry out large-scale systematic monitoring, nor large-scale processing of special categories, as a core activity. The analysis is recorded in the Privacy and Personal Data Protection Policy §2.6 and is revisited annually |
2. Controllers on whose behalf Soon processes¶
Article 30(2)(a) asks for each controller. Naming every customer in a document that is shared externally would itself disclose the customer list, so controllers are recorded here by category, with the identified list held in the CRM and the executed DPAs in Drive.
| Category of controller | Relationship | Where identified |
|---|---|---|
| Enterprise customers | Signed MSA + DPA | Google Drive → Legal → Customers |
| Self-serve customers | DPA incorporated into the online terms at soon.works/legal/terms | Attio (CRM) + billing records in Stripe |
| Trial and pilot accounts | Same terms as self-serve for the trial period | Attio |
An identified, current controller list is available to a supervisory authority on request.
3. Categories of processing carried out for controllers¶
Article 30(2)(b). Soon carries out these operations on customer personal data:
| Processing activity | Purpose (set by the controller) | Categories of data subject | Categories of personal data |
|---|---|---|---|
| Workforce scheduling | Creating, publishing and amending shift schedules | The controller's employees and contractors | Name, work email, role, team, skills, employment identifiers |
| Availability and leave management | Recording availability, leave requests and approvals | Same | Working hours, availability, leave dates and types — may include absence records (see §7) |
| Demand forecasting and auto-scheduling | Predicting demand and proposing assignments | Same | Historical schedule and activity data |
| Time and activity tracking | Recording worked time and intraday activity | Same | Timestamps, activity categories |
| Authentication and access | Letting users into the controller's tenant | Same | Email address, authentication identifiers, SSO attributes, IP address |
| Notifications | Sending schedule and account notifications | Same | Name, email address, device push tokens |
| Support | Responding to user questions | Users who contact support | Name, email, the contents of the conversation |
| Optional integrations | Only where the controller enables them — calendar sync, contact-centre platforms | Same | Calendar identifiers, agent identifiers, activity data |
| Optional location features | Where the controller uses location-based scheduling | Same | Work location, address input |
Retention. For the duration of the customer contract, then deleted 90 days after contract end; backups age out on their own cycle. Per the Records Retention & Protection Policy.
4. Sub-processors and third-country transfers¶
Article 30(2)(c). The full list, with what each one does, is the Vendor & Sub-processor Register. Recorded here is the transfer position for each.
| Sub-processor | Role | Location | Transfer mechanism (checked 2026-09-09) |
|---|---|---|---|
| Amazon Web Services (incl. SES) | Hosting, database, transactional email | eu-west-1, Ireland | No transfer — data remains in the EU |
| PostHog | Product analytics | EU Cloud | No transfer (verified in code 2026-08-22) |
| Cloudflare | DNS, CDN, hosting | Global edge | DPF (Cloudflare self-certifies; its DPA states transfers under the DPF are not a Restricted Transfer), with EU SCCs Module 3 as fallback — Module 3 applies expressly where the customer is a processor |
| Stripe | Payments | EU / US | DPF + EU SCCs Module 2 (controller-to-processor). Module 2, not 3, because Soon is the controller of billing contact data — it is Soon's own commercial data, not customer workforce data |
| WorkOS | Enterprise SSO | US | EU SCCs Module 3 — WorkOS's DPA names Module Three where the subscriber is itself a processor. No DPF certification is claimed, so the SCCs are the whole basis here, not a fallback |
| Intercom | Support | US | DPF (EU-US, Swiss-US and UK-US), with SCCs Module 3 as an express fallback if the DPF is invalidated |
| Sentry | Error tracking | US (confirmed 2026-09-09) | DPF, with SCCs Module 3 as fallback — Sentry's DPA names Module 3 where the customer is a processor |
| Cloudinary | Media hosting | EU / US | DPF (Cloudinary, Inc. self-certified), with EU SCCs Module 2 or 3 as applicable |
| OpenAI | AI features | US (contracting entity OpenAI Ireland Limited) | EU SCCs Module 3 (its DPA names Module Three where the customer is a processor), with the DPF where OpenAI holds a valid certification |
| Google (Workspace, Maps) | Collaboration, address lookup | EU / global | DPF — Google LLC has certified adherence to the DPF Principles — plus SCCs where a transfer is not covered by an adequacy decision |
How this was established. Each mechanism was read from the provider's own data processing addendum on 2026-09-09 and the SCC module recorded, because the module matters: Soon is a processor, so transfers to sub-processors are Module 3 (processor-to-processor), not the Module 2 most templates assume. The exception is Stripe, where Soon is the controller of its own billing data.
Re-check annually and on any DPA change. A DPF certification can be withdrawn, and the mechanism then falls back to the SCCs — which is why every row above records a fallback rather than relying on the DPF alone.
Transfer impact assessments. Required where identifiable personal data reaches a non-adequate destination. Two are outstanding: Intercom (identifiable support conversation content) and OpenAI (see §7.1 — the assistant sends unanonymised personal data). WorkOS carries authentication identifiers under SCCs with no DPF, so it is third in line. Tracked as S-411.
On the two US vendors we are migrating. Sentry (S-540) and Intercom (S-303) are both covered today by a valid mechanism, so neither migration is required to make the transfer lawful. They reduce exposure and simplify the story for enterprise buyers; they are not compliance blockers, and should be scheduled as improvements rather than fixes.
4.1 What the AI features actually send (V-4, answered 2026-09-09)¶
Read from soon-server on 2026-09-09. There are two AI paths and they differ, which
matters because only one of them is anonymised.
| Path | Code | What reaches OpenAI |
|---|---|---|
| Auto-scheduling / target-state | src/models/ai.ts |
Names are replaced with tokens (u1, u2…) by src/util/nameAnonymizer.ts before the prompt is built, and mapped back on return. Shift times, hours, activity types and schedule structure still go, but not names. This is pseudonymisation, not anonymisation — Soon holds the mapping, so it remains personal data in law |
| Assistant / chat, conversation titles, and the other model calls | src/lib/assistant/*, src/lib/ai.ts, src/resolvers/Mutation/activities.js |
No anonymisation at all. The anonymiser is not imported on any of these paths. Planners type free text that routinely names people, and the assistant's tools (get_schedule, find_users_on_board, list_team_users) return real employee records into the model context |
Conclusion. OpenAI does receive customer personal data — names, schedules and free-text content — through the assistant. It is correctly listed as a sub-processor in the public DPA, and it needs a transfer impact assessment. The common assumption that "we anonymise before sending to AI" is true of the scheduling feature only.
The decision, taken by the owner on 2026-09-09: do not anonymise the assistant. Tokenising names there would make the feature unusable — a planner asks the assistant to move a named person's shift, and the assistant's tools return real employee records by design. Nor is switching provider realistic: there is no EU-based model provider on par with the frontier labs.
The chosen remedy is residency, not redaction. OpenAI offers European data residency for the API Platform, where requests are handled in-region under zero data retention. That is a better outcome than anonymisation, because no customer personal data leaves the EU at all. It is set per project at creation and enabled for the organisation by OpenAI rather than self-serve, so it needs starting early — tracked as S-542.
Until that lands, the position is stated plainly: the assistant sends customer personal data to OpenAI in the United States under SCCs Module 3, and a transfer impact assessment is outstanding (S-411). Completing S-542 removes the transfer, and with it the need for that assessment.
Sub-processor changes are notified to controllers per the DPA before the new sub-processor begins processing.
5. Technical and organisational measures¶
Article 30(2)(d), by reference to Article 32(1). Described in full in the Security Overview and the policies it cites. In summary: encryption in transit (TLS 1.2+) and at rest (AES-256); role-based least-privilege access with MFA on the AWS console and Google Workspace; segregated environments; centralised logging with continuous threat detection; peer-reviewed change management; automated dependency and vulnerability scanning; Multi-AZ hosting with point-in-time recovery; and a documented incident-response process with a defined breach-notification path.
6. Soon as controller (its own data)¶
Recorded for completeness — this part falls under Article 30(1).
| Activity | Data subjects | Data | Retention | Basis |
|---|---|---|---|---|
| Employment and payroll | Founders, contractors | Contract, payroll, banking | Statutory (NL) | Legal obligation / contract |
| Sales and marketing | Prospect contacts | Name, work email, company | Until objection or 24 months inactive | Legitimate interest |
| Website analytics | Site visitors | Usage events, IP | Per provider settings | Consent — gated by the cookie banner |
| Support and billing | Customer contacts | Name, email, billing details | Contract + statutory | Contract |
7. Absence and sickness data — a deliberate position¶
Leave management is a core function, so the product can hold absence records. Dutch law is unusually strict here: the Autoriteit Persoonsgegevens permits an employer to record that someone is absent and the expected duration, but not the nature of the illness.
Soon's position: the product records absence as a category and a period. It does not ask for, and controllers should not enter, a medical reason. Where a controller's own configuration permits free-text entry against an absence, that field is under the controller's control and Soon's guidance is that it must not carry health information.
TODO(owner): confirm with Thomas which absence-related fields the product exposes,
including whether any free-text field can reach an absence record, so this position is
stated from the schema rather than from intent.
8. Assisting controllers¶
Under Article 28(3)(e) Soon assists controllers with data-subject requests. In practice a controller can export or delete their own tenant's data through the product; where they cannot, security@soon.works handles the request and Soon responds within 5 working days so the controller can meet its own one-month deadline. Deletion actions are recorded in Linear.
Related documents¶
- Privacy and Personal Data Protection Policy · Personal Data Breach Notification Procedure
- Vendor & Sub-processor Register · Records Retention & Protection Policy
- Information Asset Inventory · System Description
Change log¶
| Version | Date | Author | Comments |
|---|---|---|---|
| 0.1 | 2026-08-22 | ISMS | First version — the Article 30(2) processor record the Privacy Policy referenced but which had never been written. Controllers recorded by category; nine processing activities described; transfer mechanisms listed per sub-processor with the open ones marked; the Dutch absence-data position stated. |