← AppFactory Studio
1. What we collect
We collect and keep no personal data ourselves. There is no sign-up, no login and no account.
The app sends our server the anonymous usage events described below, which contain no personal data, and one
ad check request before ads start (below) and — only if you choose to send it — the feedback you type.
The advertising SDKs bundled in the app do collect data in order to serve ads (see section 4).
- Your boards, statistics, daily-board results and settings are stored only on your device (and in your device's own Android backup if you use it).
- The advertising identifier (GAID) is used by the ad SDKs. Our own app code neither reads nor stores it.
- Anonymous usage events — the app sends a small, fixed set of anonymous events (first launch, first board cleared,
the Pro / "Remove ads" sheet being opened and where from (Settings, out of hints, out of undos, out of adds, a locked board theme or the result screen),
purchase started, completed, cancelled or failed, restore attempted, a rewarded-ad offer being shown, tapped or rewarded,
an interstitial ad being shown or failing to display, a loaded ad expiring before it could be shown (ad format only),
each finished board as cleared or lost together with its running number (1st, 2nd, 3rd board on this install),
the in-app review request being shown, and whether the app was reopened on day 1 and day 7) to a server we operate.
Each event carries only an install identifier the app generates at random, an app tag,
the event name and a timestamp; no advertising ID, device identifier, name, board, moves or time is included. We use it solely to
see where people drop off, and raw events are deleted within 3 months, leaving only aggregate counts.
- Crash reports — if the app crashes, Firebase Crashlytics (Google) sends a crash report: the stack trace, device model, OS version, app version and a random installation identifier generated by Crashlytics. It contains no personal data and no board content, and is used only to fix bugs. There is no third-party analytics SDK.
- Ad check before ads start — before turning ads on, the app sends our server one request containing only the app's name,
so that automated test devices (such as Google Play pre-launch testing) do not load real ads. The server uses the connection's IP address
only for that check and does not store it; it keeps only a daily count per app.
- Ad settings download — when it starts, the app downloads a small ad-settings file from our website
(hosted by Vercel) that sets how often ads may appear, for example the minimum time between ads, so we can tune
and compare ad frequency without an app update. The request contains no identifier; like any web request it
reveals the connection's IP address to the hosting provider, which uses it only to deliver the file — we receive
no copy and keep no log of it. If the install is placed in an ad-frequency comparison group, that group's name (for example
“gap_test.b”) is sent as one more anonymous usage event. The file can only lower or space out ads within limits built into the app;
it can never place an ad during play. The app also tells our advertising partner (Unity LevelPlay) this ad-settings
group, the install date and whether you look likely to buy (you opened the purchase screen twice or started a
purchase), so ad frequency can be set per group; no name, account or purchase details are included.
- Feedback you choose to send — only if you use “Tell us anything” in the app, we receive the category you picked,
the text you typed (up to 1,000 characters), the app version, your device language, the screen or level you were on,
and a random install identifier generated by the app. There is no name, email, account or advertising ID field, and
email addresses or phone numbers typed into the message are masked before it is stored. Your IP address is not stored.
We use feedback only to fix bugs and improve the game; it is not shared with third parties or used for advertising.
Sending feedback is optional. Messages are kept on our server (Cloudflare) and deleted within 12 months.
2. Where data lives
| Data | Purpose | Location |
| Board in progress (so you can continue after closing the app) | Resuming your game | On device |
| Statistics, clear streaks, daily-board results | Showing your records | On device |
| Settings (timer, theme, board colours, text size, sound) | Running the app your way | On device |
| Whether "Remove ads" or Pro was purchased | Unlocking and restoring the purchase | On device + Google Play |
| Crash reports (stack trace, device model, OS and app version) | Fixing bugs | Google Firebase Crashlytics — up to 90 days |
| Anonymous usage events (random install identifier only) | Seeing where people drop off | Our server — raw events for up to 3 months, then aggregates only |
Data retention
- On your device (the board in progress, statistics, clear streaks, daily-board results, settings and whether you bought "Remove ads" or Pro) — kept until you clear the app's data or uninstall the app. Uninstalling deletes all of it. We have no copy.
- Android backup — if you have it turned on, your boards, statistics and settings may be copied to your own Google account backup, which is kept under Google's rules, not by us.
- Crash reports — kept by Google Firebase Crashlytics for up to 90 days, then deleted.
- Anonymous usage events — stored on our server for up to 3 months, then deleted; only aggregate counts with no install identifier are kept after that.
- Ad check request — the connection's IP address is used only for the check and is not stored; we keep only a daily count per app with no identifier, and delete those counts after 3 months.
- Ad settings file — nothing is stored on our side for this download; the app keeps the last file it
downloaded on your device until you clear the app's data or uninstall the app. The comparison-group event is kept like the other anonymous usage events (up to 3 months).
- Feedback — if you send feedback from inside the app, your message (with anything that looks like an e-mail address or phone number masked), its category, the app version, language, the screen or level you were on and the random install identifier are stored on our server for up to 12 months, then deleted.
- Advertising partners (Unity LevelPlay / Unity Ads and the mediation partners listed above) — data their SDKs collect is retained by those providers under their own privacy policies linked above; we do not receive or keep it. Your ad-consent choice is stored on your device.
- Purchases — payment records are kept by Google Play under Google's own retention rules; we store no payment details.
- We keep no other user data.
3. App permissions
| Permission | Used for |
| Internet, network state | Showing ads, in-app purchase, sending anonymous usage events and crash reports |
| Advertising ID (com.google.android.gms.permission.AD_ID) | Used by the ad SDKs (section 4), not by our own code |
The app needs no camera, location, contacts, photo or storage permission.
4. Third-party services
Google Play Billing — in-app purchases are processed by Google, and the app
only checks whether you own an item. We never see your payment details. Google's handling is
covered by the Google Privacy Policy.
Firebase Crashlytics (Google) — crash reports as described in section 1, covered by the
Firebase privacy information.
Unity LevelPlay & Unity Ads (Unity Technologies / ironSource) — to serve interstitial and rewarded ads via mediation, it
collects and uses the advertising identifier (GAID), IP address, device information (model,
OS version, language, etc.) and ad-interaction data, which may be passed to advertising
partners during ad bidding. Unity's handling is covered by the
Unity Privacy Policy,
and you can opt out of personalized ads via the information icon shown on ads.
Ad mediation partners — ads are selected through Unity LevelPlay mediation, which runs a
real-time auction among the networks below. Each network's SDK is included in the app and, when it takes
part in an auction, may process the advertising identifier (GAID), IP address (used to estimate an
approximate region), device information, ad-interaction data and SDK diagnostic/crash information for
ad delivery, measurement and fraud prevention. Each partner's handling is covered by its own policy:
5. Consent in Europe (GDPR / EEA, UK, Switzerland)
On devices that appear to be in the EEA, the UK or Switzerland, the app shows the
InMobi Choice consent dialog (CMP) before any advertising SDK starts. It follows the IAB TCF standard.
- If you do not consent, or you dismiss the dialog, the ad SDKs are not initialised at all — no ad request is sent.
- You can reopen it and withdraw consent any time from Settings → "Privacy choices".
- Outside those regions the dialog does not appear; you can still limit personalised ads by resetting or deleting the advertising ID in your device settings.
6. International transfers
We transfer no personal data ourselves. The anonymous usage events in section 1 are processed on
Cloudflare infrastructure (which may be located abroad) and contain no personal data. The advertising partners listed
in section 4 may process data on servers abroad (including the United States) while serving ads, under their own
policies. In Europe this only happens after the consent described in section 5.
7. Ad formats
- The app shows interstitial and rewarded ads. There are no banner ads and no ads when the app opens.
- Interstitials never appear while a board is in progress — not when you start, undo, add numbers, use a hint or restart. At most one can appear
when you leave the result screen of a finished board, never within your first two finished boards, and at least 3 minutes apart.
- Rewarded ads play only when you choose to watch one, for an extra hint, an extra undo or one more “Add numbers” after the free ones are used.
- The one-time in-app purchase "Remove ads" removes all interstitials; optional reward videos stay available. Pro (one-time) removes all ads and gives unlimited hints and undo. Once you have made any purchase in the app, no interstitial is shown again. No subscription.
8. Children
This app is for a general audience and is not directed at children under 13.
9. Your rights
- Change or withdraw ad consent — Settings → Privacy choices (devices in Europe).
- Reset or delete the advertising ID — device Settings → Privacy → Ads.
- Delete everything — removing the app erases all of its on-device data.
- Questions — email us at the address below.
10. Contact
Email: leehywo1@icloud.com
Privacy contact: AppFactory Studio Privacy | leehywo@gmail.com
11. Change log
| Date | Change |
| 2026-11 | Added the optional in-app feedback form (“Tell us anything”); the Google Play Data Safety declaration was updated the same day. |
| 2026-11-06 | Added an explicit data retention section. |
| 2026-11-06 | Described the ad check request sent before ads start (app name only; IP address not stored). |
| 2026-11-05 | First publication. |
| 2026-11-06 | Retention of anonymous usage data on our server changed from up to 90 days to up to 3 months (it is now stored in Cloudflare Workers Analytics Engine, which keeps data for 3 months). |
| 2026-11-06 | Added the ad-settings download (ad frequency settings from our website, hosted by Vercel) and its anonymous comparison-group event; data retention section updated. It takes effect with the next app update. |