Iko Travel Privacy Policy v2 (Accounts Edition · English)

This is a draft, and it is not yet in force. Iko Travel has not launched, and the account feature is not available. We are publishing this policy while preparing for launch so that there is an address where you can actually read it. It has not yet been reviewed by a lawyer.

It is written from what the app's code actually does, and it is not legal advice.

Where a value is still undecided we have left it visible in the text as an unfinalised marker rather than filling in a guess. The remaining items are collected in §16.

When the service opens, we will enter the effective date below, and the policy applies from that day.


1. Scope

[Not yet decided: legal business name] ("we", "us") operates the travel app Iko Travel (the "Service") and complies with the Personal Information Protection Act of the Republic of Korea (PIPA) and other applicable laws. We treat your personal information with care, and our design principle is to prefer a structure that does not collect personal information in the first place.

1.1 How the Service is built

You need to know four structural facts to read this policy.

  1. The Service has an account feature built on social sign-in, but we do not offer it to you today. It starts working only once the server configuration explicitly turns it on and the app ships with a sign-in method; until then no sign-in entry point appears on screen at all. (§11)
  2. No screen asks you for your name, email address, or phone number. That stays true when the account feature is offered, and we do not receive those items from sign-in providers either. (§2.3, §11.2)
  3. The values that identify you fall into three separate strands that are not linked to one another — the install identifier (§2.2), the account identifier (§2.3), and the payment identifier (§2.2). None of them can be derived from another.
  4. The server structurally blocks anything sent to the AI features so that only predefined items can pass. (§2.1)

2. What we collect

2.1 What we never collect (blocked in code)

We do not collect the following to our server, and the block is written in code rather than left to policy.

The server walks the whole body of every request to the AI features recursively and rejects the request (HTTP 400) the moment it finds any of those field names anywhere inside it. The error log that results keeps only the name of the blocked field — never its value, under any circumstances.

ℹ️ That block covers the AI features. Two other features — route search and weather — do send coordinates to our server as request values: the coordinates of the places you picked. Those are not the position your device measured (§9), and the server uses them only as a cache key rounded to a coarse grid, never stored alongside an identifier for you. §5 sets out how far those coordinates travel beyond us.

2.2 Device identifiers

ItemWhat it is
Install identifier (X-Install-Token)An anonymous string (a ULID) generated once on your device when you first open the app. It is not tied to your real identity such as a name or email address, and we neither sign it nor attach an identity to it. It lives in a database inside your device and resets to a new value if you delete and reinstall the app.
Payment identifier (payment_id)A random value generated separately from the install identifier so that subscription payments can be processed. Neither value can be derived from the other.

ℹ️ The install identifier holds no real identity information, but it does let requests from the same device be linked to each other. We therefore treat it as a per-device anonymous identifier rather than as "fully non-identifying data", and we disclose it here.

2.3 Account identifiers

If the account feature is offered (§11), the following values are stored on our server.

ItemWhat it is
Account identifier (account_id)A 26-character string (a ULID) generated by our server when you first sign in. The first part is the time it was created and the rest is random. It is not combined with your real identity such as a name or email address.
Provider user reference (provider_sub)The value your sign-in provider (Apple, Google, Kakao, Naver, or LINE) issued to tell you apart inside that provider's own service. We store it as-is and use it only to reconnect you to the same account when you sign in the same way again.
Name, email address, profile picture, phone numberWe do not receive these. The only thing a sign-in provider hands us is the user reference above, and our server's data structures have nowhere to put these items in the first place.
Apple revocation tokenWe keep one, only if you signed in with Apple. We use it to ask Apple to revoke the link when you delete your account (§11.7). We keep no equivalent value for any other sign-in provider.

ℹ️ Devices and accounts behave differently. Deleting the app clears the device-side values in §2.2, but it does not clear your account. Reinstall the app, sign in the same way as before, and you are back in the same account. To get rid of the account itself, use account deletion (§11.6).

2.4 What leaves the Service when you use the AI features

To generate an AI answer we send the following to Anthropic (United States), limited per feature. Anything not listed below cannot be sent, because of the block described in §2.1.

FeatureWhat we send
Travel concierge (questions and answers)(i) A block of factual place data: place identifier, hours, prices, closing days, tags, the time the data was verified, and a source reference. (ii) The text of your question after the app has scrubbed it on your device (up to 2,000 characters). (iii) City identifier, screen language, and how many results you asked for.
Meetup place suggestions(i) The identifier, name, and category of candidate places (address, phone number, and links are deliberately excluded). (ii) Condition values drawn from a predefined list (enum). (iii) Optionally, scrubbed question text.
Course narrationIntent version, the ordered list of place identifiers, reason codes for the suggestion, screen language, and city identifier — there is no field that can carry free-form text at all.

2.5 Subscription and payment items

Subscriptions are purchased through the app stores and a payment relay service (RevenueCat). The only values our server keeps are these.

We neither collect nor keep your name, email address, card number, or any other payment credential. The only thing we pass to the payment relay is the payment_id from §2.2, and the mapping between payment_id and our internal processing exists only inside our own server (kept for 400 days, §4). If the account feature is offered, these values are keyed to your account identifier instead of your install identifier.

2.6 Items collected when personalization (taste) is on

→ Described separately in §8. This feature is off by default today.

2.7 Items generated while we run the Service


3. Why we process it

We process what we collect only for the purposes below. If a purpose changes, we tell you first and obtain any consent required.

ItemPurpose
Install identifierEnforcing per-device usage limits while you are signed out, preventing abuse and automated requests, and keying personalization data when that feature is on
Items sent to the AI (§2.4)Answering your travel questions, suggesting meetup place candidates, and generating course narration
Subscription statusChecking entitlement to paid features, and handling expiry and renewal
Payment identifier mappingConnecting payment events from the payment relay to entitlements inside the Service
Taste tags (when on)Personalizing what we recommend
Usage counters and logsKeeping the Service stable, responding to incidents, and blocking misuse and abuse
LocationShowing "my location" on the map screen, on your device only (§9)
Account identifierKeeping you signed in, and managing usage limits and paid entitlements per account rather than per device
Provider user referenceReconnecting you to the same account when you sign in the same way again, and preventing one sign-in method from being linked to two accounts
Session tokenKeeping you signed in, and invalidating every existing session at once when you sign out of all devices
Apple revocation tokenAsking Apple to revoke the link when you delete your account (§11.7)
Account-to-payment bindingMaking sure one payment is not claimed by several accounts, and moving paid entitlements when accounts are merged
Account status records (deleted, merged)Making sure a deleted account cannot be revived by signing up again, and preventing fraud

4. How long we keep it, and how we destroy it

Retention differs by item. Some items expire automatically in the store that holds them; others have no automatic expiry set today. The table states this exactly as it is.

ItemWhere it is storedRetentionHow it is destroyed
Install identifierStorage inside your deviceUntil you delete the appCleared when the app is deleted or reinstalled (a new value is generated)
Taste tags (when personalization is on)Cloudflare Workers KV180 daysExpires automatically at the end of that period, or immediately when you ask us to delete it (§8)
Payment identifier mappingCloudflare KV400 daysExpires automatically at the end of that period
Payment webhook de-duplication keyCloudflare KV30 daysExpires automatically at the end of that period
Subscription statusCloudflare KVNo automatic expiry is set, so it is kept until something deletes it.Deleted immediately when you delete your account. Otherwise there is no automatic destruction routine today — [Not yet decided: decide the retention policy for subscription status and implement the destruction routine]
Usage countersCloudflare KVNo automatic expiry is set, so it is kept until something deletes it.Deleting your account clears only the most recent periods (Note B below) — [Not yet decided: decide the retention period and reset cycle for usage counters]
Operational and error logsInfrastructure provider logs[Not yet decided: confirm the log retention period and state it here][Not yet decided: how logs are destroyed]
Account record (account identifier, status, creation time)Cloudflare D1A minimal record stays even after deletion (Note A below)Deletion flips the status to "deleted". Full destruction is [Not yet decided: decide and implement a purge policy for account records]
Sign-in link records (including the provider user reference)Cloudflare D1Stays after deletion, marked unusable (Note A)Marked unusable immediately on deletion. Full destruction is as above
Account-to-payment bindingCloudflare D1Unbound when you delete your accountMarked as unbound
Account-to-device link historyCloudflare D1[Not yet decided: decide the retention period for account-to-device link history][Not yet decided: how account-to-device link history is destroyed]
Apple revocation tokenCloudflare D1Until the revocation request succeedsCleared the moment revocation succeeds. If we could not send the request, it stays queued for a retry (§11.7)
Session tokenStorage inside your device30 days from the last time it was checkedThe app discards it automatically at the end of that period. Deleted immediately when you sign out, sign out of all devices, or delete your account (§13-8)

5. Third parties and processors

We do not sell your personal information, and we do not hand it to third parties for advertising or marketing. We use the outside services below only as far as running the Service requires.

The table mixes two kinds of thing: services our server calls on your behalf, and services the app connects to directly, without passing through our server. The second kind is marked "app connects directly".

ServiceWhy we use itWhat passes between us
Anthropic (Claude API)Generating AI answersThe per-feature items in §2.4
CloudflareInfrastructure — where our server runs and where data is storedThe server-side items in §2.2, §2.3, §2.5, and §2.6
RevenueCatRelaying subscription payment statusThe payment identifier (payment_id) and subscription events
Google AdMobServing ads inside the app (§10)Whatever the ad SDK handles — [Not yet decided: state exactly which identifiers AdMob handles, based on Google's own documentation]
Naver local searchLooking up meetup place candidatesOnly an area label as text and a predefined venue-type hint. We do not send your location coordinates.
Apple (Sign in with Apple)Verifying who is signing in; revoking the link on account deletionWe receive: your user reference. We send: a request to validate the credential the app received at sign-in, and a revocation request at deletion (including the revocation token we hold)
Google (Sign in with Google)Verifying who is signing inWe receive: your user reference. We send: only a request for the public keys needed to verify a signature; nothing that points at you
KakaoVerifying who is signing in; revoking the link on account deletionWe receive: your user reference. We send: a request for signature-verification keys, and at deletion a revocation request that includes your user reference
NaverVerifying who is signing inWe receive: your user reference. We send: one profile lookup carrying the access token the app received
LINEVerifying who is signing inWe receive: your user reference. We send: only a request for the public keys needed to verify a signature; nothing that points at you
SK Telecom (TMAP public transit)Looking up public transit routes and travel times in KoreaThe coordinates of the start and end points you picked, plus the departure time. We send no user reference and no question text
Korea Meteorological Administration (API Hub)Looking up current weather in KoreaThe coordinates of the point being checked, converted to a grid cell number, plus the reference date and time. We do not send the raw coordinates
Japan Meteorological AgencyLooking up forecasts in JapanA single area code, nothing else. No coordinates, and nothing that points at you
NAVITIME (Japanese public transit) — not in use todayLooking up public transit routes and travel times in JapanIf this is turned on: the coordinates of the start and end points, plus the departure time. [Not yet decided: confirm NAVITIME's registered company name and country, and how far the reseller (RapidAPI) is involved]
Seoul Metropolitan Government (Open Data Plaza)Looking up live status of city-run car parksWe send nothing about you at all. We fetch the whole list of car parks at once, hold it briefly on our server, and show you only the part you need
Google Maps SDK — app connects directlyDrawing the map screenWhere the map is looking and how far it is zoomed, plus connection information. If you turn on the "my location" display, the SDK passes your device's position to Google. [Not yet decided: state exactly which items the Google Maps SDK handles, based on Google's own documentation]
NAVER Maps SDK — app connects directlyDrawing the map screen for KoreaThe same as above; only the other end differs. [Not yet decided: state exactly which items the NAVER Maps SDK handles, based on NAVER's own documentation]
Korea Tourism Organization (festival photo server) — app connects directlyShowing festival and event photosThe app fetches the photos itself, so your connection information (IP address and so on) reaches the Korea Tourism Organization. We send no user reference
7 affiliate booking links (Klook, KKday, GetYourGuide, Agoda, Booking.com, JR Pass, Airalo) — app connects directlyOpening a booking or product pageAn external browser opens only when you tap the link. The link carries a place or city name and an affiliate reference; it carries no location coordinates and no user reference. [Not yet decided: confirm the registered company names and countries of the 7 affiliate partners, and what the links actually carry]

6. Transfers of personal information to other countries

We transfer personal information out of Korea as follows.

RecipientCountryPurposeWhat is transferredWhen and howRetentionHow to refuse, and what happens
AnthropicUnited StatesGenerating AI answersThe per-feature items in §2.4Each time you use an AI feature, by an API call over an encrypted connection (HTTPS)[Not yet decided: confirm and state Anthropic's API data retention period]Nothing is transferred if you do not use the AI features (concierge, meetup suggestions, course narration). Only those features stop working; the rest of the Service still works.
CloudflareUnited States and global network locationsInfrastructure — running the server and storing dataThe server-side items in §2.2, §2.3, §2.5, and §2.6Continuously while you use the Service, sent and stored over encrypted connectionsSame as the per-item retention in §4This is the infrastructure the Service runs on, so you cannot refuse it individually. To refuse, stop using the Service.
RevenueCat, Inc.United StatesRelaying subscription payment statusPayment identifier, subscription eventsWhen a subscription is purchased or renewedSee the first note under this tableNothing is transferred if you do not subscribe.
Google (AdMob)[Not yet decided: confirm Google AdMob's country]Serving and measuring ads[Not yet decided: items transferred to AdMob]When an ad is shown[Not yet decided: AdMob retention]You can decline personalized ads in the consent form (§10), and on iOS you can decline tracking.
AppleUnited StatesVerifying who is signing in; revoking the link on account deletionThe credential at sign-in; the revocation token and user reference at deletionAt sign-in and at account deletionGoverned by the sign-in provider's own policyNothing is transferred if you do not sign in with Apple. You can use another sign-in method.
Google (sign-in)United StatesVerifying who is signing inA request for signature-verification public keys (nothing that points at you)At sign-inGoverned by the sign-in provider's own policyNothing is transferred if you do not sign in with Google.
KakaoRepublic of KoreaVerifying who is signing in; revoking the link on account deletionA request for signature-verification public keys; your user reference at deletionAt sign-in and at account deletionGoverned by the sign-in provider's own policyNothing is transferred if you do not sign in with Kakao.
NaverRepublic of KoreaVerifying who is signing inOne profile lookup carrying the access token the app receivedAt sign-inGoverned by the sign-in provider's own policyNothing is transferred if you do not sign in with Naver.
LINEJapanVerifying who is signing inA request for signature-verification public keys (nothing that points at you)At sign-inGoverned by the sign-in provider's own policyNothing is transferred if you do not sign in with LINE.
Google (Maps SDK)United StatesDrawing the map screenWhere the map is looking and how far it is zoomed, plus connection information; your device's position if you turn on the "my location" displayEvery time you open the map screen — the app connects directly, bypassing our server[Not yet decided: Google Maps SDK retention]Nothing is transferred if you do not use the map screen. Withdrawing location permission in your device settings turns off the "my location" display (§9).
Japan Meteorological AgencyJapanLooking up forecasts in JapanA single area code (nothing that points at you)When you check the weather for a place in JapanGoverned by the publisher of the open dataNothing is transferred if you do not use weather information for Japan.
NAVITIME — not in use todayJapan (the reseller's country is [Not yet decided: confirm the country of the RapidAPI reseller])Looking up public transit routes in JapanThe coordinates of the start and end points, and the departure timeOnce this feature is turned on, when you look up a route in Japan[Not yet decided: NAVITIME retention]Nothing is transferred at all until this feature is turned on. Even then, nothing is transferred if you do not use route guidance in Japan.

7. Using the AI features

This section covers what services built on generative AI are expected to disclose.

7.1 Your input and the AI's output

7.2 Whether your input trains AI models, and how to opt out

7.3 Reporting a bad answer

If the AI gives you an answer that is wrong or inappropriate, you can report it as follows.

We review what you send and use it to improve prompts and blocking rules.

7.4 The limits of AI answers

AI answers are a starting point, not a guarantee. Hours, prices, and closing days change locally. Please confirm anything important with the original source.


8. Personalization (taste)

8.1 Where this stands today

This feature is off by default. It works only when the server configuration explicitly turns it on; if the setting is missing or unreadable, it does not turn on and simply stays off. What follows tells you in advance what applies once it is on.

8.2 What we collect

8.4 Where it is stored, how long it lasts, and how to delete it


9. Location

ℹ️ We deliberately avoid the claim that no location is ever collected. The accurate statement is "we use it on your device and never send it to our server".

[Not yet decided: legal review of whether the Korean Act on the Protection and Use of Location Information requires registration as a location information or location-based service provider]


10. Advertising and tracking


11. The account feature

11.1 Where this stands today

We do not offer the account feature today. It applies from the moment the server configuration explicitly turns it on and the app ships with a sign-in method. Until then no sign-in entry point appears in the app, and the account endpoints on the server do not respond. What follows tells you in advance what applies once it is offered.

11.2 Sign-in methods, and what we receive

11.3 Your sign-in session

11.4 Linking and unlinking sign-in methods

11.5 Merging accounts

11.6 Deleting your account

You can delete your account in the app (Settings → Account → Delete account). If you cannot install the app, ask through the contact point in §14.

What gets deleted

What stays after deletion, and why

We will not tell you that "everything is erased". Here is what actually stays.

  1. A minimal account record — your account identifier and provider user reference stay, marked "deleted". They stop an earlier account from being revived when you sign up again with the same sign-in method. We have not yet decided how to remove this record entirely (§16 B-9).
  2. Part of your usage records from earlier periods — we clear the recent periods, but records from before them can remain (§16 B-10).
  3. The install identifier on your device — a value we leave on the device so paid entitlements do not pass to the wrong account. Deleting your account does not clear it, and if you sign up again on the same device, some payment links can be limited.
  4. Management information for groups you own — if you own a group, its owner field keeps a value pointing at the deleted account. Removing it would leave the remaining members unable to manage the group.
  5. Payment records held by the stores and the payment relay — we cannot erase what the App Store, Google Play, and the payment relay keep. Their own policies govern them.
  6. Operational and error logs — records we need to respond to incidents. We have not set a retention period yet (§4).

When it happens, and why it is final

Cancel your subscription separately

Deleting your account does not cancel a subscription you started in the App Store or Google Play. Unless you cancel it, billing continues from the next renewal date. Cancel it yourself in the store where you bought it. We recommend cancelling before you delete your account.

11.7 Unlinking your sign-in providers


12. Your rights, and how to exercise them

You have the right to ask us to give you access to your personal information and to correct it, delete it, or stop processing it. Here is how that works in practice.

⚠️ Deleting the app is not the same as deleting your account. Deleting the app clears the data and the install identifier on your device, but your account on our server stays. To get rid of it, use account deletion (§11.6).

12.1 What to do for each item

WhatHow to exercise it
Data on your device, and the install identifierDelete the app
Taste dataUse the delete function (§8.4), or ask through the contact point in §14
Subscription status and usage countersWhile signed out, ask through the contact point in §14 — we will need to confirm the request is yours, so [Not yet decided: decide the verification procedure, including how an identifier is submitted]. While signed in, account deletion covers it (§11.6)
Location permissionWithdraw the permission in your device settings (§9)
Ad consentReopen the consent form, or change it in your device settings (§10) [Not yet decided: decide the in-app path for reopening consent]
Access to your account informationIn the app, view your account identifier, status, and creation time, plus the list of linked sign-in methods
Account deletionRun it in the app (Settings → Account → Delete account, §11.6). If you cannot install the app, ask through the contact point in §14
Sign out of all devicesRun it in app settings — every session issued up to that point is invalidated on the server immediately (§11.3)
Unlinking a sign-in methodRun it in the app (you cannot unlink the last one, §11.4)

12.2 Children under 14

[Not yet decided: decide whether children under 14 may use the Service and how legal guardian consent is handled — must match the age rating declared to the stores]

12.3 Where to raise a complaint

If you need advice or dispute mediation about how personal information is handled, you can contact bodies such as the Personal Information Dispute Mediation Committee, the Korea Internet & Security Agency's Privacy Infringement Report Centre, the Supreme Prosecutors' Office Cyber Investigation Division, and the National Police Agency Cyber Investigation Bureau. [Not yet decided: confirm each body's contact details and URL on its official site at publication time]


13. Security measures

We take the following measures.

  1. Collect as little as possible: we handle only what running the Service requires, and we never built a screen that asks for identity information. We ask sign-in providers for nothing beyond the user reference.
  2. Structural blocking of what is sent: requests to the AI features are validated against a predefined schema, and a request containing a forbidden field is rejected outright after a recursive check.
  3. Minimal logging: blocked-request and error records keep field names, not values. Account records never keep provider user references, revocation tokens, raw install identifiers, or raw payment identifiers.
  4. Separated identifiers: the payment identifier and the install identifier are generated so that neither can be derived from the other, and the server creates the account identifier independently of both.
  5. Encrypted transport: traffic between the app and our server, and between our server and outside services, uses encrypted connections (HTTPS).
  6. Restricted access: access to systems that handle personal information is limited to as few people as possible. [Not yet decided: audit our implementation against each item of the security-measures standard (access rights management, access log retention, and the rest) and make this concrete]
  7. Data on your device is excluded from backup and device-to-device transfer.
    What the app stores on your device (favorites, consent records, your sign-in session, the install identifier, the payment identifier) sits in a single database file, and we set it to be excluded from both iCloud backup on iOS and cloud backup and device-to-device transfer on Android.
    This stops your sign-in session and device identifiers from being copied onto a device you did not intend. As a result, your favorites and consent records do not follow you when you change phones or restore a backup. A new device starts as a fresh install. We do not hold this information on our server, so we cannot restore it for you.
  8. How your sign-in session is stored, and the limit of that: stated plainly in §11.3. In short, the session is stored in the app's internal database without separate encryption; the two mitigations are automatic discard after 30 days and "Sign out of all devices"; and neither protects a device whose own protections have been removed (rooted or jailbroken).
  9. Signed session tokens: our server signs the session tokens it issues, and rejects any token whose signature does not match or whose period has passed. "Sign out of all devices" and account deletion invalidate every token issued before them.

14. Privacy officer and contact

For questions, complaints, or redress about how we handle personal information, contact us here.

We answer and act on what you send us without undue delay.


15. Changes to this policy


16. Things we have not settled yet

We have not settled the items below. We are listing them rather than hiding them. They need legal review and owner decisions, and the app cannot be submitted to the stores until they are resolved.

16.1 Mandatory fields left blank

No.ItemNote
A-1Business name, representative, business registration number, address§1
A-2Privacy officer's name, contact, and department§14 — a mandatory disclosure under Article 31 of the PIPA Enforcement Decree
A-3Effective dateDocument header. The last updated date is recorded as August 2, 2026
A-4Public URL resolved (August 2, 2026)https://travel-iko.pages.dev/en/legal/privacy-policy for English; Korean at /legal/privacy-policy, Japanese at /ja/legal/privacy-policy
A-5Values still blank on the public account-deletion page — the developer name, the policy address, the contact channel, and the updated date are all empty across the Korean, Japanese, and English versionsThey have to be filled in when this policy is finalised
A-6The privacy policy URL in the LINE channel console is blankEnter it after publication

16.2 Mismatches between code and policy, and unbuilt work

No.IssueWhat to do
B-1No automatic expiry is set on subscription status or usage countersDecide a retention policy and build the destruction routine. Until then this policy has to say plainly that they are kept indefinitely; wording like "everything is destroyed automatically after a period" cannot be used (§4)
B-2Retention period for operational and error logs is unconfirmedCheck the infrastructure settings and state it in §4
B-3Whether AI answers are stored or cached server-side is unconfirmedConfirm, then finalise the sentence in §7.1
B-4The path for reporting a bad answer is unconfirmed and unbuiltThe privacy-policy drafting guidance revised on April 24, 2026 (generative AI annex) requires a reporting method to be stated. At least one of an in-app path or an email address has to be settled (§7.3)
B-5In-app paths for the personalization consent UI and the taste-deletion button are unconfirmed§8.3, §8.4
B-6The ad app ID is Google's sample valueresolved, but the policy was never updated (carried over to B-15)A case where a v1 statement quietly became false. §10 is corrected; syncing the store declarations remains
B-7The real scope of scrubbingCompare against the spec: which categories of personal information are removed, and how completely. Match the strength of the word "removed" to what the implementation actually does
B-8The meetup suggestion path sends the candidate place name, while other paths hold to a principle of not sending place namesDecide whether to keep the per-path distinction in §2.4 or to stop sending the name in code, so the two statements never conflict
B-9🔴 After deletion the account record stays in a "deleted" state. Its retention and full destruction are undecided (the code has a "purged" status value, but nothing sets it)Decide the retention policy and build the destruction routine. Tied to note 1 in §4 and to §11.6
B-10🔴 Deleting an account clears only the current month, previous month, today, and yesterday usage counters; earlier periods stayDecide the policy (either build full deletion or state the retention). Note 2 in §4
B-11Settle the wording for the Apple revocation token's retention and destruction (the value is cleared only when revocation succeeds)The relevant row in §4
B-12Session refresh never reaches the app — the server issues a new token, but the app does not store it, so the effective lifetime is fixed at 30 days from first issue. Compare against the "issues a fresh token" wording in §11.3Fix the app wiring, or adjust the wording
B-13How the irreversibility of a merge affects the rights to correction and deletionPolicy and legal review
B-14Subscription wording drifts — the account-deletion page and the app say different things (Korean 취소 vs 해지; Japanese サブスクリプション vs 定期購入). The app wording governsAll 3 language versions of this policy follow the app wording. Cleaning up the deletion page is a separate batch
B-15🔴 The ad units were already switched to real commercial values — v1 §10 described them as "sample (test) values", and that statement had been false since July 18, 2026This v2 corrects the §10 wording. Syncing Apple App Privacy and Google Play Data safety remains (§16.4 D-2)
B-16The subscription status record includes a group identifier when a group entitlement is usedReflected in §2.5, but whether a group identifier is personal information is a question for legal review (decide together with C-10)
B-17🔴 The Maps SDKs (Google, NAVER) are called by the app directly, bypassing our server. We can neither observe nor control what passes at that momentPin down what each SDK actually handles from the vendors' own documentation and write it into §5 and §6. Until then the relevant cells in §5 stay marked as undecided
B-18🔴 The app fetches festival photos straight from the Korea Tourism Organization's server, so your connection information reaches them directly. The statement in v1 and in earlier drafts of this v2 — that no personal information is involved in the TourAPI flow — was inaccurate because it overlooked the photo path, and this edition corrects itDecide whether to proxy the photos through our server or to keep the current behaviour and disclose it
B-19The Japanese transit adapter (NAVITIME) is implemented but never actually called, because no credentials are injectedWhen it is turned on, change §5 and §6 from "not in use today" to the real state. Rewriting the policy before the feature goes live would make it false
B-20The affiliate references and link formats for all 7 booking partners are still temporary stand-in valuesOnce the contracts are signed, re-check what the links carry and update §5
No.Issue
C-1Final confirmation that Anthropic's commercial API does not train on customer data. §7.2 rests on that clause, so if we cannot obtain the supporting document, the sentence has to change
C-2Completeness of the overseas-transfer list — have counsel decide whether RevenueCat and Google (AdMob) count as overseas transfers and how to present them (third-party provision, entrustment, or overseas transfer). RevenueCat's country was confirmed as the United States on August 2, 2026 and is stated in §6; what remains is the presentation call
C-3Describing the recipients' level of protection (contractual safeguards, certifications) — for Apple 5.1.2(i)(d) and Article 28-8 of PIPA
C-4Overseas transfers under Japan's APPI: the duty to give the recipient's country and information about that country's personal information protection regime. Country names appear in every version; the regime detail belongs in the Japanese version
C-5Whether the Korean Act on the Protection and Use of Location Information applies — does a registration duty arise even though we never send coordinates to the server
C-6How we handle children under 14, and whether that matches the age rating declared to the stores
C-7How statutory retention duties for payments affect the retention periods in §4. The statute and its periods were confirmed on August 2, 2026 and are stated in §4; what remains is the single question of whether we count as the business under that Act for store-mediated payments
C-8Whether the governing-language clause in §1 is enforceable
C-9Whether the 5 social sign-in providers are third parties we provide data to, or processors we entrust it to — Korea and Japan may answer differently
C-10The legal character of the provider user reference (is it personal information; is it pseudonymised information). Decide the group identifier (B-16) alongside it
C-11Whether the GDPR applies — our own assessment is that it likely does not: we support Korean, Japanese, and English, we cover travel in Korea and Japan, we support no European currency, and we run no advertising or targeting aimed at European users. This is still a legal judgement. To leave that judgement open, this draft does not add a GDPR-specific section
C-12Article 28 of Japan's APPI — write the body text describing the recipient country's protection regime for consent-based overseas transfers (in the Japanese version)
C-13🔴 We could not confirm the recent amendment to the PIPA Enforcement Decree — we could not check against the primary text whether the mandatory contents of a privacy policy changed. Recorded as unknown. Checking the original text before publication is mandatory
C-14🔴 Route-search requests carry the coordinates of the start and end points to outside companies (TMAP today, NAVITIME later). Decide whether those coordinates are personal information, and whether they are personal location information under the Korean Act on the Protection and Use of Location Information (decide together with C-5)
C-15🔴 The Maps SDKs connect from the app straight to each vendor. Decide whether that is a transfer to a third party by us or a connection made by you — the way §6 has to describe it depends on the answer
C-16Decide whether tapping an affiliate booking link is a transfer to a third party or merely offering a link, including whether the current decision to leave it out of §6 holds
C-17The registered company names, countries, and retention periods are unconfirmed for every company this audit newly listed: SK Telecom (TMAP), the Korea Meteorological Administration, the Japan Meteorological Agency, NAVITIME and its reseller, the Seoul Metropolitan Government, the Google Maps SDK, the NAVER Maps SDK, the Korea Tourism Organization, and the 7 affiliate partners

16.4 Consistency with store review

No.Issue
D-1Reconcile the Apple App Privacy declaration with this policy — in particular, decide how to declare on the label a structure where the app uses location but never sends it to the server
D-2Reconcile the Google Play Data safety declaration with this policy — the collected/shared split, what the ad SDK handles, and the switch to commercial ads (B-15)
D-3Apple Guideline 5.1.2(i) — when personally identifiable information goes to a third-party AI, state (a) what data and (b) who receives it, obtain (c) explicit in-app permission before sending, and (d) describe in the policy what is collected, how, why, and how the recipient protects it. (a), (b), and (d) are covered in §2.4 and §6; the in-app prior-permission UI and its wording for (c) still need to be confirmed
D-4The course narration path has no free-form text and sends only identifiers and code values, so it may fall outside "sending personally identifiable information" under 5.1.2(i) — but we could not confirm any exemption. Consider adding in-app disclosure to that path as well, to be safe
D-5When ads go commercial, re-verify that the UMP and ATT consent flow matches the order stated here (UMP → ATT)
D-6Brand name — the store display name, the Play Data safety entry, and this policy all have to agree
D-7Reclassify Apple App Privacy — accounts tie some items to a person, so the "Data Linked to You" split has to be judged again
D-8Settle the answers to Google Play's 2 data-deletion questions and the web deletion-request URL
D-9🔴 Google Play requires that *"deleting an account must also delete the user data associated with it, and temporary deactivation does not count as deletion"* ↔ our minimal account record stays in a "deleted" state (B-9). We need a legal and policy decision on how to declare and explain that tension
D-10🔴 Apple 5.1.1(v) requires token revocation alongside a deletion request when Sign in with Apple is offered, but no credentials are loaded on the server today, so no request goes out (§11.7)
D-11We could not see the actual Apple and Google declaration forms (we are not enrolled in the Apple Developer Program). Because we could not confirm the full category lists from a primary source, those cells in store-privacy-declarations.md are left as "unconfirmed"
D-12The app display name in 3 languages was undecided resolved (August 2, 2026, owner's decision) — Korean 여행이코 / Japanese 旅行行こ / English Iko Travel. 🔴 Still to do: the account-deletion page still renders YEOHAENGIKO in English and has to be changed to Iko Travel, and the store listings have to match these three
D-13🔴 Decide how to declare every third-party SDK shipped in the app (Google Maps, NAVER Maps, Google AdMob) and every outside server the app connects to directly (the Korea Tourism Organization photo server, the 7 affiliate links) under Apple App Privacy and Google Play Data safety, in the third-party SDK and data-sharing sections

*This policy is a draft and is not yet in force. The app cannot be submitted to the stores until the items in §16 are resolved and a lawyer has reviewed it.*