Privacy & Data Trust
This policy explains what data Snipset collects, where it is stored, when it leaves your device, and how long we keep it. Every fact below reflects how the product actually behaves.
Effective: September 2026
analytics or crash-report SDKs bundled with the apps
of snippet content stored on your device by default
raw blog analytics kept before anonymization
maximum retention for opt-in crash reports
Who This Policy Covers
PT BCB Academy Indonesia (we, us, our) publishes Snipset for desktop, Android, the browser extension, and this website.
This policy describes how we handle data across the Snipset desktop application, the Snipset Android application, the Snipset browser extension for Chrome and Firefox, this website and blog, and the company servers that power licensing, support, updates, the extension's sign-in and AI Chat, and crash analysis.
It is written against UU No. 27 Tahun 2022 tentang Pelindungan Data Pribadi (Indonesia's PDP Law) for users in Indonesia. If you use Snipset in the European Economic Area, the same practices apply, and we handle GDPR access, erasure, and portability requests through the contact at the end of this page.
The short version: your snippet content lives on your devices, not on our servers. The servers hold a small set of operational records (licenses, support tickets, QA reports, blog analytics, extension sign-in and usage records, and opt-in crash reports) described below, with the retention that applies to each. Content leaves your device for AI processing when you use the browser extension's optional AI Chat, or when you turn on Claude for a desktop feature in Settings; both are described below.
Where Every Kind of Data Lives
One table for the whole product family. If a row says your device, that data never touches our servers.
| Data | Where it lives | Leaves your device | Retention or control |
|---|---|---|---|
| Snippets, groups, settings | Local SQLite database on your device | No | Local backup and in-app delete |
| Clipboard history | Local SQLite database (on by default) | No, unless you share an item | Sensitive-content filter, retention caps, and an off switch |
| Keystroke buffer | Memory only, for trigger matching | No | Discarded the moment it is processed |
| Activity journal (optional) | Encrypted database on your device | No, unless you switch the daily journal to Claude | Delete-all control in the app |
| AI prompts and embeddings | Local Ollama on your device | No by default | Local models; Claude and web grounding off by default |
| Desktop AI requests sent to Claude (optional) | Sent through our server to Anthropic | Yes, only for features you switch to Claude in Settings (off by default) | Request text, plus up to 5 downscaled screenshots for the daily journal; Anthropic deletes API inputs and outputs within 30 days and does not train on them by default |
| License key and machine ID | Company license registry | Yes, at activation | Kept for the license lifetime; email erased on request |
| Support messages | Company ticket database | Yes, when you submit | Deleted after 730 days |
| QA reports | Company QA database | Yes, when you submit | Drafts 90 days, submitted 365 days |
| Blog views | Company blog analytics | Yes, when you read | Raw data anonymized after 30 days |
| Crash reports (optional) | Company database and storage | Yes, only if you opt in | Deleted after 90 days |
| Site cookies and preferences | Your browser | No | 30 days to 1 year, clearable anytime |
| Android app data | Local database on your phone | No, except license checks and updates | In-app controls and OS permissions |
| Web push notifications (optional) | Company database (endpoint, public keys, user agent, platform, watch preferences) | Yes, encrypted payload routed through your browser vendor's push service | Managed in profile settings, deleted on unsubscribe or data erasure request |
| Browser extension data (snippets, clipboard history, saved AI Chat conversations) | Local database in your browser | No | Clear it in the extension or remove the extension |
| Browser extension sign-in records | Company database (Google profile, account id, hashed token, daily counters) | Yes, when you sign in and while you stay signed in | Token valid 30 days and revoked on sign-out; no automatic purge, erased on request |
| Browser extension AI Chat messages (optional) | Not stored by us; sent to Anthropic's Claude, then to Cloudflare Workers AI after the daily limit, to produce the reply | Yes, when you send a message | Optional; Firefox asks for permission first |
What Stays on Your Computer
The desktop application is local-first. No account, no cloud sync, no analytics SDKs.
Local storage
Snippets, groups, settings, clipboard history, chat history, and embeddings live in a local SQLite database on your machine. The optional activity journal lives in a separate encrypted database, and secrets such as vault payloads use your operating system's credential store. Local backups are plain files on your disk, so treat copies you move to cloud drives the way you would treat any sensitive file.
Clipboard and keyboard
Clipboard history is on by default and stores what you copy, including the source application. A sensitive-content filter rejects passwords, keys, and tokens before they are written, per-application exclusions are honored, and retention caps prune old entries. The global keyboard hook exists only to match snippet triggers: keystrokes are evaluated in memory and discarded immediately, never logged or stored, and password fields are suppressed by default.
Local AI
By default, text generation and semantic embeddings run against your own local Ollama daemon, so prompts and vectors stay on your hardware. The desktop app sends a request to a cloud AI service only when you turn on Claude for that feature in Settings, and each feature is off by default; the browser extension's AI Chat is a separate feature, described under Browser Extension below. Web-search grounding is off by default; when you enable it, only your query is sent to the provider you choose.
Voice and speech
Speech-to-text runs on your device by default through the bundled local Whisper model, so dictation audio never leaves your computer. One provider is opt-in: if you choose Gemini Cloud and add your own Google API key, dictation audio is sent to Google for transcription and the local polishing step is skipped by default. Your key is stored in the operating system credential store, you can return to the offline engine at any time, and the app shows which engine produced each transcript. Recorded audio and voice history stay in your local app data with a configurable auto-purge, and read-aloud playback uses your system voices.
What Leaves the Device, and When
The apps have no scheduled telemetry. Below is the complete list of network calls the product makes.
Routine calls (licensing, updates, and the extension's account check)
- License activation sends the license key and a hashed machine ID, one time.
- A device check runs only to recover a license after a reinstall.
- The updater fetches the signed manifest at launch and every 4 hours; it can be turned off in Settings.
- The Android app verifies the license code during onboarding and checks the update manifest.
- The browser extension sends its sign-in token to our API every 6 hours to check the account and the daily AI Chat limit, while you are signed in.
Only with your permission or action
- Crash reports: only if you opt in, carrying the device ID and a sanitized stack trace.
- Telegram and Todoist: only if you link an account, only the items you choose.
- AI web-search grounding: only your query, only if you enable it.
- Pomodoro music player: only your search query to the company proxy.
- LAN sync: only between your devices on the local network, off by default.
- Inspect variables: only URLs you embed in a snippet, fetched when the snippet runs.
- Desktop AI on Claude: off by default; for each feature you switch to Claude in Settings, the request text (and for the daily journal only, up to 5 downscaled screenshots) goes through our server to Anthropic.
- Gemini dictation: only if you select Gemini as the speech engine, the recorded audio goes to Google's Gemini API with your own API key.
- Browser extension AI Chat: only the chat messages you send, to Anthropic's Claude first, then to Cloudflare Workers AI after the daily limit, through our API.
How Snipset Uses AI
A plain description of the AI features, where they run, and what stays on your device.
AI features in the app
Snipset includes optional AI features: generation through the {ai:...} text variable, the AI chat panel, semantic search and embeddings, smart shorthand, snippet generation, and the AI companion. You can use the snippet engine without enabling any of them. In the desktop app, each feature runs only when you turn it on and select a local model.
Where processing happens
In the desktop app, inference runs by default on your own machine through a local Ollama daemon, and nothing leaves your device. In Settings you can turn on Claude for a specific feature; each feature is off by default. When a feature is on, the text of that request (and, for the daily journal only, up to 5 downscaled screenshots) goes to Anthropic's Claude through our own server, a Cloudflare Worker, and daily limits apply. The API key stays on our server and is never in the app. Anthropic deletes API inputs and outputs within 30 days and does not use them to train models by default. AI-generated text is stored in your local database like any other snippet. The browser extension's AI Chat also uses Claude first and switches to Cloudflare Workers AI after the daily Claude limit, as described under Browser Extension below.
What needs the network
In the desktop app, two AI-related paths use the internet. Model files are downloaded through your local Ollama installation, and the optional web-search grounding sends only your query to the search provider you choose. Optional integrations such as Telegram, Todoist, and the video and search proxies are third-party services governed by their own terms. We do not control Ollama or the publishers of the models you download.
Accuracy and human oversight
AI output can be incomplete, outdated, or wrong. Review generated text before you rely on it or publish it. Snipset does not use AI to make automated decisions that produce legal or similarly significant effects about you, and you remain responsible for the content you choose to use.
Transparency and contact
We describe the AI features, data flows, and local-first architecture on this page and on the AI and Benchmark page. This follows the transparency expectations of the EU AI Act and Indonesia's AI ethics guidance. For any AI-related question, use the privacy contact at the end of this page.
What Stays on Your Phone
The Android app mirrors the desktop model: a local database, no analytics SDKs.
Snippets, clipboard entries, preferences, and usage history live in a local on-device database. Text expansion works through the Android Accessibility service, which reads only the currently focused editable field to detect triggers; it does not intercept hardware key events.
The app contacts our servers in exactly two situations: it sends your license code once during onboarding to verify it, and it checks the signed update manifest to offer new releases. The microphone permission is declared for future voice features; no recording code path ships in the current app, so nothing is recorded.
What the Browser Extension Keeps and Sends
Your snippets and clipboard history stay in your browser. Sign-in and AI Chat use our servers.
Stays in your browser
Snippets, groups, clipboard history, usage events, and saved AI Chat conversations live in your browser's local database. The extension does not use browser sync storage. Text you type in web pages is matched against your snippets inside your browser and is never sent to us. The extension asks for access to all sites so it can expand snippets wherever you type.
Sign-in
The extension needs a Google sign-in, which happens on this website. The website keeps the profile it receives from Google (email, display name, and avatar address), the same record the community forum uses, and adds an extension account record with an account id and your first and last connection times.
Sign-in token
The extension receives a random token. We store only its SHA-256 hash, together with your account id, the creation time, the expiry (30 days), the revocation time, and the first 200 characters of your browser's user agent. While you are signed in, the extension sends the token to our API every 6 hours to check your account and your daily AI Chat limit, even if you never use AI Chat. Signing out in the extension revokes the token on our server. Expired and revoked records are not purged automatically.
AI Chat
AI Chat is optional. When you send a message, the extension sends the conversation (at most 20 messages and 16,000 characters) and your token to our API Worker, which passes the text to Anthropic's Claude first and streams the reply back. After the daily Claude limit, the Worker sends it to Cloudflare Workers AI instead. Nothing from the page you are on is attached. Anthropic deletes API inputs and outputs within 30 days and does not use them to train models by default, and Cloudflare processes the text under its own terms. In Firefox, the extension asks for your permission before the first message.
What our Worker records about AI Chat
The Worker does not log tokens, prompts, or replies, and it stores no message text. To enforce daily limits it keeps counters per day: messages and model usage per account, per hashed IP address (SHA-256) for free accounts, and one shared free-tier counter. These counters have no automatic expiry; we erase them on a verified request made through the contact at the end of this page.
Your choices
Sign out in the extension to revoke the token. Removing the extension deletes the data kept in your browser. To have your account and usage records erased, use the privacy contact at the end of this page. In Firefox's built-in data collection consent, the sign-in token is declared as required data (authentication information) and AI Chat messages as optional data (personal communications).
Browsing, Cookies, and Forms
The marketing site collects as little as a static site can while still answering support requests.
Analytics
Analytics and conversion measurement on this site (Cloudflare Web Analytics, Google Analytics 4, and Meta Pixel) run only after you choose Accept All in the cookie banner. Until you grant consent, no analytics or marketing scripts load. Choosing Essential Only ensures no tracking scripts or advertising cookies are loaded.
Cookies and browser storage
We set three first-party cookies: language preference (30 days) and your cookie and analytics choices (1 year). Your theme lives in local storage, marketing attribution parameters live in session storage for the active visit only, and the QA self-assessment tool keeps its session token in your browser. Clearing cookies resets every choice.
Forms
The contact form collects your name, email, and message so we can reply; a copy is forwarded to our inbox through our email provider. The support flow verifies your license code first and then stores your ticket. Live-demo registration collects your name, email, and phone number and forwards them to our automation; it is not stored in our database. The download gate collects only your license code. There is no newsletter and no marketing use of form data.
The Small Set of Records We Hold
Only operational records reach us, only through the flows listed above.
License registry
When you activate, we store your license key, the owner name and email supplied at purchase, and one hashed machine identifier per activated computer. The identifier is derived from a one-way hash, so raw hardware details never reach us. These records support license recovery after a reinstall and stay for the life of the license; owner email and name are erased on a verified data-subject request.
Support tickets
Tickets contain whatever you write, plus an optional name and email. Contact-form submissions are also forwarded to our inbox by email. Tickets are deleted automatically after 730 days.
QA reports
Tester reports contain the identity you type (name, role, email, phone), your checklist answers, and your browser user agent. Drafts are deleted after 90 days and submitted reports after 365 days.
Blog analytics
Each blog view records the article, timestamp, and technical request details. Raw addresses and user agents are anonymized after 30 days, keeping only aggregate counts and dates.
Crash reports
Crash reports exist only if you opt in inside the app. Each report carries a random device identifier, app and OS version, and a sanitized message with a stack trace. Reports and any stored full traces are deleted after 90 days.
What we never log
Our servers do not log request bodies. Short-lived rate-limit records keyed by address expire within about a minute and are never used for profiling.
External Services We Use
No third party stores your snippet content. The services below handle site delivery, licensing, support, and optional integrations.
| Service | Role | Data it receives |
|---|---|---|
| Cloudflare | Site hosting, Workers (including the API that relays AI requests to Anthropic), database, bot protection, site analytics, Workers AI for the browser extension's AI Chat after the daily Claude limit | Platform request logs, captcha responses, aggregate site visits, AI requests passing through our Worker, AI Chat messages from the browser extension answered by Workers AI after the daily Claude limit, and daily AI usage counters without any text |
| Anthropic | Claude API for desktop AI features you turn on and for the browser extension's AI Chat, reached only through our Worker, which keeps the API key | Text of AI requests from desktop features you turned on (all off by default) and AI Chat messages from the browser extension until the daily Claude limit; for the daily journal only, up to 5 downscaled screenshots |
| GitHub | Release and update-manifest hosting | Installer downloads by visitors |
| SMTP2GO | Outbound website email: license code, contact notification, ticket/QA receipt, and live-demo confirmation | Recipient name and email, plus message content (license code, ticket or contact details, calendar invite) |
| Gmail | Inbox for replies and messages sent to our email address | Sender name, email, and message content of incoming mail |
| n8n | Live-demo registration automation | Live-demo name, email, and number |
| Telegram | Optional desktop app integration | Only messages you choose to share |
| Todoist | Optional task sync integration | Only tasks you sync |
| Web search providers | Optional AI grounding (DuckDuckGo, Tavily, Brave, SearXNG, TinyFish) | Your search query; TinyFish also receives the links of the top two results it returned, so it can read those pages |
| Google Fonts | Desktop app interface font | Standard font request when the app opens |
| Google Gemini API | Optional Gemini dictation transcription in the desktop app, using your own API key | Only the dictation audio you record while Gemini dictation is on |
Telegram, Todoist, and web-search integrations stay off unless you enable them and supply your own keys or tokens. When you enable web push notifications, your browser vendor's push service (Google FCM, Mozilla Autopush, Apple Web Push, or Microsoft) receives your device push endpoint and an encrypted notification payload.
Your Rights Over Your Data
Under Indonesia's UU No. 27 of 2022 on Personal Data Protection, you can request access, correction, and deletion of your personal data. Users in the European Economic Area receive the same handling for GDPR access, erasure, and portability requests through the contact below.
Request a copy or deletion
Email us from the address you used for your license, ticket, QA report, or community account. We export your records, then delete or anonymize your personal data, including web push subscriptions.
On-device and browser controls
Clipboard history can be turned off and capped, the activity journal has a delete-all button, backups are local files you own, web push permissions can be toggled in profile settings or your browser, and auto-updates and crash reporting can be switched off in Settings.
Site cookies
The cookie banner only stores your choice. Site analytics never runs until you pick Accept All, and you can clear cookies anytime to reset the choice.
How Long Each Record Lives
The same numbers our servers enforce automatically.
| Record | Rule |
|---|---|
| Support tickets | Deleted after 730 days |
| Submitted QA reports | Deleted after 365 days |
| QA drafts | Deleted after 90 days |
| Crash reports and stored traces | Deleted after 90 days |
| Blog analytics (raw address data) | Anonymized after 30 days |
| License records | Kept for the license lifetime; personal details erased on request |
Children's Privacy
Snipset is not directed at children under 13, and we do not knowingly collect their personal information.
Changes to This Policy
Material changes are posted on this page with a new effective date before they take effect.
Privacy Questions and Requests
For access, correction, deletion, or any privacy question, reach us directly.
- Email: iwan@snipset.belajarcarabelajar.com
- WhatsApp: +62 821-2926-7114
Related reading: Security & Trust Center, Subprocessors, and Data Processing Addendum
Straight Answers
The questions buyers, IT reviewers, and privacy-conscious teams ask us most.