Skip to main content

Overview

PensionPortal.ai processes personal data for EU-regulated Irish occupational pension schemes under IORP II (S.I. 128/2021), DORA (EU 2022/2554), and GDPR (EU 2016/679). This document is the primary compliance traceability record for PensionPortal.ai. Every control listed here points to a specific code location or runbook. Vague statements are not acceptable for a production system handling regulated pension data.
Art. 35 DPIA Outstanding: A Data Protection Impact Assessment is legally required before processing PPS numbers at scale. This has not yet been conducted. The DPIA must be completed before the platform goes live with real member data. Assign DPO ownership and schedule the DPIA immediately.
April 2026 Deadline: DORA ICT risk management framework documentation and third-party ICT provider registers must be finalised and submitted to the Pensions Authority by the next supervisory review cycle. Ensure the ICT Risk Management Policy (written policy #11) is reviewed and signed off by trustees before April 2026.

GDPR Article → Control Mapping

Implemented Controls

GDPR ArticleRequirementImplemented ControlCode Location
Art. 5(1)(a) LawfulnessLawful basis for processingEmployment contract + legitimate interest (pension administration)N/A — legal basis
Art. 5(1)(b) Purpose limitationData only used for pension adminRole-scoped access (ActorContext), no data sharing outside tenantsrc/lib/actor-context.ts
Art. 5(1)(c) Data minimisationOnly necessary data collectedPPS collected only when legally required; AI receives aggregates onlysrc/app/api/ai/chat/route.ts
Art. 5(1)(e) Storage limitationData not kept longer than necessary7-year retention for pension records; soft-delete preserves audit trailsrc/db/schema/members.ts
Art. 5(2) AccountabilityController can demonstrate complianceAudit log on every state change with actor, timestamp, IPsrc/lib/audit.ts
Art. 6 Lawful basisExplicit lawful basis requiredContractual necessity (Art. 6(1)(b)) + legal obligation (Art. 6(1)(c))Documented in DPA
Art. 9 Special categoriesSensitive data requires explicit basisPPS numbers encrypted; health data not collectedsrc/db/schema/members.ts
Art. 17 Right to erasureRight to be forgottenSoft-delete + anonymisation procedurerunbooks/backup-restore.mdx
Art. 25 Privacy by designGDPR built into system designPPS encrypted, AI data minimisation, role-scoped accesssrc/lib/actor-context.ts, src/lib/auth.ts
Art. 30 Records of processingRegister of processing activitiesDocument all data flows (this document)docs-site/compliance.mdx
Art. 32 Security of processingAppropriate technical measuresAES-256 PPS encryption, bcrypt passwords, HTTPS/TLS, audit logssrc/lib/auth.ts
Art. 33 Breach notification72-hour PA/DPC notificationIncident response runbookrunbooks/incident-response.mdx
Art. 44 TransfersRestrictions on third-country transfersAnthropic (US): SCCs in place; Vercel (US): SCCs in placeSee vendor list

Pre-Launch Requirements (Not Yet Implemented)

The following GDPR controls are required before production launch with real member data. Each item must be completed and verified before the platform processes personal data at scale.
GDPR ArticleRequirementPlanned ControlStatus
Art. 13/14 TransparencyPrivacy notice to data subjectsPrivacy policy page at www.pensionportal.ai/privacyNot started — Requires legal drafting
Art. 15 Right of accessMembers can request their dataSelf-service data export UI in admin panelNot started — Manual process available via admin email
Art. 20 Data portabilityData in machine-readable formatExport endpoint at /api/members/[id]/exportNot started — Manual database export available
Art. 21 Right to objectObject to AI-assisted analysisOpt-out flag on member record, honoured in AI pipelineNot started
Art. 35 DPIAImpact assessment for high-risk processingData Protection Impact Assessment for PPS processing at scaleNot started — Legal/DPO ownership required

DORA Requirements → Control Mapping

DORA ArticleRequirementImplemented ControlRunbook
Art. 5 ICT Risk ManagementWritten ICT risk management frameworkICT Risk Management Policy (11th mandatory policy under IORP II)src/db/schema/compliance.ts (writtenPolicies)
Art. 10 DetectionAnomaly detection capabilitiesPino structured logging, health probe monitoring. Sentry integration planned.runbooks/incident-response.mdx
Art. 12 Backup & RecoveryData backup + RTO/RPO requirementsNeon PostgreSQL automated backups (daily), RTO: 4h, RPO: 24hrunbooks/backup-restore.mdx
Art. 13 LearningPost-incident reviewIncident review processrunbooks/incident-response.mdx
Art. 17 ICT Incident ReportingReport significant incidents to PAIncident response runbook with PA notification procedurerunbooks/incident-response.mdx
Art. 19 TestingRegular operational resilience testingUnit tests (Vitest), E2E tests (Playwright), annual TLPTdocs-site/deployment/vercel.mdx
Art. 24-27 Third-party ICTThird-party ICT risk managementVendor list + DPA agreementsSee vendor list below
Art. 28 RegisterRegister of ICT third-party arrangementsVendor/subprocessor list in this documentThis document §5

Data Classification Inventory

Data CategoryClassificationTablesRetentionLawful Basis
PPS NumbersPII — Highly Sensitive (encrypted)members.ppsNumberEncrypted7 years post-scheme closureArt. 6(1)(c) legal obligation
Member names, DOB, emailPII — Personalmembers7 yearsArt. 6(1)(b) contract
Scheme compliance recordsOperational — Regulatedora_reports, health_check_assessments, written_policies, acs_wizard7 yearsArt. 6(1)(c) legal obligation
Audit logsOperational — Securityaudit_logsIndefinite (regulatory requirement)Art. 6(1)(c) legal obligation
KFH appointmentsOperational — Regulatedkey_function_holders7 yearsArt. 6(1)(c) legal obligation
Contribution recordsFinancial — Regulatedcontribution_periods, contribution_files7 years (Revenue requirement)Art. 6(1)(c) legal obligation
AI-generated policy draftsOperationalwritten_policies.aiDraftContentRetained until broker deletesArt. 6(1)(b) contract
RAG corpusRegulatory Text (public)rag_corpusIndefiniteN/A (public documents)
Authentication credentialsSecurityusers.passwordHashActive + 90 days post-deletionArt. 6(1)(b) contract

Vendor / Subprocessor List

VendorRoleData ProcessedDPA LocationTransfer Mechanism
Neon (US)PostgreSQL database hostingAll application dataNeon DPA at neon.techEU SCCs
Vercel (US)Application hosting + Edge NetworkApplication code + logsVercel DPA at vercel.comEU SCCs
Anthropic (US)AI/LLM inference (Claude)Scheme aggregates (NO PII)Anthropic DPA at anthropic.comEU SCCs
Resend (US)Transactional email deliveryEmail addresses + notification contentResend DPA at resend.comEU SCCs
Cloudflare (US)CDN + WAF + DNSHTTP headers + IP addresses (not body)Cloudflare DPA at cloudflare.comEU SCCs
Auth.js (Open Source)Authentication libraryN/A (self-hosted code)N/AN/A
The openai npm package is imported as a dependency and is used as the client library for OpenRouter (RAG embedding generation via openai/text-embedding-3-small). It does not connect to OpenAI directly. Only Anthropic Claude is used for LLM inference. OpenRouter is used solely for vector embeddings.

Data Subject Rights Handling Process

Right of Access (Art. 15) — Manual Process

  1. Member or trustee submits request via email to admin@pensionportal.ai.
  2. 30-day response window begins from date of receipt.
  3. Admin exports member record from the database via admin panel or direct database query.
  4. Deliver response as an encrypted PDF to the data subject.
Planned improvement: A self-service data export UI in the admin panel is planned to reduce manual effort and response time. Until implemented, the manual process above fulfils the Art. 15 obligation.

Right to Erasure (Art. 17) — Implemented

  1. Request is received and evaluated against the legal obligation to retain pension records (7-year statutory hold).
  2. If no legal hold applies: anonymise the record — name replaced with "DELETED", PPS set to null, email set to null.
  3. Soft-delete preserves the audit trail for regulatory purposes; the row is not physically removed.
Code location: src/db/schema/members.ts, Backup & Restore Runbook — Data Anonymisation

Right to Portability (Art. 20) — Manual Process

Member data can be exported as JSON via direct database query by a SuperAdmin.
Planned improvement: A dedicated export endpoint at /api/members/[id]/export is planned to enable programmatic data portability. Until implemented, manual database export fulfils the Art. 20 obligation.

Right to Object (Art. 21) — Not Yet Implemented

Member can object to AI-assisted analysis of their data. An opt-out flag on the member record is planned, which will be honoured in the AI chat pipeline (src/app/api/ai/chat/route.ts).
Until the opt-out mechanism is implemented, the AI assistant does not process any member PII — it receives only scheme-level aggregates. Individual member data is never sent to the AI provider (see AI Data Minimization).

Annual Compliance Statement (ACS) Process

The Annual Compliance Statement is legally required under Section 26T, Pensions Act 1990 (as amended).
  • Due: 31 January annually
  • Submitted to: Pensions Authority of Ireland

Process

  1. Broker opens the ACS Wizard in the PensionPortal.ai portal.
  2. AI pre-fills answers based on existing scheme data (written policies, health check assessments, ORA reports).
  3. Broker reviews and amends each answer.
  4. Dual trustee sign-off is required before submission.
  5. PDF is generated and submitted to the Pensions Authority.
Code locations:
  • ACS Wizard UI: src/components/compliance/AcsWizardForm.tsx
  • ACS API route: src/app/api/schemes/[id]/acs/route.ts