귀띔(NotiPeek) 개인정보처리방침
최종 업데이트: 2026년 6월 10일
1. 개요
귀띔(이하 "앱")은 카카오톡 등 사용자의 안드로이드 기기에 도착하는 알림을 한곳에 모아 보여주는 알림 미리보기 도구입니다. 기본 기능(알림 수신·발신자별 분류·이미지 미리보기·검색)은 모두 사용자 기기 내에서만 동작하며, 별도의 회원가입·로그인이 없습니다. Pro 구독을 시작하면 AI 비서·AI 요약·자연어 검색 기능을 위해 알림 데이터가 외부 서버로 전송·저장됩니다(자세한 내용은 아래 2~5절). 본 방침은 어떤 정보를 누가, 어떤 목적으로, 어디에, 얼마나 오래 처리하는지와 사용자의 권리를 설명합니다.
2. 처리하는 정보의 종류
| 유형 | 저장 위치 | 목적 |
|---|---|---|
| 알림 본문(텍스트), 발신자/대화방 이름, 첨부 이미지 | 사용자 기기 내(앱 전용 저장소) | 대화방별 그룹화·미리보기·검색 |
| 모니터링 앱 목록, 마스킹 규칙, 보관 기간 등 사용자 설정 | 사용자 기기 내 | 사용자 선호 반영 |
| Google Play 구매 토큰 | 앱 백엔드(Vercel) + Supabase | Pro 구독 유효성 검증, 구독 상태 동기화 |
| (Pro 활성 시) 알림 메시지 본문, 발신자 이름, 대화방 이름, 사진 첨부 여부, 수신 시각, 그리고 이를 정제한 검색 보강 텍스트(retrieval_text) | OpenAI(임베딩·AI 비서·요약·자연어 검색 처리) + Supabase Postgres(pgvector 영구 인덱스) | AI 비서(자연어 알림 질문), AI 대화방 요약, 자연어 검색 |
| (Pro 활성 시) 카드사 알림에서 자동 추출한 결제 정보(카드사·금액·가맹점·시각·승인/취소 구분) | Supabase Postgres(payment_facts 테이블) | "어제 지출", "이번 달 카드사별 사용액" 같은 결제 질문에 정확한 합산 답변 |
| 월·일 단위 AI 기능 호출 횟수(개인 식별 없음) | 앱 백엔드(Supabase) | 사용량 한도 적용 |
앱은 회원가입·로그인 절차가 없습니다. 사용자 식별은 Google Play 구매 토큰만으로 이루어지며, 이메일·이름·전화번호 등 직접 식별 정보를 수집하지 않습니다. 사진(이미지) 자체는 어떤 경우에도 외부 서버로 전송하지 않습니다 — 사진의 "첨부 여부"만 메타데이터로 기록됩니다.
3. 알림 접근 권한(Notification Listener)
앱은 안드로이드 시스템의 NotificationListenerService를 통해
기기에 도착하는 알림을 수신합니다. 수신된 알림은 기본적으로
기기 내에만 저장됩니다. Pro 구독이 활성화된 경우에 한해,
백그라운드에서 알림 본문이 자동으로 임베딩·인덱싱되어 OpenAI(AI 분석
목적)와 Supabase(영구 인덱스 저장 목적)로 전송됩니다. 구독을 시작하기
전 앱 내 동의 화면을 통해 이 흐름을 명시적으로 안내하고 동의를 받습니다.
알림 접근 권한은 안드로이드 설정의 "알림에 대한 액세스" 메뉴에서 언제든지 회수할 수 있습니다. 권한이 회수되면 즉시 알림 수신이 중단됩니다.
알림 통계 공유 카드는 사용자 기기에서 직접 PNG 이미지로 생성되며, 외부 서버로 전송되지 않습니다. 시스템 공유 시트를 통해 사용자가 직접 선택한 앱(카톡·인스타·메일 등)으로만 전달됩니다. 카드에 포함되는 Top 5 발신자 이름은 기본값(익명: "친구 1·2·3")으로 마스킹되며, 사용자가 미리보기 화면에서 명시적으로 "실명 그대로"를 선택해야 발신자 실명이 노출됩니다.
4. 제3자 제공 및 처리 위탁
- OpenAI (Pro 활성 시): 알림 본문이 임베딩 생성·AI 비서 답변·요약 생성·자연어 검색 처리를 위해 OpenAI API로 전송됩니다. OpenAI는 API로 전송된 데이터를 모델 학습에 사용하지 않는다고 명시하고 있습니다. OpenAI의 자체 보관 정책은 OpenAI API 약관을 따릅니다.
- Supabase (Pro 활성 시): 알림 본문·발신자·대화방·시각·임베딩 벡터·검색 보강 텍스트 (retrieval_text)·자동 추출된 결제 정보가 Supabase Postgres에 영구 인덱스로 저장됩니다. 이 인덱스는 같은 구매 토큰(=사용자)의 데이터만 조회할 수 있도록 격리되며, Pro 구독 종료(해지·만료) 시 자동으로 삭제됩니다(아래 5절). AI 비서 질문·답변은 캐시하지 않으며, 매 요청마다 현재 시각 기준 최신 알림 인덱스로 새로 검색·생성합니다.
- Google Play: 구독 결제 및 구매 토큰 검증은 Google Play Billing 시스템과 Google Play Developer API를 통해 이루어집니다.
- Vercel: 앱 백엔드(영수증 검증·AI 요청 중계·사용량 카운터)는 Vercel에서 실행 됩니다. Vercel은 요청 처리 외 사용자 데이터를 영구 저장하지 않습니다.
위 외의 어떠한 제3자에게도 사용자 데이터를 제공·판매하지 않습니다. 광고 네트워크·외부 분석 SDK는 사용하지 않습니다.
5. 보관 기간
- 기기 내 알림: 사용자가 설정에서 지정한 보관 기간(기본 30일). 앱을 삭제하거나 알림 데이터를 직접 지우면 즉시 함께 삭제되며, 같은 시점에 클라우드 인덱스에서도 해당 알림이 함께 삭제됩니다.
- OpenAI에 전송된 데이터: OpenAI의 API 약관 및 보관 정책을 따릅니다(NotiPeek 백엔드에서는 임베딩 결과만 저장하고 OpenAI 요청 본문 자체는 응답 후 보관하지 않습니다).
- Supabase의 알림 인덱스(본문·임베딩·검색 보강 텍스트·결제 정보): Pro 구독이 활성인 동안만 보관됩니다. Pro를 해지(또는 자동 만료)하고 다음 결제일이 지나면 백엔드가 Google Play로 구독 상태를 재확인한 뒤 해당 구매 토큰에 속한 모든 인덱스 데이터를 자동 삭제합니다.
- AI 비서 질문·답변: 캐시 또는 별도 저장 없음. 매 요청마다 즉시 처리되어 응답 후 백엔드 측에 남지 않습니다.
- 구매 토큰 및 구독 상태: 구독 이력(활성/해지/만료) 감사를 위해 보관, 사용자 요청 시 삭제.
- AI 호출 카운터: 매월 1일에 초기화.
6. 사용자의 권리 및 환불
- 앱 삭제 또는 알림 접근 권한 회수로 기기 내 데이터 처리를 즉시 중단할 수 있습니다.
- Google Play 정기 결제 페이지에서 구독을 언제든지 취소할 수 있습니다. 해지 후 결제한 기간이 만료되면 Supabase에 저장된 알림 인덱스가 자동 삭제됩니다.
- 구독 중에도 백엔드에 저장된 인덱스 데이터의 열람·즉시 삭제는 아래 연락처로 요청할 수 있습니다.
- 환불: 구독 결제는 Google Play를 통해 이루어지므로, 환불도 Google Play의 환불 정책을 따릅니다. 구매 후 48시간 이내에는 Google Play 스토어 앱(또는 play.google.com/store/account/orderhistory)에서 직접 환불을 요청할 수 있습니다. 48시간이 지난 건 또는 기타 사유에 의한 환불은 Google Play 고객 지원의 정책에 따라 처리되며, 필요한 경우 아래 연락처로 문의해 주시면 개발자가 Google Play 측에 환불 검토를 요청할 수 있습니다. 본 앱은 결제 대금을 직접 수령·환불할 수 있는 권한이 없습니다.
7. 안전성 확보 조치
- 앱·OpenAI·Supabase 사이의 모든 통신은 HTTPS(TLS)로만 이루어집니다.
- Supabase는 서비스 역할 키로만 접근하며, 외부에 노출되지 않습니다. 모든 인덱스 쿼리는 구매 토큰 단위로 격리됩니다.
- Pro 해지·만료 시의 자동 삭제는 백엔드가 Google Play Developer API로 구독 상태를 재확인한 뒤에만 실행됩니다.
- 인덱스에 저장되는 데이터는 사용자 본인의 알림 본문이며, 본 서비스는 사용자 데이터를 AI 모델 학습에 사용하지 않습니다.
8. 만 14세 미만 아동
본 앱은 만 14세 미만 아동을 대상으로 하지 않으며, 14세 미만 아동의 개인정보를 의도적으로 수집하지 않습니다.
9. 방침 변경
본 방침이 변경되는 경우 본 페이지의 "최종 업데이트" 일자가 갱신됩니다. 중요한 변경 사항은 앱 내 공지를 통해 안내할 수 있습니다.
10. 연락처 및 사업자 정보
- 운영 주체: 개인 개발자 (사업자 등록 없음)
- 문의 및 권리 행사 요청: duji940923@gmail.com
- 이용약관: /terms
NotiPeek Privacy Policy
Last updated: June 10, 2026
1. Overview
NotiPeek ("the app") is a notification preview tool that aggregates notifications from messenger apps (e.g. KakaoTalk) on the user's Android device. Core functionality (notification capture, per-sender grouping, image preview, search) runs entirely on-device with no account or login. When the user starts a Pro subscription, notification data is also transmitted to and stored on external servers to power AI assistant, AI summary, and natural-language search features (details in Sections 2–5). This policy describes what information is processed, by whom, for which purpose, where it is stored, for how long, and the rights you have.
2. Types of information processed
| Type | Storage | Purpose |
|---|---|---|
| Notification body, sender / room name, attached images | On-device (app-private storage) | Per-room grouping, preview, search |
| User settings (monitored apps, masking, retention) | On-device | Apply user preferences |
| Google Play purchase token | App backend (Vercel) + Supabase | Validate Pro subscription |
| (Pro active) Notification body, sender name, room name, has-image flag, received timestamp, plus a refined retrieval text (retrieval_text) | OpenAI (embedding / AI assistant / summary / search processing) + Supabase Postgres (persistent pgvector index) | AI assistant (natural-language Q&A), AI conversation summary, natural-language search |
| (Pro active) Auto-extracted payment facts from card alerts (issuer, amount, merchant, timestamp, approval/cancel) | Supabase Postgres (payment_facts table) | Accurate aggregation for spend-related questions (e.g. "yesterday's spending") |
| Monthly / daily AI call counters (no PII) | App backend (Supabase) | Enforce usage quotas |
The app has no account or login. Users are identified solely by their Google Play purchase token; no email, name, or phone number is collected. Image attachments themselves are never sent to any external server — only an "has image" boolean is recorded as metadata.
3. Notification Listener access
The app reads notifications via Android's
NotificationListenerService. Received notifications are
kept on-device by default. While a Pro subscription is
active, notification bodies are automatically embedded and indexed in
the background, and transmitted to OpenAI (for AI processing) and
Supabase (for persistent index storage). The app surfaces an explicit
in-app consent screen disclosing this flow before the user starts a
subscription.
Notification-listener access can be revoked at any time from the Android system "Notification access" settings. Reception stops immediately when access is revoked.
Notification stats share cards are generated on the user's device as PNG images and are never sent to any external server. They are handed off only to the app the user picks from the system share sheet (KakaoTalk, Instagram, mail, etc.). The Top 5 sender names embedded in the card are anonymised by default ("Friend 1·2·3"); real names are revealed only when the user explicitly selects "Show real names" on the preview screen.
4. Third parties
- OpenAI (when Pro is active): Notification bodies are transmitted to the OpenAI API for embedding generation, AI assistant answers, summarisation, and natural-language search. OpenAI states that API data is not used to train models. OpenAI's own retention follows its API terms.
- Supabase (when Pro is active): Notification body, sender, room, timestamp, embedding vectors, refined retrieval text (retrieval_text), and auto-extracted payment facts are stored in Supabase Postgres as a persistent index. The index is partitioned per purchase token so each user only sees their own data, and is automatically purged when the Pro subscription ends (cancellation or expiry; see Section 5). AI assistant questions and answers are not cached — each request is processed against the current notification index in real time so freshly arrived notifications are always reflected.
- Google Play: Subscription billing and purchase token validation are handled through Google Play Billing and the Google Play Developer API.
- Vercel: The app backend (receipt validation, AI request relay, usage counters) runs on Vercel. Vercel does not persistently store user data beyond the in-flight request.
The app does not sell user data or share it with any other party. No advertising networks or external analytics SDKs are used.
5. Retention
- On-device notifications: kept for the retention period configured in settings (default 30 days). Deleting the app or wiping notification data locally removes them immediately and also triggers deletion of the matching rows in the cloud index.
- Data sent to OpenAI: follows OpenAI's API terms and retention policy. The NotiPeek backend stores the resulting embeddings but does not retain the OpenAI request bodies after the response.
- Supabase cloud index (bodies, embeddings, retrieval text, payment facts): retained only while the Pro subscription is active. Once Pro is cancelled (or expires) and the paid period ends, the backend re-confirms the subscription status with Google Play and then automatically deletes every index row tied to that purchase token.
- AI assistant questions and answers: not cached or persisted. Each request is processed in real time; nothing related to the chat is kept on the backend after the response is returned.
- Purchase token and entitlement state: retained as a subscription history audit trail; deleted on user request.
- AI call counters: reset on the first day of each month.
6. Your rights and refunds
- Uninstalling the app or revoking notification-listener access stops on-device processing immediately.
- You can cancel your subscription at any time from the Google Play subscription page. Once the paid period ends after cancellation, the cloud index tied to your purchase token is automatically deleted.
- You can also request access to or immediate deletion of the cloud-indexed data while still subscribed by contacting us below.
- Refunds: Because subscription payments are processed by Google Play, refunds follow Google Play's refund policy. Within 48 hours of purchase, you can request a refund directly through the Google Play Store app (or at play.google.com/store/account/orderhistory). After 48 hours, or for other refund cases, the request is handled under Google Play customer-support policy; if needed, contact us below and the developer can forward the request to Google Play for review. The app itself has no ability to directly collect or refund payments.
7. Safeguards
- All traffic between the app, OpenAI, and Supabase uses HTTPS (TLS).
- Supabase is accessed only with the service-role key, which is never exposed to clients. All index queries are partitioned per purchase token.
- Automatic deletion on Pro cancellation / expiry only proceeds after the backend re-verifies the subscription state via the Google Play Developer API.
- The indexed data consists of the user's own notification bodies. NotiPeek does not use user data to train AI models.
8. Children under 14
The app is not directed to children under 14, and does not knowingly collect personal information from children under 14.
9. Changes to this policy
If this policy changes, the "Last updated" date above will be revised. Material changes may be announced in-app.
10. Contact and operator
- Operator: Individual developer (no registered business entity)
- Inquiries and rights requests: duji940923@gmail.com
- Terms of Service: /terms