| Category | Examples | Where it goes |
|---|---|---|
| Account identity | Your Apple-provided sub (a stable per-app user id) and email, when you Sign in with Apple. |
Stored on our backend (Railway, US). |
| Subscription state | Whether you have an active "Esque Pro" subscription, the next renewal date. | Backend. Verified against Apple's IAP server. |
| Project content | The IDEA you type, the optional extra notes, the agent's replies, the repository tree summary if you tap Sync Repository, screenshots you attach. | Sent to Google Gemini (text + screenshots) and to your paired laptop bridge URL (text). |
| Push token | The Expo push token your device issues. Sent with every prompt so the bridge can ping you back asynchronously. | Stored on our backend and on the laptop bridge you paired with. |
| Usage counters | Number of AI prompts and screenshot analyses this calendar month. | Backend. Used to enforce plan limits. |
| Diagnostic logs | Crash reports captured by Apple's CrashKit (if you opt in via iOS Settings → Privacy → Analytics & Improvements). | Apple. We don't add our own telemetry. |
We do not collect:
Every prompt the app's "brain" generates is sent to Google Gemini via our backend. Screenshots you attach are sent to Gemini's vision model. Google's policy applies in transit and at rest on Google's side: ai.google.dev/gemini-api/terms. Google states that paid API traffic is not used to train models.
Heads up on screenshots: a screenshot of your own app-in-progress can contain sensitive data — live API keys, access tokens, customer information, or other secrets visible on screen. Attaching it sends that image to Google Gemini. Redact or crop anything sensitive before attaching a screenshot.
When you scan the QR code from npx esque-bridge, your phone learns a bridgeUrl (a public tunnel URL) and a one-time pairing secret. Every prompt you send goes to that URL with the secret as an auth header. The URL is whatever the bridge's tunnel was (Cloudflare / localtunnel / ngrok). We do not see this traffic. You are responsible for trusting the URL — only scan QR codes from a bridge you control.
We operate a backend that verifies Apple Sign In tokens, verifies Apple IAP receipts, holds the Gemini API key, and enforces per-plan rate limits. Hosted on Railway in the United States.
Free-plan users see banner and occasional interstitial ads served by Google's AdMob SDK. The SDK runs on-device and may collect device identifiers and SKAdNetwork attribution data per Apple's rules. We configure the SDK to request non-personalized ads only. Google's policy: policies.google.com/technologies/ads.
To notify you when your agent finishes a long task, your push token and a short excerpt of the agent's reply are sent to Expo's push service (exp.host), which relays the notification to Apple's APNs. Expo's privacy policy applies.
Our backend and these sub-processors (Google, Railway, Expo) are located in the United States. If you are in the EEA or UK, your data is transferred to the US under the EU–US Data Privacy Framework and/or Standard Contractual Clauses, as applicable.
We do not share your data with anyone other than the sub-processors named above.
The pairing secret your phone and the bridge use to authenticate each other never reaches our backend — it's exchanged only between your two devices. Your Claude Code session content (everything the agent does on your laptop in response to a prompt) never reaches us either; it lives inside claude on your laptop.
Your rights (GDPR / CCPA & CPRA). Depending on where you live, you have the right to access, correct, export (data portability), and delete your personal data, and to object to or restrict processing. California residents have the right to know what we collect and not to be discriminated against for exercising these rights. We do not sell or “share” personal information. Our lawful bases for processing are performing our contract with you (running the service) and your consent (sending prompts, repo summaries, and screenshots to Google Gemini). Exercise any right via privacy@chava.codes; we respond within the period your law requires.
We do not currently encrypt the AsyncStorage cache holding your session list on-device beyond iOS's default device-encryption-at-rest. Anyone with your unlocked phone can see your session history, so we recommend a passcode.
Esque is not directed at children under 13, and we don't knowingly collect data from anyone in that age range. App Store rating: 17+.
We'll bump the date at the top and post a notice in-app for material changes. If you continue to use the app after a change, that's your acceptance.