Project Apex is a daily race-engineering puzzle. There are no accounts to create, no ads, no in-app purchases, and nothing here is sold or shared with advertisers. This policy describes exactly what the app does collect, and why.
The app gives you an anonymous ID so the daily leaderboard can work, and stores the setups and lap times you submit. It uses Google Firebase for crash reporting and basic usage counts. It never asks for your name, email address, phone number, contacts, photos, or precise location — but it does create persistent identifiers for you, and those count as personal data under most privacy law. This policy says exactly which ones, and what they are attached to.
On first launch the app creates an anonymous account through Firebase Authentication. That
produces a random identifier and an auto-assigned callsign derived from it — for example
ENG-482913. You are never asked for personal information, and the callsign is not
chosen by you or by anyone else.
When you lock in a daily setup, the app stores your callsign, your average and fastest lap times, the submission time, a checksum of the result, and your eight engineering selections with their total cost.
The lap times and callsign appear on the public daily leaderboard. Your selections do not. They are sealed by the server until the day closes, so nobody can read your answer while the competition is still running. After a day closes, that day's setups become readable — that is how the reveal works.
Your race history, Experiment runs, Quick Race and Test Lab sessions, and your app preferences are stored only on your device and are never uploaded.
One correction, because an earlier version of this policy said otherwise: your streak is not purely local. The current streak length is sent as a number with the analytics event that fires when you submit a day, described below. The day-by-day history behind it stays on your device; the count does not.
The app uses Firebase Crashlytics and Firebase Analytics.
Crashlytics records a stack trace, your device model and OS version when the app crashes, tagged with your anonymous ID so a repeated fault can be traced to one player's sessions. Alongside a crash it also records a short breadcrumb log of the actions taken immediately before it.
Analytics records a small set of events, which are counted, not profiled: onboarding completed; each daily submission, carrying the day number, your current streak length, and whether that day had a technical regulation; your first submission; your first return on a later day; and share tapped. Beyond these, Firebase Analytics also collects its own automatic events — first open, session starts, app updates and similar — which the SDK enables by default rather than the app switching them on. Analytics assigns a separate app-instance identifier that is not connected to your anonymous ID, and derives an approximate, region-level location from your masked IP address. The app never requests Location Services and holds no location permission.
None of this is tracking as Apple defines it. Nothing is shared with data brokers or linked to you across other companies' apps or websites. There is no advertising identifier and no tracking prompt, because there is nothing to ask permission for.
Firebase Authentication, Cloud Firestore, Crashlytics and Analytics are operated by Google LLC on servers in the United States. Google's commitments for these services are described at firebase.google.com/support/privacy.
In the app: Settings → Delete my engineer. This deletes your player profile, every setup you have submitted, your local history, and the anonymous account itself.
One thing is kept: your past leaderboard rows, with the callsign replaced by
ENG-DELETED. Each row is the record of a competition other people took part in, and
removing one would silently re-rank everyone who finished behind you.
Being precise about what that leaves, because this policy previously was not: the displayed name is gone, but each kept row is still stored under your anonymous ID, so those rows remain linked to one another. Nothing connects that ID to you as a person — it was never given your name or email — but it is not accurate to call the remaining rows anonymous. Crash reports and analytics events already sent before deletion are also not retrieved; they age out under Google's own retention schedule.
Deleting the app removes all local data. The anonymous sign-in token itself lives in the iOS keychain, which survives deleting an app — so the app checks on every launch whether its own local data is missing while a token is still present, and if so discards that token and creates a new identity. A reinstall therefore starts you as a new engineer, and the old identity cannot be recovered.
The app never asks anyone, including children, for a name, email address, phone number, contacts, photos, or precise location. What it does collect is described above: an anonymous identifier, the setups and lap times you submit, crash diagnostics, and usage counts. There are no ads, no chat, no way for players to contact one another, and no text a player can write — the app assigns every callsign automatically and offers no way to change one.
If the app's data practices change, this policy is updated and the effective date revised before the change ships.