Privacy Policy / 개인정보 처리방침
Seoulvivor is a spoken Korean roleplay game. To grade what you say, it has to hear you. This page sets out exactly what that means: what is collected, where it goes, how long it stays, and how to get rid of it.
Last updated: 31 July 2026 · 최종 개정 2026년 7월 31일
In effect · 시행
The short version / 요약
- You can start playing without giving us a name, an email, or anything else. The first launch creates an anonymous account.
- Your microphone recording is uploaded so a server can transcribe and grade it, then deleted once it has been processed. There is no archive of recordings and they are not used to train models.
- Your email address, if you sign in with Apple, is never copied into our database. It stays in Firebase Authentication.
- You can delete your account and everything attached to it from inside the app.
이메일이나 이름 없이도 바로 시작할 수 있습니다. 음성 녹음은 전사·채점을 위해 서버로 전송되며 처리가 끝나면 삭제됩니다. 녹음을 따로 보관하거나 모델 학습에 사용하지 않습니다. Apple 로그인 시에도 이메일은 데이터베이스에 저장되지 않으며, 앱 안에서 언제든 계정을 완전히 삭제할 수 있습니다.
-
Scope and contact / 적용 범위와 문의처
This policy covers the Seoulvivor iOS app and this website. Seoulvivor is made and run by an independent developer, who is responsible for the data described here and can be reached at jamie@grapplelabs.dev.
Where Korean law applies, this policy is intended to meet the disclosure duties of the Personal Information Protection Act (개인정보 보호법). Where the GDPR applies, the developer acts as the controller.
본 방침은 Seoulvivor iOS 앱과 본 웹사이트에 적용됩니다. 개인정보처리자는 앱을 개발·운영하는 개인 개발자이며, 문의는 jamie@grapplelabs.dev로 하실 수 있습니다. 대한민국 「개인정보 보호법」 및 GDPR상의 고지 의무를 충족하기 위해 작성되었습니다.
-
What we collect / 수집하는 정보
Account. On first launch the app creates an anonymous Firebase account. It carries no personal information — only a random account identifier. You can later link that account to Sign in with Apple; Apple then gives us your name and email address, which are held by Firebase Authentication. Your email address is deliberately not written into our database.
Passport profile. Whatever you type into your in-game passport: a display name, a Korean name, and your family name and given names. These exist to render the passport and to let a character address you. Use whatever you like — nothing checks them against a real document.
Play record. Total XP, which quests you have cleared, the grade for each, which quests you have unlocked, how many quest keys you hold, whether your subscription is active, the number of plays used today, your weekly league score, and when the account was created.
Microphone audio. Only while a quest turn is being recorded. Clause 3 sets out what happens to it.
Diagnostics. Crash reports through Firebase Crashlytics and a small set of usage events through Firebase Analytics — a quest started, a grade issued, the paywall shown, the daily limit reached. These are tagged with your account identifier, not with your name or email. Seoulvivor shows no advertising and does not use advertising identifiers.
Not collected. The portrait photo you put on your passport is written to your device's own app storage and never leaves it. We do not ask for your location, contacts, or health data. Payment details go to Apple and are never seen by us.
첫 실행 시 개인정보가 포함되지 않은 익명 계정이 생성됩니다. 이후 Apple 로그인으로 계정을 연결하면 Apple이 제공하는 이름과 이메일이 Firebase 인증에 저장되며, 이메일은 데이터베이스에 기록하지 않습니다. 이 밖에 여권 화면에 입력한 이름(표시 이름·한국어 이름·성·이름), 플레이 기록(총 경험치, 클리어한 퀘스트와 등급, 잠금 해제한 퀘스트, 보유 열쇠 수, 구독 상태, 당일 플레이 횟수, 주간 리그 점수, 가입 일시), 그리고 퀘스트 진행 중 녹음되는 음성을 처리합니다. 오류 진단을 위해 Crashlytics 충돌 보고서와 최소한의 이용 이벤트(Analytics)를 계정 식별자 기준으로 수집하며, 광고는 표시하지 않고 광고 식별자도 사용하지 않습니다. 여권 사진은 기기 내부에만 저장되어 전송되지 않으며, 위치·연락처·건강 정보는 수집하지 않고 결제 정보는 Apple이 처리합니다.
-
Microphone audio / 마이크 음성의 처리
When you speak during a quest, the app records that turn and uploads the file to Google Cloud Storage under a temporary path (temp_audio/), tagged with your account identifier so that no other account can read it. Our server downloads the file, sends it to Google Gemini to be transcribed and graded, and deletes it once it has been processed. It is kept no longer than it takes to process it.
To be precise about the edge cases: deletion happens after the recording has been successfully handled. If a request fails before that point — an empty recording, a file over the size limit, or a file that does not belong to the account requesting it — the upload can survive until it is cleaned up. We do not build an archive of recordings, we do not use them to train models, and there is no setting that asks us to keep them.
The conversation itself stays on your device for the length of a run and is sent with each turn so the character has context. What we keep afterwards is the score and the grade, not a transcript of what you said.
Microphone access is required for the app to work at all. iOS asks for it the first time; you can withdraw it at any time in iOS Settings, which will stop the app from functioning.
퀘스트 중 발화하면 해당 녹음이 임시 경로(temp_audio/)로 업로드되며, 본인 계정 식별자가 부여되어 다른 계정은 접근할 수 없습니다. 서버는 이 파일을 내려받아 Google Gemini에 전사·채점을 요청한 뒤, 처리가 완료되면 삭제합니다. 처리에 필요한 기간을 넘겨 보관하지 않습니다. 다만 정확히 말하면 삭제는 정상 처리 이후에 이루어지므로, 빈 녹음·용량 초과·소유자 불일치 등으로 요청이 중단된 경우 파일이 정리될 때까지 남아 있을 수 있습니다. 녹음을 별도로 보관하거나 모델 학습에 사용하지 않으며, 보관을 선택하는 설정도 없습니다. 대화 내용은 진행 중 기기에 유지되어 매 턴 문맥으로 전송되고, 이후 저장되는 것은 점수와 등급이며 발화 전문(transcript)은 저장하지 않습니다. 마이크 권한은 앱 이용에 필수이며, iOS 설정에서 언제든 철회할 수 있으나 철회 시 게임을 진행할 수 없습니다.
-
Why we process it / 처리 목적과 근거
Account data and the play record exist to run the service you asked for: to keep your progress, apply the daily play limit, honour a purchase, and place you on the weekly league. Audio is processed for the single purpose of transcribing and grading the turn you just spoke. Diagnostics exist to find crashes and to see whether the app is usable.
Under the GDPR the basis for account, progress and audio processing is performance of the contract between you and us; for diagnostics it is our legitimate interest in a working app. Under Korean law, processing is on the basis of the consent you give when you install and use the app and grant microphone access, and it is limited to what the service needs.
계정 정보와 플레이 기록은 진행 상황 저장, 일일 이용 한도 적용, 구매 반영, 주간 리그 운영 등 서비스 제공을 위해 처리합니다. 음성은 해당 턴의 전사와 채점이라는 단일 목적에만 사용합니다. 진단 정보는 오류 파악과 품질 개선을 위한 것입니다. GDPR상 계정·진행·음성 처리의 근거는 계약의 이행이며, 진단 정보는 정당한 이익에 해당합니다. 국내법상으로는 앱 설치·이용 및 마이크 권한 허용 시의 동의에 근거하며, 서비스 제공에 필요한 범위를 넘지 않습니다.
-
Who else handles it / 처리 위탁 및 국외 이전
Seoulvivor is built on services run by other companies. They process data on our instructions, for the purposes below and nothing else.
Processor / 수탁자 What it does / 위탁 업무 Google Firebase Authentication, the Firestore database, Cloud Storage for the audio upload, Cloud Functions for the server logic, Crashlytics, Analytics Google Gemini Generates the character's dialogue, transcribes your speech, synthesises the character's voice, and grades the attempt Google Cloud Text-to-Speech Fallback voice synthesis when Gemini's own synthesis is unavailable Apple Sign in with Apple, and In-App Purchase — Apple processes the payment and we never see the card RevenueCat Records subscription and purchase state so entitlements survive a reinstall These are global services. Our server functions run in Google Cloud's us-central1 region, so data is processed on infrastructure outside Korea, including in the United States. Using the app entails that transfer; there is no version of the service that keeps processing inside one country.
Nothing is sold, and nothing is handed to advertisers or data brokers.
Seoulvivor는 위 표의 사업자에게 개인정보 처리를 위탁하며, 각 사업자는 명시된 업무 범위 내에서만 처리합니다. 서버 함수는 Google Cloud us-central1 리전에서 실행되므로 미국을 포함한 국외 인프라에서 처리가 이루어지며, 앱 이용은 이러한 국외 이전을 수반합니다. 개인정보를 판매하지 않으며 광고 사업자나 데이터 브로커에게 제공하지 않습니다.
-
What other players can see / 다른 이용자에게 보이는 정보
The weekly league is a separate leaderboard record holding your display name and your weekly score. Any signed-in player can read it. Nothing else about your account is published — not your email, not your grades, not your recordings. If you would rather not appear there, change your display name to something that is not you, or delete your account.
주간 리그 순위표에는 표시 이름과 주간 점수만 기록되며, 로그인한 다른 이용자가 이를 조회할 수 있습니다. 이메일, 등급, 녹음 등 그 밖의 정보는 공개되지 않습니다. 노출을 원하지 않으시면 표시 이름을 변경하거나 계정을 삭제하시면 됩니다.
-
How long it is kept / 보유 기간
Your account and play record are kept while the account exists. Audio is kept only for the processing described in clause 3.
Anonymous accounts are swept automatically: an anonymous account that was created and never played is deleted after 3 days, and an anonymous account with progress is deleted after 90 days of dormancy. An account linked to Sign in with Apple is never touched by that sweep — it stays until you delete it.
Crash and usage reports live in Google's systems under Firebase's own retention settings. They are not part of the in-app deletion described below, and they carry an account identifier rather than your name or email.
계정 정보와 플레이 기록은 계정이 존재하는 동안 보관하며, 음성은 제3조에 기재한 처리 목적에 한해 보관합니다. 익명 계정은 자동으로 정리되어, 생성 후 한 번도 플레이하지 않은 계정은 3일, 진행 기록이 있는 계정은 90일간 미접속 시 삭제됩니다. Apple 로그인으로 연결된 계정은 이 자동 정리 대상이 아니며 직접 삭제하실 때까지 유지됩니다. 충돌·이용 진단 기록은 Firebase의 보관 정책에 따라 Google 시스템에 남으며, 아래의 앱 내 계정 삭제 대상에 포함되지 않고 이름이나 이메일이 아닌 계정 식별자만 포함합니다.
-
Deleting your account / 계정 삭제
In the app: Settings → Danger Zone → Permanently Delete Account. That deletes your Firebase Authentication user, which triggers a server function that recursively deletes your database document and everything beneath it — your grades, receipts and session records — and removes your leaderboard entry. It cannot be undone and there is no recovery copy.
Deleting the account does not cancel an App Store subscription. Apple owns that relationship; cancel it separately under your Apple ID subscriptions. If you cannot reach the in-app control, email jamie@grapplelabs.dev and the deletion will be carried out for you.
앱 내 Settings → Danger Zone → Permanently Delete Account에서 삭제할 수 있습니다. Firebase 인증 계정이 삭제되면 서버 함수가 실행되어 사용자 문서와 하위 데이터(등급·영수증·세션 기록)를 재귀적으로 삭제하고 순위표 항목도 제거합니다. 삭제는 되돌릴 수 없으며 복구본을 보관하지 않습니다. 계정 삭제는 App Store 구독을 자동으로 해지하지 않으므로, 구독은 Apple ID 설정에서 별도로 해지하셔야 합니다. 앱에서 삭제가 어려운 경우 jamie@grapplelabs.dev로 요청해 주시면 대신 처리해 드립니다.
-
Your rights / 이용자의 권리
You can ask for a copy of what we hold about you, ask for it to be corrected, ask for it to be deleted, or withdraw consent for processing. The passport fields are editable in the app at any time. For anything else, email jamie@grapplelabs.dev — we will answer without undue delay and normally within 30 days. This is a small operation, so the reply will come from a person rather than a portal.
Withdrawing microphone permission or deleting your account stops the processing described here, but it also stops the game working, since speaking is the whole of it.
이용자는 본인 정보의 열람, 정정, 삭제, 처리 정지 및 동의 철회를 요구할 수 있습니다. 여권 정보는 앱에서 직접 수정할 수 있으며, 그 밖의 요청은 jamie@grapplelabs.dev로 보내주시면 지체 없이, 통상 30일 이내에 답변드립니다. 마이크 권한 철회나 계정 삭제로 처리를 중단할 수 있으나, 발화가 게임의 핵심이므로 이 경우 서비스 이용은 불가능합니다.
-
Security / 안전성 확보 조치
Traffic between the app and our servers is encrypted in transit. Calls to our server functions require Firebase App Check and a signed-in account. Database rules deny access by default: your user document is readable only by you, progress and grades are written only by the server, and an audio upload is readable only by the account that made it. Every storage path other than the temporary audio one is closed.
We do not claim any certification or external audit. No system is perfect; if you find a problem, please write to us and we will fix it.
앱과 서버 간 통신은 전송 구간에서 암호화되며, 서버 함수 호출에는 Firebase App Check와 로그인된 계정이 요구됩니다. 데이터베이스 규칙은 기본 차단을 원칙으로 하여 사용자 문서는 본인만 열람할 수 있고, 진행 기록과 등급은 서버만 기록할 수 있으며, 업로드된 음성은 업로드한 계정만 접근할 수 있습니다. 임시 음성 경로 외의 저장 경로는 모두 차단되어 있습니다. 당사는 어떠한 인증이나 외부 감사도 취득했다고 주장하지 않습니다. 취약점을 발견하시면 알려주시기 바랍니다.
-
Changes to this policy / 방침의 변경
If what the app does with your data changes, this page changes with it and the date at the top changes too. A change that materially affects you will be signalled in the app before it takes effect.
데이터 처리 방식이 변경되면 본 페이지와 상단의 개정일을 함께 갱신합니다. 이용자에게 중대한 영향을 미치는 변경은 시행 전에 앱 내에서 안내합니다.
Contact / 문의
Privacy enquiries · 개인정보 문의
Access, correction, deletion, or anything on this page you think is wrong — write and say so.
열람·정정·삭제 요청은 물론, 본 방침의 내용에 사실과 다른 부분이 있다면 알려주시기 바랍니다.