Legal · Ledgend
Privacy Policy
Business mailing address: StambaAI LLC, 30 N Gould St Ste N, Sheridan, WY 82801, United States.
Developer: StambaAI ("we", "us")
Contact: ledgend.support@stamba.ai
This policy explains what data Ledgend (the "App") collects, how it is used, and your choices. Core gameplay does not require a StambaAI account. Optional rankings use Apple Game Center, as described below. We do not collect your email address or contacts.
Feature availability depends on the installed version. Coin packs, the Starter Pack and iCloud save synchronization are included in version 1.0.1 and current TestFlight builds.
Data we collect
We use the third-party services below. Some of what is collected depends on the App version you have installed. In version 1.0.2 and later, you can switch gameplay statistics off in Settings, remote ad-pacing settings are downloaded only while gameplay statistics are on, and crash reports are sent only if you turn them on, as explained below; version 1.0.1 and earlier behave as described in the notes marked for those versions.
Advertising — Google AdMob
The App shows ads served by Google AdMob. AdMob and its partners may collect:
- Advertising identifiers (Apple IDFA / Google Advertising ID, where you have consented)
- Approximate location derived from your IP address
- Ad interaction data (impressions, clicks), product interactions, device information (model, OS version), and crash, performance and other diagnostic data used for advertising, analytics and SDK operation
Personalized vs non-personalized ads: Where required (EEA/UK, applicable US states), we show a consent form before any ads load. If you decline personalization, you will see non-personalized ads based on context rather than your interests. On iOS, ad tracking also requires your permission via Apple's App Tracking Transparency prompt; if you decline, your device's advertising identifier is not used for tracking. Google's privacy policy: https://policies.google.com/privacy • How Google uses ad data: https://policies.google.com/technologies/partner-sites
Gameplay records and Apple iCloud
Scores, coins, streaks, unlocked characters and effects, boost inventory, trophy progress and reward claims are stored locally on your device. Confirmed purchase transaction identifiers and credit markers are stored with the balance to avoid granting the same transaction twice. On iOS, when iCloud is available, the App synchronizes its gameplay save through Apple's iCloud key-value storage under your Apple Account. Settings and training preferences are stored locally. No StambaAI account or email verification is required. If iCloud is unavailable, the save remains on your device. Apple handles iCloud under its privacy policy.
Gameplay analytics — Firebase Analytics
Version 1.0.2 build 51 and later: The App does not ask a separate gameplay-statistics question. Where Google's regional consent form is not required, gameplay statistics are on by default after your first completed run, once the startup consent checks have finished. Where Google's consent form is required (for example the EEA, UK and Switzerland), gameplay statistics are on only if you consent in that form to storing and accessing information on your device and to measuring content performance; otherwise they stay off. If your region cannot be determined (for example when offline), sharing stays off until it can. You can switch gameplay statistics off, or back on, at any time in Settings → Share gameplay stats; where Google's consent form applies, you can also withdraw through Ad Privacy Options in Settings. If you chose Don't share or switched sharing off in an earlier build, that choice is kept. Playing, purchases and restoring purchases work whichever you choose. Apple's tracking prompt is never treated as permission for gameplay statistics.
When gameplay statistics are on, the App uses Google Firebase Analytics to understand and improve gameplay and shop features. Events include completed runs, floor and score reached, coins earned or spent, offer and shop views, confirmed purchase values and currency, and the optional Remove Ads offer: when it is shown and tapped and where it appeared (on the revive offer when a run ends, on the results card, or after an ad), and Remove Ads purchases with where they started, without price (remove_ads_upsell_view, remove_ads_upsell_tap, remove_ads_purchase), and how long each ad between runs stayed on screen as a coarse range only, with whether it counted as a long ad (ad_time: 0–5, 5–15, 15–30, 30–60 or 60 seconds or more). The App measures how long each ad between runs stays on screen and uses those times, kept on your device, to limit how much ad time you see (for example, by pausing ads after a long one); only the coarse duration range is sent, and only when gameplay statistics are on. The Remove Ads offer is shown by the App itself, not by an ad network; showing it sends no data beyond these events, which, like other gameplay statistics, are sent only when gameplay statistics are on. Firebase processes a pseudonymous app-instance identifier, device and app information, and these usage events, so these statistics are pseudonymous. The App does not use your device advertising identifier (IDFA) for analytics, and gameplay statistics are not used for advertising: our analytics configuration disables advertising-ID support, advertising storage, advertising user data and ad-personalization signals. Gameplay analytics do not include your name, email, contacts or payment-card details. Events from while sharing is off are not saved for later upload. Turning sharing off stops collection immediately and resets the App's Firebase analytics data on your device, including the app-instance identifier; it does not automatically erase data Google has already received. See Firebase's privacy information, or contact us for a deletion request.
Version 1.0.3 and later also sends these gameplay events, under the same rules (only when gameplay statistics are on):
- Next-goal card (
next_up_view,next_up_progress): where the card was shown (menu or results), which kind of goal it suggested and the in-game item, and your progress towards it in 25% steps. - Trophies and goals (
trophy_claim,goal_select,goal_purchase): where you claimed trophy rewards, how many and the coins received; which character or collection you picked as a goal; and when you bought it with in-game coins, with the coin price. - In-run moments (
combo_end,combo_record,pb_passed,milestone_reached,overdrive_start,overdrive_end): the size range of a combo and the floors it covered, a new combo record, the floor where you passed your best or reached a milestone, and when overdrive started (floor) and ended (how long it lasted and floors climbed). - Hazards (
missile_outcome,warden_outcome): how an encounter ended (for example outran, hit, bypassed or blocked by a shield), the warden pattern, whether it was your first hit and whether it was a close call. - Black hole and radar scanner (
black_hole_outcome,radar_detected): how a black hole encounter ended (passed, died or saved by a shield; in 1.0.3 builds that include the built-in lives described below, which build 59 and earlier do not, it can also be saved by a built-in life, and "died" is reported only when no lives were left), and each time a radar scanner detects you, with whether the faster rising floor from an earlier detection was still running. These obstacles exist only in the "tight" difficulty profile, so these two events are sent only by 1.0.3 builds that include that profile (build 54 and earlier do not) and only while it is in use. - Built-in lives (
life_lost): each time a hazard that would have ended the run uses up one of the built-in lives instead, with the kind of hazard (fire, black hole, laser, missile or thunder). Built-in lives exist only in the "tight" difficulty profile, so this event is sent only by 1.0.3 builds that include them (build 59 and earlier do not) and only while that profile is in use. - Run intro (
intro_shown, andintro_skippedin build 55 and earlier): which kind of intro was shown. Build 54 and earlier also sentintro_skipped, without any value, when you skipped the intro before it closed by itself. In build 55, the intro stayed on screen until you tapped it, andintro_skippedwas sent each time you tapped to close it, with how long it was on screen (dwell_ms, in 100 ms steps, up to 60 seconds). In builds after 55, the intro closes by itself after 3 seconds and cannot be skipped, so onlyintro_shownis sent. - End of run (
run_end) also carries a run identifier, made from the run's start time and a random number and created fresh for each run, so events from the same run can be grouped, and your active play time in the run (active_ms). The run identifier is kept only in memory during the run, identifies only that run, and is sent with the same pseudonymous app-instance identifier as other gameplay statistics. In 1.0.3 builds that include the "tight" difficulty profile (build 54 and earlier do not), and only while that profile is in use,run_endalso carries how many times in the run the App briefly locked out jump presses after repeated presses that did not lead to a jump (mash_locks), counted across the whole run including after a revive. In 1.0.3 builds that include built-in lives (build 59 and earlier do not), and only while the "tight" profile is in use,run_endalso carries how many built-in lives were left when the run ended (lives_left).
The code also contains a run-objective event (run_objective_complete), but it is switched off in the current release and is not sent. None of these events adds a new identifier about you or a new type of data beyond how you play and use the App.
When you change the Settings switch, your choice is saved on this device with a notice version and decision time, separately from your iCloud gameplay save; the App also notes on this device that you have finished a run. If no valid choice is saved, the default described above applies; an unreadable record counts as off. If the App cannot save a change, it keeps sharing off for the current session, shows that the choice has not been saved, and retries while the App is running. You can also choose Save my choice now in Settings. If the App is stopped and restarted before the choice is saved, the previously saved choice (or, if none was saved, the default above) may apply; check Settings and retry saving your choice.
Version 1.0.2 builds 49 and 50 (TestFlight): Gameplay statistics were off until you said Share. Where Google's regional consent form was not required, the App asked once, after your first completed game, whether to Share or Don't share; where it was required, sharing needed both your consent in that form and your Share answer. If your region could not be determined, the question was not shown and sharing stayed off. You could change your answer in Settings → Share gameplay stats.
Version 1.0.1 and earlier: These versions have no separate gameplay-statistics question or setting. Firebase Analytics followed Google's regional consent state: where the consent form was not required, gameplay analytics were collected automatically in release builds; where it was required, they were collected only if you allowed the relevant purposes in that form. The same events, identifiers and advertising restrictions described above applied. See the previous policy dated 20 October 2026. Builds 49 and 50 of version 1.0.2 switched gameplay statistics off until you said Share; from build 51 the defaults described above apply. This policy does not change how an older version you have not updated behaves.
Remote ad-pacing settings — Firebase Remote Config
Version 1.0.2 build 51 and later: The App may download settings that control how often ads appear (for example, how many games between ads) from Google Firebase Remote Config. Doing so registers a Firebase installation identifier and sends it with app and device information to Google. The App contacts Remote Config only while gameplay statistics are on, as described above; while they are off, it does not contact Remote Config; settings already downloaded during the current session may stay in use until the App restarts, after which the built-in settings apply. If gameplay statistics turn on later, the download happens then. In builds 49 and 50 of version 1.0.2, the App may have contacted Remote Config each time it started, whatever your gameplay-statistics answer. Version 1.0.1 and earlier did not contact Remote Config and always used the built-in settings.
Version 1.0.3 builds that include the "tight" difficulty profile (build 54 and earlier do not): the same Remote Config download may also include a difficulty profile setting (difficulty_profile), which chooses between the App's "tight" difficulty (the default) and the earlier, more forgiving 1.0.3 difficulty. It is fetched under the same rules, only while gameplay statistics are on, and a downloaded value is applied in a later session. It sends no additional data about you. A value already applied may stay in use until the App restarts, as with the ad-pacing settings; otherwise, while gameplay statistics are off, or if no valid value was downloaded, the difficulty built into the App applies.
Crash reports — Firebase Crashlytics
A crash report sent to Google's Firebase Crashlytics contains the stack trace, device model, OS version, app version, free memory and disk space, and a random installation identifier. Crash reports are not linked to your identity, are not used for advertising or tracking, and are used only to find and fix bugs. Crashlytics keeps crash reports for 90 days. Firebase privacy information: https://firebase.google.com/support/privacy
Version 1.0.2 and later: Crash reports are off by default, including when you update from an earlier version, and are sent only if you turn on Settings → Share crash reports. Reports recorded before you turn it on are discarded, and turning it off stops sending and deletes reports not yet sent. Version 1.0.1 and earlier: crash reports were sent automatically in release builds.
Version 1.0.3 builds after 55: when Share crash reports is on, the App also sends a non-fatal error report to Crashlytics if the game cannot get ready to start or resume a run. The report has the same contents as a crash report described above, plus a short log line naming the preparation step that did not finish, which game artwork was still loading, and the technical error message. With Share crash reports off, no such report is sent.
Optional rankings — Apple Game Center
If you sign in to Game Center, the App submits your best floor to Apple and retrieves leaderboard entries. Apple manages the Game Center account, player identifier, display name and rankings. Other players may see your Game Center display name and ranking on the leaderboards. See Apple's privacy information for how Apple handles that data.
Purchases — RevenueCat
If you make an in-app purchase, RevenueCat processes your purchase history and transaction identifiers (product purchased, price, purchase entitlement status, a random app user ID generated by RevenueCat) to validate and deliver purchases, manage eligible non-consumable entitlements, prevent duplicate delivery and provide purchase analytics. Coin packs are consumable purchases; restoring eligible purchases is separate from synchronizing your saved coin balance. Payment details (card numbers, billing address) are handled entirely by Apple or Google — we never see them. RevenueCat privacy policy: https://www.revenuecat.com/privacy
What we do NOT collect
- No StambaAI account registration, email address, phone number, or contacts; optional Game Center rankings use the display name managed by Apple
- No precise GPS location
- No photos, files, microphone, or camera data
- No data sold to third parties
How data is shared
Data is shared only with the service providers above (Google for advertising, gameplay analytics and crash reporting, RevenueCat for purchase validation and analytics, and Apple for optional Game Center features and iCloud save synchronization). We do not sell personal data.
Children
Ledgend is not directed at children under 13 (or the applicable age of digital consent in your region), and we do not knowingly collect personal data from children. If you believe a child has provided us data, contact ledgend.support@stamba.ai and we will delete it.
Your rights
EEA/UK (GDPR): You have the right to access, correct, delete, restrict, or object to processing of your personal data, the right to data portability, and the right to withdraw consent at any time (in version 1.0.2 and later, turn off Share gameplay stats or Share crash reports in Settings; use Ad Privacy Options for advertising choices and, from version 1.0.2 build 51, gameplay-statistics consent). Legal bases: consent (in version 1.0.2 and later, gameplay analytics, remote ad-pacing settings and crash reports; personalized ads), contract (purchases), legitimate interests (in version 1.0.1 and earlier, crash reports, to keep the App working). You may lodge a complaint with your supervisory authority.
California (CCPA/CPRA): You have the right to know, delete, correct, and opt out of the "sharing" of personal information for cross-context behavioral advertising. Use the in-app consent options or contact us. We do not discriminate for exercising rights.
Everyone: To exercise any right or request deletion of data associated with your device identifiers, email ledgend.support@stamba.ai from any address, including your device advertising ID if available. We respond within 30 days.
Data retention & security
Local gameplay records remain until you reset progress or remove the App and its local data. Deleting the App does not necessarily delete a previously synchronized iCloud save; manage the App's iCloud data through your Apple Account storage settings. A reset within the App also updates the synchronized save when iCloud is available. Crash reports are deleted after 90 days. Advertising, analytics, purchase, iCloud and Game Center records are retained according to the respective providers' policies, account settings and applicable requirements. Deleting a local save does not cancel a purchase, request a refund or erase providers' transaction records. Data sent to those providers is encrypted in transit (TLS).
Changes
We may update this policy; material changes will be reflected by a new effective date on this page.
Contact
StambaAI — ledgend.support@stamba.ai — https://stamba.ai
← Back to Ledgend