Privacy Policy
Last Updated: October 27, 2026
Version: 3.18.0
1. Who we are and the short version
Resume AI Pro ("we", "us", the "Service") is run by one person, Deekshant, from India. Contact: resumeaipro@gmail.com.
The short version:
- Your resumes are stored in your own browser. Without an account they stay on this device unless you use a feature that sends them somewhere. Section 3 lists every such feature, what goes where, and how long it is kept.
- You can build and save resumes without an account. Downloading a PDF or Word file, buying a pass and syncing need a free account. If you sign in, the resumes in your account are stored on our database so they appear on your other devices. The server can read them; they are not end-to-end encrypted.
- We do not sell your data, and we do not use your resumes for advertising.
- Analytics are off until you allow them.
2. What stays on your device
The app stores your resumes, saved versions, job tracker, settings, AI keys (if you add your own), privacy choices, your sign-in session when you are signed in (it keeps you signed in; signing out removes it), a count of your own activity (resumes started, downloads, AI actions, jobs tracked; shown on your dashboard and never sent to us) and a few preferences (such as the theme, and which of the landing page's two headlines this browser was shown) in your browser (localStorage, IndexedDB and sessionStorage). Nobody else can read them from there, including us, but anyone using your browser can. Clearing your browser data deletes them. Your own AI keys are encrypted with a key kept in this browser. That protects a copy of the browser's storage taken elsewhere, but not someone, or a browser extension, using this browser: they could read the keys.
We set two cookies, both strictly necessary and never sent to a third party:
rap_auth_live, only when you sign in without "Keep me signed in". It tells the app the browser is still open, so you can be signed out when you close it.rap_tour_snoozed, the first time you close the editor's tour without finishing it (Skip, Esc or a click outside it), so it isn't offered again until you close the browser.
3. When information leaves your device
Each row is a feature you choose to use. Nothing in this table happens unless you use that feature.
| Feature | What is sent, and to whom | How long it is kept |
|---|---|---|
| Signing in | Your email address goes to Supabase (our database and sign-in provider), which emails you a one-time code, through our email sender (Resend) once it is set up. When it is turned on, Cloudflare Turnstile first checks that you are a person (a quick check, usually invisible); Cloudflare receives your IP address and browser details for it. If "Continue with Google" is offered and you use it, Google tells Supabase your email address, name, your Google account ID and the address of your Google profile picture instead. | Until you delete your account (Section 7). |
| Sync while signed in | The resumes you put in your account, and your job tracker (jobs, job descriptions, applications, notes and analyses), are stored on Supabase. Your contacts' names, emails and phone numbers are encrypted on your device before they sync; the key is derived from a secret kept by our host (Vercel), not stored in the database, so the database alone does not reveal them (we could still decrypt them). Supabase encrypts its disks, but the data is readable by our server; it is not end-to-end encrypted. The first time you sign in on a device that already has resumes or tracked jobs, the app asks whether to add them to your account. A deleted resume or job leaves a small marker (no content) for 30 days so your other devices remove it too; on each device, deleted resumes stay in Recently deleted for 30 days. | Until you delete them or your account. |
| Download PDF | Your resume goes to our server function on Vercel, which turns it into a PDF with a headless browser and sends it back. Downloading needs a free account: how many PDFs your account has made is kept on Supabase (your plan's allowance), and for Free accounts a counter keyed to your IP address is kept by Upstash (when rate limiting is active). | The resume is not stored: it is discarded after the PDF is made. The count stays with your account; the Upstash counter expires after about 2 days. Browser Print (on a computer) prints in your browser and sends nothing. |
| Built-in AI ("Managed AI", no key needed) | The text of the request (which can include your resume, a job description or a bullet) goes through our server function on Vercel to Google's Gemini API, using our key. To limit use per person, counters keyed to a random browser ID, to your account (when you are signed in) and to your IP address are kept by Upstash (when rate limiting is active). To know what the built-in AI costs us, each answered request also leaves one line on Supabase: which feature it was (for example "cover letter"), how many daily AI credits it used, the size of the request and the answer counted in tokens, your plan, and your account's ID if you were signed in. That line never holds the text you sent or the answer. When you are not signed in, Cloudflare Turnstile checks that you are a person before the day's first use, once it is turned on (as for signing in). | The text is not stored by us. Upstash counters expire after about 2 days. The cost lines are deleted after 90 days. Our key is currently on Google's free (unpaid) tier: under Google's terms for unpaid use, Google may use what is sent to improve its products, and people at Google may read it. If that matters to you, use your own key instead (next row). |
| Your own AI key (Gemini, OpenAI, Anthropic, OpenRouter) | The text of the request goes straight from your browser to the provider you chose, using your key. To show current models and prices, your browser also downloads OpenRouter's public list of models, at most once a day; nothing about you or your key is sent with it. | Not sent to us. That provider's terms apply. |
| Chrome built-in AI | Runs on your device. Nothing is sent. | — |
| Import a resume file | The file is read in your browser. If the built-in AI or your own AI key is turned on, the extracted text is sent to that AI as in the rows above. For scanned PDFs, the text-recognition code and language data are downloaded from this site; no other service is involved. | The file itself is not uploaded. A parsed copy is cached in your browser for 7 days. |
| Import a job from a link | The link you paste is fetched by our server function on Vercel, which returns the page text. A counter keyed to your IP address is kept by Upstash (when rate limiting is active). | The link and page are not stored. Counters expire after about 2 hours. |
| Public share link | The resume you share (without your photo unless you include it) is stored on Supabase and can be opened by anyone with the link. A visitor's browser asks our server function on Vercel for it (not Supabase directly), and the views and downloads are counted there; to limit how many links one network opens, a counter keyed to the visitor's IP address is kept in memory or by Upstash (when rate limiting is active) and expires within the hour. With it we keep a random ID for this browser (so this browser can list, update, pause and delete its links), the private label you give the link (shown only to you), whether it is paused, when it was last updated, how many times the link was opened and downloaded and when each last happened, and, when you are signed in, which account made it (your plan decides how many links can be live at once and whether a visitor's PDF is made by us). Update replaces the stored copy with your current resume. To limit abuse, salted hashes of your IP address and of that browser ID are stored for counting. When someone who has the link presses Download PDF: for a link from an account with Pro or Ultra, the shared copy goes to our server function on Vercel, which makes the PDF and sends it back (not stored), at most 5 a day per link and a daily total per account (75 with Pro, 150 with Ultra), never from that account's own PDF downloads (to limit abuse, a counter keyed to the visitor's IP address, and a counter keyed to the account the link belongs to (it expires after about 2 days), are kept by Upstash when rate limiting is active); otherwise their browser's own print window opens and nothing is sent. | The link, its label and its counts last for the time you chose when you made it (7, 30 or 90 days, or a year; a link made without an account: 7 or 30 days) unless you delete it sooner; the copy is deleted 30 days after that. Links made while signed in are deleted with your account. The two hashes are deleted after 2 days, and the visitor's download counter after about 2 days. |
| Report this resume (on a shared resume's page) | A visitor who reports a shared resume sends the link's code, a reason picked from a list and, if they write one, a note of up to 500 characters, through our server function on Vercel, which stores them on Supabase. Nothing about the visitor is stored with it (no account, ID or IP address); to limit reports, a counter keyed to their IP address is kept in memory or by Upstash (when rate limiting is active). We read reports to remove links that break the Terms. | Reports are kept 12 months. The counter expires after about a day. |
| Move data to another device (sync link or QR) | An encrypted copy of your app data goes to Supabase and is picked up once by your other device. Your sign-in, AI keys and privacy choices are not included. Sending an AI key to your phone uses a QR code; the key is encrypted with a code shown on your screen and is never sent to a server. Making a copy is limited to twice a day: a counter keyed to your IP address, and to your account when you are signed in, is kept by Upstash (when rate limiting is active), and our server function on Vercel leaves a one-time ticket on Supabase that the copy uses up. | Deleted when your other device picks it up, or unreadable after 15 minutes and deleted within a day. The ticket is deleted when used or after 10 minutes; the counters expire after about 2 days. |
| Save a job from a job site (the Save job bookmark, the browser extension, or your phone's Share menu) | Only when you click the bookmark or the extension's button, or choose the app in the Share menu. The bookmark and the extension read the page you have open, in your own browser (its link, its title, the text you selected or the job's description). The extension reads what the page shows you, or, when the page shows no description, the job details it publishes for search engines; never text the page hides. The extension reads only the tab in front, only at that click; it has no access to other sites and sends nothing to us or to anyone else. By default the extension shows the job in its own small panel for you to check and save: a saved job waits in the extension's storage in your browser until this app, open in the same browser, adds it to your job tracker as a Saved job, and is then removed from the extension. A job saved in a private window is kept in memory only, until a private window of this app takes it, the last private window closes, or the browser closes. If you choose in the extension's settings to open the app instead, the job goes to the app tab you have open; with none open, the app opens with it after the "#" of the address, a part that browsers do not send to any server. The bookmark opens the app the same way. A share from your phone carries the link and the title in the address the app is opened with, so our host (Vercel) can see that one request. A job from the bookmark, the Share menu or the extension's "open the app" setting opens as a card for you to check; it is added when you press Add Application. | Nothing is stored by us for the capture itself. A job waiting in the extension stays in your browser until the app takes it; Reset All Data here, or "Remove the jobs waiting" in the extension's settings, removes it. A job in your tracker is kept like the rest of your tracker. |
| Google Drive | You sign in with Google, and the file goes to your Google Drive. Files are private unless you choose "Let anyone with the link open these resumes" in the job tracker. | In your Drive, under Google's terms. |
| Buying Pro or Ultra | Payment is handled by Razorpay. You enter your payment details with Razorpay, not with us. Razorpay is an independent company: it receives the details you give it (such as your name, email, phone number and payment details) and uses them under its own privacy policy. It may show you offers based on them, and it shares them as needed to run the payment, to check for fraud, and to answer lawful requests from government authorities. We receive the order and payment IDs, the amount, and which account bought it. To limit order attempts, a counter keyed to your IP address is kept by Upstash (when rate limiting is active). | Payment records are kept for 8 years from the end of the financial year they belong to, as Indian tax law requires. The counter expires after about 2 days. |
| A record of account events (signed-in accounts) | When you sign in or out, download your data, ask to delete your account or cancel that, or a payment is received or reversed, one line is kept on Supabase: your account's ID, which of those events it was, and the time. Nothing else: no resume content, no IP address, no device details. It is there so that a question about your account or a payment can be answered. You can ask us for your lines. | 12 months, then deleted. |
| Writing a review | The name, role, star rating and text you submit are stored on Supabase and shown on the site after we approve them. To limit reviews per person, a counter keyed to a keyed hash of your IP address is kept by Upstash (when rate limiting is active). | The review until you ask us to remove it; the counter about 2 days. |
| Supporting the project (donations) | By card or other methods on Razorpay: as for buying Pro (above). By UPI: your UPI app pays the developer's UPI ID directly; like any UPI payment, the developer's bank shows the payer's name and UPI ID. By PayPal (offered on the Support page for international donations): PayPal handles the payment under its own terms, and the developer's PayPal account shows the payer's name and email address. | Payment records are kept for 8 years from the end of the financial year they belong to. |
| Anonymous counts (always) | When something countable happens (a visit, a resume created or imported, a file exported, an AI action, a job added to the tracker, a share link made), the app tells our server function on Vercel the name of that action and nothing else, and the server adds one to that day's total for it on Supabase. No ID, cookie, page or time of day is sent or stored, so a count cannot be linked to you or to your other actions, and it does not depend on your analytics choice. To stop one computer inflating the totals, a counter keyed to your IP address is kept for up to about 2 days (by Upstash when rate limiting is active); it is not stored with the counts. We may show the totals on the site. | The daily totals are kept. The rate-limit counter expires after about 2 days. |
| Analytics (only if you allow them) | Page path, a random visitor ID and session ID, your browser and its major version, your operating system, whether the device is mobile, screen size (rounded to 100 pixels), time zone, the site that linked you here (its domain only), event names (for example "export_success") and small details of the event (for example a score, a template or a job family) go to Supabase. No resume content. We do not store your IP address in analytics. | 90 days. After that only monthly totals of how many times each kind of event happened are kept (no IDs, pages or details). You can delete yours at any time under Privacy Choices. |
| Error reports (not active today) | If we turn on Sentry, error details (with addresses, keys and tokens removed) would be sent. Screen recordings only if you allow them. | This policy will be updated before it is turned on. |
| Writing to us | Email you send to resumeaipro@gmail.com is received and kept by Google (Gmail), the mailbox we use. | In that mailbox for 2 years after your last message, then deleted. |
| The developer's notices (when email notices are turned on) | Once a day the service emails the developer its alerts and totals through Resend. When a shared resume has been reported, that email names the link's code and the reason picked; nothing else in it is about a person. | Under Resend's terms. |
| Scripts from other companies | When you start a card payment or a card donation, the page loads Razorpay's checkout script; when you use Google Drive, it loads Google's sign-in and Drive scripts; when the check that you are a person is turned on, the sign-in window (and, when you are not signed in, the built-in AI's first use of the day) loads Cloudflare's Turnstile script. Those scripts run in the page, and their company receives your IP address and browser details, under its own terms. On the live site every other script comes from this site. | Under Razorpay's, Google's and Cloudflare's terms. |
| Every visit | Like any website host, Vercel receives your IP address, browser type and the page requested, and keeps request logs. When your browser talks to Supabase directly (sign-in, sync, analytics), Supabase receives your IP address too. | Under Vercel's and Supabase's log retention. |
All of these connections use HTTPS.
Advertising (Google AdSense) is not active. If we turn it on, this policy will be updated first, and ads will appear after you answer the cookie banner: ads personalised with cookies only if you choose "Accept"; if you choose "Reject", non-personalised ads, for which Google still uses cookies to limit how often an ad is shown and to prevent fraud.
4. Why we use it (legal bases)
- To provide the features you ask for (contract / your request): sign-in, sync, PDF, AI, sharing, imports, payments.
- With your consent: analytics, and error recordings if we ever turn them on. You can withdraw consent at any time under Privacy Choices.
- Legal obligations: keeping payment records.
- Keeping the service safe and preventing abuse: the person checks, rate-limit counters and IP hashes, kept for the short periods above.
5. Who processes data for us
- Vercel (hosting and server functions) — https://vercel.com/legal/privacy-policy
- Supabase (database, sign-in, sign-in emails) — https://supabase.com/privacy
- Google (Gemini API for the built-in AI; Google Drive and Google sign-in when you use Drive; Gmail, the mailbox for resumeaipro@gmail.com) — https://policies.google.com/privacy and https://ai.google.dev/gemini-api/terms
- Upstash (rate-limit counters) — https://upstash.com/trust/privacy.pdf
- Razorpay (payments) — https://razorpay.com/privacy/
- Resend (the sign-in code emails, once our own email sender is set up, and the emails the service sends the developer) — https://resend.com/legal/privacy-policy
- Cloudflare (Turnstile, the check that you are a person, when it is turned on) — https://www.cloudflare.com/privacypolicy/
- OpenRouter (public list of AI models and prices, downloaded by your browser when you use your own key)
- AI providers you choose with your own key (OpenAI, Anthropic, OpenRouter, Google) under their own terms.
These providers may process data outside India, including in the United States and the European Union.
6. How your data is protected
What the app and its servers do today:
- Every connection uses HTTPS, and the site tells browsers to use nothing else for it (HSTS).
- The site's Content Security Policy lets a page run scripts only from this site and the services named in this policy; no other site can show these pages inside a frame.
- There is no password to steal: you sign in with a one-time code sent to your email, or with Google.
- The database's own rules let a signed-in account read only its own synced resumes and job tracker. The database's administrator key and the keys for the built-in AI and for payments stay on our server, never in the app your browser loads, and each build is checked for AI keys before it is published.
- A copy moved to another device is encrypted in your browser before it is sent (AES-GCM, with a key made from a one-time code by PBKDF2-SHA256 at 210,000 rounds), and can no longer be read after 15 minutes.
- Your own AI keys are encrypted in your browser (Section 2), and your contacts' details are encrypted before they sync (Section 3).
- A payment counts only after our server has checked Razorpay's signature on it.
- Our server functions limit how often one address, browser or account can use them (the counters in Section 3), and account events are recorded (Section 3).
If something goes wrong. If personal data we hold is exposed, we tell the Data Protection Board of India and tell the people affected without delay: what happened, what it means for them, what we are doing about it and what they can do.
7. Your rights and how to use them
You can, at any time:
- See and download your data: everything is visible in the app; each resume downloads as a JSON backup, and the job tracker has its own Backup button. If you are signed in, you can also ask us by email for a copy of what our servers hold about your account; we send it to that account's email address.
- Correct it: edit anything in the app, or write to us about anything our servers hold.
- Delete it:
- a resume (My Resumes), or everything on this device (Reset All Data);
- a public share link (Share publicly → Delete link);
- your analytics (Privacy Choices → Delete my analytics data);
- your account: Account → Delete account. Your account and the resumes in it, and the public share links made while signed in to it, are deleted after 14 days (the links stop working when you ask for the deletion, and come back if you keep the account). Signing in during those 14 days lets you keep the account. Payment records are kept as tax law requires.
- Withdraw consent for analytics under Privacy Choices.
- Name a nominee: you can name another person (a nominee) to use these rights for you if you die or cannot act yourself: email us their name and email address.
- Ask us about anything here, or ask us to do any of the above for you: resumeaipro@gmail.com.
These rights apply wherever you live, including under India's Digital Personal Data Protection Act 2023, the EU and UK GDPR, and California's CCPA/CPRA. If you are not satisfied with our answer you can complain to your data protection authority (in India, the Data Protection Board of India).
We do not sell or share your personal information for cross-context advertising.
8. Age
The Service is for people 18 or older. We do not knowingly collect data from anyone younger. If you believe a child has used it, write to us and we will delete their data.
9. Changes
When we change this policy in a way that matters, we update the version and date above and show a notice in the app before the change applies to you.
10. Contact
Email: resumeaipro@gmail.com
Website: https://resume.ekatra.space