Privacy Policy
Last updated: September 29, 2026
This policy explains how Reversi: Legends of Edo (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.
- Buying ad removal (a one-time purchase) stops ads from being shown. Buying is optional; the game features remain available even if you buy nothing.
- 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 and the column articles under /column/) — 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 Versus (rated matches) or the Banzuke Tournament, the match records and your display name are stored on the server, and that display name is visible to other users (it is the nickname you set on the Profile screen, or an anonymous display name assigned automatically by the server if you have not set one). Even if you never play against another person, asking for the AI features (the skill summary, post-game reviews and Ask the Advisor) 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 Versus or the Banzuke Tournament (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 (edo.prefs.v1)
- Color theme, board design, disc design, how the board is drawn, amount of HUD information, sound effects on/off, BGM on/off, haptic feedback on/off, display of the squares where you can place a disc, reduced animation, display language, and whether "The AI’s thoughts" is enabled.
- Profile (edo.profile.v1)
- Your display name (default "Anonymous"; once you set your own, it is sent to the server for Versus and the rankings — see section 3), the identifier of the avatar you selected, and the highest stage of the on-device AI you have beaten.
- Match records (edo.records.v3)
- For each game: when it was recorded, whether it was against the on-device AI or another person, the AI stage, whether you played black or white, the result, how the game ended, the number of moves, the end-of-game details (the version of the record format, and the number of black discs and white discs at the end), and the move list (the coordinates of the discs you placed, written without separators — for example "d3c5"). Older records beyond the storage limit are discarded automatically.
- Skill estimate (edo.skill.v1, edo.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 (edo.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 (edo.achievements.v1)
- Completion status and progress for each achievement, and the version of the achievement data.
- Edo Journey progress (edo.journey.v1, edo.journey.grandfather.v1)
- Chapter (landmark) progress, sealed chapters, the number of playthroughs, the red seal earned at each stage (its grade and the time it was earned), and an unlock floor preserved for players who were already playing before the Edo Journey was introduced.
- The AI’s thoughts (edo.advice.v2)
- The short lines of advice 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.
- Post-game reviews (edo.review.v2)
- The text of the post-game reviews you have received. The network communication involved in generating them is described in Section 4.
- Device identifier (edo.auth.deviceId.v1, edo.clientId, edo.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 (edo.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 state (edo.ads.v1, edo.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 (edo.features.v1, edo.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 (edo.storeReview.v1, edo.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 (edo.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 (edo.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 (edo.adminUnlocked.v1, edo.advice.endpoint.v1, edo.auth.endpoint.v1, edo.entitlements.endpoint.v1, edo.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 "edo." 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 your rating in Versus will all be lost. A feature for carrying an account over to another device is not currently offered.
3. Information sent to and stored on the server for Versus and the Banzuke Tournament
Only when you start Versus (a rated match) or the Banzuke Tournament is the following information sent to the match server. If you only play Solo Match and the Edo Journey (games against the on-device AI), none of the transmissions in this section occur (the short line your opponent speaks during a game is chosen entirely on your device, so no transmission occurs — Section 4).
- 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 the discs you place, the game ID, the move number, and requests to resign or resynchronize. Passing happens automatically under the rules, so there is no message that announces a pass. In the Banzuke Tournament, entering the event and receiving your pairing are also sent and received. 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 black and for white, the winner, how the game ended (both players passed, the board was filled, resignation, time out, disconnection, or a walkover — six kinds in all), the number of moves, the move list (the coordinates played), the number of black discs and white discs at the end, the start and end times, and whether the game was rated. These match records are stored on the server.
- Player information
- Your display name (1–12 characters; the nickname you set on the Profile screen, or, if you have not set one, an anonymous display name assigned automatically by the server such as "Player#04821"), 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, draws, and your results in the Banzuke Tournament (titles such as taking part or winning).
- 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.
- Reports
- If you report your opponent’s display name during a Versus match, we record the identifier of the reporting user, the identifier of the reported user, and the time of the report. We do not collect a free-text reason. If a display name receives reports from enough distinct users, it is reset, without prior notice, to the anonymous display name assigned automatically by the server.
In the rankings, the display names, avatars, ratings, and overall records of top players are visible to other users. Your display name is the nickname you set on the Profile screen (or an anonymous display name assigned automatically by the server if you have not set one), and you can change it at any time.
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. All three send data only when you ask for them, but because what is sent differs, they are described separately.
- (1) The skill summary — only when you ask for it
- Data is sent only when you ask for a summary on the record 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 Premium feature.
- (2) Post-game reviews — only when you ask for one
- Data is sent only when you ask for a review after a game. What is sent is the coordinates played, whether you played black or white, the result, a summary of the evaluation of each move (move number, coordinates, the grade of the move, the loss, and the best coordinates), the turning points of the game, your accuracy, and your display language. The stage of the AI you played is not sent. This can be used without buying any of our products (there is a daily limit on how many you can read).
- (3) Ask the Advisor — only when you ask for it
- Data is sent only when you ask the Advisor from the in-game menu. What is sent is the current board (a string describing which of the 64 squares hold a black disc, a white disc, or nothing), whether you are playing black or white, the move number, the coordinates of the single square played most recently, and your display language. Neither the full move list nor any text written by you is sent (there is no free-text box for your question). This is a Premium feature.
Features (1), (2) and (3) send data only when you ask for them, so if you do not ask, no communication described in this section occurs. Note that "The AI’s thoughts" — the short line your opponent speaks during a game — is chosen entirely on your device, based on what has happened on the board (taking a corner, having few places left to play, the game nearing its end, and so on). It uses neither generative AI nor our servers. Turning off "The AI’s thoughts" in the Settings screen removes the speech bubble altogether.
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. 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 texts of the skill summary, the post-game reviews and the Advisor’s answers are all generated automatically by generative AI. Their accuracy is not guaranteed.
5. Ads and in-app purchases
The App shows a full-screen ad at the break between games. It appears once every few games, with a minimum interval so that ads never follow one another. We may change these two values while the App is in operation.
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.
- Buy ad removal
- No ads are shown at all. After the purchase, the App does not even load ads, so no ad-related communication occurs. Ad removal is a one-time purchase and is not included in Premium (the auto-renewing subscription).
- 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.
In regions where consent is required, such as the European Economic Area (EEA) and the United Kingdom, we show a Google consent screen when the App starts, and ask you to choose whether ads may be personalized to your interests. You can change that choice at any time from the Settings screen.
We use RevenueCat (RevenueCat, Inc., United States) for in-app purchases (both one-time purchases and auto-renewing subscriptions) and for managing purchase 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, whether the Premium features (the skill analysis and its AI-written summary, and Ask the Advisor) are available to you, and whether you may use the boards, discs, avatars, and jukebox you have purchased, and for no other purpose.
We also store the status of the entitlement from the auto-renewing subscription (Premium) — 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 an entitlement is active 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 Versus and displaying the rankings
- Pairing and running the Banzuke Tournament, and displaying its results
- Determining and displaying achievements
- Keeping the display, sound, and control settings you have chosen
- Generating the skill summary (when you ask for it)
- Generating post-game reviews (when you ask for them)
- Generating the Advisor’s answers (when you ask for them)
- Rate limiting the features that use generative AI, and preventing abuse and runaway costs
- Showing ads (not done if you have bought ad removal)
- Providing in-app purchases and checking the entitlements you have bought
- 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 (the landing page and the column articles) — 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 in-app purchases 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 the match records of Versus and the Banzuke Tournament, player information, results, the entitlements from auto-renewing subscriptions, 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, receive purchase status, and hold the Banzuke Tournament at its set times and pair its entrants. A service provider engaged by us.
- Google (Gemini API)
- Used to generate the skill summary, post-game reviews and the Advisor’s answers. Only the coordinates played, the current board and your skill scores are sent; no information that could identify you is included. A service provider engaged by us.
- Google LLC (Google Analytics, website and column usage)
- Used to measure usage of our website (the landing page that introduces the App, and the column articles under /column/). 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. 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. (the server for Versus)
- Used for pairing and running Versus and the Banzuke Tournament. The moves played, ratings, and results are processed on this server. A service provider engaged by us; the server is located in Japan (Tokyo).
- RevenueCat, Inc. (purchase status management)
- Used to record and verify the status of in-app purchases. 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
- The match records of Versus and the Banzuke Tournament, 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). A game in the Banzuke Tournament that you won by walkover because no opponent appeared is also kept as a record. For a round where no pairing was formed and no game was played, no record is created.
- 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 the Versus and Banzuke Tournament 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 and column only)
We use Google Analytics, provided by Google LLC, to understand how our website (https://edo.aicreonext.com/) and its column articles (https://edo.aicreonext.com/column/) are used. This applies to the website only; we do not do this in the App at all.
- Sent to
- Google LLC (Google Analytics). The servers the data is sent to may include www.google.com in addition to google-analytics.com. 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), the fact that you pressed a link in the "Related apps" section at the end of a page that leads to one of our other games or to our company website (including the destination of the link and where you pressed it: at the end of the introduction page or of a column page), and the date, time, and duration of your visit. On column pages, a label indicating that the page is a column article.
- Why
- To improve the website and its column, 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