Privacy Policy
VStudy Pro is built so that your coursework stays on your computer. This page explains the few situations in which information leaves it, who receives it, and how you stay in control.
On this page
Who we are
VStudy Pro is a desktop study app for macOS and Windows. It is developed and published by the project owner: legal name or entity to be confirmed, an independent project based in Taiwan. The source code is public at the VStudy Pro repository. In this page, “we” means that owner.
For the optional analytics and the optional newsletter described below, we decide what is collected and why, so we are responsible for that data. For everything else, such as your AI provider or your school, the provider or school is responsible for how it handles your data. AI providers, your school, and other services shows where that happens.
The short version
- Your documents, chats, notes, and study plans live on your computer. There is no VStudy account and no VStudy server that stores them.
- Analytics are optional and off by default. You choose at first launch and can change your mind at any time in Settings > Privacy. Every feature works the same either way.
- If you opt in, we receive usage information: which features you use, which AI provider and model you pick, token counts, errors, and so on. We never receive your questions, answers, documents, notes, or keystrokes.
- A random installation ID links those events together. It is not your name, your school login, or a hardware identifier. It is pseudonymous, which is not the same as anonymous.
- If you use AI, your prompt and reading context go to the provider you enabled. If you connect Moodle, the app talks to your school. Neither passes through us.
- The newsletter is separate. Its checkbox is unchecked by default, it needs a confirmation email, and the address is never mixed into analytics.
What stays on your device
VStudy Pro is local-first. These stay in the app’s data folder on your computer and are not sent to us, whether analytics is on or off:
- documents you import, and the converted copies the app makes from them;
- conversations and AI answers;
- study plans, reminders, notes, and settings;
- course content mirrored from your school, such as deadlines, announcements, grades, and files;
- the usage and cost history the app shows you.
Saved credentials are encrypted with your operating system’s secure storage (Keychain-backed on macOS, DPAPI on Windows). Credentials you choose to use for one session only stay in memory.
Not everything is encrypted. The app does not encrypt documents, Markdown files, or chats at rest. Protect your computer with an account password and disk encryption such as FileVault or BitLocker. A portable backup you export contains your study content in readable form and leaves out credentials, so treat it as private.
Settings > Privacy lists the network requests the app has made in the current session. Delete all data removes the app’s data folder. It does not remove original files you imported from elsewhere, backups you exported, sign-ins stored by AI command-line tools, or items in your operating system’s credential store. Read the data and network guide for details.
Optional analytics
VStudy Pro can send product analytics so that we can see how many installations are active, which features matter, and where the app fails. We ask once, at first launch. Declining never blocks, limits, or degrades any feature.
How it works
- Off until you opt in. Nothing is sent before you choose, and you can finish onboarding without opting in.
- Who receives it. PostHog (PostHog Inc.) processes the events for us in its US cloud region, at
us.i.posthog.com. - Installation ID. At first launch the app generates a random ID on your computer. It is not built from your hardware, name, school account, or email, and we do not try to recreate it if you delete it. It lets us recognize events from the same installation over time. Reinstalling or clearing the app’s data may create a new ID, one shared computer can look like one person, and one person on two computers looks like two.
- Pseudonymous, not anonymous. Because the ID is stable and can be combined with a school and detailed activity, we treat analytics data as personal data, even though it contains no name or email.
- Turning it off. Switch it off in Settings > Privacy. New events stop immediately, and events from the time it was off are not saved up and sent later.
- No automatic capture. Automatic click and keystroke capture and session replay are turned off in our PostHog setup.
What is collected
Every event carries a random event ID, a timestamp, your installation ID, the app version, your operating system family, and a session ID when the event belongs to a session. On top of that, the app sends only the kinds of information in this table.
| Area | What is sent |
|---|---|
| Installation and device | Operating system family (macOS or Windows) and a coarse version, app version, interface language, CPU architecture, coarse CPU-core, memory and screen-size buckets, the Electron version, and when the app version changes. First-seen and last-active times are derived from event timestamps. |
| Launches and sessions | When the app opens, closes, or updates. When a session starts and ends, how long it lasted, and how much of that time was active (app in front and recent interaction), idle, or in the background. Active time is summarized every few minutes. When the window comes to the front, loses focus, or is minimized. A session that ends in a crash or forced quit may be estimated. |
| Onboarding | How you heard about VStudy Pro, as a choice from a fixed list (with an optional more specific choice) or “Prefer not to say”. How long onboarding took. Two yes or no flags: whether you entered an email address and whether you opted in to updates. The address itself is never sent to analytics. |
| School | If you connect Moodle, the app matches your school’s Moodle site against a verified list we maintain. When it matches, we record the school’s short institution key and display name, that Moodle is connected, and how the school was determined (Moodle, chosen by you, or unknown). Later events may carry the institution key so we can report by school. If we cannot match the site, the school stays unknown. Disconnecting Moodle is recorded as an event. |
| Features and settings | Which screens and features you open, from a fixed list. When you choose an AI provider or model, change the reasoning effort, the language, or the theme. |
| AI requests | Provider (for example Anthropic or OpenAI), model, reasoning-effort setting, how the provider is connected (API key, command-line tool, or other), the feature used (chat, explain a selection, summarize, quiz, and so on), where the context came from (direct chat, document, selected text), a random request ID and conversation ID, status (success, failed, cancelled), error category, response time, token counts when the provider reports them, and sometimes an estimated cost. When a count is unknown it stays unknown rather than becoming zero. Never the prompt or the answer. |
| Questions | For each question you ask: a broad category (for example concept explanation or calculation), a broad subject area (for example mathematics or humanities), where it came from (typed, selected text, document chat), its length in characters, its turn number, whether it is a follow-up, and whether a document was attached. “Unknown” is used when the app cannot tell. Also whether you regenerate an answer, clear a conversation, or rate an answer positive or negative. Never the question text. |
| Documents | That you imported, opened, closed, searched, highlighted, annotated, or exported a document, with the file type (for example PDF), how it was imported, how long you actively read, how many highlights and notes you made, the length of a text selection, and the export format. Never the title, file name, location, content, notes, or search words. |
| Study tools | Use of quizzes, flashcards, summaries, mistake review, study sessions, and notes, as they exist in your version: counts, types, durations, whether a quiz answer was correct, and aggregate scores. Never the quiz question or your answer. |
| Errors and performance | App errors, crashes, failed document opens, failed AI provider connections, timeouts, and failed updates, reduced to sanitized categories together with the feature and app version. Startup time and a coarse memory figure. Raw error traces, file paths, prompts, and keys are removed before anything is sent. |
How we use it
We use analytics to count active and returning installations, see which versions and platforms are in use, learn how people find VStudy Pro, understand which AI providers, models, and features matter, find and fix errors and slow operations, and report usage by institution. We do not sell it, use it for advertising, or use it to target you.
Because a school combined with a stable ID and detailed activity could single someone out in a small group, we report by institution in aggregate, leave out very small groups, and limit who can see the history of a single installation.
What we never collect
Whether analytics is on or off, the app does not send us:
- your questions, prompts, AI answers, or conversation transcripts;
- documents, page text, selected or highlighted passages, notes, quiz answers, titles, file names, folder paths, or search words;
- keystrokes, mouse movements, screenshots, screen recordings, or session replay;
- API keys, passwords, access tokens, or Moodle sign-in details;
- your name, student number, Moodle user ID, or Moodle website address;
- your email address, in analytics (the newsletter is separate, see Optional product-update emails);
- hardware identifiers, device fingerprints, host names, or operating system user names;
- your location. IP-based location lookup (GeoIP) is turned off, and the app does not use GPS.
One honest note: any internet connection reveals an IP address to the server it reaches, including PostHog’s. We do not record it as an event property and we do not use it to look up where you are.
If we ever offered a way to share a real question with us to help fix a problem, it would be a separate, explicit action with its own notice and controls. It would never be switched on by the analytics setting.
AI providers, your school, and other services
Some features work by contacting another party. When that happens your data goes to that party, not to us, and its own terms and privacy policy apply. We cannot see, correct, or delete what you send them.
| Service | When | What it receives |
|---|---|---|
| AI provider through an API key (Anthropic, OpenAI, or an OpenAI-compatible endpoint you set up) | When you ask a question with that provider enabled | Your message, the conversation history, document details, and the selected text, or an outline and opening excerpt of the document when nothing is selected. Earlier selections may stay in the history that is sent. Your key authenticates the request. |
| AI command-line tool you enable (Claude Code, Codex, Antigravity) | When you use that tool through VStudy Pro | The same prompt, passed to the tool, which signs in with your own account. Such tools may contact their own chat, model-discovery, verification, quota, or telemetry services. VStudy Pro asks Claude Code to turn off telemetry and nonessential traffic, which is not a promise that no other request is made. |
| Your school’s Moodle | When you connect, sync, or open a school page | Your school sign-in and requests for your courses, deadlines, announcements, grades, and files. The school sees this as activity on your account. |
| PyPI and GitHub | Only if you agree to set up the optional document converter | Python packages come from PyPI, and the uv tool may download Python from GitHub. These services see ordinary connection details such as your IP address. |
| AI tool vendors | When you check for or install an AI tool update. Background checks are a separate setting that is off by default. | Ordinary request details for the vendor’s update or download address. |
| PostHog | Only if you opt in to analytics | The events listed under Optional analytics. |
| Resend | Only if you opt in to product updates | Your email address, as described under Optional product-update emails. |
| Websites you open from the app | Only after you confirm in a dialog | Whatever the site you open receives from your browser. |
AI providers
VStudy Pro includes no AI model and no AI subscription. The prompt it builds can contain passages from your readings and, for course chat, parts of your coursework. Send only material you are comfortable giving that provider, and check whether your school’s rules allow it. Providers may keep prompts according to their own policies.
Your school
Connecting Moodle sends your sign-in and requests to your school, which handles them under its own policies. Course content that VStudy Pro mirrors to your computer stays there. We do not receive it, and your school does not receive analytics from us.
Optional product-update emails
During onboarding you can enter an email address and tick a separate box to receive product updates.
- Opt-in only. The box is unchecked by default. Typing an address does not subscribe you. If you do not tick the box, we do not register your address for updates.
- Confirmation. We send a confirmation email first, and you are subscribed only after you confirm.
- Where it goes. The address and a record of when and how you agreed go to a small VStudy service and to Resend, the email delivery provider. It is kept apart from analytics and is never sent to PostHog. Analytics only learns two yes or no facts: that you entered an address and that you opted in.
- Your control. Every email has a one-click unsubscribe link. Unsubscribing, or turning analytics on or off, does not affect the other.
- Purpose. We use the address only to send updates about VStudy Pro. We do not sell it or pass it on for other companies’ marketing.
This website
This website has no analytics, no advertising or tracking scripts, no cookies, no third-party fonts, and no embedded third-party content. The documentation search runs in your browser, and your search words are not sent anywhere.
It keeps two small items in your browser, on your device only: your light or dark choice if you pick one, in local storage under vstudy-scheme, and a note in session storage that the opening animation has played. They are not cookies, are never sent to us, and only keep the page looking the way you chose.
The site is hosted on GitHub Pages, and installers are served from GitHub Releases. GitHub receives technical details such as your IP address when you load a page or download a file, under GitHub’s own privacy statement. We see only the aggregate figures GitHub shows maintainers, such as how often a release file was downloaded. Links to other sites, for example the Moodle directory we link to so you can check your school, leave this website.
Legal basis and consent
Our basis for the optional analytics and for the product-update emails is your consent. We ask for each separately, before any event or address is sent. Consent is voluntary: refusing it changes nothing in the app. You can withdraw it at any time. Withdrawing stops new collection immediately and does not make earlier processing unlawful.
Everything else the app does with your documents, chats, and plans happens on your own computer. We do not receive that data, so we do not process it.
We are based in Taiwan, and we treat Taiwan’s Personal Data Protection Act as the baseline for this page. We have tried to tell you what the Act asks a collector to tell you: who we are, why we collect data and what kinds (analytics and what we never collect), how long we keep it, who receives it, what rights you have and how to use them, and that declining affects nothing in the app. If you live in the EU, the UK, Japan, or elsewhere, your local law may add rights. We apply the rights in this page to everyone, wherever they live. This page does not claim any certification or formal compliance status.
How long we keep data
These periods are proposals. The project owner must confirm them before this page is relied on.
| Data | How long |
|---|---|
| Analytics events and the installation profile in PostHog | 12 months from the event date, then deleted |
| Aggregate reports that no longer identify an installation, such as totals by month or by school | May be kept longer |
| A confirmed newsletter subscription (address and consent record) | Until you unsubscribe. Then the address is removed within 30 days, keeping only what is needed to honor your opt-out. |
| A newsletter sign-up you never confirmed | 7 days |
| Data on your device | Until you delete it, with Delete all data or by removing the files |
| Data held by AI providers, your school, GitHub, and the other services in AI providers, your school, and other services | Set by those parties |
Your rights and choices
In the app
Turn analytics off in Settings > Privacy, unsubscribe from any update email, inspect the session’s network requests, export a portable backup, and delete all local data. None of these needs us.
Data we hold
For analytics and newsletter data, you can ask us to:
- tell you whether we hold data about your installation or address, and give you a copy;
- correct data that is wrong;
- delete it;
- stop collecting, processing, or using it, and honor your withdrawal of consent;
- where the law gives you the right, restrict it, object to it, or provide it in a portable format.
To find your events we need your installation ID, because analytics holds no name or email. The app should display this ID in Settings > Privacy. The project owner must confirm that it does. We may ask for a step inside the app that shows the ID belongs to you before we share or delete anything. We aim to answer within 30 days.
Resetting does not delete. Resetting or losing the installation ID on your computer does not delete events already sent under it. They remain under the old ID until deleted. To have them deleted, send us the old ID before you reset it.
You may also complain to the data protection authority where you live. See Contact for how to reach us.
Students, children, and schools
VStudy Pro is for students, and some students are minors. The analytics and newsletter choices rely on consent. If you are younger than the age at which you can give that consent yourself where you live, ask a parent or guardian to decide for you. The app works fully without either. We do not knowingly keep analytics or newsletter data from a child without the consent that the law requires, and we will delete it if we learn of it.
VStudy Pro is not provided by, or affiliated with, any school, including the schools in its directory. We do not share analytics from individual installations with schools, and school-level reports leave out very small groups.
International transfers
If you opt in to analytics, your events are sent to PostHog’s US cloud region, so they are processed and stored in the United States, where data protection rules may differ from those where you live. Resend, AI providers, and schools may also process data in other countries. If you would rather keep your data where you are, leave analytics and the newsletter off. The app’s local features need neither.
Security
The app is designed to send only events and fields from a fixed allow-list, so anything unexpected, such as text content, is rejected before sending. Analytics and newsletter data are protected by the account security of the few people who maintain VStudy Pro, and only they can reach it. Saved credentials are encrypted on your device. See the security model in the repository for how the app protects itself.
No system is perfectly secure. If a breach of analytics or newsletter data puts you at risk, we will tell the people affected as the law requires.
Changes to this policy
When we change this policy we update this page and its date. Earlier versions remain in the repository’s history. If a change would collect a new kind of data, we will ask for your consent again instead of relying on your earlier choice. The app needs a consent version to do this. The project owner must confirm that it will.
Contact
For a privacy question or request, write to [email protected].
You can also open an issue in the repository’s issue tracker and ask for a private way to continue. Issues are public, so do not post your installation ID, email address, or any documents there.