Levelify Privacy Policy
Last updated: August 4, 2026
This Privacy Policy describes how Levelify processes information when you use the Levelify iOS app and related backend services.
Who We Are
Levelify is operated by Natsuhiro Arita (Japan), who is responsible for this Privacy Policy.
Summary
- No sign-in or account is required.
- The app processes text you choose to type or paste, plus pages from Levelify's built-in reading library. User text is sent to our backend; for a requested Rewrite, the backend sends the selected page to OpenAI to generate AI Rewrites in Japanese.
- Outputs are generated automatically, are not human reviewed, and may be inaccurate, incomplete, unnatural, or miss nuance.
- History, saved items, reading progress, page Rewrite cache entries, preferences, a daily rewrite usage counter, and a cached subscription status snapshot are stored locally on your device.
- In version 2.4 and later, the daily counter applies only to rewrites of your own text, and built-in readings do not increment it. In version 2.3 and earlier, successfully preparing a built-in reading may increment the same daily counter.
- If you buy or restore Plus, Apple processes the subscription transaction and the app stores a local subscription status snapshot on your device.
- Version 2.2 and later changes among rewrites already returned for the Original without sending the previously displayed rewrite again. Version 2.1 and earlier may send a previous rewrite as context for an Easier retry, and the legacy backend may briefly cache some of those retry responses in memory.
- Firebase App Check tokens and short-lived network identifiers are processed to help verify app requests and limit abuse.
- We do not sell your personal information.
- The Levelify iOS app does not use ad identifiers or in-app tracking SDKs.
In Plain Terms
- If you submit text in Levelify, it leaves your device so the app can generate a Rewrite. Built-in Originals are available offline; when you request a built-in Rewrite, the backend sends the selected page to OpenAI.
- Your request goes from the app to our backend, and then from our backend to OpenAI.
- In version 2.2 and later, changing among Hard, Medium, and Easy uses rewrites already returned for the Original. Version 2.1 and earlier may send the previous rewrite as context when requesting an Easier retry.
- Your History, Saved items, built-in reading progress and resume position, page Rewrite cache, preferences, daily rewrite usage count, and cached subscription status stay on your device unless you choose to share content or delete the app. Version 2.4 and later counts only rewrites of your own text; version 2.3 and earlier may also count successfully prepared built-in readings.
Where You Can Find This Policy
- This Privacy Policy is available from the app’s information and legal surfaces.
- It is also available in relevant subscription flows alongside Apple’s terms.
- Some app links may open third-party external websites or services, such as support or feedback pages. If you choose to use those destinations, their operators may process information under their own privacy and cookie practices.
- In the App Store listing, the Privacy Policy link points to this page.
Information We Process
| Category | What it includes | Why it is processed |
|---|---|---|
| Text content and rewrite context | Text you enter or paste, built-in reading passages you choose to open, selected JLPT level, and request settings. Version 2.1 and earlier may also send the previously displayed rewrite as context for an Easier retry. Submitted text can include personal or sensitive information if you choose to include it. | To generate Japanese rewrites that are easier to read, including versions of built-in readings and legacy Easier retries. |
| Local app data | Recent history, saved items, built-in reading progress, preferred JLPT level, furigana display preferences, a daily rewrite usage counter, and a cached subscription status snapshot. Version 2.4 and later uses the counter only for rewrites of your own text. Version 2.3 and earlier may also use it for successfully prepared built-in readings. | To provide history, personalization, and the daily rewrite allowance behavior applicable to the installed app version. |
| Subscription / purchase state | App Store subscription status and related product and entitlement information needed by the app to determine whether Plus features should be available. | To unlock paid limits, show current plan status, and support restore and subscription-management flows. |
| Technical request metadata | A per-request random request ID (x-request-id), Firebase App Check token, and network identifiers such as IP address / x-forwarded-for processed by our backend and infrastructure. |
Reliability, troubleshooting, and operational security. |
| Legacy Easier retry cache data | For some Easier retry requests from version 2.1 and earlier, hashed request keys and generated rewrite responses kept in memory on warm legacy backend function instances for a short time. | To reduce repeated generation for the same legacy Easier retry on a warm instance. |
How Processing Works
- You enter or paste text into the app, or choose a built-in reading passage.
- The app requests a Firebase App Check token and sends it with backend requests so the backend can verify app integrity.
- App requests are sent over HTTPS to the Levelify backend endpoint.
- Version 2.2 and later requests Hard, Medium, and Easy rewrites together. Changing among those versions does not send the previously displayed rewrite to the backend again.
- Version 2.1 and earlier may send the Original together with the previously displayed rewrite as context when requesting an Easier retry.
- The backend and infrastructure may process short-lived network identifiers, such as IP address metadata, to apply rate limits, prevent abuse, and protect service availability.
- The backend validates input and forwards rewrite prompts to OpenAI models.
- For some Easier retry requests from version 2.1 and earlier, the legacy backend may keep a short-lived in-memory cache of generated rewrite responses on a warm function instance.
- The backend returns generated rewrite JSON to the app.
- The output is generated automatically and is not checked by a human before it appears in the app.
- If you choose to subscribe to Plus, StoreKit asks Apple to process the transaction and confirm entitlement status to the app.
What Is Stored on Your Device
Data is stored in your app sandbox using iOS local app storage, including UserDefaults. Current keys include:
conversionHistory: recent history and saved items, including original text, rewrite text, timestamps, and whether an item is in Recent or Saved. Recent items are capped locally; saved items remain until you remove them or delete the app.conversionHistorySchemaVersion: local schema version for migration.preferredJLPTLevel: your selected JLPT level preference.preferredFuriganaDisplayModeandpreferredFuriganaThreshold: your selected furigana display preferences.readingProgress.readContentIDs: identifiers for built-in reading passages you marked as read.readingProgress.pagePositions.v1: the last page position saved for a paged built-in reading.rewriteV3.pageCache.v1: page-level AI Rewrite responses cached for up to 30 days. The cache is limited to 250 page responses and removes least-recently-used entries when full.dailyConversionCountanddailyConversionDate: local daily rewrite allowance tracking. Version 2.4 and later increments this count only for rewrites of your own text. Version 2.3 and earlier may also increment it after successfully preparing a built-in reading.subscriptionSnapshot: cached plan state, product metadata, entitlement status, and last verification time for Plus.
This local data is used to power History, Saved items, reading progress, preferences, and rewrite allowance UI. It remains on your device unless you delete it in-app or uninstall the app.
Backend and Third-Party Processing
- Backend provider: Google Firebase Cloud Functions / Google Cloud infrastructure.
- Integrity provider: Firebase App Check. Depending on device and build context, app integrity checks may use Apple App Attest or another supported Firebase App Check provider.
- Model provider: OpenAI API for rewrite generation (used as a service provider to operate the app’s features).
- Subscription provider: Apple App Store / StoreKit for purchase, restore, and subscription management flows.
- If you open a third-party external website from the app (for example, a support or feedback page), that website’s operator is responsible for its own website data practices, cookies, and analytics.
- No user account database is used by Levelify's app or backend code.
- To protect the service, the backend keeps short-lived in-memory rate-limit buckets keyed by network identifier. These buckets are not an application user profile database and expire automatically.
- For some Easier retry requests from version 2.1 and earlier, the legacy backend may keep generated rewrite responses in a short-lived in-memory cache on warm function instances. Cache keys use hashes of request text and context instead of storing raw request text in the key. This cache is best-effort only and is not shared across instances or deploys.
- On backend errors, operational logs may include request ID, mode, and error details for debugging. We do not intentionally log full user-submitted text, but in rare cases logs or provider error reports may include limited request data.
Clipboard and Sharing
- If you use the app’s paste feature, the app reads the current clipboard text on your device to fill the input field.
- If you use the app’s copy feature, rewrite text is written to your device clipboard.
- If you choose to share content, iOS sharing tools handle data sharing to destinations you choose.
- If you export or share content, the text you choose to send leaves the app and is handled by the destination you pick.
- Clipboard/share behavior depends on iOS and destination apps/services.
- When you share or export content, the destination you choose receives that content under its own privacy practices.
- If the app directs you to a third-party external site for support, feedback, or similar functions, that site may also process browser/device information, cookies, or usage data under its own policies.
Data Sharing, Tracking, and Selling
- We do not sell your personal information.
- The Levelify iOS app does not use ad SDKs or advertising identifiers.
- The Levelify iOS app does not include third-party analytics/tracking SDKs.
- Your submitted text is shared with service providers (backend infrastructure and OpenAI) to operate the service.
- If you subscribe to Plus, Apple processes payment and subscription transaction data under Apple's own terms and privacy policy.
What To Keep In Mind Before You Submit Text
Because submitted text is sent to our backend and to OpenAI to operate the service, avoid submitting sensitive information unless you are comfortable with that processing.
Retention
- On-device history is retained until you remove it from Recent or Saved, clear it in the app, or uninstall the app.
- Built-in reading progress and preferences remain on-device until you change or clear them in the app where controls are available, reset app data, or uninstall the app.
- Page-level Rewrite cache entries expire after 30 days and are also removed as needed to keep the cache at no more than 250 responses. Deleting the app removes the cache.
- The cached subscription snapshot remains on-device until it is refreshed, cleared by the app, or removed when the app is deleted.
- The app/backend implementation does not store submitted text in an application database.
- For some Easier retry requests from version 2.1 and earlier, generated rewrite responses may remain in a warm legacy backend instance's in-memory cache for up to about 10 minutes, with up to about 200 cached entries per instance.
- Firebase App Check tokens and short-lived rate-limit buckets are processed transiently for request verification and abuse prevention, then expire automatically or are replaced as new requests arrive.
- Infrastructure and provider logs may retain operational metadata and error data for periods that depend on the relevant provider’s policies and our configured service settings.
- Apple and third-party AI providers (such as OpenAI) may process and retain data under their own policies, which are outside our direct control. Please review their policies for details.
Your Controls
- You can delete individual items or clear locally stored history from within the app.
- You can keep items for later or remove them from your saved items.
- You can change the read or unread status of built-in readings.
- If you have Plus, you can manage or cancel the subscription using the subscription controls provided by the app or Apple.
- Avoid submitting sensitive text if you do not want it processed by third-party AI services.
Security
We use HTTPS/TLS for app-to-backend transport. No method of transmission or storage is 100% secure, and we cannot guarantee absolute security.
International Processing
Depending on provider infrastructure, data may be processed in countries other than your own.
Children’s Privacy
Levelify is not directed to children under 13, and we do not knowingly collect personal information from children.
Changes to This Policy
This page may be updated as the app and backend evolve. The “Last updated” date above reflects the latest revision. If our data practices change in a material way, we will update this policy to reflect those changes.
Contact
For privacy questions about this Privacy Policy or our data practices, contact us at support+levelify@81.la.