Overview
SanMarcSoft services operate under EU jurisdiction (infrastructure in Scaleway fr-par). All services must comply with GDPR requirements for data subject rights. This runbook covers handling data subject requests (DSRs) for access, erasure, and portability.
Data Subject Rights
| Right | Article | Deadline |
|---|---|---|
| Right of Access | Art. 15 | 30 days |
| Right to Erasure | Art. 17 | 30 days |
| Right to Portability | Art. 20 | 30 days |
| Right to Rectification | Art. 16 | 30 days |
| Right to Restriction | Art. 18 | 30 days |
Service-by-Service Data Inventory
Verifieddit (verifieddit.com)
Data stored:
- Clerk user profile (email, name, auth provider)
- D1 badges table (URLs, domains, timestamps)
- D1 badge_images (image URLs, AI scores)
- D1 users table (clerk_id, email, plan)
Data locations:
- Clerk (US-hosted, EU data processing agreement)
- Cloudflare D1 (edge, geo-distributed)
- Scaleway Container Registry (fr-par, EU sovereign)
Phenom Drop
Data stored:
- Submitted media files (S3)
- Firestore drop payloads (email, consent records)
- C2PA signed media
Data locations:
- AWS S3 (us-east-1)
- Google Firestore
- AWS App Runner (ephemeral)
Badges Worker
Data stored:
- Badge records (D1)
- Cached AI detection results
Data locations:
- Cloudflare D1 (edge)
- Cloudflare KV (edge, if caching enabled)
Procedure: Right of Access (Art. 15)
Step 1: Identify the Data Subject
Verify the requester’s identity. Require government-issued ID or verification via their registered email.
Step 2: Collect Data from Each Service
From Clerk
| |
From D1
| |
From Phenom Drop (Firestore)
Query Firestore for records matching the user’s email:
| |
Step 3: Compile and Send
- Compile all data into a structured format (JSON or PDF)
- Send to the requester via their verified email
- Log the access request and response date
Procedure: Right to Erasure (Art. 17)
Step 1: Verify Identity
Same as Right of Access.
Step 2: Delete from Each Service
Delete from Clerk
| |
Delete from D1
| |
Delete from Phenom Drop
- Delete S3 media files:
| |
- Delete Firestore records:
| |
Step 3: Confirm Deletion
- Verify deletion by re-querying each service
- Send confirmation to the data subject
- Log the erasure request and completion date
Exceptions to Erasure
Data may be retained if required for:
- Legal compliance (e.g., tax records)
- C2PA provenance chain integrity (content credentials are permanent by design – inform the user)
- Ongoing legal proceedings
Procedure: Right to Data Portability (Art. 20)
Step 1: Export Data
Follow the same collection steps as Right of Access, but export in a machine-readable format (JSON).
Step 2: Package and Deliver
| |
Request Tracking
Log all DSR requests with:
- Request date
- Data subject identifier
- Request type (access/erasure/portability)
- Services affected
- Completion date
- Notes
Response Timeline
- Acknowledge receipt within 3 business days
- Complete the request within 30 calendar days
- If complex, extend to 60 days with notification to the data subject
Troubleshooting
- Cannot find user data: Search by all possible identifiers (email, Clerk ID, Firestore document ID).
- Clerk user already deleted: Data may still exist in D1 and S3. Clean up orphaned records.
- S3 objects not deletable: Check bucket versioning. If enabled, objects are soft-deleted and must be permanently removed.