← PokePilot

Privacy

Public beta notice · Last updated October 15, 2026

Data kept in your browser

Interface preferences and cached game data stay in your browser using localStorage. Saved teams, bench sets, and PokePilot analysis history also keep a local browser copy. When you sign in with Google, PokePilot synchronizes those saved teams and history, plus your language, theme, default battle format, and tutorial-completion preference, plus the last selected analysis tab, model, and reasoning level, to an account-scoped Cloudflare D1 database so they are available on your other signed-in devices. The browser copy remains until you remove it in the app or clear the site's browser data; it is also cleared when you sign out. PokePilot also stores the minimum account profile needed for sign-in and abuse controls: a Google account identifier, and any email address, display name, or profile image URL Google gives to PokePilot.

Optional AI analysis

Account sync stores saved teams and analysis history as described above. When you request an AI analysis, the server forwards the structured battle data, including a team name when present, to OpenAI to generate the response. Avoid placing personal or confidential information in team names or analysis inputs. The request also includes a pseudonymous account identifier derived with a server secret for OpenAI abuse monitoring, not your Google email or profile. Requests use store: false; this does not override OpenAI's own data-retention policies.

PokePilot does not currently collect a separate set of teams or analyses for AI quality improvement. Account-synced history is for saving your work, not a quality-sharing program. There is no quality-sharing setting or related reward at this time.

The pre-analysis estimate runs in your browser and does not send an analysis request to OpenAI or save your team. Confirming analysis saves the team before the paid request. Saved analysis history can include the response, duration, token usage, estimated cost, and battle-data source metadata.

AI analysis requires sign-in and a personal OpenAI API key; team building and damage calculation do not require a key. PokePilot encrypts the key before storing it in the account-scoped Cloudflare D1 database. The browser does not retain the key after registration, and PokePilot does not display it again. The server decrypts and sends it to OpenAI only when you request an analysis using that key. OpenAI bills usage to your own account. You can remove the key in account settings; deleting your PokePilot account also removes it.

Abuse controls and server caching

  • Google sign-in creates a random, Secure, HttpOnly, SameSite session cookie. Its server-side HMAC is stored in Cloudflare D1 with a 30-day idle window. Authenticated activity renews that window when seven days or less remain, up to 90 days from sign-in. JavaScript cannot read the session value. Expired session records no longer grant access; expiration is not a promise of immediate deletion.
  • An HttpOnly, signed anonymous-client cookie identifies a browser for request admission controls. It contains no account or profile data and can remain for up to one year.
  • The application converts the request IP address to a keyed, one-way hash for request identity. PokePilot does not place the raw IP address in its application cache.
  • Public personal-key analysis bypasses the shared Redis analysis cache, but temporary account/IP request counters and account/global active-analysis permits remain in Redis for abuse and capacity protection. These are not daily analysis credits. Duplicate in-flight requests may share a result within a server process. The development adapter can use Upstash for temporary request controls and analysis caching; its analysis cache expires within 24 hours. Account analysis history in D1 is separate from this cache. It is bounded to 60 entries and a 1 MB payload; older entries can be removed as new history is kept.

Operational metrics

We retain daily aggregate API request counts, HTTP status codes, latency buckets, analysis categories, cache outcomes, token totals, and estimated costs for successful calls and failed calls with known usage for approximately 90 days. These aggregates contain no account identifiers, IP addresses, team contents, prompts, or analysis text. They help us improve reliability and resource efficiency; they do not track individual browsing activity.

Cloudflare Web Analytics also measures page visits and page performance through a browser script. This is separate from the API aggregates above. It does not use cookies or local storage for analytics. PokePilot does not add account identifiers, team contents, analysis text, or API keys to this beacon. See Cloudflare Web Analytics for details about its measurements.

Service providers

Cloudflare hosts the app, Worker API, and account-session database; Google provides optional sign-in; OpenAI processes requested AI analyses; and Upstash provides temporary request and capacity controls and the optional development analysis cache. These providers may process standard request metadata under their own terms and privacy policies. Game data is loaded from or derived from PokeAPI, Pokemon Showdown, and Pokemon Champions Battle Data sources.

Advertising

PokePilot does not currently display third-party advertisements. If advertising is enabled, PokePilot may use Google AdSense to display Google-served ads. Google and its partners may use cookies or other local storage to serve and measure ads, including personalized ads where permitted and consented to. You can manage personalized ads through Google's My Ad Center.

Where required, including for visitors in the EEA, the United Kingdom, and Switzerland, PokePilot will present an appropriate consent choice before enabling advertising storage or personalized advertising.

Your controls and contact

Delete saved teams and analysis history in PokePilot, or clear this site's browser data to remove local data and the anonymous cookie. Signing out clears synchronized team and analysis-history copies from this browser while retaining them in your account. Deleting the account also deletes synchronized teams, analysis history, and preferences from the server alongside the account record and active sessions; local team and history copies are cleared. Interface preferences remain normal browser settings. Server-side operational entries expire automatically. Send general feedback through GitHub Issues and report security concerns through the repository's security policy.

개인정보 안내

공개 베타 안내 · 최종 수정 2026년 10월 15일

브라우저에 저장되는 데이터

화면 설정과 캐시된 게임 데이터는 현재 기기의 브라우저 localStorage에 저장됩니다. 저장한 팀, 벤치 샘플, PokePilot 분석 기록도 브라우저에 로컬 사본을 유지합니다. Google로 로그인하면 다른 로그인 기기에서도 이용할 수 있도록 해당 저장 팀과 분석 기록, 언어, 테마, 기본 배틀 형식, 튜토리얼 완료 여부, 최근 선택한 분석 탭·모델·추론 강도를 계정별 Cloudflare D1 데이터베이스에 동기화합니다. 브라우저 사본은 앱에서 삭제하거나 사이트 데이터를 지우기 전까지 해당 기기에 남으며, 로그아웃할 때에도 삭제됩니다. 또한 로그인과 오남용 방지에 필요한 최소 계정 프로필 정보를 저장합니다. 여기에는 Google 계정 식별자와 Google이 PokePilot에 제공한 이메일, 표시 이름, 프로필 이미지 URL이 포함될 수 있습니다.

선택형 AI 분석

저장 팀과 분석 기록은 앞서 설명한 계정 동기화를 통해 서버에 저장됩니다. AI 분석을 직접 요청하면 서버는 팀 이름이 있는 경우 이를 포함한 구조화된 배틀 데이터를 OpenAI에 전달해 분석 결과를 생성합니다. 팀 이름과 분석 입력에 개인정보나 기밀정보를 넣어서는 안 됩니다. OpenAI의 오남용 모니터링을 위해 서버 비밀값으로 파생한 가명 계정 식별자도 전달하며, Google 이메일이나 프로필을 이 식별자로 전달하지는 않습니다. 요청에는 store: false를 사용하지만 이것이 OpenAI 자체의 데이터 보관 정책까지 변경하는 것은 아닙니다.

현재 PokePilot은 AI 품질 개선을 위한 별도의 팀·분석 데이터셋을 수집하지 않습니다. 계정에 동기화된 기록은 이용자의 작업을 저장하기 위한 것이며 품질 개선 공유 프로그램에 사용되지 않습니다. 현재 품질 개선 공유 설정이나 관련 보상도 제공하지 않습니다.

분석 전 예상치 계산은 브라우저에서 진행되며 OpenAI에 분석을 요청하거나 팀을 저장하지 않습니다. 분석을 최종 확인하면 유료 요청 전에 팀을 저장합니다. 저장되는 분석 기록에는 결과와 소요 시간, 토큰 사용량, 추정 비용, 배틀 데이터 출처 정보가 포함될 수 있습니다.

AI 분석에는 로그인과 개인 OpenAI API 키 등록이 필요합니다. 팀 빌더와 대미지 계산기는 키 없이 이용할 수 있습니다. PokePilot은 키를 암호화하여 계정별 Cloudflare D1 데이터베이스에 저장합니다. 등록 후 브라우저에는 키를 보관하지 않고, 키를 다시 표시하지도 않습니다. 서버는 해당 키로 분석을 요청할 때에만 키를 복호화하여 OpenAI에 전달합니다. 이용 요금은 이용자 본인의 OpenAI 계정에 청구됩니다. 계정 설정에서 키를 삭제할 수 있으며 PokePilot 계정을 삭제해도 함께 삭제됩니다.

오남용 방지와 서버 캐시

  • Google 로그인은 무작위 Secure, HttpOnly, SameSite 세션 쿠키를 만듭니다. 세션의 서버 측 HMAC은 Cloudflare D1에 저장됩니다. 비활성 만료 기간은 30일이며, 잔여 기간이 7일 이하일 때 인증된 요청이 발생하면 로그인 시점부터 최대 90일 범위에서 연장됩니다. JavaScript에서는 세션 값을 읽을 수 없습니다. 만료된 세션은 접근 권한을 잃으며, 만료 시점에 저장 기록까지 즉시 삭제된다는 뜻은 아닙니다.
  • 요청 보호를 위해 서명된 익명 브라우저 식별자를 HttpOnly 쿠키로 저장합니다. 계정이나 프로필 정보는 포함하지 않으며 최대 1년간 유지될 수 있습니다.
  • 요청 IP는 요청 식별을 위해 키 기반 단방향 해시로 변환합니다. PokePilot 애플리케이션 캐시에는 원본 IP를 저장하지 않습니다.
  • 공개 서비스의 개인 키 분석은 Redis 공유 분석 캐시를 사용하지 않지만, 오남용과 서버 과부하를 막기 위한 계정·IP별 임시 요청 횟수와 계정·전체 동시 분석 제어 정보는 Redis에 유지합니다. 이는 일일 분석 크레딧이 아닙니다. 동시에 진행 중인 중복 요청은 같은 서버 프로세스에서 결과를 공유할 수 있습니다. 개발용 어댑터는 Upstash에 임시 요청 제어 데이터와 최대 24시간의 분석 캐시를 저장할 수 있습니다. D1의 계정 분석 기록은 이 캐시와 별개이며 최대 60개·1MB로 제한됩니다. 새 기록을 유지하는 과정에서 오래된 항목은 제거될 수 있습니다.

운영 지표

서비스 안정성과 자원 효율 개선을 위해 API 요청 횟수, HTTP 상태 코드, 응답 시간 구간, 분석 종류, 캐시 결과, 토큰 합계와 성공한 호출 및 사용량이 확인된 실패 호출의 추정 비용을 날짜별로 집계하여 약 90일 동안 보관합니다. 이 집계에는 계정 식별자, IP 주소, 팀 내용, 프롬프트나 분석 원문을 포함하지 않으며 개인의 탐색 활동을 추적하지 않습니다.

위 API 집계와 별도로 Cloudflare Web Analytics의 브라우저 스크립트로 페이지 방문과 성능을 측정합니다. 이 분석에는 쿠키나 로컬 저장소를 사용하지 않습니다. PokePilot은 이 측정 요청에 계정 식별자, 팀 내용, 분석 원문이나 API 키를 추가하지 않습니다. 측정 방식은 Cloudflare Web Analytics 안내에서 확인할 수 있습니다.

외부 서비스

Cloudflare는 앱, Worker API, 계정 세션 데이터베이스를 호스팅하고, Google은 선택형 로그인을 제공하며, OpenAI는 요청된 AI 분석을 처리하고, Upstash는 임시 요청·동시 분석 제어와 선택형 개발 분석 캐시를 제공합니다. 각 서비스는 자체 약관과 개인정보 처리방침에 따라 일반적인 요청 메타데이터를 처리할 수 있습니다. 게임 데이터는 PokeAPI, Pokemon Showdown, Pokemon Champions Battle Data 출처에서 불러오거나 파생됩니다.

광고

PokePilot은 현재 제3자 광고를 표시하지 않습니다. 광고 기능을 활성화하는 경우 Google AdSense를 통해 Google 제공 광고가 표시될 수 있습니다. Google과 그 파트너는 허용되고 동의를 받은 범위에서 개인 맞춤 광고를 포함한 광고 제공 및 측정을 위해 쿠키 또는 기타 로컬 저장소를 사용할 수 있습니다. 개인 맞춤 광고 설정은 Google 내 광고 센터에서 관리할 수 있습니다.

EEA, 영국, 스위스를 포함해 관련 법령상 필요한 지역의 방문자에게는 광고용 저장소나 개인 맞춤 광고를 활성화하기 전에 적절한 동의 선택 화면을 제공합니다.

삭제와 문의

PokePilot에서 저장 팀과 분석 기록을 삭제하거나 브라우저의 사이트 데이터를 지우면 로컬 데이터와 익명 쿠키를 제거할 수 있습니다. 로그아웃하면 이 브라우저의 동기화 팀과 분석 기록 사본은 삭제되지만, 계정의 동기화본은 유지됩니다. 계정을 삭제하면 서버의 동기화 팀, 분석 기록, 설정, 계정 기록, 활성 세션이 삭제되고 현재 브라우저의 팀과 분석 기록 사본도 지워집니다. 화면 설정은 일반 브라우저 설정으로 남습니다. 서버 운영 데이터는 자동 만료됩니다. 일반 피드백은 GitHub Issues, 보안 문제는 저장소의 보안 정책을 이용할 수 있습니다.