Privacy Policy
Last updated: September 19, 2026
This policy explains how Shogi: The Grand Court (the "App") handles information. The App does not collect your name, email address, phone number, or date of birth. However, the App shows ads, so the advertising provider obtains an advertising identifier (Section 5).
1. Summary
- The App shows ads. Ads are served by Google (AdMob), which obtains an advertising identifier.
- If you subscribe to the paid plan, no ads are shown at all. Subscribing is optional; every game feature remains available for free.
- We do not collect information for advertising ourselves. All we receive is aggregated impression counts and revenue figures.
- The App itself contains no analytics tools and no crash-reporting tools. We use Google Analytics only on our website (the landing page that introduces the App) — see Section 13.
- No account registration is required. We do not collect your name, email address, phone number, or date of birth.
- The App does not request access to your location (GPS), contacts, photos, camera, or microphone.
- Most information about your games is stored only in your device's local storage (localStorage).
- If you play online matches against other people, the match results and your display name (the one you set in Profile, or a placeholder assigned automatically by the server if you have not set one) are stored on the server. Even if you never play online, using the AI features ("The AI's thoughts", the AI coach's summary, and AI reviews) causes an identifier to be recorded on the server for rate limiting (Section 4).
2. Information stored only on your device
The following information is stored in your device's local storage (localStorage). Unless you use online matches (Section 3) or the AI features (Section 4), none of it is sent anywhere. When you use the AI features, only your display-language setting is sent, to tell the AI which language to write in.
- Display settings (shogi.prefs.v1)
- Color theme, board texture, piece style, amount of HUD information, sound effects on/off, BGM on/off, haptic feedback on/off, display of legal moves, reduced animation, display language, and whether "The AI's thoughts" is enabled.
- Profile (shogi.profile.v1)
- Your display name (default "Anonymous"; a display name you set yourself is sent to the server when you use online matches, see Section 4), the identifier of the avatar you selected, and the highest AI level you have beaten.
- Match records (shogi.records.v1)
- For each game: when it was recorded, whether it was against the AI or a person, the AI level, whether you played as Sente (black, moving first) or Gote (white), the result, how the game ended, the end-of-game details (the number of moves, the total value of the pieces at the end, the final position and, in games with a variant rule, its identifier), and the move list (moves in USI notation separated by spaces, for example “7g7f 3c3d”). Older records beyond the storage limit are discarded automatically.
- Skill estimate (shogi.skill.v1, shogi.skillTally.v2)
- Your estimated skill rating, the history of recent results used for the estimate, the match intent you selected, whether you have completed the skill assessment, and a per-game tally of skill metrics.
- Skill assessment progress (shogi.onboarding.v1)
- The assessment stage, results of games played during the assessment, the level currently being played, when the assessment started, and the final estimate.
- Achievement progress (shogi.achievements.v1)
- Completion status and progress for each achievement, and the version of the achievement data.
- Journey progress (shogi.journey.v3, shogi.journey.grandfather.v1)
- Chapter progress, sealed chapters, the number of playthroughs, the certificate earned for each battle (its rank and the time it was earned), and an unlock floor preserved for players who were already playing before the journey was introduced.
- "The AI's thoughts" (shogi.advice.v2)
- Short hints received during games and their fetch status (number of fetches, failures, and so on). The network communication involved in generating them is described in Section 4.
- AI reviews (shogi.review.v2)
- The text of post-game AI reviews you have received. The network communication involved in generating them is described in Section 4.
- Device identifier (shogi.auth.deviceId.v1, shogi.clientId, shogi.auth.migratedFrom)
- A UUID generated automatically for each device and used to issue your anonymous account. It is not linked to your name, email address, or similar. A value recording an identifier issued under an earlier scheme is stored alongside it.
- Anonymous authentication session (shogi.auth.tokens.v1)
- Only when server features are enabled. The identifier of your anonymous account, a time-limited access token and refresh token, and the expiry of each.
- Ad and paid-plan state (shogi.ads.v1, shogi.ads.remote.v1)
- The number of games completed and when an ad was last shown (used to space out ads), and a cached copy of operational settings for how ads are shown.
- Feature switches and splash-screen cache (shogi.features.v1, shogi.splash.v1)
- A cached copy of the feature on/off switches that we change during operation, and the splash-screen display duration. These copies let the App start without a network request and contain no information about you.
- Store-rating request log (shogi.storeReview.v1, shogi.storeReview.remote.v1)
- How many times the App was opened, how many times and when the App asked the operating system to show its rating dialog after a game, what triggered each request, and a cached copy of the operational settings for spacing those requests. This is used only to avoid asking too often, stays on the device, and is never sent anywhere. Whether the dialog appears, and what it shows, is decided by the store (Apple or Google).
- Crash records (shogi.crash.v1)
- When the App crashes, the time, the location in the App, a summary of the error, the screen being shown, and the device and version are stored, up to the 5 most recent entries. They are kept only on your device and never sent to us or anyone else. They exist so that you can review the details yourself if you contact us about a problem.
- Audio recovery method (shogi.audioRecovery.v1)
- Your choice of how the App restores sound after returning from another app on iOS. Stored only if you change it from the crash-record section of Settings.
- Development and testing settings (shogi.adminUnlocked.v1, shogi.advice.endpoint.v1, shogi.auth.endpoint.v1, shogi.entitlements.endpoint.v1, shogi.auth.v1)
- Whether the admin screen has been opened, runtime overrides of connection endpoints, and the session created when an operator signs in to the admin screen. None of these are written during normal use.
The names in parentheses are the storage keys in the local storage (localStorage). All of them begin with "shogi." and are removed together by the App's "Delete all saved data" action. An automated check confirms that this list does not omit any key actually in use.
Your account in the App is anonymous and is tied to the local storage (localStorage) of this device. If that storage is lost — for example, when the App is uninstalled, the device is reset, or the device storage is cleared — there is no way to restore the same account. Your game history, skill estimate, achievements, and online rating will all be lost. A feature for carrying an account over to another device is not currently offered (only the journey record can be exported as text from Settings › “Take your journey with you” and imported on another device).
3. Information sent to and stored on the server for online matches
Only when you start an online match against another person is the following information sent to the match server. If you only play against the on-device AI, none of the transmissions in this section occur (note, however, that "The AI's thoughts" is on by default, so the transmissions described in Section 4 do occur during games against the AI).
- On connection
- The identifier (UUID) generated automatically for your device, and the protocol version. To keep the connection alive, a periodic keep-alive signal is sent.
- During a game
- The coordinates of your moves, the game ID, the move number, and requests to resign or resynchronize. Because the server adjudicates the game, every move is validated on the server.
- Stored when a game ends
- The game ID, the player identifiers for Sente and Gote, the result, how the game ended, the end-of-game details (the number of moves, the total value of the pieces at the end, the final position), the move list, the number of moves, the start and end times, and whether the game was rated.
- Player information
- Your display name (the one you set on the Profile screen, or a placeholder assigned automatically by the server, for example "Player#04821"; 1–12 characters either way), your avatar identifier, creation and update timestamps, and the time of last access. The time of last access is not visible to other users.
- Results
- Rating, total games played, wins, losses, and draws.
- Network-level information
- By the nature of network communication, the IP address you connect from reaches the server. It is handled only to the extent needed to establish the connection and prevent abuse.
On the leaderboard and during matches, display names (the one you set in Profile, or a placeholder), avatars, ratings, and overall records are visible to other users. Do not include personally identifiable information in your display name.
4. Communication involving AI
The App has three features that use generative AI (Google Gemini). In every case, our server-side function (a Cloudflare Worker) acts as an intermediary; the App never connects to the generative AI directly. Because the three features differ in what triggers a transmission and in what is sent, they are described separately.
- (1) "The AI's thoughts" (the AI's inner voice during games) — automatic, on by default
- During games against the on-device AI, data is sent automatically without any action on your part, because the setting labeled "The AI's thoughts" is on by default. What is sent is the current position (in SFEN notation: the placement of the pieces on the board, whose turn it is, the pieces each side holds in hand, and the move number, on a single line), the move just played, the move number, and your display language. It is not sent on every move of every game: only mid-game positions are sent, and there is a cap on the number of transmissions per game. Nothing is sent during online matches.
- (2) The AI coach's skill summary — only when you request it
- Data is sent only when you request a summary on the match records screen. What is sent is the scores on the five skill axes calculated on your device, the sample count for each axis, your total number of games, and your display language. The move list itself is not sent. This is a paid-plan feature.
- (3) Post-game AI review — only when you request it
- Data is sent only when you request a review after a game. What is sent is the move list (moves in USI notation), whether you played as Sente or Gote, the result, the total value of the pieces at the end (for Sente and for Gote, including pieces held in hand), the level of the AI you played, an evaluation of each move (move number, the move itself, change in evaluation, and so on), and your display language. This is available without subscribing to the paid plan.
To stop this, turn off "The AI's thoughts" in the Settings screen. When it is off, this communication does not take place. Features (2) and (3) send data only when you request them, so if you do not request them, no communication occurs.
Only the contents of games and skill metrics are passed to the generative AI (Gemini); your name, email address, account identifier, display name, and IP address are not included, and no individual can be identified from that data. For (1), of the values the App sends (such as the move number), what actually reaches the generative AI is the position and whose turn it is, plus figures the server derives from them (how many legal moves each side has, whether the side to move is in check, the material on the board, and so on). Separately, an account identifier may be sent to our intermediary server for rate limiting and entitlement checks (it is not passed to the generative AI).
The API key for the generative AI exists only on the server and is not included in the App. To prevent abuse and runaway costs, our server applies a rate limit to each call and, in order to count calls, records the following identifiers in our database.
- When you are not signed in
- A value derived from the IP address you connect from, in a form from which it cannot be recovered (a salted hash). The raw IP address is not stored.
- When you are signed in with an anonymous account
- The account's identifier (UUID) itself. This avoids penalizing other people on a shared connection and keeps the limit attached to you even if you connect from somewhere else. This identifier is not linked to your name, email address, or similar.
These records are used solely for rate-limit counting. Their retention period is described in Section 9.
The AI's thoughts, skill-summary, and review texts are all generated automatically by generative AI. Their accuracy is not guaranteed.
5. Ads and the paid plan
The App shows ads between games.
Ads are served through Google's AdMob. To show ads, prevent fraudulent clicks, and measure effectiveness, Google obtains the following information.
- The advertising identifier (the Android advertising ID or the iOS IDFA). This is an identifier assigned to your device, which you can reset or delete yourself at any time. It is not linked to your name or email address.
- An approximate location inferred from your IP address — coarser than city level, not a street address or coordinates.
- Technical information such as device model, OS version, language, and screen size.
- How many times an ad was shown and whether it was clicked.
Google obtains and uses this information in its capacity as an advertising provider; we do not receive it. All we receive is aggregated impression counts and revenue figures. For how Google handles it, see "How Google uses information from sites or apps that use our services" (https://policies.google.com/technologies/partner-sites).
You can stop ads, or make them non-personalized, as follows.
- Subscribe to the paid plan
- No ads are shown at all. Once subscribed, the App does not even load ads, so no ad-related communication occurs.
- Delete your advertising ID on Android
- On your device, go to Settings → Google → Ads to delete or reset your advertising ID. After deletion, ads are no longer personalized to your interests (ads are still shown).
- Decline tracking on iOS
- Choose "Ask App Not to Track" when the App asks for tracking permission, or change it later under Settings → Privacy & Security → Tracking. Ads are still shown if you decline, but they are not personalized to your interests.
We use RevenueCat (RevenueCat, Inc., United States) for paid-plan purchases and for managing subscription status. Payment itself is processed by the App Store / Google Play; neither we nor RevenueCat obtain payment details such as credit card numbers.
RevenueCat records whether a purchase was made, when it was made, when it expires, and an identifier corresponding to your device or anonymous account. We use this only to determine whether ads should be hidden for you and whether paid features are available to you, and for no other purpose.
We also store your paid-plan status (the identifier of the product purchased, which store it was purchased from, whether it is active, and its expiry date) in our database (Turso), so that the App can determine whether you are subscribed without querying the purchase records every time it opens. No payment details such as your name, email address, or credit card number are stored.
6. Purposes of use
- Running games, determining results, and recording and displaying game results
- Estimating your skill and suggesting an appropriate difficulty level and opponents
- Calculating ratings for online matches and displaying the leaderboard
- Determining and displaying achievements
- Keeping the display, sound, and control settings you have chosen
- Generating "The AI's thoughts" during games (can be turned off in the settings)
- Generating the AI coach's skill summary (when you request it)
- Generating post-game AI reviews (when you request them)
- Rate limiting the features that use generative AI, and preventing abuse and runaway costs
- Showing ads in the app version (not done if you are subscribed to the paid plan)
- Providing the paid plan and checking whether you are subscribed
- Detecting and preventing cheating and abuse, and investigating failures
We do not use information for any purpose other than those listed above. We do not use the match records, achievements, or settings on your device for ad targeting or for analyzing your interests, nor do we pass them to advertising providers.
7. Information we do not collect
The App does not obtain any of the following information. This is not merely a statement of policy: no implementation to collect it exists. One exception: the administrative features used by the operator itself still contain a screen on which the operator signs in with an email address and password. No distributed build of the App provides an entry point to that screen, and there is no screen where you as a user enter such information. Information that Google obtains for advertising is described separately in Section 5 (it is not obtained by us, so it is not listed here).
- Analytics and behavioral measurement (Google Analytics, Firebase Analytics, or any other analytics tool). We do, however, use Google Analytics on our website — not in the App — as described in Section 13. This section is about the App.
- Crash-reporting or error-collection tools that transmit data externally (such as Firebase Crashlytics or Sentry). The App keeps a summary of crashes on your device only (see "Crash records" in Section 2) and never sends it to us or anyone else.
- Name, email address, phone number, postal address, date of birth, or gender.
- Precise GPS location, contacts, calendar, photos, camera, microphone, or health data.
- Credit card numbers or other payment details. Payment for the paid plan is processed by the App Store / Google Play, and we do not receive such information.
- Browser history, or your use of other apps.
8. Disclosure to third parties
Except where required by law, we do not provide the information we obtain to third parties. We do not sell it.
We do, however, use the following service providers, and information is processed on their servers. Any of them may have servers located outside Japan.
- Turso (libSQL database)
- Stores online match records, player information, results, paid-plan status, and rate-limit counting for the features that use generative AI. A service provider engaged by us; the database is located in Japan (Tokyo).
- Cloudflare, Inc. (server-side functions and authentication)
- Runs the server-side functions (Workers) that relay requests to the generative AI, issue and verify anonymous accounts, and receive purchase status. A service provider engaged by us.
- Google (Gemini API)
- Used to generate "The AI's thoughts" during games, the AI coach's skill summary, and post-game AI reviews. Only the contents of games and skill metrics are sent; no information that could identify you is included. A service provider engaged by us.
- Google LLC (Google Analytics, website usage)
- Used to measure usage of our website (the landing page that introduces the App). Google obtains and uses this information as an independent provider. Its servers are located in the United States. What is sent, and how to stop it, are described in Section 13. It is not used in the App itself.
- Google (AdMob, ad serving)
- Used to serve ads in the app version. For this service Google is not a provider engaged by us; it obtains and uses advertising identifiers and related data as an independent advertising provider. What is obtained and how to stop it are described in Section 5.
- Fly.io, Inc. (online match server)
- Used for matchmaking and running online matches. Moves, ratings, and results are processed on this server. A service provider engaged by us; the server is located in Japan (Tokyo).
- RevenueCat, Inc. (subscription status management)
- Used to record and verify paid-plan purchase status. A service provider engaged by us. It does not handle payment details.
When personal data is provided to a third party located in a foreign country, we provide on this page, in accordance with the Act on the Protection of Personal Information of Japan, the name of the destination country and information about that country's personal-data protection regime. If you would like more detailed information, please contact us at the address given below.
9. Retention periods
- Data on your device
- Kept until you delete it, or until your device's storage is lost. Match records have a storage limit, and the oldest records beyond it are discarded automatically.
- Data on the server
- Online match records, player information, and results are kept until you request deletion. Because a match record is shared with your opponent, deleting it for you does not remove it from your opponent's history; on deletion it is retained in a form no longer linked to you (anonymized).
- Unused anonymous accounts
- Anonymous accounts that have played no games and hold no paid entitlement are deleted automatically 30 days after last use (including the identifier, display name, avatar selection, and settings). Accounts with at least one recorded game, or with a paid entitlement, are not subject to this automatic deletion.
- Data sent to generative AI, and rate-limit records
- The game and skill content sent to the generative AI is not stored on our server. Rate-limit counts (the identifiers described in Section 4) are recorded in our database; each record is given an expiry time at the moment it is created, and records past their expiry are deleted periodically. The retention period equals the length of the rate-limit window the record belongs to. Raw IP addresses are never stored.
10. How to delete your data
You can delete the match records stored on your device yourself at any time.
- Open the App's Settings screen.
- Tap "Clear local game data". To prevent accidental deletion, you will be asked to tap once more to confirm; the data is then erased.
To delete all data on your device, including settings, profile, and achievements, uninstall the App. Doing so also discards your anonymous account, which cannot be recovered.
To request deletion of online match records or player information stored on the server, please contact us at the address given below. We will act on requests to the extent that we can verify they come from the account holder. Requests for access, correction, and suspension of use are handled through the same contact.
11. Security measures
- Communication with the server uses encrypted connections.
- The database is never exposed directly to the internet; only our server-side functions (Workers) connect to it. That single layer is what determines that no one other than the account holder can read or write their settings or match records.
- Ratings and overall results can be updated only on the server and cannot be modified directly from the App.
- The API key for the generative AI exists only on the server and is not included in the distributed App.
- Our policy is never to write credentials, tokens, or other secrets to logs, and this is enforced by automated checks.
12. Use by minors
The App is intended for people aged 13 and over. Because we do not collect age information, we cannot verify a user's age. Parents and guardians are asked to supervise their children's use as appropriate.
13. Website analytics (landing page only)
We use Google Analytics, provided by Google LLC, to understand how our website (https://shogi.aicreonext.com/) is used. This applies to the website only; we do not do this in the App at all.
- Sent to
- Google LLC (Google Analytics). Its servers are located in the United States.
- What is sent
- The URL of the page you viewed and the page you came from, the type of device and browser, the screen size, the language setting, an approximate region inferred from your IP address (the IP address itself is not stored), an identifier stored in a cookie (a code that does not identify you personally), the fact that you pressed a button on the page (which link took you to a store page), and the date, time, and duration of your visit.
- Why
- To improve the website, and to see which links lead visitors to the store pages. We do not use it for any other purpose.
If you would rather not be measured, you can stop it in any of the following ways.
- Visits from the European Economic Area (EEA), the United Kingdom, and Switzerland are not measured unless you consent. We do not display a consent banner, so no measurement takes place in those regions. Whether a visit comes from those regions is determined from your browser time zone and language settings; if it cannot be determined, we do not measure the visit.
- If your browser sends Do Not Track, or has Global Privacy Control enabled, we do not measure your visit.
- Installing the opt-out add-on provided by Google (https://tools.google.com/dlpage/gaoptout) stops the measurement.
- For how Google handles this information, please see Google's privacy policy (https://policies.google.com/privacy).
14. Changes to this policy
This policy may be revised in response to changes in the law or the addition of features. Revisions take effect when they are posted on this page. If a revision materially expands the types of information collected or the purposes of use, we will notify you in the App in advance.
15. Contact
For inquiries about this policy or about how information is handled, and for requests for access, correction, or deletion, please contact:
- Operator
- AICREO NEXT LLC (合同会社AICREO NEXT)
- contact@aicreonext.com