CertAnvil
Why CertAnvil Certs Pricing
Legal · Privacy Policy

Your data, plainly explained.

Email, quiz history, billing state, and real-user performance metrics. Nothing else. No tracking pixels, no advertising data sharing, no behavioural profiling. This page explains what we collect, why, and how to get rid of it whenever you want.

Last updated 11 May 2026 · v1.0 (initial)

Contents

  1. 1. Who we are
  2. 2. What we collect
  3. 3. Why we collect it
  4. 4. Who we share with
  5. 5. Where it's stored
  6. 6. How long we keep it
  7. 7. Cookies and similar
  8. 8. Your rights
  9. 9. International transfers
  10. 10. Security
  11. 11. Children
  12. 12. Changes to this policy
  13. 13. Contact us

§ 01Who we are

CertAnvil ("we", "us", "our") is an AI-tutored CompTIA certification prep app operated by Oluwasimisola Oremosu, sole trader, registered in the United Kingdom. We're a single-founder business at the time of writing, not a corporation and not a department within a larger company. The product runs at certanvil.com and at per-cert subdomains like networkplus.certanvil.com.

This policy describes how the website, the cert apps, the landing pages, and any future Apple App Store / Google Play distributions of CertAnvil handle your personal data. If you're reading this after we incorporate as a limited company or join a larger organisation, the policy will be updated (see § 12).

§ 02What we collect

TL;DR Your email, what you answered on quizzes, your subscription state if you're paying, and anonymised performance metrics so we know if the app's fast enough on your phone. We don't collect your real name, phone number, address, or location.

Five categories of data, each with a specific purpose. Nothing collected is sold or used for advertising.

2.1 · Account data (when you sign up)

  • Email address: required. We use magic-link authentication: you type your email, we send a one-use sign-in link. No passwords means no password resets, no leaked-password breaches. Your email is the only identity we hold.
  • Display name: optional, set in account settings. Shown only to you, used to personalise greetings.
  • Active cert preference: which CompTIA exam you're studying (Network+ N10-009, Security+ SY0-701, etc.). Used to load the right content pack.
  • Exam date: optional. Used to calculate "days until exam" countdowns and pace your daily plan.
  • Account timestamps: when you signed up and when your profile was last modified.
  • Role flag: almost always user. The founder is admin for product operations.

2.2 · Quiz and study data (built up as you use the app)

  • Quiz history: per-question record of what you answered, whether you got it right, how long it took. This drives Pass Plan accuracy and the spaced-repetition queue.
  • Wrong-answer bank: questions you got wrong, so you can drill them again.
  • Streak data: consecutive-day study streak, longest streak.
  • Daily goal: how many questions per day you've set as a target.
  • Drill mastery scores: per-category accuracy on Subnet Trainer, Port Drill, Acronym Blitz, OSI Sorter, Cable ID, and other drills.
  • Milestones: which achievements you've unlocked (47 total, all visible in the app).
  • Diagnostic results and Pass Plan: the 20-question diagnostic and the resulting study plan, if you take it.
  • Topology saves and ACL state: work-in-progress saves for the Topology Builder and ACL Builder features.

2.3 · Billing data (only if you subscribe to Pro)

  • Stripe customer ID and subscription ID: opaque identifiers from Stripe. We don't see your card number, card expiry, or full billing address. Those live with Stripe.
  • Tier: free or pro.
  • Subscription status: active, past_due, canceled, etc.
  • Billing period: monthly or annual.
  • Current period end: when your current billing window expires (used to surface "renews on" dates).

Stripe is independently responsible for the card and address data they process on our behalf. See their privacy policy for details.

2.4 · Performance telemetry (real-user metrics)

  • Core Web Vitals: LCP, FCP, CLS, TTFB, and INP timings captured by your browser's standard PerformanceObserver API. Tells us if the app feels fast on your real device and network.
  • App version and cert pack: so we can correlate "this release made things faster" or "Network+ users see worse performance than Security+ users."
  • Viewport dimensions and connection type: width × height (e.g. 768×1024 for iPad portrait) and a network hint (e.g. 4g, slow-2g).
  • User-agent string (truncated): the standard browser-identification string, capped at 200 characters. Used to slice metrics by iOS vs Android vs desktop.
  • Page path: which page you were on (e.g. /?cert=secplus). We scrub any auth-related query parameters (tokens, codes) before storage.

One row per session, sent once when you switch tabs or close the page. Linked to your user ID so we can correlate with other data, but never used to track behaviour for marketing.

2.5 · Operational logging

  • AI usage counter: daily count of AI calls (Generate Quiz, Diagnostic, Topic Deep Dive, etc.). Used to enforce the Free tier's 20-questions-per-day quota and to detect abuse. Not the content of your prompts, just the count.
  • Error logs: if the app crashes or throws an unexpected error, we record the error message, the file and line where it happened, and a stack trace. Stored locally in your browser (via localStorage) for the most recent 100 errors. Optionally auto-reported to a GitHub issue tracker if you have configured your own GitHub token in Settings, and it defaults to off.

2.6 · What we DO NOT collect

  • Your real name (display names are pseudonyms you choose)
  • Phone numbers
  • Physical addresses (Stripe collects billing addresses for tax purposes; we don't see them in detail)
  • National ID / passport / social security numbers
  • Date of birth / age (beyond your self-attestation that you're 13 or over; see § 11)
  • Demographic data (race, ethnicity, gender, sexual orientation, political views, religion, union membership)
  • Health or biometric data
  • Precise location data (no IP-to-city, no GPS)
  • Browsing history outside CertAnvil
  • Contacts, calendars, photos, or files from your device
  • The content of AI prompts (only the count is logged for quota enforcement)

§ 03Why we collect it

TL;DR Either it's necessary to give you the product you signed up for (account, quiz history, billing), or it's anonymous-enough metrics to make the product better (performance telemetry).
DataWhyLawful basis (GDPR)
EmailSign in via magic-link, send receipts, and respond to supportContract (necessary to provide the service)
Quiz historyCompute readiness, power Pass Plan, and drive spaced-repetitionContract
Billing stateEnforce Pro entitlements, handle renewals and cancellationsContract and legitimate interests (fraud and chargeback protection)
Performance telemetryDetect regressions, prioritise optimisation work, and validate that releases help real usersLegitimate interests (product improvement), pseudonymous
AI usage countEnforce Free 20-q-per-day quota, detect abuse of the proxyContract and legitimate interests
Error logsFix crashes you encounterLegitimate interests, stored locally by default

§ 04Who we share with

TL;DR A small list of named sub-processors that store data or send emails on our behalf. We do not sell your data. We do not share data with advertisers. We do not have third-party tracking pixels.
Sub-processorWhat they handleWhere
SupabaseDatabase (account, quiz history, subscription state, telemetry) and authentication (magic-link)EU (Frankfurt) by default; see supabase.com/privacy
StripePayments, card processing, subscription billing, and invoicesUS and EU; see stripe.com/privacy
AnthropicThe AI model behind Generate Quiz, Diagnostic, Topic Deep Dive, etc. Receives the question-generation prompt; never receives your email, name, or other identifying data.US; see anthropic.com/legal/privacy
ResendSends magic-link emails and (later) transactional emails like billing receipts. Receives your email address only.US; see resend.com
VercelHosting for the CertAnvil website and serverless API endpoints. Sees request metadata (IP, UA) but doesn't access database content.Global edge network; see vercel.com
HostingerEmail inbox provider for hello@certanvil.com and aliases. Receives any email you send us directly.EU; see hostinger.com

If we add a new sub-processor we'll update this list and increment the policy version (see § 12). We don't share data with anyone outside this list. No advertising networks, no analytics providers beyond what's listed, no data brokers.

§ 05Where it's stored

Your account and quiz data lives in Supabase's EU-Frankfurt region by default. Stripe billing data is stored across their US and EU regions. Vercel caches static assets and serverless function inputs globally on its edge network.

Your browser also caches state locally via localStorage (quiz history, streak, drill mastery, theme preference, optionally your Anthropic API key if you're a BYOK user). This local cache is purely client-side, and we don't read it remotely. You can clear it at any time via your browser's site-data tools.

§ 06How long we keep it

DataRetention
Account data (email, profile, quiz history)For as long as your account exists. Permanently deleted within 7 days when you self-delete from Settings.
Subscription recordKept after cancellation for historical accuracy. We can re-issue a Pro entitlement if you resubscribe. Deleted on full account deletion.
Stripe recordsStripe retains payment records per their retention policy (typically 7 years for tax and chargeback purposes). We can't delete Stripe-side records ourselves.
Performance telemetryIndefinite while useful for product decisions. Periodic anonymisation purges may apply once the dataset grows; we'll update this when applicable.
Error logs (browser-local)Most recent 100 entries on your device. Auto-rolling; nothing leaves your browser unless you've configured GitHub auto-reporting.
Auto-backupsLast 7 days of your in-browser state. Stored locally only.

Self-delete: from your cert-app Settings → "Delete my account". This cancels your subscription with Stripe, deletes your Supabase auth user (which cascades to profile and quiz history and subscription and telemetry), and clears your browser cache. The Stripe billing records remain at Stripe per their retention policy; the cert-app side is fully erased.

§ 07Cookies and similar technologies

TL;DR One first-party cookie for your sign-in session. No tracking cookies, no third-party advertising cookies.
  • Session cookie (essential): a single cookie scoped to .certanvil.com issued by our Supabase auth integration so you stay signed in across certanvil.com, networkplus.certanvil.com, and any future cert subdomains. Cleared when you sign out.
  • Theme preference: stored in localStorage (not technically a cookie). Remembers your dark/light setting.
  • App state cache: stored in localStorage. Mirrors your quiz history and progress for offline-tolerant operation. Not transmitted by itself.

We do not use third-party analytics cookies, advertising cookies, or social-media tracking pixels. We collect no information about your activity on other websites.

§ 08Your rights

If you're in the UK or EU, the UK GDPR and EU GDPR give you specific rights over your personal data. If you're in California, the CCPA gives you similar rights. We honour these for everyone, regardless of where you live, because consistent data rights are simpler to maintain.

8.1 · Access

Export everything we have about you at any time. Cert app → Settings → Export Data. You'll get a JSON file with your full profile, quiz history, wrong bank, streak, milestones, and drill mastery. Stripe billing history is exportable separately from your Stripe Customer Portal.

8.2 · Erasure ("right to be forgotten")

Self-service deletion from Settings (see § 06). The cascade is irreversible. You can also email us if you'd prefer assisted deletion.

8.3 · Correction

Update your email, display name, cert preference, and exam date from Settings at any time.

8.4 · Portability

The Export Data action produces a machine-readable JSON snapshot, suitable for moving to another service.

8.5 · Restriction of processing

If you want us to stop processing your data temporarily (e.g. while a dispute is resolved), email privacy@certanvil.com. We'll restrict within 7 days.

8.6 · Objection

If you object to a specific processing activity, email us and we'll respond within 7 days. The performance telemetry described in § 2.4 is collected under legitimate interests. If you'd like to opt out of that specifically, contact us and we'll suppress your user ID from future telemetry rows.

8.7 · Lodge a complaint

If you believe we've mishandled your data, you can complain to your data protection supervisory authority. In the UK that's the Information Commissioner's Office (ICO). We'd like the chance to fix things first, so email privacy@certanvil.com and we'll respond within 7 days.

§ 09International transfers

Some of our sub-processors (Stripe, Anthropic, Resend, Vercel) are based in the United States. When your data moves from the UK/EU to the US, we rely on the EU-US Data Privacy Framework and on Standard Contractual Clauses approved by the European Commission. The sub-processors named in § 04 all maintain these safeguards. Supabase data is held in the EU-Frankfurt region by default and does not leave the EEA for your account and quiz data.

§ 10Security

How we protect your data:

  • Encryption in transit: all traffic between your browser and our servers uses TLS 1.2 or above. The certificate is auto-rotated by Vercel.
  • Encryption at rest: Supabase and Stripe both encrypt stored data at rest using industry-standard AES-256.
  • Authentication: magic-link only. No passwords means no leaked-password breaches. Sign-in links expire after 60 minutes and are single-use.
  • Row-level security: Supabase RLS policies enforce that your data is only readable by you (and by the founder for admin tasks like subscription support).
  • Service-role keys: held only in server-side environment variables, never in client code.
  • No card data: Stripe handles all PCI scope. We never see card numbers, CVCs, or expiration dates.
  • Webhook signature verification: Stripe events posted to our endpoint are verified against the signing secret to prevent forged "subscription created" events.

If we ever have a security incident that affects your personal data, we'll notify you by email within 72 hours of becoming aware of it (GDPR Article 33) and we'll publish a status note on our blog/changelog.

§ 11Children

CertAnvil is intended for use by people aged 13 and over (or 16+ in jurisdictions where higher consent ages apply for online services, such as parts of the EU). We do not knowingly collect personal data from anyone under 13. If you believe a child has provided us with personal data, please email privacy@certanvil.com and we will delete it promptly.

§ 12Changes to this policy

If we make a meaningful change to this policy (adding a new sub-processor, expanding what we collect, or changing retention), we'll update the version date at the top of this page and send signed-in users an email summarising the change. Minor edits (typos, link fixes, clarifications that don't change substance) won't trigger an email.

This is v1.0, the initial publication of the policy. Future versions will be listed below as they ship.

§ 13Contact us

Privacy questions, data requests, complaints

Email · privacy@certanvil.com

Response time · within 7 days for routine requests, 30 days for complex data access / erasure requests

Postal · Oluwasimisola Oremosu, United Kingdom (full address provided on request for formal correspondence)

← Back to CertAnvil

certanvil.com · forged for the exam
Privacy Terms Contact