GMI · TECHNOLOGY OBSERVATORY // ALL SYSTEMS NOMINAL
ENGINEERED BY LEOPARD DATA

Data Privacy & Compliance

How Grade My Investments protects, encrypts, and exports user data — honestly separating what is built today from what is still on the roadmap.

DATA EXPORT PIPELINE
rendering diagram…
flowchart LR
    U([User requests export]):::app
    REQ[RequestAccountExportAsync<br/>queues async job]:::svc
    Q[(Export job queue)]:::data
    BUILD[BuildAccountExportZipAsync]:::svc
    subgraph GATHER[Gather data - redacted]
        direction TB
        P[Profile - account]:::data
        N[Notifications]:::data
        C[Content]:::data
        A[Activity capped 10k]:::data
        B[Billing - card last4 and brand only<br/>full numbers and Stripe IDs excluded]:::sec
        L[Login history capped 5k<br/>IP geo browser OS]:::data
        F[User files]:::data
    end
    ZIP[(ZIP in Blob Storage)]:::data
    SAS[24h SAS URL<br/>POST api-downloads-export-account]:::sec
    DL([User downloads ZIP]):::app
    U --> REQ --> Q --> BUILD
    BUILD --> P
    BUILD --> N
    BUILD --> C
    BUILD --> A
    BUILD --> B
    BUILD --> L
    BUILD --> F
    P --> ZIP
    N --> ZIP
    C --> ZIP
    A --> ZIP
    B --> ZIP
    L --> ZIP
    F --> ZIP
    ZIP --> SAS --> DL
    ENC[Encryption<br/>AES-256 at rest - MySQL and Blob<br/>TLS 1.2+ in transit]:::sec
    ENC -.->|protects| ZIP
classDef app fill:#1f2630,stroke:#C0894E,color:#F3EFE8;
classDef svc fill:#241c14,stroke:#E2B583,color:#F3EFE8;
classDef data fill:#22201a,stroke:#C0894E,color:#EBD3AE;
classDef ext fill:#1b1f27,stroke:#5A616B,color:#C4C0B8;
classDef sec fill:#1d2733,stroke:#5cc8e0,color:#eafaff;
GDPR data-export pipeline: a request queues an async job that gathers redacted data into a ZIP, delivered to the user via a 24-hour SAS URL.

This page distinguishes implemented privacy capabilities from forward-looking roadmap items. We do not claim compliance features that do not exist: full account erasure, a cookie-consent banner, and a documented retention schedule are not yet built.

Implemented Today

GDPR Data Export (Articles 15 & 20)

The Right of Access (Article 15) and Right to Data Portability (Article 20) are fully built. A user request runs through an async pipeline:

  • RequestAccountExportAsync Queues an asynchronous export job
  • BuildAccountExportZipAsync Produces a ZIP of structured JSON plus the user's files
  • POST /api/downloads/export-account Delivers the ZIP via a 24-hour SAS URL
What the export ZIP contains:
Section Contents Cap
Account Profile / account record
Notifications User notifications
Content User-generated content
Activity Activity history 10,000
Billing Card last4 and brand only
Login history IP, geo, browser, OS 5,000
User files The user's stored files
Explicitly excluded from exports
  • Full card numbers
  • Stripe identifiers

Encryption

  • At rest AES-256 (Azure-managed)
  • Applies to both MySQL and Blob Storage
  • In transit TLS 1.2+
  • MAUI app Certificate pinning

PCI Posture

  • Card numbers are never stored
  • All cards are Stripe-tokenized
  • Only card last4 and brand retained for display

Login History

Login events are captured with geolocation, IP address, browser, and operating system, giving users visibility into account access.

Per-Field Deletion & Soft-Delete

  • Per-field deletion of email addresses
  • Per-field deletion of SMS numbers
  • IsDeleted soft-delete across entities

Application Security Controls

  • OWASP Top 10 coverage
  • Rate limiting
  • HTML sanitization
  • Security headers

Roadmap — Not Yet Implemented

The following privacy items are forward-looking and are not in place today.

Account Erasure (Article 17)

A full right-to-be-forgotten erasure endpoint does not exist yet. Today, complete account erasure requires manual admin processing.

Roadmap
Cookie-Consent Banner

There is no consent UI today — Google Analytics currently runs without a consent banner. A cookie-consent experience is planned.

Roadmap
Data-Retention Schedule

A formally documented, time-based data-retention schedule for logs is not yet published.

Roadmap