PeakPact Elite · Legal

Data Flow

Official policy page for Google Play and store review.

Full English policy

# PeakPact Elite — Cloudflare ↔ Clerk ↔ Neon Data Flow

**Effective date:** 15 September 2026  
**Canonical API:** `https://api.peakpactelite.app`  
**Audience claim:** `peakpactelite`

```text
[Mobile Expo / Web]
        |  HTTPS + Clerk JWT (aud=peakpactelite)
        |  crash/analytics SDK → Firebase (Google)
        v
[Cloudflare Worker API]
   |-- verify JWT via Clerk JWKS / issuer + audience/azp rules
   |-- business logic (trials, squads, ladder, quests, verification, automation)
   |-- OpenAI compose (Elite Mode: gpt-4o; failure → error, no soft fake success)
   |
   +--> [Neon Postgres]  durable state (profiles, scores, squads, ladders, quests, verification rows)
   |
   +--> [Cloudflare R2]  verification media objects (private)
   |
   +--> [RevenueCat]  subscription entitlement sync (appUserID)
   |
   +--> [Cron schedules]  automation / ladder / health jobs (Workers Paid)
```

## Auth path

1. User signs in via Clerk (web `@clerk/nextjs`; mobile session restored through PeakPact auth adapters).
2. Client attaches Bearer JWT to Worker requests.
3. Worker validates signature, issuer, and audience contract (`docs/AUTH_ENV_CONTRACT.md`).
4. `userId` from token scopes Neon queries (no cross-tenant reads).

## Data categories by system

| System | Stores |
|---|---|
| Clerk | Identity, email, sessions, MFA |
| Worker (ephemeral) | Request handling, compose prompts, cron orchestration |
| Neon | Product domain state |
| R2 | Binary proof assets |
| OpenAI | Transient prompt/completion (subject to OpenAI retention policies) |
| RevenueCat / Google Play | Entitlement and purchase signals (no full card numbers on PeakPact servers) |
| Firebase Crashlytics | Crash stacks / diagnostics |
| Firebase Analytics | Limited app-activity analytics events |

## Cross-region notes

Cloudflare edge terminates TLS near the user; Neon primary region and R2 bucket region determine data residency. For global launch, prefer EU primary for EU-majority users or document US primary with SCCs.

## Environment parity

Local Wrangler + production Worker share route shapes. Secrets (`DATABASE_URL`, Clerk keys, OpenAI, R2) remain in Worker secret store — never committed.

Public page: https://peakpactelite.app/legal/data-flow/