Privacy Policy
Delta-V Academy (the "Service") is an educational orbital mechanics simulator operated by BuildingRome. This policy describes what information the Service collects, how it is used, and the third parties involved. This policy explains those practices and your choices.
1. Summary
- You can use the Kids levels and Lesson 1 of every track anonymously, with no account.
- Free accounts include the Kids and Novice tracks and 3 daily AI Mission Architect generations. Pro and Lifetime unlock higher tracks beyond Lesson 1 and additional tools. See the Terms for prices and allowances.
- No marketing cookies. No advertising trackers. No data brokers. We do not sell or share data with advertisers.
- We collect usage analytics so we can understand how the site is used and keep it working.
- For signed-in users, we store your email, account tier, and lesson progress in Firestore.
- Prompts you submit to the AI Mission Architect are sent to Google Gemini for processing.
- Stripe processes web purchases and support contributions. Apple or Google Play processes in-app purchases, with RevenueCat managing entitlements. We receive purchase identifiers and access status; we do not receive full payment card details.
- You can request account and data deletion at any time by emailing us.
2. Information We Collect
2.1 Account information (signed-in users)
Creating a free account is required to access most lessons and the AI Architect. When you sign up:
- Email + password sign-up: we collect the email address you supply. The password is hashed and stored by Firebase Authentication; we never see or store the plaintext.
- Sign in with Apple: Apple returns a verified email address (or a private relay address if you choose to hide your email) and a stable Firebase UID to us. We do not request access to any other Apple data.
- Google sign-in: Google returns a verified email address and a stable Firebase UID to us. We do not request access to contacts, calendar, Drive, or any other Google scope.
For each authenticated user we store the following in our Firestore database:
- Firebase UID (an opaque identifier for your account)
- Email address
- Account tier — one of
free(default),ai_pro(Pro subscription),lifetime(one-time purchase),educator(approved teacher grant), orinstitution(school or district access). New accounts start on Free. Paid plans are optional and require a purchase or grant. - Account creation timestamp
- Lesson progress: which lessons and steps you have completed and the highest level reached per lesson
- Purchase records: Stripe customer identifiers, subscription or payment identifiers, and billing grants (plan, active status, and update time). RevenueCat links your Firebase UID to store purchases and provides entitlement status. If a web purchase cannot be linked to an account, we retain its checkout identifier, email supplied at checkout, amount, intended plan, and resolution status so we can help deliver access.
2.2 Session cookies
After sign-in we set an HTTP-only, SameSite=Lax session cookie named __session issued by Firebase. The cookie is used solely to identify your account on subsequent requests. It is not used for advertising, cross-site tracking, or analytics. Signing out clears the cookie.
2.3 Third-party SDKs (unconfigured, dormant)
The native iOS app's dependencies include Facebook SDK and Google App Measurement (pulled in transitively by Firebase and RevenueCat). These SDKs are not configured or initialized in our build: they receive no API keys, no user data, and no initialization calls, so they remain dormant. They do not function as tracking or analytics services in the app. They are listed here for complete transparency with App Review.
2.4 Usage analytics (PostHog and Vercel)
The Service uses two analytics tools to understand how the product is used:
- PostHog captures named interaction events and page views. We use it with
autocapturedisabled, meaning only the specific events listed below are recorded. PostHog uses browser localStorage (not cookies) for session persistence. For unauthenticated visitors, no persistent person profile is created (PostHog runs inperson_profiles: 'identified_only'mode). For signed-in users we identify the PostHog session with your Firebase UID so completed-lesson and feature-usage counts can be attributed to your account. We never send your email, password, or AI Architect prompt content to PostHog. Events we capture include:
- Page views and page-leave events
- Lesson menu opened, lesson selected (lesson ID and title), lesson completed
- Difficulty level selected (kids, novice, intermediate, or advanced)
- Mission changed (mission ID)
- Time-speed control used (speed multiplier)
- AI Architect modal opened, generate / refine completion event (provider, model, satellite count, success or failure code)
- Account created, account gated (a feature was attempted that required sign-in)
- Replay menu opened, replay started (replay ID and title)
- Help / Info modal opened
- Screenshot taken (resolution setting); video recording started and stopped (resolution and duration)
- Global overlay controls toggled (control name and on/off state)
- Feedback button clicked (current mission, lesson, and level — no free-text content)
- Simulator error boundary triggered (error name and message)
Each event may include browser type, approximate geographic region (country and city level), device category, and operating system as inferred by PostHog from your request headers.
- Vercel Analytics measures page views and Core Web Vitals (performance signals). It is cookie-less and does not collect personally identifying information. Aggregated metrics include approximate region, device type, browser, and referrer.
2.5 Local storage on your device
The Service uses the browser's localStorage and sessionStorage to remember settings such as lesson progress (mirrored locally for offline use), difficulty level, panel layout, and the welcome modal dismissal state. PostHog also uses localStorage (key prefix ph_) to persist a session identifier between page loads. Clearing your browser storage erases these values.
2.6 AI Mission Architect prompts
The AI Architect requires sign-in. When you use it, the natural-language prompt you type is transmitted to Google's Gemini API to generate a mission configuration. We do not store prompt content on our servers, but Google may process and retain prompts under Google's Privacy Policy. We do log a per-request analytics event (success or failure code, satellite count, model used, whether a self-repair pass was needed) keyed to your account so we can detect abuse and quota issues. The prompt text itself is not in that event. Do not include personal, confidential, or proprietary information in Architect prompts.
2.7 Server logs and rate limiting
Our hosting provider (Vercel) maintains standard server logs that may include IP address, request path, user-agent, and timestamps. These logs are used for security, abuse prevention, and operational diagnostics, and are retained per Vercel's policies. We also keep rate-limit counters for requests per IP and per account so we can apply per-minute and per-day rate limits to the AI Architect and authentication endpoints. Short-term counters may reset when a server instance restarts. Daily AI usage counters are stored in Firestore to enforce account allowances consistently across server instances.
3. What We Do Not Collect
- We do not require your real name or receive full payment card numbers. Payment providers may collect billing details under their own policies. Account and purchase identifiers and support correspondence may identify you.
- We do not run advertising networks or sell data to third parties.
- We do not fingerprint users or build cross-site profiles.
- We do not capture free-text input from sliders, lesson content, or the 3D view.
- We do not require a real name on your account.
4. Cookies and Local Storage
The Service does not set advertising or tracking cookies. The__sessioncookie described above is the only cookie we set ourselves and it exists solely to keep you signed in. PostHog stores an anonymous session identifier in your browser's localStorage under keys prefixed with ph_. Vercel may set a small number of essential, first-party operational cookies for hosting and performance measurement. None of these contain personal information or are used for advertising.
5. Third-Party Services
We rely on a small number of third parties to operate the Service:
- Firebase Authentication and Firestore (Google) host the account system and store user records, lesson progress, and purchase entitlement state. See Firebase's Privacy Policy.
- PostHog provides product analytics and event tracking. See PostHog's Privacy Policy. PostHog is configured with
person_profiles: 'identified_only', meaning no persistent profile is created for unauthenticated visitors. - Vercel hosts the application and provides performance analytics. See Vercel's Privacy Policy.
- Google (Gemini API) processes prompts you send to the AI Mission Architect. See Google's Privacy Policy.
- Stripe processes web Pro subscriptions, Lifetime purchases, and voluntary support. It supplies payment and customer identifiers, purchase status, and billing information needed to reconcile purchases. See Stripe's Privacy Policy. Current prices are in our Termsand checkout; the Privacy Policy does not set prices.
- Apple, Google Play, and RevenueCat handle native purchases and purchase restoration. RevenueCat associates your app account identifier with store transactions and entitlement history. Our server reads current entitlements to grant or revoke access, including after cancellations, refunds, or purchase transfers. See RevenueCat's Privacy Policy, Apple's Privacy Policy, and Google's Privacy Policy.
- Open data sources. Orbital elements, sensor parameters, and mission reference values in the simulator were authored by us from publicly available open sources (published catalogs such as CelesTrak and Space-Track, NASA, ESA, FCC and ITU filings, and peer-reviewed literature) and are stored in the application as static, notional values. The Service does not query a live satellite catalog, so no request carrying your identity is made to any such provider on your behalf. If a server-side reference fetch is added later, it will be made server-side and will not transmit user-identifying data.
- Map outlines (country borders and coastlines for the 2D ground-track view) are fetched by your browser from a public CDN (jsDelivr) as a static GeoJSON file. That request carries your IP address to the CDN, as any web request does, and carries no account or usage information.
6. Children's Privacy
Delta-V Academy is suitable for general audiences interested in learning orbital mechanics, including students. The Kids levels (designed for ages 6 to 14) and Novice Lesson 1 are usable anonymously, with no account or personal information required.
Account creation is required for further lessons. We do not knowingly collect personal information from children under 13 in the United States, or under the equivalent age of digital consent in other jurisdictions, except with verifiable parental or guardian consent. If you are a parent or guardian and believe your child has created an account or otherwise provided personal information, contact us at info@buildingrome.dev and we will delete the account and any associated data.
7. Data Retention
Account information and lesson progress are retained for as long as your account is active. PostHog event data is retained per PostHog's retention policy (currently one year on the free tier; subject to change). Aggregate Vercel Analytics are retained per Vercel's policies. Local-storage values persist on your device until you clear them. Architect prompt text is not retained on our servers. Payment providers may retain transaction records for billing, fraud prevention, and legal obligations after account deletion. When an account with billing history is deleted, we retain a restricted billing-recovery record containing provider identifiers, grant status, account email, and deletion/update timestamps. It provides no app access and is used only for reconciliation, refunds, disputes, fraud prevention, and legal obligations. Contact us for help with an unmatched payment record.
8. Your Rights and Choices
- Access and correction. You can see your account email and tier in the app. To request a copy of your stored progress data, email info@buildingrome.dev from your account email and we will export it.
- Deletion (self-serve).Open the Account menu inside the app, choose "Delete my account", and type your email to confirm. The request immediately deletes your Firebase Authentication record, your
users/{uid}Firestore document and its daily usage counters, and yourprogress/{uid}/lessons/*subcollection, and revokes any outstanding session tokens. Billing recovery records described above are not part of the active account and may remain. Account deletion does not cancel a Stripe, Apple, or Google Play subscription; cancel it with that provider to stop renewal. Locally cached lesson progress in your browser is also cleared. Anonymous analytics events that cannot be reattached to an identity may persist in PostHog until they age out of retention. If the in-app flow does not work for you, email info@buildingrome.dev and we will delete your account manually within 30 days. - Local data.You can clear your browser's site data at any time to remove all locally stored preferences and PostHog session identifiers.
- Analytics opt-out. You can opt out of PostHog analytics by enabling Do Not Track in your browser, or by using an analytics-blocking extension. PostHog respects the DNT header. You can opt out of Vercel Analytics with browser-level tracking protection or an ad blocker.
- AI Architect. You can choose not to use the AI Architect, in which case no prompt data is generated or transmitted to Google.
9. Security
Account credentials are managed by Firebase Authentication, which applies password hashing, brute-force protection, and (for Google sign-in) federated identity verification. Firestore access is constrained by per-user security rules: a signed-in user can read and write only their own progress documents. We use commercially reasonable measures to protect the rest of the Service. No method of transmission or storage is perfectly secure, and we cannot guarantee absolute security.
10. International Users
The Service is operated from the United States and uses Google Cloud (Firebase, Gemini), Vercel (US), and PostHog US infrastructure (us.i.posthog.com). If you access the Service from elsewhere, you consent to the transfer and processing of information in the United States and other regions where our service providers operate.
11. Changes to This Policy
We may update this policy as the Service evolves. Material changes (for example, a change to paid offerings, a new analytics provider, or any change to data retention) will be reflected by updating the "Last updated" date at the top of this page and, where appropriate, by emailing signed-in users. Continued use of the Service after an update means you accept the revised policy.
12. Contact
Questions, deletion or export requests, and privacy-related complaints can be sent to info@buildingrome.dev. See the Contact page for more options.