Effective date: 2026-10-28
This policy explains what personal data FormulaCamp (formulacamp.com) collects, why, and what rights you have. We try to collect as little as possible.
You can learn without an account. If account services are configured and you choose to sign in with Google, your learning progress is also synchronized to your account so it is available across devices.
1. Who is responsible (controller)
Yerlan Darzhanov, Kazakhstan, is the controller of your personal data. Contact: support@formulacamp.com.
2. What data we process
Without an account: your progress, answers and similar learning data are stored only in your browser (localStorage, see section 8). We do not receive them. We receive the limited anonymous usage statistics described below only if you accept them.
First-party anonymous usage statistics: analytics is off by default. If you accept it in the privacy banner and our API is configured, the Service sends us events such as a page view, lesson start, solved task, completed lesson, pricing view, checkout click, or a mock exam start or submission (with the exam id, score and pass/fail). Each event contains the page path, language, referring host or utm_source, mobile/desktop category, event-specific non-personal labels (for example a lesson id), and a random anonymous id stored in localStorage. We do not use analytics cookies. We do not send or store your IP address, full User-Agent, account or user id, email, session token, full referrer URL, formulas, cell values, answers, filenames or anything you type. Analytics is not sent when Global Privacy Control or Do Not Track is enabled. You can change your choice at any time through Privacy settings in the footer; withdrawing consent deletes the analytics id from your browser and stops new events.
If you create an account by signing in with Google:
| Data | Notes |
|---|---|
| Random user id | Generated by us to identify your account |
| Google account identifier ("sub") | A unique id from Google sign-in. We do not store your name or email |
| Progress data | Lesson work and completion, quiz answers and mock exam attempts, synchronized from local storage |
| Subscription status | Whether you have Pro, and which plan |
| Paddle customer id and subscription id | To link your account to your purchase |
| Session records | A hashed session token and its expiry, so you stay signed in (up to 60 days) |
We do not store your name, email address or payment card data. Payment data, and the email address used for receipts, are handled by Paddle.
Technical data: our API server (used only once accounts or Pro are available) writes application logs with the request method, path, status and timing; they contain no IP address, name or account identifier. Our reverse proxy keeps no access log. For abuse protection the API server keeps short-lived rate-limit counters per IP address in memory. The formula generator is available only to signed-in paid subscribers and applies its per-minute limit per account, in memory only; it does not store the prompt. The static website is delivered by Cloudflare, which, like any web host, processes your IP address and request details to serve pages and keeps its own technical logs (see section 4). See retention below.
AI hints (Pro, when available; optional, only when you press the hint button): to generate a hint we send the lesson title, the task text, the checker message, the cell address, your formula and the values or formulas of nearby cells to our AI provider, DeepSeek (Hangzhou DeepSeek Artificial Intelligence Co., Ltd., China). The text is sent only to generate the answer and is not stored by us; the provider may process it outside your country (see section on international transfers). We do not send your user id, Google id, name or email. We keep only counters (how many hints you used per day, for which lesson and task, and the total daily cost) and do not store the text we send or the hint we receive. AI hints are generated by an AI model and can be wrong.
AI formula generator (optional, only when you submit the form): we send the description, pasted formula, column names and sample values you provide to DeepSeek (Hangzhou DeepSeek Artificial Intelligence Co., Ltd., China). The provider returns a formula, explanation and example dataset. The request is used only to generate the answer; the provider may process it outside your country. We do not store the request or response. It is available only to signed-in Pro and Pro + Exams subscribers. We keep only aggregate daily cost counters. Do not submit confidential or personal data. AI-generated formulas can be wrong and must be checked in your workbook.
Before the first AI hint or formula-generator request, we show a one-time notice naming DeepSeek (Hangzhou DeepSeek Artificial Intelligence Co., Ltd., China), explaining the international processing and that we do not store the request text. No request is sent if you cancel. We remember only that you acknowledged the current version of this notice.
Files you open: .xlsx files you work with in the browser are processed locally and are not uploaded to us.
3. Why we use data and our legal bases (GDPR)
| Purpose | Legal basis |
|---|---|
| Provide your account, sign-in and progress sync | Contract (Art. 6(1)(b)) |
| Manage your subscription and access to Pro | Contract (Art. 6(1)(b)) |
| Save your progress and preferences in your browser | Strictly necessary for the feature you use (no consent needed under ePrivacy rules) |
| Keep the Service secure, prevent abuse, fix errors (logs, rate limiting) | Legitimate interests (Art. 6(1)(f)) |
| Comply with legal and tax obligations | Legal obligation (Art. 6(1)(c)) |
| Run first-party, cookieless aggregate usage analytics | Consent (Art. 6(1)(a)), which you can withdraw at any time |
| Show personalised ads, if ever enabled | Consent (Art. 6(1)(a)), which you can withdraw at any time |
Providing account data is necessary to have an account and Pro; without it we cannot provide them. You can use the free lessons without providing any.
4. Who receives data (processors and partners)
- Google — sign-in (Google Identity). The Google sign-in script is loaded only when you choose to sign in. Google acts under its own privacy policy for your Google account.
- Paddle.com — Merchant of Record: payments, taxes, invoices, receipts, fraud prevention. Paddle is an independent controller for the payment data it collects; see Paddle's privacy policy.
- DeepSeek (Hangzhou DeepSeek Artificial Intelligence Co., Ltd., China) — AI hints and the formula generator (processor), when available. Only the content needed for the request is sent (the hint context or the formula request), with no account identifiers, and only when you request the feature. We do not store these requests or the answers; the provider handles them under its own terms and may process them outside your country.
- Hetzner — hosting of our API server and database in the EU (Germany/Finland), when accounts are available.
- Cloudflare — delivers the static website (we deploy it to Cloudflare Pages) and processes technical data such as your IP address and request details to do so.
- If enabled in the future: advertising and analytics providers, only with your consent. We will list them here before using them.
We do not sell your personal data.
These first-party product events go directly to our own API and database hosted by Hetzner and are not sent to a third-party analytics service.
5. International transfers
Our API server and database are in the EU. Yerlan Darzhanov is based in Kazakhstan, so access to data by us from there is also a transfer outside the EEA/UK. Google, Paddle, DeepSeek (Hangzhou DeepSeek Artificial Intelligence Co., Ltd., China) (AI hints and the formula generator) and the CDN provider may process data outside your country, including outside the EEA or UK. Where this happens we rely on appropriate safeguards such as adequacy decisions or Standard Contractual Clauses. Contact us for details.
6. How long we keep data
| Data | Retention |
|---|---|
| Account data (user id, Google id, progress, subscription ids) (when accounts are available) | Until you delete your account, or until it has been inactive for 24 months (no sign-in), after which it is deleted. We hold no email address for you, so we cannot send a notice; signing in once keeps the account |
| Sign-in sessions | Up to 60 days; at most 10 active sessions per account; expired sessions are purged |
| AI hint/formula-generator requests and AI responses | Not stored by us (retention on our side: none). Only usage counters (user id, day, lesson/task where applicable, count) for AI hints and aggregate daily cost totals are kept for up to 3 days, or until you delete your account |
| Application logs (no IP address or account identifier) | Kept in size-limited rotating files on the server, so old entries are overwritten: usually a few days to a couple of weeks. Hosting and CDN providers keep their own logs under their own policies |
| Rate-limit counters (IP address) | In server memory only, for minutes; lost on restart |
| Anonymous usage events and random analytics id | Up to 400 days |
| Payment webhook event ids (not linked to you) | 30 days |
| Database backups | Nightly; the last 14 are kept (14 days), then overwritten |
| Billing records | Kept by Paddle as required by tax and accounting law |
After you delete your account, data is removed from live systems promptly and from backups within 14 days. Deleting your account does not by itself cancel a subscription: cancel it first (see the Terms) or contact us.
7. Your rights
Depending on where you live, you can ask us to: access your data; correct it; delete it; export it in a portable format; restrict or object to processing based on legitimate interests; and withdraw consent at any time. You can also complain to your data protection authority.
You can also lodge a complaint with the supervisory authority in your country (in the UK, the Information Commissioner's Office, ico.org.uk). To use your rights, email support@formulacamp.com. We may ask you to confirm you own the account, for example by signing in. We answer within one month.
US state privacy laws. We do not sell personal information and do not share it for cross-context behavioural advertising. Residents of US states with privacy laws can ask to access, correct or delete their data, using the same email address.
8. Cookies and local storage
Cookies (set only when you use account features):
| Cookie | Purpose | Lifetime | Consent needed |
|---|---|---|---|
__Host-ea_session (named __Secure-ea_session if the API runs on a sibling subdomain) | Keeps you signed in. HttpOnly, Secure, SameSite=Lax | Up to 60 days | No, strictly necessary |
__Host-ea_nonce (or __Secure-ea_nonce) | A one-time value that protects the Google sign-in (when available) against forgery. HttpOnly, Secure, SameSite=Lax | 10 minutes; cleared after sign-in | No, strictly necessary |
Local storage (in your browser):
| Key | Purpose | Consent needed |
|---|---|---|
excel-trainer:v1 | Your lesson progress and answers, and your mock exam attempts (the exam in progress and the results of the last 10 attempts per exam) | No, strictly necessary for the feature you use |
excel-academy:lang | The interface language you chose | No, a setting you requested |
excel-academy:stats-v1 | Learning statistics such as streaks and XP | No, strictly necessary for the feature you use |
excel-academy:cert-name | The name you typed for your completion certificate | No, a setting you requested |
excel-academy:plan-hint | A short-lived hint of your plan so the page does not flicker; the server decides your real access | No, strictly necessary |
excel-academy:privacy-consent | Your analytics choice, its version and date, so we can honour it | No, needed to remember your privacy choice |
excel-academy:analytics-id | A random id used only for first-party anonymous usage statistics; it is created and sent only after consent, unless Global Privacy Control or Do Not Track is enabled | Yes |
excel-academy:ai-notice | The version and date of your acknowledgement of the notice shown before the first AI request | No, needed to remember the acknowledgement you gave |
| Item | Purpose | Consent needed |
|---|---|---|
| Advertising cookies / ad identifiers | Show ads on the Free plan, if ever enabled | Yes |
| Analytics cookies | Not used. First-party analytics use the random localStorage id listed above | n/a |
There is no analytics cookie. Analytics and its random id remain off until you accept. Use Privacy settings in the footer to accept, decline or withdraw consent without deleting your learning progress. Global Privacy Control or Do Not Track always keeps analytics off. If we ever enable advertising storage, it will load only after you accept it in a banner, and you can change your choice later. Ads are never shown inside the practice workspace, and Pro has no ads.
9. Children
The Service is not directed at children under 13 (or under 16 where local law sets a higher age for consent). We do not knowingly collect data from them. If you think a child has given us data, contact support@formulacamp.com and we will delete it.
10. Security
We use reasonable technical and organisational measures, such as encrypted connections (HTTPS) and access controls. No system is perfectly secure. We will notify you and authorities of a data breach where the law requires.
11. Changes
We may update this policy. The new version will be posted here with a new effective date, and we will notify you of material changes in the Service.
12. Contact
Yerlan Darzhanov, Kazakhstan · support@formulacamp.com
Related: Terms of Service · Refund Policy · Pricing · Accessibility