ASTRA
Privacy Policy.
1. Who we are
Astra is a daily horoscope app published by CodeEnsis Ltd. ("we", "our", "us"). This policy explains what Astra collects, how it is used, and the rights you have.
2. What Astra stores on your device
The following data lives only on your phone, in the app's private storage, and is never transmitted to CodeEnsis or any third party:
- Your sun sign and preferred tone of voice.
- Your date of birth. Optionally, your time of birth and the city you were born in. Astra works without time and city — they make the natal chart and forecasts more precise, nothing more.
- Readings you tap Save on (the horoscope text, affirmation, sign, tone, and timestamp).
- Notification preferences (whether the daily reminder is on, and the time of day you chose).
If you uninstall Astra, all of this is removed with the app. There is nothing left for us to delete on a server, because we never had it.
3. What is sent to our backend
To generate today's reading, Astra calls a CodeEnsis Cloud Function. The request contains:
- Your sun sign (e.g. "libra").
- The tone you picked (e.g. "warm", "sharp", "esoteric").
- The date scope being requested (today, this week, this month, or a compatibility pair).
- Your app locale (e.g. "en-US"), so the response is in the right language.
- An anonymous opaque identifier, used purely to enforce a per-device daily quota that protects the AI endpoint from abuse. The identifier is not linked to your name, email, or any device identifier we control. We do not use it to build a profile of you.
What is not sent: your date of birth, your time of birth, the city you were born in, your saved readings, your name, your email, your contacts, your location, or any advertising identifier from the reading flow.
4. The AI provider
To generate a reading, Astra's Cloud Function calls OpenAI (gpt-4o-mini). The prompt contains your sun sign, your tone, the date scope, and your app locale. It contains nothing that could be used to identify you to OpenAI.
OpenAI's data handling is described at openai.com/policies/privacy-policy. CodeEnsis has commercial API terms with OpenAI under which prompts and outputs are not used to train OpenAI models.
5. The shared reading cache
To avoid re-billing the AI for the same reading, generated outputs are cached server-side keyed by sign + tone + date + locale. Every person who shares those four values reads the same cached output that day. The cache is fully anonymous: it contains no user identifier and no personal information.
6. Rewarded video ads (Android only)
The Android edition of Astra includes a single, user-initiated advertising surface: a rewarded video button that unlocks the weekly or monthly forecast for the current period after you watch a short video. No banner ads, no interstitials, no ads in the reading flow itself. Watching is always optional; if you don't tap the button, no ad is ever loaded.
The rewarded video is served by Google AdMob. When you tap the unlock button, AdMob receives:
- Your Android Advertising ID (a resettable identifier you control in your device's system settings), used by Google to select and measure ads.
- Standard request signals: device model, OS version, locale, coarse country (from IP), the ad unit identifier, and a request timestamp.
AdMob does not receive: your sun sign, your saved readings, the text of any reading, your sign-up or auth state, your DOB, or anything you typed into Astra. Google's processing is described in the Google Privacy & Terms — How Google uses information from sites or apps that use our services.
You can opt out of personalised ads at any time: Android Settings → Google → Ads → Delete advertising ID (or, on older Android versions, Opt out of Ads Personalisation). Astra will still show non-personalised ads after that — the unlock will keep working.
The Astra Oracle build on iPhone does not show ads. The same SDK is statically linked into the iOS binary for shared-codebase reasons but is never initialised — no ad requests are made, no advertising identifier is read.
7. What Astra does not collect
- No real name, email, phone number, password, or social login.
- No advertising identifiers, except as described in section 6 (Android, only when you tap the unlock button).
- No analytics or crash-reporting SDKs in the current release.
- No contacts, location, microphone, camera, or photo-library access.
- No precise device location. The city you enter is stored on-device only.
8. Permissions Astra asks for
- Notifications — to deliver the optional daily reading reminder at the time you choose. Reminders are scheduled locally on your device; no remote push servers are used. You can revoke this permission at any time in your device's system settings.
9. Children
Astra is rated 12+ and is not directed at children under 13. We do not knowingly collect data from children under 13.
10. Your rights
Because there is no account and your birth details never reach our servers, the exercise of your rights is straightforward:
- Access / portability: Saved readings are visible in Profile → Library → Saved readings. Birth details are visible in Profile → Birth details. Both live on your device and are visible to you directly.
- Deletion: Uninstalling Astra removes all of your data, because all of it is local. There is no server-side profile to delete. If you want us to confirm that nothing is held about you, write to [email protected] — we will reply with a written confirmation.
11. Data retention
On-device data is retained until you uninstall the app or clear it from app settings. The shared anonymous reading cache is retained for up to 30 days. The anonymous per-device quota counter resets daily.
12. Earlier versions of Astra
Before v1.0.1 (May 2026), saved readings were also written to a Firestore collection under an anonymous user id. On the first launch of v1.0.1 or later, any such records are pulled down into your phone's local storage and then deleted from our servers. After that one-shot drain, no saved readings remain on our backend. If you would like written confirmation that the legacy records tied to your previous anonymous id have been removed, contact [email protected].
13. Changes to this policy
We may update this policy as Astra evolves. Material changes will be reflected here with an updated "Effective" date above. Continuing to use Astra after a change means you accept the updated policy.
14. Contact
Questions or requests about this policy: [email protected]. A human reads every message.