Privacy Policy
Last updated: November 2, 2026
This policy explains what personal data we collect when you use improvecv.ai (the "Service"), why, who receives it, and your rights.
In short
- What we collect: your account, the resumes you make, how you use the Service, and your payments (Stripe holds your card). Analytics only if you accept them.
- Who receives it: the services that run ImproveCV (section 4). We never sell your data, and it is not used to train AI.
- Where: our database is in the United States, under EU safeguards (section 5.1). Analytics and error reports are stored in the EU.
- How long: as section 6 says; your account and resumes while your account exists. Payment records stay seven years, as tax law requires.
- Your rights: download or delete your data in Settings, or write to privacy@improvecv.ai (section 8).
Who is responsible for your data
The controller is ImproveCV ("we", "us"), registered in the Netherlands under KvK number 42138603.
Privacy contact: privacy@improvecv.ai · postal address: section 14 of our Terms
Our lead supervisory authority is the Dutch Data Protection Authority (Autoriteit Persoonsgegevens). You can also complain to the authority in your own country (section 8).
1. What we collect
1.1 Information you give us
- Account: your name, email address and sign-in details, managed by Google Firebase Authentication. If you sign in with Google, we receive these and your profile picture from Google. We keep your earlier email addresses and which ones you verified, so an export, a deletion or a newsletter record only ever acts on an address you proved is yours. We record when you accepted the Terms and gave the consent in section 1.3, and which wording you agreed to. No account is created without both. If you start signing in (for example with Google) and cancel before your account is created, we delete that sign-in at once, keeping only its id until our next daily clean-up. A sign-in left unfinished, for example by closing the tab, is deleted within 7 days.
- Resume content: everything you put in a resume, including any photo, which is stored in the resume itself.
- LinkedIn import: the URL of your own profile, which you give us, and the public data returned for it.
- Job search: your search terms and filters, and the jobs you save and track.
- Job descriptions you paste to tailor a resume.
- Payments: Stripe collects your card details; we never see your full card number. We keep: your plan and country; payments, invoices and refunds, including how and why each was refunded; your subscription's status and dates; your credits and the credits packs you bought, and any credit owed from an older plan; your use of the Free plan's job search (its terms and filters, and whether an empty first search was given back) and tailored resume; plan changes you booked; failed payments and our emails about them; when you asked us to start your subscription, or add the credits of a credits pack, at once; and when a withdrawal reached us, with the one-way hashes of the refund memory (section 6). If you dispute a payment with your bank, we keep the dispute's references, dates and outcome and your plan's state before it, so the plan can be restored.
- Messages to us: what you send us. A contact form message is stored with the name, email address, topic and message you give (and your account id if you are signed in) and emailed to our support address. The form works without an account.
- Resumes scored without an account: your browser reads the file and sends us only its text, or an image of each page for a scan or photo. We send that to OpenAI to score it and do not store it. The score and findings are held on our server under a random reference for up to one hour, are never added to your email record, and stay in your browser tab until you close it. Opening that resume in the editor makes it resume content on your account.
- Resumes imported from a file: the whole text, including your contact details, is sent to OpenAI once to split it into sections, and the result is stored as resume content.
1.2 Information collected automatically
- IP address: used for rate limits, abuse prevention and the one free Resume Score per connection (a one-way code keyed with our own secret, kept 30 days). We do not use it to profile you or store it with your resumes. Once your email is verified, we keep a one-way mark of the last five networks you signed in from, keyed with our own secret so it reveals no address, so that a password reset you ask for from one of them always goes through. One-way codes like these, here and in sections 3 and 6, are still personal data, and we protect them as such.
- Server logs: time, IP address, path, status and error details, to run the Service and investigate faults and abuse (kept 30 days).
- Daily totals: we count visits per day, by the site or link that sent them, and Resume Score runs. These are totals only, with nothing about you.
- Device information: browser, operating system and device type.
- Product analytics (only with your consent): PostHog (EU) records usage statistics, heatmaps and session replays. All text, inputs and images are masked, so your resume, name, email, photo and typing are never recorded, and replay is off in the editor and during onboarding. We see behaviour (clicks, navigation, scrolling, and events such as a search run or a plan chosen), never the personal data on the page. Once you sign in, these events, including earlier ones from the same browser, are linked to your internal account id, never your name or email. If you decline, nothing is set or sent.
- Error reports: when something breaks, Sentry (EU) receives the error, the page path without its query string, your browser and operating system, and the time; never your email, name or resume content. Reports from our server carry your internal account id. Reports from your browser are sent only if you turn on analytics.
1.3 Sensitive data
A resume may contain sensitive ("special category") data under GDPR Article 9, such as health or disability, religion or beliefs, trade-union membership, ethnic origin, political opinions or sexual orientation; a photo can reveal some of this too. We do not ask for it, and use it only to store, show and process your resume, including the AI features you run on it.
Include it only if it is really needed. If you do, we rely on your explicit consent, given in the box you tick to create an account ("I agree to the Terms and to ImproveCV processing sensitive details I add, like health or religion.") or, for the Resume Score, in the box beside the upload. Every sign-up, including with Google, asks for it. You withdraw it by removing the information or deleting the resume. A copy already sent to OpenAI for an AI feature is deleted by OpenAI within 30 days (section 4).
1.4 Other people's data
If you add someone else's data, such as a referee's phone number, you need a lawful basis to do so. We use it only as part of your resume.
2. How we use it
- Provide the Service: your account, resumes and exports, AI suggestions and scores, job searches and saved jobs.
- Payments: subscriptions, billing, retries, tax, refunds and credits, through Stripe, and the record of your request to start at once.
- Emails you need: account and billing messages, and answers to your questions.
- Marketing email, only if you asked for it: see section 3.
- Safety: usage limits, fraud and abuse prevention, and fault investigation.
- Improvement: usage patterns, to fix bugs and decide what to build.
- Legal obligations: payment and tax records.
Legal bases (GDPR)
- Contract (Art. 6(1)(b)): your account, resumes, the features you use and payment, and scoring a resume at your request before you have an account.
- Consent (Art. 6(1)(a)): analytics and marketing email. You can withdraw either at any time.
- Legitimate interests (Art. 6(1)(f)): security, rate limits, fraud and abuse prevention, error monitoring, answering contact-form messages, never mailing an address that unsubscribed or was erased, and keeping the self-service refund to once per customer, each balanced against your rights.
- Legal obligation (Art. 6(1)(c)): payment and tax records.
- Explicit consent (Art. 9(2)(a)): any sensitive data in a resume (section 1.3).
Automated decisions
The resume score and AI suggestions are automatic but informational. They make no decision about you and have no legal or similarly significant effect under GDPR Article 22. No employer sees them unless you show them.
3. Marketing email
We send marketing email (product news, tips and offers) only to addresses that asked for it: through our newsletter form or the box at sign-up. We record the address, where and when it signed up, the list it joined, whether and when it was confirmed through the link we send, whether consent is held, any earlier address of the same account, when it unsubscribed, and an unsubscribe token. As proof of the opt-in we keep the browser's identification string and a one-way hash of the network address, never the raw IP. We no longer issue discount codes; one issued in the past is stored with the address it went to.
- Every marketing email has a one-click unsubscribe link, also in its headers for your mail client. Unsubscribing stops all our marketing email.
- A sign-up nobody confirms is deleted after 30 days. If you ticked the box when signing up with an email and password, the email that verifies your account says so, and its one link confirms both. Otherwise we send the newsletter's own confirmation.
- An unsubscribed address stays flagged so it is never mailed by mistake. If you ask us to erase it, we keep only a one-way hash on a suppression list.
- Account and billing emails are not marketing; they stop when your account is deleted.
- Deleting your account deletes your marketing record (keeping only that hash) and removes your address from any discount code. A sign-up still waiting on an account that never verified goes with it.
4. Who receives your data
We use the processors below. We never sell, rent or trade your data, or share it with advertisers.
- Google (Firebase Authentication, Cloud Firestore, App Hosting, Cloud Run): sign-in, storage of your data, and hosting. PDFs are drawn in your browser; a server-side renderer on Cloud Run is switched off, and if enabled would hold a resume only while drawing it. Firebase Privacy Policy
- Stripe: payments and subscriptions. Receives your name, email address, billing address, any tax ID and card details. Stripe Privacy Policy
- OpenAI: AI suggestions, scoring and tailoring. Receives the resume text you work on, job descriptions you paste, the full text of an imported file, or page images of a scan (which we do not store). Under its API policy, OpenAI does not train on this data and keeps it for up to 30 days for abuse monitoring, then deletes it. OpenAI API data usage
- Apify: LinkedIn import (the profile URL) and job search (your terms and filters). Never your resume. Apify Privacy Policy
- Namecheap (Private Email): our mailboxes, so it receives the email you send us and copies of contact-form messages. Namecheap Privacy Policy
- Resend: sends our email, so it receives your address and each message. Resend Privacy Policy
- PostHog (EU): analytics, only with your consent; masked behaviour and events only. PostHog Privacy Policy
- Sentry (EU): error reports, as in section 1.2. Sentry Privacy Policy
We may disclose data where the law requires it, or to establish, exercise or defend legal claims. In a merger, acquisition or sale of assets, your data may pass to the successor, which stays bound by this policy unless it gives you notice.
Job search results are cached by search terms, never by user, and hold only public listings.
5. Storage and security
Your data is stored in Google Cloud Firestore, encrypted at rest and in transit. We use HTTPS throughout, verify your sign-in on every request, block direct database access from browsers, validate and sanitize input, rate-limit our API, set security headers including a Content Security Policy, and ask you to sign in again before you change your email, export your data or delete your account. No system is perfectly secure: if a breach affects your data, we will tell the authority and, where it puts your rights at high risk, you, as the law requires.
5.1 International transfers
Our database is in the United States, so data from the EEA, UK or Switzerland is transferred there. Google is certified under the EU-US Data Privacy Framework and its UK and Swiss extensions, and its Cloud Data Processing Addendum includes the Standard Contractual Clauses and the UK Addendum. PostHog and Sentry store data in the EU. Stripe, OpenAI, Apify, Resend and Namecheap use equivalent safeguards in their data processing agreements. When you import a LinkedIn profile or view job listings, your browser loads photos and logos straight from LinkedIn (licdn.com), which sees your IP address. Ask privacy@improvecv.ai for details of any transfer.
6. How long we keep it
- Account and resumes: while your account exists.
- Deleted resumes: 30 days in the Bin, where you can restore them, then removed automatically (normally within a day), unless you choose Delete forever sooner.
- Account deletion: your profile, resumes (including the Bin), saved jobs, marketing record, sign-in and the analytics linked to your account are deleted, your address is removed from any discount code, and we ask Stripe to delete your customer record (it keeps the invoices the law requires). Backups may hold copies for up to 30 days.
- Resumes scored without an account: not kept (section 1.1).
- Refund memory: after a refund through Withdraw from contract, or a full refund by our support, we keep a one-way hash of each email address the account verified for 24 months, even after deletion, so the self-service refund cannot be taken again with the same address. After a withdrawal refund we also keep, for the same time, a one-way hash of Stripe's reference for each card that paid (never the card number), so it cannot be taken again with the same card. Neither holds an address, card number, name or amount (legitimate interest).
- Contact messages: as long as we need them, at most 24 months, or sooner if you ask.
- Error reports: 90 days.
- Payment and tax records: seven years, as Dutch tax law requires, also after account deletion.
- Server logs: 30 days, then discarded.
- Job search cache: up to seven days; no personal data.
- LinkedIn import cache: up to seven days on our server, by profile URL and with the link to its photo (never the picture itself), so a repeat import does not pay for a second fetch.
- Inactive accounts: after 24 months without a sign-in, we may tell you by email and then delete the account. An account that still holds credits from a credits pack is not deleted this way.
7. Cookies and browser storage
Every cookie and storage entry the site uses is named below, so you can check them in your browser.
7.1 Strictly necessary (always on)
Needed for the site to work, so they need no consent:
- Sign-in: Firebase's session (
firebaseLocalStorageDb); a cache of who is signed in and their plan (qc_auth_state,qc_auth_uid,qc_auth_display_name,qc_auth_plan); and flags for email verification and sign-up (qc_verify_bar_hidden,qc_auth_gate_reloaded_at,qc_verify_return_to,qc_email_verified_at,qc_verify_last_sent_at, andqc_signup_consent, which holds your ticked sign-up box for up to 30 minutes); and, in session storage (gone when you close the tab),icv_signed_outandicv_goodbyefor the page you land on after signing out or deleting your account, andicv_booking_droppedafter a cancel that dropped a booked plan change. - Theme:
theme(light or dark). - Editor and onboarding: unsaved edits, Undo and layout, kept on your device:
edited_cv_content,improvecv_items,cv_design,preferredTemplate,lastCvTitle,cv_progress,cv_last_saved_at,aiToolsSidebarOpen,documentSize,aiHistory:,cvHistory_andcvHistoryPhotos_(each followed by a resume id),improvecv_cv_seen_versions,editorTourSeen,ob_partial_progress,ob_welcome_dismissedanduploadedCvData. Most are tied to your user id, so people sharing a browser do not see each other's drafts. - Tailoring, reviews and imports: a job or review carried between pages, the Tailor tab's last search, and copies of recent imports so they do not run twice:
improvecv_tailor_context,improvecv_pending_review,cv_tailor_draft,linkedin_data,profile_data,enhanced_data,tailored_data, andimprovecv_tailor_role_,improvecv_tailor_tips_andimprovecv_tailor_search_(each followed by a resume id). - Resume score:
improvecv_landing_score, and the scored resume's text on its way to the editor,icv_upload_handoff, in session storage, cleared when the tab closes. - Dashboard and job tracker:
improvecv_dashboard_view,improvecv_dashboard_sort,improvecv_dashboard_card_countandimprovecv_job_tracker. - Your cookie choice:
improvecv_analytics_consentandimprovecv_analytics_consent_at, so we ask again after 180 days. - Payments: Stripe's
__stripe_midand__stripe_sid, for fraud prevention, set only once checkout opens. Stripe cookie policy - Debugging:
improvecv_debug, only if you switch on debug logging yourself.
7.2 Analytics (only with your consent)
Set only after you accept analytics in our cookie banner: PostHog's visitor id, session id and feature flags, in cookies and storage entries starting with ph_. If you withdraw consent, PostHog stops at once and every ph_ entry and cookie is removed.
Manage your cookie preferences:
We use no advertising or third-party tracking cookies. Our home page links to Trustpilot rather than embedding it, so nothing of Trustpilot's runs on our pages; a review you write there falls under its own policy.
8. Your rights
Wherever you live, you can:
- Access your data: download it at once with the export in Settings. It holds your account record (apart from our internal keys and the network marks in section 1.2), payment records, resumes, saved jobs, messages you sent while signed in, and your marketing record. For anything it leaves out, write to us.
- Correct inaccurate data.
- Erase it: delete your account in Settings, or a single resume from your dashboard (it goes to the Bin first, section 6).
- Take it with you: the export is machine-readable JSON.
- Withdraw consent: change analytics in , unsubscribe from any marketing email, or remove sensitive details from a resume.
- Object to or restrict processing based on legitimate interests.
- Complain to your data protection authority; in the Netherlands, the Autoriteit Persoonsgegevens.
Write to privacy@improvecv.ai. We answer within the legal deadline, normally one month, and may first check your identity.
8.1 If you are in California
We do not sell or share personal information as the CCPA and CPRA define it, or use it for cross-context behavioral advertising. You can ask to know, delete or correct what we hold, and will not be treated differently for it. Sections 1 and 2 list what we collect and why. Use the address above.
9. Children
The Service is not for anyone under 16, and we do not knowingly collect children's data. If you think we have, tell us and we will delete it promptly.
10. Changes to this policy
For a change that materially affects how we use your data, we tell you by email or in the Service before it applies. Other changes are posted here with a new "Last updated" date.
11. Contact
ImproveCV · KvK number 42138603
Privacy: privacy@improvecv.ai
Support: our contact form, or support@improvecv.ai