Privacy Policy
Bunmyaku · version 1.6 · last updated: 14 October 2026
Bunmyaku is an app for learning Japanese vocabulary. The learning itself — reviews, every question type, the study plan and your progress — runs entirely on your device and without an internet connection. Optional AI analysis sends only the text you confirm. Version 1.6 also adds anonymous usage statistics, off until you agree. This policy describes version 1.6.
There is no account or sign-in. AI analysis connects on your request, and anonymous usage statistics connect only after your consent. App Store handles purchases. A photo is read on your phone and never leaves it — only a sentence you confirm yourself is sent. That sentence is not stored anywhere.
Your account
There is none. The app never asks for an email address, a phone number, a name, or any other detail that could identify you.
Where your study data goes
Your progress — answer history, the measured strength of each word, upcoming review dates, session history, favourites and your own notes, along with the words and sentences you add yourself — is written only to your device, in the app's local database. It is not sent anywhere, it does not sync to iCloud, and the developer has no access to it.
Deleting the app deletes that data with it. To keep a copy, use Export progress in Settings; the file is saved wherever you choose. The app never uploads it.
Data shared with the developer's other apps
Bunmyaku belongs to a family of Japanese-learning apps, alongside Kaname (grammar), Katsuyokei (conjugation), Joshi (particles), Kazoekata (counters) and Kuzushi (casual speech). If you have more than one of them installed, the home screen shows a Your Japanese section with one row per app.
Here is how that works: Bunmyaku writes a small card file on your device, in an area shared by the apps in this family. The card carries six things about your studying: how much of the material you have mastered, how many days your streak runs, how many sessions you have done, one sentence about your weakest spot (in Polish and in English), whether today's goal is already met, and when your next reviews fall due. Plus three technical ones: which app wrote the file, in what format, and when. Nothing else. There is no answer history and no list of the items you practiced, and your progress cannot be reconstructed from this file.
The file never leaves your device, and it is read only by the other apps in this family that you have installed on that same device. There is no server and no account here, and nothing syncs between devices.
Tracking and advertising
- The app shows no advertising.
- The app does not track you — it uses no advertising identifier (IDFA) and no other identifier for profiling.
- The app contains no third-party analytics or advertising libraries. There is no Firebase, no Google Analytics, no Facebook SDK, and nothing equivalent.
- The app neither sells nor shares personal data.
Network connections
AI analysis connects on your request. Anonymous usage statistics connect only after your consent. Purchases and restoration are handled by App Store. Learning remains available offline.
Usage statistics — only with your consent
Statistics are off by default. Only after your explicit consent does Bunmyaku record and send anonymous events to our server at https://api.jd-japanese.pl/v1/events. They help us understand whether onboarding leads to studying, whether learners return to reviews and how the purchase screen works. Declining does not limit learning or purchases.
The current scope covers first consent, the first completed study session, a completed session on a later study day, the first completed review, an active-day snapshot, session summaries and views of the purchase screen. We send the event name, schema version, app name, interface language, current app version and feature variant, the version and variant at first consent, and an entry category: fresh installation, restored progress or later consent. Time is described by the ISO week of first launch, day of use and buckets for answer counts or session duration; the server records the calendar date of receipt. Summaries also include session type and completion outcome and buckets for AI-check counts. The active-day snapshot includes a session-count bucket, level stage and flags for AI use, having seen the purchase screen, unlocked-material kind, an active AI subscription and enabled reminders. We do not send precise answer times.
There is no installation, device or advertising identifier. Each event has its own random UUID solely to avoid counting a retried upload twice. It is not used to link one person's events. We send no sentences, photos, answer history, names of practiced grammar patterns, mastery, email address, location, device model or iOS version. Statistics are not linked to identifiers used for AI analysis. An IP address is necessary for the connection but is not stored in events or access logs. Abuse protection uses a protected address hash in a separate counter; the counter is periodically removed after 24 hours of inactivity and is not linked to events.
Without a connection, events wait locally for upload: at most 30 days and 500 events. The queue is excluded from backups and study-progress exports. An event is removed after receipt is confirmed. The server retains raw events for up to 400 days; afterwards only daily anonymous totals remain. We do not use them for advertising, profiling or tracking across apps.
You can withdraw consent at any time in Settings → Privacy, using Share anonymous usage statistics. Turning statistics off cancels uploads, clears the local queue and stops collection and future uploads. Data already received by the server may remain until retention expires: without an identifier we cannot locate a particular person's events and delete them on request. Learning, progress and review scheduling continue to work on your device without a connection.
Session summaries may include broad question categories and count ranges. When a session is abandoned, they may include the last question category, whether it was answered correctly, incorrectly or left unanswered, and a range describing consecutive mistakes. They never include the question, the answer text or the word being practised. The study level follows the stage shown on the Today screen. AI use is a flag, not the content of an AI request.
Scanning text from a photo
Recognizing Japanese text in a photo happens entirely on your phone, using an iOS system feature. The photo is never uploaded or saved by the app and does not leave the device in any form — the server accepts text only and has no upload path an image could travel. Camera access is requested only at the moment you open scanning yourself.
The recognized text lands first in a field you see and can correct. Only the sentence in that field, confirmed by you by pressing Analyze, goes any further. The screen says as much itself: "The photo is read on your phone and never leaves it. Only the sentence above is sent."
Optional AI features
The AI features are optional. Without them the app tracks progress and schedules reviews exactly the same way. They run only when you press a button — never in the background and never on their own. There are two:
- Analyze — sends one sentence, the one visible in the field on the photo-reading screen, and returns the words that stand in it.
- Write a sentence with AI — sends one entry from your vocabulary: its written form, reading, meaning and JLPT level, to get back a short example sentence with that word in its dictionary form.
This goes to our server at api.jd-japanese.pl and from there to a language model. The answer comes back to the app. Neither the content of your sentence nor the text read from a photo is stored: it is passed through for analysis and does not reach any database or event log. Neither the assembled prompt nor the model's response is stored either. There is no column any of it could go in, and adding one fails an automated test on the server. The request to the model provider asks it not to retain the response.
Three things are stored, because the feature cannot work without them:
- an identifier derived from your App Store transaction — a digest of the subscription transaction identifier, to know whether this device has an active subscription;
- an App Attest key identifier, with its public key — a technical identifier from Apple's mechanism, proving that a request comes from a genuine, unmodified copy of this app. It is generated on the device, is unique to this one app, cannot be correlated with anything Apple or another app can see, and is generated afresh after every reinstall. It is used solely to stop one device from renewing its free allowance forever;
- usage counters — how many analyses were made today and this month.
On the first connection the app also passes a DeviceCheck token minted by iOS for that one call. It is stored nowhere — there is no place it could go — and serves only to keep the free allowance from renewing itself with every reinstall.
Kept for a shorter time are the technical records of billing and upkeep: Apple transaction identifiers and request metrics (request id, feature name, model, status, token counts, latency) for 90 days, and rate-limiting counters for 24 hours. We do not store IP addresses.
None of these is tied to your name, email address or account, because the app does not know them. They are not used for tracking, profiling or advertising. There is no account to delete; if you want those rows removed, write in — the transaction identifier from your App Store purchase history is enough to find them.
Purchases
JLPT level N5 is free in full. Levels N4, N3, N2 and N1 are unlocked by an in-app purchase, and the AI features by a separate subscription. Payment is handled entirely by Apple through the App Store: the developer receives and stores no payment details, card numbers or billing data. Purchase status is read from iOS every time the app starts.
How Apple processes data is described in Apple's privacy policy.
Contact and bug reports
Settings contains Suggest a feature and Report a problem. Both prepare an email in your device's mail app. Nothing is sent until you press Send.
A problem report is pre-filled with technical details: app version, build number, iOS version and
the device model identifier (for example iPhone14,3). A model identifier names a
series shared by millions of units — it identifies neither the device nor a person. We attach no
advertising identifier, no device identifier, no IP address, no location and none of your study
content. All of the text is visible and editable, so you can change or delete any part before
sending.
If you write, the developer will see your email address and your message, as with any ordinary correspondence. Messages are used only to answer the report.
Crash reports
The app sends no crash reports of its own and contains no crash-reporting tool. If you have enabled sharing diagnostic data with developers in iOS settings, Apple may pass on an anonymized crash report — that happens on the system side and you can turn it off in Settings → Privacy & Security → Analytics & Improvements.
Children
The app collects no data that could identify anyone, a child included: there is no account and it asks for no name, age or address. What is stored for the AI features is described in the section above and consists solely of technical identifiers and counters. The app contains no adult content, no communication between users, and no external links other than to this page, the terms of use and the support page.
Changes
If a future version processes data differently, this page will be updated before that version is released, along with the date of the update. The documents for earlier releases stay untouched at their own addresses.
Contact
Privacy questions: bunmyaku@jd-japanese.pl