Last updated: 2026-10-01
Revision status: The boundaries for head-teacher names and the records for the OpenAI and Anthropic requests, document extraction, JobEd and sign-in are reconciled with internal ROPA v3.17 and transfer annex v2.9. Kollen has a legitimate-interest basis and a clear instruction not to submit private or sensitive data. Requests to Anthropic are subject to a legal stop until dated provider/account evidence shows that processing outside the EEA is limited to the countries approved in our code and transfer annex, currently only the United States, with the DPF or SCCs and a country- and recipient-specific TIA; another country requires code and annex review. The code stops the requests when such evidence is missing, but we have not confirmed that this block is deployed and working in the production environment and do not assert it here. Zoho Mail has no positive release: new user-initiated inbound enquiries may be received, manually assessed and answered only to the strictly necessary extent after case-specific minimisation and under the matter's documented basis; no AI is used. Proactive or discretionary contact, campaign/relationship-building, automation, bulk processing and new integrations/features/data categories are not permitted. Document extraction is not subject to a blanket stop, but each use must first pass a simple, versioned, flow-specific assessment.
This page is aimed at municipal procurement officers and data protection officers (DPOs) who need to review Skolkoll's data processing prior to contract. For a general overview, see the privacy policy. For a data processing agreement (DPA), see the DPA template.
1. Roles and contact
In processing activities P1–P3 — P1 organisation memberships/roles of the customer's users, P2 customer-directed imports and watches, and P3 instruction-bound support/incident material — the municipality is the data controller and Skolkoll is the data processor. Skolkoll is separately the controller for its own identity/access security, its own customer and billing administration, watches requested by an anonymous visitor, and other own purposes in the privacy policy. Stripe/billing records and public-source data are not automatically part of the processor engagement.
Data processor (Skolkoll): Skolspegeln AB
Organisation number: 559359-7288
Contact for data protection enquiries: info@skolspegeln.se
Skolkoll has not appointed a Data Protection Officer (DPO) because the operation does not meet the criteria in GDPR art. 37 (the core activity is not large-scale monitoring of personal data; no special categories of personal data are systematically processed).
2. Processors, subprocessors and other recipients
The table lists providers by their actual role and processing activity. A provider is a Municipal Licence subprocessor only when it processes personal data in that processing chain; Zoho Mail and Zoho Campaigns instead process Skolspegeln's own controller activities. Processor/DPA terms and transfer mechanisms apply where required for the relevant role and processing. Providers used for user-selected social login process their own account and authentication stage under their own terms; country and transfer mechanism are assessed provider by provider and are not reduced to one shared US/SCC scenario.
| Provider | Service | Data category | Region | DPA |
|---|---|---|---|---|
| Google Cloud (Firebase) | Hosting, Firestore, Cloud Functions, Cloud Storage, Authentication, Cloud Logging | User accounts, organisation data, raw usage-statistics data, billing history, and access-controlled raw public annual-report/ESEF sources with their source-archive metadata. Runtime logs can contain operational user, organisation and request IDs, masked contact values in mapped flows, and runtime/error/stack context. The new journalist-order logging is narrower and code-limited to pseudonymous request/document IDs and minimised error/runtime classification (error type, allowlisted error code and numeric status); no contact details, order content, free text or provider error messages are logged there. | Our configuration and the approved target specify europe-west1 (Belgium) for Firestore, Cloud Functions and Cloud Storage. An archived check of the production environment dated 2026-09-05 establishes Firestore in europe-west1 and all eight production buckets in europe-west1 or the EU multi-region. Firebase Hosting uses a global CDN. Firebase Authentication is covered by the Google Cloud DPA/SCCs/DPF without a separate europe-west1 assertion here. The logging configuration was checked directly in the production environment on 2026-09-05. Outcome: the application logs were in Google's global location, which is not tied to any region, and were moved the same day to europe-west1 via a new bucket and a re-pointing of Google's default routing for application logs, with retention unchanged at 30 days. The audit logs (Google's mandatory audit log, which cannot be switched off, 400 days) remain in the global location in a locked bucket, which cannot be moved, deleted or have its retention reduced. No exclusion filters are configured in any log routing, so no redaction occurs in the routing layer, and no customer-managed encryption key (CMEK) is set. Our internal deadline of 2026-08-14 passed before the check was done; it has now been completed and archived. Until then the gap blocked expansion and new log categories. | Google Cloud DPA (SCCs included) |
| Stripe Payments Europe Ltd | Payment processing (card + invoice) | Billing address, email, organisation number, payment metadata. Card details never pass through Skolkoll's servers. | Ireland (EU) primarily; some fraud-detection functions may involve Stripe US under SCC. | Stripe DPA |
| Resend Inc. | Service, transactional, expressly requested watch and technical email (including invitations, invoices, requested reports/exports, watch notifications, security alerts and internal notifications of submitted lead-form enquiries to our operations mailbox). Firebase Authentication handles its own account-verification and password-reset email. Resend is not used for campaigns, newsletters or trial nurture. | Email address, name, subject, message body (deleted at Resend after 30 days) | United States; transfers are covered by the EU Standard Contractual Clauses (SCCs) | Resend DPA |
| Zoho Corporation / Zoho Mail | Official monitored mailbox info@skolspegeln.se in Zoho One under a dated interim-risk restriction with no positive release. Pending transfer-evidence closure, new user-initiated inbound enquiries — including rights, privacy, incident, Municipal Licence, quote/demo, verification and journalist/direct matters — may be received, manually assessed and answered only to the strictly necessary extent after case-specific content and necessity minimisation. The basis follows the matter: a legal obligation where applicable; Art. 6(1)(b) only where the data subject is personally the prospective contracting party; otherwise documented Art. 6(1)(f) for the narrow read/minimise/respond purpose. Free text is not assumed to be public; Article 9/10 content requires a separately documented basis or no further processing. Content is not sent to AI. Proactive/discretionary contact, campaign or relationship-building, automation, bulk processing and new integrations, features or data categories in Mail are not permitted. Our internal deadline of 2026-08-14 for obtaining the evidence passed without the evidence being completed. Those restrictions therefore remain, and the allowed minimised intake continues only while escalation is under way; Zoho Legal's 2026-09-08 response identifies SCC Module 3 for Zoho EU → Zoho India in prose. The account-specific DPA was signed on 2026-09-11, but its Schedule 1 is the article 28 processor clauses and states in its own clause 1(f) that they do not by themselves ensure Chapter V compliance, so the transfer mechanism remains supplier-asserted rather than contracted. Clause 5.1(i) makes EEA storage a contractual term, but Schedule 2 expressly permits Indian access and names India alone for EEA customers, while the supplier's own SOC 1, SOC 2 and ISO location annexes place Austin in the United States in scope for support. Our India assessment must address current law and the United States leg remains unsupported. The mailbox copy follows the same case lifecycle and hard cap as the underlying matter. Export, minimisation and verified deletion remain permitted. This proves neither Chapter V compliance nor that the restriction is technically enforced in the Zoho account. | Name, email address, message, voluntary attachments and technical message headers | MX routing points to Zoho EU but is not used alone as proof of tenant region. On 2026-09-08 Zoho Legal stated that data remains in the EU and that India support staff have remote access under SCC Module 3. An account-specific processing agreement was signed on 2026-09-11; the tenant region remains unverified and the Chapter V mechanism supplier-asserted. Our focused India assessment under current law and the United States evidence remain open. | Zoho's published DPA/SCC terms |
| Zoho Corporation / Zoho Campaigns | Designated separate platform for campaigns and newsletters, not part of the site's Resend path. On 29 July 2026 complete open and link-click tracking were observed ON. The next send and every send-capable automation are stopped until the owner has used account-specific evidence to exclude unintended automations, verify DPA/SCC incorporation, complete dated unsubscribe and RTBF tests, verify retention/suppression, turn tracking off or document a separate purpose/LEK-ePrivacy/granular consent/withdrawal route, and approve the send manually. The stop is not technically verified in the Zoho account. | Email, name, organisation/locale, consent provenance, list/segment, delivery status, suppression, opens and link clicks. Tracking requires a separate purpose, an assessment under LEK Chapter 9 Section 28/ePrivacy, granular informed consent and equally easy withdrawal unless a strict statutory exception is documented, or dated evidence that it will not operate for the send. | SPF routing points to Zoho's EU sender but is not used alone as proof of tenant region. Zoho publishes information about possible support access and subprocessors outside the EU/EEA. Account-/contract-specific incorporation, tenant region and the transfer assessment have not been verified in this revision and remain supplier-evidence follow-up. | Zoho's published DPA/SCC terms |
| Functional Software, Inc. (Sentry) | Error monitoring in the browser frontend; not Cloud Functions | On ordinary public pages, error messages and stack traces. On the signed-in paid surface (the account pages) Sentry does not load unless the build explicitly opts in, as of 2026-09-05: Sentry is off there by default and loads only if the build expressly switches it on; removing that setting switches Sentry off on the paid surface again. The description below therefore covers what would be collected if Sentry were switched on there: events are reduced to event ID, release, coarse account surface, error class and stack position; identity, request/response, URL query, breadcrumbs, DOM/input and arbitrary context are removed. Browser/OS may be processed by the SDK and source IP reaches Sentry's network edge. We have not checked Sentry's separate setting for removing IP addresses, so we claim neither that full IP is always removed nor that it is never stored. | The website's security settings (CSP) permit intake in Germany via ingest.de.sentry.io, but we have not checked in the production environment whether error monitoring is switched on, in which region events are received and stored, or how the setting for removing IP addresses is configured; we claim neither an actual region nor that IP addresses are removed. SCCs are required for any support by the US team. | Sentry DPA |
| Zoho Corporation / Zoho PageSense | Web analytics, A/B testing, heatmaps/session recording on public pages after consent | Page views, clicks/scrolling, heatmap and session-recording interactions, experiment variant, device and browser info. PageSense is not activated on noindex/account/admin pages and is loaded only after analytics consent. | The script is loaded from Zoho's EU address cdn-eu.pagesense.io. Zoho publishes standard DPA/SCC terms, but account incorporation, live tenant region/plan and the focused transfer note remain unverified and are quarterly evidence checks | Zoho's published standard GDPR/DPA/SCC terms |
| CARTO | Not used. The direct request for map tiles from CARTO has been removed from the website's map code; we have not yet confirmed the change in the production environment. | No current transfer from the website's map code. A future tile service would receive IP/request metadata and map-tile coordinates. | No current recipient region is asserted. Reopening requires a closed recipient/country list and transfer assessment. | Role, terms, necessity and any Article 28/Chapter V mechanism must be documented before a reviewed code change. |
| Zoho Corporation / Zoho Desk | The separate Desk support surface does not accept new cases. New user-initiated support enquiries are instead received and manually assessed at info@skolspegeln.se under the Zoho Mail restriction. The current journalist connector is switched off in the software code, regardless of general evidence about the account, the contract or retention: its contact model lacks order binding and tested matching deletion/minimisation. Journalist orders are not disclosed to Desk and no full-content fallback email exists. | For a future separately approved support flow: minimum necessary name, email address, organisation membership, ticket content/history and voluntary technical attachments. Any future journalist replacement must use an order-bound object without cross-purpose merging. No automated AI analysis, risk classification or private analysis comment is created. | Zoho publishes an EU-hosted Desk endpoint and standard DPA/SCC terms, but account incorporation, live tenant region/plan and the focused transfer note remain unverified; the surface is stopped and is a quarterly evidence check | Zoho's published standard GDPR/DPA/SCC terms |
| Zoho Corporation / Zoho CRM | The current journalist connector is switched off in the software code and cannot be switched on by general evidence or settings: it creates one global contact per email address and is not tied to the individual order. No journalist order is disclosed to CRM. A future replacement requires order-bound objects and tested matching deletion/minimisation before the switch-off in the code is removed, in the same reviewed change. | No current CRM record. For a future approved replacement design: minimum order-bound contact metadata without order free text, Zoho CRM's free-text description field, cross-purpose merging or later relationship/campaign contact. | Zoho's public EU address for API calls, www.zohoapis.eu. Zoho publishes standard DPA/SCC terms, but account incorporation, live tenant region/plan and the focused transfer note remain unverified; the surface is stopped and is a quarterly evidence check | Zoho's published standard GDPR/DPA/SCC terms |
| Anthropic / OpenAI | The user-initiated "Kollen" AI chat, AI-based school-image stylisation after either the form flow's server-validated consent and hash-bound review or a separate rights-cleared import check without form consent, and internal document extraction. Journalist email is not part of the AI flow. See "Internal AI support" below. | Kollen processes the user's chat message and school context; the user is instructed not to submit private or sensitive data. School-image stylisation sends the image file to OpenAI, but not contact details, photographer name, rights-holder name, source links, photo dates or free-text form notes. Document extraction processes material from public records after a simple flow-specific assessment. Kollen and document extraction use the providers' data-protection settings appropriate to the current flow; this is not a ZDR claim. Journalist email is not sent automatically to an AI provider. | OpenAI: the United States and individually named countries and mechanisms approved in its scenario. Anthropic: API data is stored in the United States; no other non-EEA country is approved while the provider's Europe, Asia and Australia region statement lacks a complete country list. Kollen requests are therefore subject to a legal stop until dated provider/account evidence shows that processing outside the EEA is limited to exactly the United States, with the DPF or SCCs and a country- and recipient-specific TIA under transfer annex v2.9. The code stops the requests when such evidence is missing; we have not yet confirmed that this block is deployed and working in the production environment. Another country requires code and annex review before a request. | Anthropic DPA · OpenAI DPA |
| Identity providers (Google, Microsoft, GitHub, Facebook/Meta; Apple not yet launched) | User-selected social login (OAuth/OIDC) for Skolspegeln's own account security. No extra provider scopes are added. Apple is hidden as a new sign-in option until its production configuration is verified. | Basic identity for sign-in, normally name and email address, from the selected provider | Provider-specific: Google global; Microsoft tenant-dependent; GitHub conservatively United States; Meta global. The actual recipient determines whether adequacy, the DPF or SCCs are used. | Each provider's account terms and privacy notice; the provider is independently responsible for its account/authentication stage. |
| Customer organisation IdP (SAML/OIDC) | Customer-controlled Municipal Licence sign-in (P1), only after an organisation- and provider-specific assessment and an approval recorded for the organisation in our system | Work email, stable provider identity and the organisation/role claims instructed and approved by the customer | Established per customer and IdP before activation; missing approval blocks discovery, verification, auto-join, enforcement and reauthentication. | The customer's instruction, DPA and provider-specific role/Article 28/transfer evidence are required before activation. |
AI processing of school images
Before a new model request, one of two alternative checks must be satisfied. An image from the school-image form requires server-validated consent to AI stylisation and a positive editorial review. The consent must carry the current consent version, or be unversioned and submitted on or after 6 July 2026 (UTC), when the form already asked for today's AI consent but its people attestation excluded identifiable people only as main subjects. For such submissions, the editor's people inspection supersedes the submitter's weaker attestation. The review is bound to the current image hash, licence/rights attestations and exact optional author URL, confirming the rights basis and no identifiable people. A separate rights-cleared import does not require or claim form consent; it instead requires a distinct positive import review bound to the current image hash and source/licence/rights evidence, together with LIA §7.1 and the applicable Article 14 provenance. The current AI eligibility check on the school-image submission implements only the form-flow check, so the import route must use a separately recorded review before model processing. Missing or mismatched evidence stops new and retry requests; completed processing that satisfied its applicable check is not regenerated. For a form image, the photographer name and exact review-bound HTTPS link are published only where CC BY 4.0 or CC BY-SA 4.0 requires them. Where the submitter is the photographer, the current v3 review records direct information through the version-bound collection notice. A named third-party photographer must otherwise receive direct information within the Article 14(3) time limits. Article 14(5)(b) may replace direct information only after a dated and signed legal record has been registered expressly for the exact source and publication; the server-controlled register for such records is empty, and without such a registration the exception is not used. Our documented Article 14(5)(b) assessment for image attribution (2026-07-30) does not by itself activate the exception: a verified prior attribution source must still be documented for the same source and publication. Legacy review evidence under the earlier v2 check may not publish a name or link and must be reviewed again; the chalk image itself does not need regeneration. CC0 collects and publishes no photographer/rights-holder name or person/source link. An optional photo date is used for review only and is not published. Skolkoll runs no separate AI moderation step. Only the image file and a static style instruction are sent to OpenAI — never contact details, photographer name, rights-holder name, source link, photo date or free-text form notes. According to OpenAI Data Controls, checked on 2026-07-29, the image flow's requests to OpenAI's image-editing interface have no application-state retention. Standard abuse-monitoring logs may nevertheless be retained for up to 30 days; image content flagged by the provider's safety systems may be held for manual safety review, and longer retention may occur where required for safety or legal obligations. These are exceptions that apply to that interface specifically, not a ZDR claim.
Internal AI support
Kollen. The chat is activated by the user and processes the question on the basis of legitimate interest (Article 6(1)(f)) under a documented balancing test. The interface instructs the user not to enter private or sensitive information. That instruction is the adopted preventive safeguard; no general technical free-text block is claimed. The instruction is not, however, an Article 14 exception if a user nevertheless submits data about another person. The open notice here and a documented proportionality assessment are used as compensating measures; if Skolkoll becomes concretely aware of the person and has contact details, individual notice is provided within the timing required by Article 14(3), unless an applicable exception is documented. Kollen is not approved for Article 9 or 10 data. If Skolkoll becomes concretely aware that such content was nevertheless submitted, further use of that content in the session stops; it is not reused or content-logged, and any incident/risk assessment is performed without copying the content. The legal basis does not replace the third-country transfer requirements: no request may run while Anthropic can route non-EEA processing to an unnamed country.
Document extraction (OpenAI). Officially published public documents may be used after a simple, documented and versioned assessment for the current municipality/portal/layout flow. Our technical controls check the whole document before every model request: private-source markers, personal identity numbers/pupil-identifying contexts and Article 9 or 10 indicators stop the document, while email addresses and phone numbers are removed from the separate provider copy. Classification can produce false negatives and this remains a residual risk. The controls are built and tested, but we have not yet confirmed that they are deployed and working in the production environment; no production use is approved on the strength of this text until they are verified. No extracted value is published automatically: candidates enter a human-reviewed queue. The legal basis is legitimate interest (Article 6(1)(f)); neither ZDR nor document-by-document review is a blanket requirement for this bounded public category. Document extraction uses OpenAI's Chat Completions interface for text generation with OpenAI's optional response storage switched off, so the response object is not retained as application state for the flow. That does not exclude the provider's other retention paths: prompt caching may retain encrypted KV tensors in GPU-local storage for up to 24 hours, standard abuse-monitoring logs may be retained for up to 30 days, and longer retention may occur where required for safety or legal obligations. The flow is therefore not described as retention-free or ZDR.
Journalist email and other user-initiated direct enquiries. A new inbound matter may be received, manually assessed and answered only to the strictly necessary extent after case-specific content and necessity minimisation under Zoho Mail's dated interim-risk restriction. The basis follows the matter as stated in the provider row above; free text is not assumed public and Article 9/10 content requires a separate basis or no further processing. Message content is not sent to Anthropic, OpenAI or another AI service. Proactive/discretionary contact, campaign/relationship-building, automation, bulk processing and new integrations/features/data categories are not permitted. Our internal deadline of 2026-08-14 passed without the evidence being completed; only the minimised intake continues, while escalation to a lawful replacement channel is under way.
For P1–P3 Municipal Licence data we use no advertising networks, marketing platforms or social-media pixels. Zoho PageSense may run only after explicit cookie consent from visitors on public, indexable pages. Skolkoll does not use Google Analytics. PageSense tracking is not run for signed-in municipal users. Internal usage statistics are collected through our own anonymous collector in Firebase without personal data.
Notice of subprocessor change
While a Municipal Licence is active, we notify the agreed contact person, DPO and the organisation's administrators by email at least 30 days before adding or replacing a subprocessor. The municipality has the right to object during that period — objections are handled per the Municipal Licence agreement's termination clause. We do not use the new subprocessor for the municipality's personal data before the objection has been handled or the termination period has expired.
3. Retention periods per data category
Periods are measured from the most recent event (e.g. last login, last payment). After the listed time the data is deleted or anonymised. Unless stated otherwise, the data is stored in our database (Google Cloud Firestore).
| Data category | Where the data is stored | Retention | Legal basis |
|---|---|---|---|
| User accounts (profile, memberships) | User profiles and the organisations' member lists | Until deleted by the user. Inactive accounts (24 months without login) receive a reminder and are deleted after 36 months. | P1: the customer's documented instruction for membership/role. Own account security: legitimate interest (art. 6.1.f) for necessary identity, access and security administration; art. 6.1.b only where the data subject is personally a party to the contract. |
| Organisations + Pro subscriptions | Organisation records and their subscriptions | Active for the lifetime of the subscription. Billing history retained for 7 years (Swedish bookkeeping act). | Customer instruction for customer-governed organisation data; Skolkoll's own customer administration uses art. 6.1.b only where the data subject is personally a party to the contract, otherwise documented art. 6.1.f. Art. 6.1.c applies to the specific bookkeeping records. |
| Analytics events (raw) | Raw usage-statistics data | 90 days, then individual events are deleted. Aggregated daily summaries (no personal data) are retained until further notice. | Legitimate interest (art. 6.1.f) — product development. No personal data is stored (the session ID is random, no IP, no user-agent). |
| Widget beacon and abuse triage | The log of anomalous widget loads | Only anomalous or suspicious widget loads are logged. Each entry gets a deletion date set 30 days ahead. A check of the production environment on 2026-07-30 showed the automatic deletion rule (TTL) for that date as active; this proves policy state, not deletion of a particular expired sample. Firestore deletion is asynchronous after expiry. | Legitimate interest (art. 6.1.f) — attribution, rate limiting, abuse and security traceability. Contains embedder origin, widget type, municipality/school slug, anomaly flags and a salted IP hash; no cookies. |
| Legacy mail contacts and campaign records | The retired first-party email system's contact list, address reservations, lists, campaigns, sends and delivery events | The first-party campaign system is retired and makes no new sends. The periods are absolute caps and do not themselves supply a legal basis. After the old seven-day link grace, records without a current decision, specific to that record set, to retain them for security, accountability or legal claims are erased; a valid decision causes immediate minimisation. Everything else is erased earlier. The retired reservation that kept each email address unique (the address reservations) is always erased and is not reused as a second suppression copy. Caps: confirmation link 48 hours, unsubscribe link 7 days, unsent inactive draft 90 days, webhook event 30 days, and minimised evidence/suppression 24 calendar months. There is a daily cleanup job and a one-time migration that first runs as a trial, but we have not yet confirmed that they are deployed, inventoried the records in production or confirmed that the erasure has been completed. | Consent was only the basis for the historical newsletter send and processing before withdrawal. After withdrawal or purpose end, minimum evidence/suppression requires a concrete purpose of security, accountability or legal claims and Art. 6(1)(c) where a specific duty applies, otherwise a documented Art. 6(1)(f) balancing. Technical email and watch notifications use separate systems. |
| Retired trial-nurture markers | Markers of sent trial emails and the organisation record's former fields for the onboarding-guide sends | A one-time post-deployment cleanup removes the markers and the organisation record's three fields for the onboarding-guide sends (when the send started, when it was sent and the organisation's progress on the onboarding checklist when it was sent). The migration requires explicit project confirmation before execution. | The markers do not prove consent or another legal basis for the historical trial sends, and no such basis is asserted retroactively. Current access is limited to necessary retirement, erasure and accountability under art. 6.1.c where a duty applies, otherwise art. 6.1.f. |
| Campaign and newsletter contacts | Zoho Campaigns (external service, not Firestore) | Skolspegeln's governing target is active contact data until withdrawal, unsubscribe or purpose end and no more than 24 months for minimum suppression/consent proof and identifiable recipient reports. Longer retention for a specific existing or threatened legal claim requires a separate assessment within our processing for establishing, exercising or defending legal claims. The account's actual erasure/RTBF configuration and enforcement of the 24-month target have not been attested in this revision and remain supplier-evidence follow-up; the provider's possible five-year maximum has not been adopted as Skolspegeln's retention period. | Sends and separately approved tracking: consent (art. 6.1.a), plus separate MFL and LEK Chapter 9 Section 28/ePrivacy assessments. Consent is not reused as the basis after withdrawal; minimum proof/suppression relies on art. 6.1.c where GDPR/MFL requires it, otherwise a documented art. 6.1.f balancing to prevent re-contact or defend a claim. |
| Audit log | The audit log | 2 years. Each new entry gets a deletion date set 2 years ahead. A check of the production environment on 2026-07-30 showed the automatic deletion rule (TTL) for the audit log's deletion date as active; this proves policy state, not deletion of a particular expired sample. TTL deletion is asynchronous after expiry. | Legitimate interest (art. 6.1.f) — security, traceability, access-control review and dispute/incident investigation. |
| Pseudonymous account-deletion audit | Our account-deletion log | At most 12 months through a deletion date stored on the record, whether the status records completed deletion or a retryable/blocked step. The document ID and account reference are separate domain-separated SHA-256 hashes; the entry contains the account reference (a hash of the account ID), email hash, status, safe error steps and cleanup counters, but neither the account ID in plain text nor the email address in plain text. It is not a continuing account. A check of the production environment on 2026-07-30 showed the deletion rule as active, which does not prove asynchronous deletion of a particular expired sample. | Legitimate interest (art. 6.1.f) for minimum evidence of completion or a failed step; art. 5.2 is an accountability principle, not a separate legal basis. |
| API usage quota | A usage counter per organisation and month | 13 months (for billing reconciliation and dispute). | Customer instruction for customer-directed quota handling; Skolkoll's separate quota, billing and dispute control: legitimate interest (art. 6.1.f). Art. 6.1.c applies only where a concrete bookkeeping requirement covers the data. |
| Watchers | Watches and watch events | Active watches are stored until the user ends them, deletes the account or the customer instruction ends. Pending confirmations have a 48-hour token window. On unsubscribe, the email, confirmation/unsubscribe bearer tokens and other direct watch fields are deleted immediately; a minimised closed tombstone with the hash, status and close/expiry clocks may remain only for documented suppression/accountability and at most 24 calendar months, with earlier deletion at purpose end. A daily cleanup job goes through older closed records, minimises them and deletes the closure records when their time is up; we have not yet confirmed that the job is deployed, that it has run for the first time or that it works in the production environment. Watch events are normally cleaned within 35 days. | Anonymous watches: consent (art. 6.1.a) through double opt-in. P2: the customer's documented instruction for organisation-governed Municipal Licence watches. Art. 6.1.b only where the data subject is personally a party to the contract. |
| Commercial lead forms | Enquiries submitted through the form | 90 days through a deletion date stored on the record. A check of the production environment on 2026-07-30 showed the deletion rule (TTL) as active, which does not prove deletion of an expired sample. The record contains name, email, organisation, phone, message, source/surface, locale, versioned Article 13 notice and UTM fields. The form instructs users not to submit private, sensitive or other people's data. The record is kept in our database (Google Cloud Firestore). So that the enquiry can be answered, our email provider Resend sends an internal email with the form's details to Skolspegeln's own operations mailbox for each stored record. An identical submission is not notified again within 24 hours. To do so, a pseudonymous fingerprint of the submission, without contact details, is kept and deleted automatically within about two days of its last use. Resend keeps the message for 30 days, and the copy in the operations mailbox is deleted within 90 days under a documented manual routine run by the owner. Free text is never sent to Zoho CRM's free-text description field; no retired marketing-consent field is collected. The connector to Zoho CRM is switched off and creates no new provider record. | Art. 6.1.b only where the data subject is personally the prospective contracting party; otherwise documented legitimate interest (art. 6.1.f) for necessary technical receipt and access-restricted storage, case-specific manual minimisation/response, abuse prevention and operational recovery. AI/content analysis and proactive contact are outside that purpose. Unexpected Article 9/10 or third-party data requires a separate basis/condition or is minimised/deleted. |
| Correction form for published school data | Submitted corrections | Controller target: email, any name (only for manual or API records), user-agent and free text are erased or anonymised 90 days after the case is closed, and no later than 12 months after receipt; de-identified case data remains. Rights matters (art. 15–21), including manually logged email matters of that kind, instead follow the retention rules for evidence in security, accountability and rights matters. No automatic purge is in operation (control gap); state 2026-09-03: no record has been purged. Manually logged email matters are stored together with the submitted corrections and follow the same target. The record contains school/page, issue type, free text, any link, source link and school-unit code, optional email, locale, user-agent and time of receipt; no IP address in the record. | Documented legitimate interest (art. 6.1.f) for necessary technical receipt, access-restricted storage, case-specific minimisation and the reply the form offers. A report concerning the data subject's own data is handled as a rights request (art. 15–21) with the art. 12.3 period counted from receipt. |
| Municipal Licence demo | Demo sessions (intake removed in code 2026-09-07; ceases in production at deployment, storage ongoing) | Delete in full. The scheduled cleanup was removed with the demo intake's server function. The automatic deletion rule (TTL) for the deletion date on the records is retained but does not cover everything: the deletion date was introduced on 2026-08-01 while the demo went live on 2026-05-05, so records from the three intervening months carry no deletion date and TTL never touches them. The 30-day field-level redaction of raw IP and user-agent was performed by the job and cannot be done by TTL. The one-time erasure — target 2026-09-21, responsible Sales privacy owner, with a check in production showing zero documents — is verified only for the demo-session records in Firestore. Production PITR windows, backup exports and the email provider's (Resend) recipient, message and token metadata fall outside that verification and follow their own schedules. The automatic deletion rule is removed only once that check exists. | Historic basis, unchanged for the records that remain: for a user-initiated lead/demo enquiry, art. 6.1.b applies only where the data subject personally is the prospective contracting party; otherwise a documented art. 6.1.f assessment covers necessary manual receipt, case-specific minimisation, response and abuse prevention for a self-requested B2B demo. That purpose ended with the demo, so no basis remains for further retention and erasure is due under art. 5(1)(e)/17(1)(a). |
| Requested public-data event watch | Requested public-data event watches | Unconfirmed double-opt-in records are cleaned after about 30 days through a deletion date for unconfirmed records, which is removed on confirmation; the deletion rule (TTL) was confirmed active on 2026-07-26. Confirmed watches are retained until unsubscribe. On unsubscribe the entire document must be deleted immediately; no inactive record, tombstone or suppression hash may be retained. A separate backfill must remove older residue from the previous behaviour. The legacy newsletter addresses (sign-up, confirmation and unsubscribe) are compatibility routes: they do not enrol a person in a campaign/newsletter and messages contain only matching public-data events and service links. | Consent (art. 6.1.a) for the expressly requested watch. |
| Journalist data orders | The journalist orders | Under our decision, the Firestore record is deleted once the order is handled plus a recovery window, with a target of 180 days from submission. Each record gets a deletion date. A check of the production environment on 2026-07-30 showed the automatic deletion rule (TTL) for this exact date as active; this proves the configuration state, not that a particular expired sample has completed Firestore's asynchronous deletion cycle. Orders unresolved after 180 days require documented approval and have a 12-month hard cap. The current Desk and CRM connectors are switched off in the software code and create no provider record. A future approved replacement must delete the whole order-bound provider record when the order purpose ends or consent is withdrawn, and always no later than the order hard cap. Longer retention requires a separate future purpose, legal basis and notice. The order free text must not be sent to CRM, and nothing may be put into Zoho CRM's free-text description field. | Consent (art. 6.1.a) for storing and handling the form order and providing a contact response. Art. 6.1.b applies only if the data subject is personally the prospective contracting party and has requested pre-contractual steps. Legitimate interest (art. 6.1.f) applies only to necessary abuse prevention and operational recovery, not to order handling, the contact response, editorial follow-up or an ongoing relationship. No campaign or newsletter use without separate consent/provenance. |
| School-image submissions and rights data | The school-image submissions | Pending submissions become due for deletion 180 days after upload even after return to review; rejected submissions become due 90 days after the decision. For approved images, the minimum image, licence, attribution, source and review provenance is retained while the image is used or rights claims may reasonably need to be handled. Contact details, photo date, review free text and other intake-only fields become due for minimisation 180 days after approval; legacy CC0 names and links are covered by the same pass. The daily cleanup job performs due deletion or minimisation in the next successful run that reaches the record; queueing or operational failures can delay execution. The photo date is never published for a form image. | For form submissions: consent (art. 6.1.a) only for the submitter's own contact data and selected AI processing, together with the licence agreement. Where CC BY 4.0 or CC BY-SA 4.0 requires attribution, the photographer's name and any exact image-hash/licence/URL-review-bound HTTPS link are processed and published on the basis of legitimate interest (art. 6.1.f) and the applicable Article 14 route. A named third-party photographer must receive direct information within the Article 14(3) time limits; Article 14(5)(b) may replace it only where a dated and signed legal record exists for the exact source/publication. The server-controlled register for such records is empty, and without such a registration the exception is not used. CC0 intake and projection contain no person attribution. |
| Queue for public school-image revocation | The deletion queue on the school-image submissions, with a due date that makes pending matters searchable | Queue and retry fields follow the submission/deletion matter's schedule and are minimised after a verified outcome. The recorded time of public inaccessibility means verified public inaccessibility after deletion of the active generation or an object already absent from the public path; it does not prove physical deletion of every provider byte. If the inventoried version of the image file is no longer the current one when the deletion runs, the matter may not finalise and instead enters retry/reinventory. Soft delete/provider retention may remain after public inaccessibility. | Art. 6.1.c where a concrete erasure/rights obligation applies; otherwise documented legitimate interest (art. 6.1.f) for safe execution and accountability. |
| Pseudonymised deletion audit for expired pending/rejected school images and immediately deleted people images | The log of school-image deletions | 24 calendar months from the deletion anchor identified by the entry's recorded deletion scope: deletion of the source record for ordinary retention cleanup, or verified image-file deletion for an immediate people-image purge where the image-less source record remains until its ordinary deadline. Each new entry gets a deletion date set two calendar years after the deletion. If deletion in Cloud Storage remains, the entry's status is awaiting file deletion; only after the affected files are confirmed deleted is the status set to completed and the time of the file deletion recorded, without moving the earlier expiry. The people-image purge audit is best-effort so an audit failure never blocks deletion of the image; durable purge state remains in the source record. A bounded migration that only shortens older expiry values has been prepared, but its trial run, execution, reconciliation of older statuses and follow-up check in production have not yet been documented. A check of the production environment on 2026-07-30 showed the automatic deletion rule (TTL) for the log's deletion date as active; this proves policy state, not that older seven-year expiry values have been shortened or that a particular expired sample has been deleted. The entry is minimised but remains pseudonymous personal data: it contains the submission's private ID, cutoff date, deletion reason, scope, status, deletion/completion timestamps and an optional HMAC-SHA-256 hash of the contact email — not raw contact data, image files, school name or free text. A concrete legal claim is handled in a separate restricted evidence record with its own deadline and does not extend this audit entry. | Legitimate interest (art. 6.1.f) and accountability under GDPR art. 5.2 — being able, for a proportionate normal period, to answer the status of the scope-defined deletion without retaining raw personal data. |
| AI chat conversation | Only in the browser's session storage (sessionStorage) — never on our server. | Deleted when the browser tab is closed. | Legitimate interest (art. 6.1.f) under a documented balancing test — a user-initiated question service with an instruction not to submit private or sensitive data. |
| AI audit log | The Kollen audit log | Each entry gets a deletion date set 90 days ahead. A check of the production environment on 2026-07-30 showed the automatic deletion rule (TTL) for the log's deletion date as active; this proves policy state, not deletion of a particular expired sample. TTL deletion is asynchronous after expiry and cannot be guaranteed exactly on day 90. | Legitimate interest (art. 6.1.f) — pseudonymised abuse and security traceability. |
4. Right to erasure — operational flow
You can exercise the right to erasure (GDPR art. 17) in the following ways, sorted from fastest to most manual:
AI audit log — TTL and manual deletion
The AI chat does not permanently store questions or answers on Skolkoll's server. For abuse and security traceability, the server makes at most one asynchronous write attempt to the Kollen audit log in our database (Google Cloud Firestore) per eligible processed Kollen request. The response does not await that write, failures are logged, and storage is therefore not guaranteed. A stored entry contains call type, a keyed and domain-separated HMAC-SHA-256 pseudonym for the IP address truncated to 16 characters, school context as an exact eight-digit school-unit code or no value, question and answer length, status, a timestamp, and a deletion date.
Normal retention is 90 days: each entry is written with a deletion date set 90 days ahead. A check of the production environment on 2026-07-30 showed the automatic deletion rule (TTL) for the log's deletion date as active; this proves policy state, not deletion of a particular expired sample. Firestore's automatic deletion (TTL) removes the entry asynchronously after the deletion date; TTL is not an exact deletion timestamp.
To request earlier deletion, email info@skolspegeln.se with the approximate time and any school context for the AI call. We then search server-side for matching entries and manually delete identifiable matches using administrative access to the database. If an entry cannot be matched without collecting additional data, it remains until the TTL retention expires.
School-image submissions — unpublication and deletion
If you have submitted a school image, you can request unpublication, deletion or correction of photographer/rights-holder data by emailing info@skolspegeln.se. Include the school, approximate upload time and the email address used in the form. Rejected submissions become due for deletion 90 days after the decision and are handled by the next successful daily cleanup run that reaches the record. The cleanup flow leaves a minimal, pseudonymised audit entry in the log of school-image deletions. A due date in the deletion queue makes pending matters searchable. Only verified deletion of the active generation or an object already absent from the public path may record the time of public inaccessibility; a non-current generation enters retry/reinventory. The timestamp means public inaccessibility, not proof that a soft-delete window, provider retention or every physical byte has ended. For approved/published submissions we perform a manual rights check before deletion, because attribution and rights tracking may need to be retained to handle licence or dispute questions.
Journalist data orders — manual deletion
If you have submitted a no-account data order, you can request deletion or correction by emailing info@skolspegeln.se. Include the approximate time, outlet/newsroom and the email address used in the form. We then search for matching records among the journalist orders and manually delete or correct identifiable matches unless there is an ongoing delivery, dispute, regulator request or other legal basis for continued limited retention. The current journalist connectors to Desk and CRM are switched off in the software code and create no supplier record. If a quarantined legacy Desk/CRM record from earlier operation is actually found, it is included in the same correction or erasure assessment, subject to any applicable basis for limited continued retention. Any future approved replacement must be able to carry out the corresponding correction or deletion within the same order-bound lifecycle.
Self-service — user account
- Sign in to the Skolkoll portal.
- Go to Account settings.
- Click Delete account. Confirm the dialog.
- The account, your memberships, watchers and profile information are deleted immediately from the database.
What is not deleted automatically with the account: billing history is retained for 7 years under Swedish bookkeeping law. Entries in the audit log have 2-year retention. Our account-deletion log uses a hashed document ID and a hash of the account ID and retains email hash, status, safe error steps and cleanup counters for at most 12 months; it contains neither the account ID in plain text nor the email address in plain text and is not a continuing account. A check of the production environment on 2026-07-30 showed both deletion rules (TTL) as active; this proves policy state, not deletion of an expired sample, and deletion is asynchronous after expiry. Aggregated analytics data already contains no personal data and is unaffected.
Erasure request — Municipal Licence administrator
As a municipal admin you can request erasure of a specific employee from the organisation by emailing info@skolspegeln.se. We acknowledge receipt within 1 working day. Our internal target is to make an individual decision and, if the request is granted, complete the erasure within 14 days. Information on action taken is provided without undue delay and no later than one month after receipt under Article 12(3). Where necessary, the period may be extended by up to two further months, taking account of complexity and the number of requests; we notify you of the extension and reasons within the first month, and the final response may be provided during the extension period.
Removal request — named roles in the review service
Skolkoll no longer publishes head teachers' names as baseline data on school-unit pages, in open data files, APIs/exports or structured data. The same applies to representative names from annual-report data — board members, auditors, authorised signatories and report signers. Person-name fields are removed unconditionally at the public serving boundary (name-free by design). As long as the impact assessment for named person roles has not led to a positive decision, new or recurring population-wide internal name processing is paused; existing names may be used only for documented data cleanup, rights requests or a concrete, pre-documented editorial case with its own assessment. How to request removal or object to the processing:
- Head teacher: email info@skolspegeln.se with the school's unit code. The baseline display contains no head-teacher name. If a name nevertheless appears on an automated public surface due to an error, include the link; we remove the erroneous publication within 14 days, investigate the failed publication boundary and ensure that the name does not return through the automated synchronisation. A request concerning the non-public processing is handled under section 5.
- Board member, auditor, authorised signatory or report signer: email info@skolspegeln.se with the operator's organisation number and your role. To identify the correct record, we may also need your full name or a source/case reference even when the request concerns non-public processing. The details are used only as far as necessary for identification; your name is never entered in the block or audit evidence. If the request concerns an actual publication, also state where the name is shown (a link or page description). A request can also be registered preventively, as a block should the publication state change. Manual process: we acknowledge receipt within 7 days. Our internal target is to make the individual decision and, if the request is granted, implement it within 14 days. Information on action taken is provided without undue delay and within one month of receipt (GDPR Article 12(3)). Where necessary, the period may be extended by up to two further months; we notify you of the extension and reasons within the first month, and the final response may be provided during the extension period. Here too, a removed record is blocked from returning on future imports.
- The establishment's registered contact address: email info@skolspegeln.se and state the address — it is the identifier, and a block on the address covers every school unit you are responsible for. The address is the contact route the operator itself registered with the National Agency for Education's register for publication, and we reproduce it as registered. Where it takes the form firstname.lastname@ it does, however, identify you as a natural person, and an objection is then assessed individually under section 5. If it is upheld, the address is suppressed across all our surfaces and blocked from returning on future imports. If you have protected personal data, or are exposed to threats or domestic violence, we implement the suppression immediately and assess the case afterwards — we require no evidence and do not ask you to contact anyone else first.
If you instead want to object to the processing as such — which places the burden of proof on us — see section 5.
5. Your right to object (Article 21 GDPR)
This information is provided explicitly and separately from other information, as required by Article 21(4) GDPR.
If Skolkoll processes your personal data in a concrete permitted case on the basis of legitimate interest (Article 6(1)(f)) — including the establishment's registered contact address where it takes the form firstname.lastname@, and necessary handling of existing head-teacher names or company-representative roles within the narrow framework described in section 6 — you have the right to object at any time to the processing, on grounds relating to your particular situation. The right to object applies to the processing as such even though the public baseline display is name-free.
Once you have objected, we may no longer process the data unless we can demonstrate compelling legitimate grounds for the processing which override your interests, rights and freedoms. The burden of proof is on us, not on you.
How to object: email info@skolspegeln.se. State your role and identifiers: the address if the objection concerns the establishment's contact address; the school unit code if you are a head teacher; the operator's organisation number and your role if you are a board member, auditor, authorised signatory or report signer. For a non-public record, we may additionally need your full name or a source/case reference to identify the correct record. The name is used only for identification and is never entered in the block or audit evidence. If your name appears on an actual surface, also state where it is shown (a link or page description). Preferably describe the circumstances you rely on. We acknowledge receipt within 7 days, assess the objection individually and in a documented manner, and have an internal target to decide and, if the objection is upheld, implement the measure within 14 days. Information on action taken is provided without undue delay and within one month of receipt (Article 12(3)). Where necessary, the period may be extended by up to two further months; we notify you of the extension and reasons within the first month, and the final response may be provided during the extension period. If we cannot demonstrate compelling legitimate grounds, the processing ceases or is restricted and any actual named publication is removed. The automated baseline display remains name-free regardless.
What we weigh when the objection concerns a contact address. The record remains in the National Agency for Education's public register even if we suppress it, and anyone can retrieve it from there. The effective step is therefore rectification at the source — with the operator, which registered the record, and where relevant with the Agency. If you have already requested that, we weigh it in: it shows that your situation is concrete and ongoing, and it makes suppression on our side a meaningful bridge pending the rectification. But it is not a precondition for us to assess your objection, and not having done it can never on its own carry a refusal. The burden of proof for a refusal rests with us.
What a suppression does not reach. We govern our own publication going forward. The record may remain in copies already retrieved by others, in search-engine caches, in web archives and in the Agency's register. We therefore never promise that a record has been removed from the internet — only that we no longer publish it.
If you are not satisfied with our decision you can complain to the Swedish Data Protection Authority (IMY) — see section 12.
To the extent a given surface is covered by the journalistic exemption (chapter 1, section 7 of the Swedish Data Protection Act), Article 21 does not formally apply — we nevertheless assess every objection under the framework above. Our assessment of the position following the Court of Justice's judgment in case C-199/24 of 9 July 2026 is kept current through ongoing review as new case law or guidance from the Swedish Authority for Privacy Protection emerges, and this page is updated accordingly.
6. Information under Article 14 — named roles in the review service
Personal data obtained from public registers is normally subject to the information duties in Article 14 GDPR. As long as the data protection impact assessment (DPIA) for named person roles has not led to a positive decision, population-wide processing of named person roles is paused. For the separate access-controlled raw-source archive, source-archive assessment v1.3 has made the Article 14(5)(b) assessment conditional: individual notice to the whole group would require Skolkoll to build the person and contact mapping that data minimisation is intended to avoid. The dedicated archive row below is published safeguard information for this flow. On 26 September 2026, the Swedish and English production notices were verified together with the archive's access, storage and retention controls. Routine archiving is permitted within this boundary after documented activation under the source-archive assessment. Access and retention controls apply continuously; if a start condition is no longer met, new routine writes must stop. If we become concretely aware of an affected person and have a usable contact route, we provide direct notice within the Article 14(3) time limits unless another documented exception applies. Any other new person-role processing requires its own pre-documented Article 85 and Article 14 assessment; otherwise individual notice is provided no later than one month, or earlier at the first contact or disclosure. This page supplements the privacy policy and the publication policy (Swedish: publiceringspolicy).
| Category of personal data | Source | Legal basis | Retention / mirroring logic |
|---|---|---|---|
| Incidental names, professional roles, signatures, business contact details or work address, portrait or short professional biography, and named holdings, remuneration or related-party context already present in unchanged original files of officially published annual reports or ESEF reports. The archive has no OCR/full-text or person index; those data may not be written to derived layers. Material containing Article 9 or 10 data or private material is outside this decision. If such material is actually detected, new writes and further use stop and the material is deleted, unless a separately documented incident or legal condition requires the minimum access-restricted retention. | Bolagsverket/HVD, ESEF registers, and the issuer's or institution's official publication channel | Legitimate interest (Art. 6(1)(f)): enabling verification of provenance and reproducibility and correction of the interpretation of name-free financial data. The narrow necessity and balancing assessment is recorded in source-archive assessment v1.3. Article 14(5)(b) is relied on only for this bounded archive; if we become concretely aware of an affected person and have a usable contact route, direct notice is provided under Article 14(3) unless another documented exception applies. | A 30-day notice precedes access review no later than 12 months, and material is deleted when the purpose ends, normally no later than 24 months after retrieval. A daily control exists whose request window is designed to subtract the soft-delete duration read in production, or a conservative planning assumption when no such reading is available, plus a separate seven-day failure/retry buffer. The control has, since 2026-08-25, been run in production — the first run is complete and the inventory result exists (10,230 objects, 5,115 entries, zero due). What is still not asserted is an executed purge sample: nothing was due at the time of the run, and such a sample cannot be fabricated — it must await a genuinely due entry or a deletion via a rights request. A separate exception must be decided and enforced before the earlier request window. The same calculation applies to the absolute 36-month cap. Request time and the estimated end of the soft-delete window are reported separately; the estimate is not presented as independent proof of physical irrecoverability. The approved recipient and storage target is Google Cloud within the EU as processor. The production storage location for the source archive has, since 2026-08-25, been verified in production for the source archive's four parts: region europe-west1 (Belgium), uniform bucket-level access and zero public principals, checked by the daily retention control. The verification covers the source archive — for Firestore and the Hosting logs, the corresponding check in production is still pending. Raw copies must not be disclosed publicly. Rights and the contact route are stated below the table. |
| Head teacher's name, role and school unit. May exist in current non-public material but is not published as baseline data; new or recurring population-wide name processing is paused pending the impact assessment | Skolverket's register (open data) | No positive general basis for population-wide name processing is asserted as long as the impact assessment has not led to a positive decision. Necessary data cleanup and rights handling are assessed within their concrete purpose; a separate edited review surface requires its own assessment of journalistic purpose and publication. Name-free change events are outside the name-processing stop. | No positive identifiable population-wide retention exists as long as the impact assessment has not led to a positive decision. The head-teacher name field is discarded at the first processing step and temporal backfill is name-free. Any future identifiable retention requires a separate positive layer-by-layer decision and a deployed, verified deletion function enforcing a deletion date that cannot be extended; a later observation date must not move the deadline. Public history and change events are name-free. |
| Representative roles at school operators — board member, auditor, authorised signatory, report signer (name + role + operator). May exist in current non-public material; the names are not published as baseline data and new or recurring population-wide name processing is paused pending the impact assessment | Bolagsverket, public annual reports | No positive general basis for population-wide name processing is asserted as long as the impact assessment has not led to a positive decision. Necessary data cleanup and rights handling are assessed within their concrete purpose; a concrete editorial case requires a separate, pre-documented assessment. | No positive identifiable population-wide retention exists as long as the impact assessment has not led to a positive decision. A five-year cap from verified deregistration would be only a future outer limit if the impact assessment is later concluded with a separate positive processing and retention decision and a deployed, verified deletion function enforcing a deletion date that cannot be extended; a later observation date must not move the deadline. The raw-source archive's separate 12-/24-/36-month schedule is not a retention period for named person roles. |
Categories not intentionally extracted or entered into a derived compilation of named person roles: personal identity numbers, home addresses, private contact details, private finances, family relationships beyond the formal role, signatures, or special categories under Article 9. Signatures and other ordinary incidental personal data in an officially published original file may fall within the bounded archive row above. Article 9 or 10 data and private material may not be used further under archive decision v1.3. On actual detection, new writes and further processing stop and the material is deleted unless a separately documented incident or legal condition requires minimised access-restricted retention.
The data controller for this processing is Skolspegeln AB (org. no. 559359-7288), contact info@skolspegeln.se. (The processor role in section 1 concerns Municipal Licence data; for the review processing Skolkoll is the controller.)
Recipients: the approved recipient and storage target for the raw-source archive is Google Cloud within the EU as processor. The production storage location for the source archive has, since 2026-08-25, been verified in production for the source archive's four parts: region europe-west1 (Belgium), uniform bucket-level access and zero public principals, checked by the daily retention control. The verification covers the source archive — for Firestore and the Hosting logs, the corresponding check in production is still pending. Raw copies must not be disclosed publicly. Neither head-teacher names nor representative names from annual-report data are published as baseline data on skolkoll.se, in open data files, APIs/exports or structured data; the serving layer removes the person-name fields unconditionally. Names may appear in a separate editorial review surface only when a concrete review and its own publication assessment warrant it. There is no person search (you cannot search for a person's name) and there are no dedicated person-lookup pages.
The four-point pattern in the Swedish publishing policy applies only after such a separate editorial publication decision: a stated reason, a cited source, minimisation to the necessary name and role, and a removal/correction route. It safeguards that decided publication; it does not authorise names in the automated directory.
Your rights: access (art. 15), rectification (art. 16), erasure (art. 17 — see section 4), restriction (art. 18) and objection (art. 21 — see section 5), plus the right to complain to IMY (section 12). To the extent the processing takes place for journalistic purposes, parts of the GDPR are formally exempted (chapter 1, section 7 of the Swedish Data Protection Act) — Skolkoll nevertheless applies the processes above as documented practice.
The documentation behind this block (legitimate interest assessment and ongoing data protection impact assessment) is working-draft material. This block reflects the position following the Court of Justice's judgment in C-199/24 and is updated through ongoing review as new case law or guidance from the Swedish Authority for Privacy Protection emerges.
7. DPIA-light — risk assessment for Municipal Licence
For Municipal Licence customers we have done a simplified Data Protection Impact Assessment (DPIA-light) per GDPR art. 35. The conclusion that a full DPIA is not mandatory applies to the processing within the Municipal Licence delivery, where the municipality is the data controller and Skolkoll the data processor (see section 1): that processing does not meet high-risk criteria (no large-scale monitoring, no special categories of personal data stored systematically, no automated decision-making with legal effect on individuals). Skolkoll's public review activity, where Skolkoll is the data controller, is assessed separately — a full DPIA for that processing is in progress (2026). Document extraction checks the whole document in advance and sends only a contact-minimised provider copy; the residual risk is a classifier false negative. That risk and its mitigations are described in the table below and under Internal AI support.
Identified risks and mitigations
| Risk | Likelihood × Impact | Mitigation |
|---|---|---|
| Unauthorised access to organisation data | Low × Medium | Firebase Auth with MFA support; admin role check on the server side; audit log for all admin actions. |
| Data leak via third-party service (Firebase, Stripe, Resend or Zoho) | Low × High | EU regions where verified service evidence exists; SCCs for relevant third-country processing; service-specific DPA/TIA and quarterly subprocessor review. Data minimisation and purpose isolation apply: Stripe sees no school data and Resend is limited to service/watch email and internal operations notices (including submitted lead-form enquiries) with 30-day provider retention. Zoho Mail has no positive release: new user-initiated inbound enquiries may be received, manually assessed and answered only to the strictly necessary extent after case-specific minimisation and under the matter's documented basis; no AI is used. Proactive/discretionary contact, campaign/relationship-building, automation, bulk processing and new integrations/features/data categories in Mail are not permitted. Our internal deadline of 2026-08-14 passed without the evidence on the account, DPA/SCC and India/United States being completed; only the allowed minimised intake continues, while escalation to a lawful replacement channel is under way. The Mail restriction does not govern Campaigns. Campaigns complete open and link-click tracking were observed ON on 2026-07-29; the next send and every send-capable automation are independently stopped under the separate preconditions for Campaigns until account-specific automation, DPA/SCC, unsubscribe/RTBF, retention/suppression and tracking evidence is closed and manually approved. No technical enforcement in the Zoho account or Chapter V compliance is claimed. |
| Unintentional reintroduction or erroneous publication of school-staff names | Medium × Low | Names are removed before data is shown on public school pages, open data files, APIs/exports and structured data, and if that check fails, no names are shown; automated leakage tests and removal of any erroneous publication within 14 days (section 4). A future named publication requires a separate documented release decision. |
| Vulnerability in the open analytics endpoint | Low × Low | Origin allowlist, distributed rate-limiting, and event size caps. No personal data is collected in analytics. |
| Operational incident — silent scheduled-function failure | Medium × Low | Error-alerting wrapper emails ops on every scheduled-function failure. Manual backfill endpoint exists for critical syncs. |
| A false negative in document extraction's advance check allows pupil-identifying or sensitive context to reach OpenAI | Low × Medium | Only public records within an approved, versioned municipality/portal/layout flow are processed. Before provider access, the whole document is blocked on private-source markers, personal identity numbers/pupil-identifying contexts or Article 9/10 indicators; email addresses and phone numbers are removed from the provider copy. The local original is used only for grounding. The OpenAI DPA and applicable transfer mechanism apply. OpenAI's Chat Completions interface for text generation is used with OpenAI's optional response storage switched off, which according to the provider documentation checked on 2026-07-29 means that the response object is not retained as application state but permits prompt caching of encrypted KV tensors in GPU-local storage for up to 24 hours. Standard abuse-monitoring logs may be retained for up to 30 days and safety/legal exceptions may require longer retention. This is minimisation with express exceptions, not ZDR. Classifiers are fallible; candidates are masked, no automatic publication occurs and every candidate passes through a human-reviewed queue. |
8. Personal data breach
In case of a suspected personal data breach:
- Where Skolkoll is the processor in the Municipal Licence P1–P3 chain, we notify the agreed controller without undue delay, with an internal target for an initial fact-based notice within 24 hours, and then provide ongoing updates. The municipality assesses and is responsible for any Article 33 notification and Article 34 communication.
- Where Skolkoll is the controller, we assess the risk and notify IMY without undue delay and, where feasible, within 72 hours after becoming aware when the breach is likely to result in a risk to individuals' rights and freedoms. Where a high risk is likely, we also inform the affected individuals without undue delay under Article 34.
- The incident-response runbook and postmortem process is described in the Municipal Licence agreement annex ("IR runbook").
9. International data transfer
Personal data is processed in the following regions:
- EU/EEA target: our configuration specifies
europe-west1(Belgium) for Firestore, Cloud Functions and Cloud Storage; an archived check of the production environment dated 2026-09-05 establishes Firestore ineurope-west1and all eight production buckets ineurope-west1or the EU multi-region. Stripe payments are processed primarily in Ireland. Domain routing for Zoho Mail/Campaigns and configured endpoints for Desk/CRM point to Zoho's EU services, but routing does not prove the Mail/Campaigns tenant's actual account region. Firebase Hosting uses a global CDN and is therefore not covered by the regional-storage target. - USA/third countries: Firebase Hosting and Authentication and supplier access may involve processing outside the EU/EEA. Resend delivers through the United States. Zoho support from India and applicable US subprocessors, Sentry support from the US team, Anthropic/OpenAI calls and social-login providers may also involve third-country processing.
For third-country transfers the following legal mechanisms apply:
- Standard Contractual Clauses (SCCs) — used under EU Commission decision 2021/914 where the relevant provider and account agreement covers the third-country processing. An account-specific data processing agreement was signed with Zoho Corporation B.V. on 2026-09-11; under its clause 10 it supersedes the parties' previous data-protection agreements at account level. That agreement is the article 28(3)-(4) processor clauses, not the Chapter V transfer clauses. For Mail's India leg, Zoho Legal's 2026-09-08 response identifies SCC Module 3 in prose, but the mechanism remains supplier-asserted rather than contracted and the India/United States assessments remain open. For Campaigns, that agreement covers the article 28 incorporation; its Chapter V mechanism remains supplier-asserted rather than contracted, and every send requires separate prior checks. Mail has no positive release.
- EU-US Data Privacy Framework (DPF) — alternative legal basis for DPF-certified providers (Google, Stripe).
Schrems II implications are assessed per provider and scenario in internal transfer annex v2.9. Zoho Mail's account/contract incorporation and focused India/United States assessment were, under our internal deadline, to be completed no later than 2026-08-14. That deadline passed. Zoho Legal has since identified SCC Module 3 for the India leg in prose. The account-specific DPA was signed on 2026-09-11, but its Schedule 1 is the article 28(3)-(4) standard contractual clauses and states in its own clause 1(f) that they do not by themselves ensure Chapter V compliance, so the transfer mechanism remains supplier-asserted rather than contracted. The assessment under current Indian law and the focused United States assessment remain open: the agreement's Schedule 2 names India alone as the group entity permitted to access EEA customer data, while the supplier's own SOC 1, SOC 2 and ISO location annexes place Austin in the United States in scope for support. The fallback is therefore still the operative state: the dated interim-risk restriction with no positive release remains, and only minimised legally necessary intake occurs while escalation to a lawful replacement channel is under way. Campaigns is the designated platform, but the next send and every send-capable automation are stopped until the evidence for its separate account-specific requirements is complete and the send is manually approved. Municipal Licence customers may request a relevant extract.
10. Technical and organisational security measures
- Encryption in transit: TLS 1.2+ for all communication; HSTS enabled.
- Encryption at rest: Firestore encrypts all data automatically with Google-managed keys.
- Access control: Role-based access (admin / user); the administrator key is compared in constant time to hinder timing attacks; audit log for all admin API calls.
- Secrets: All API keys and tokens are stored in Google Secret Manager and provided to runtime securely via Firebase Functions secrets binding. They are not present in source code or committed to version control.
- Rate limiting: Distributed Firestore-backed rate limiter on all public endpoints; analytics pipeline hardened against abuse via origin allowlist and event size caps.
- Validation: Strict schema validation on all user inputs; field-level length caps; metadata type enforcement including array-element validation.
- Monitoring: Cloud Logging for all functions; error alerting via Resend to ops distribution list on scheduled-function failures; planned Cloud Monitoring policy for error rate.
- Backup: Point-in-Time Recovery (PITR) is the target for Firestore and, when enabled, provides point-in-time restore within the window Google Cloud offers (up to 7 days). Actual production PITR status and any scheduled backup exports are not supported by an archived check in this revision, and we do not describe them as active until they have been checked directly in the production environment. Recovery has not been exercised in a controlled disaster-recovery drill — we intend to run such a drill ahead of the first Municipal Licence production deployment.
11. Documents for municipal procurement
- DPA template (data processing agreement) — based on SKR's Swedish standard contract.
- Service Level Agreement (SLA) — uptime commitments, support response times, escalation path, and credit policy.
- ROPA summary (Records of Processing Activities) — public summary of the processing register per GDPR art. 30. Full extract available on request to Municipal Licence customers.
- IR runbook — incident-response process and contact details, delivered as an annex to the Municipal Licence agreement.
- Security appendix — documents the checks before production release, stage/production isolation, build integrity and security headers; delivered as an annex to procurement responses. The appendix is approved for use in procurement responses by a documented decision of 8 August 2026. The approval does not cover the points in the security appendix's checklist that are not yet finalised. Since 2026-08-25 the Cybersecurity Act assessment is complete and dated, and a backup authority has been appointed. Still open: support-tier/SLA dependencies, a cold recovery test, and the outstanding TOM and supplier evidence. For the backup authority, note that she is appointed with working access, but the path is unexercised: she has held her own second factor on the service accounts since 2026-08-26, but no recorded and tested out-of-hours channel exists, and access runs through a shared credential vault — so actions are logged under the maintainer's identity and cannot be revoked independently. The security appendix's own hand-over checklist is the authoritative and complete list; the summary here is an extract. None of its items may be presented as commitments.
12. Complaints
If you believe we are processing your personal data unlawfully you have the right to lodge a complaint with the supervisory authority:
Swedish Data Protection Authority (IMY)
Web: imy.se/en
Email: imy@imy.se
Phone: +46 8-657 61 00