Privacy Policy
Last updated 26 July 2026
The short version. We never store what you write. Your reply is sent to an AI provider, scored, and discarded. We keep only the score and the date so your streak works. Not storing it is not the same as nobody seeing it, so §5 sets out what that provider is allowed to do with the text. You can use RizzReps with no account at all, though we count requests (against your account when you're signed in, against your IP address otherwise) to stop abuse. If you subscribe, Stripe handles the card and we never see it. We don't sell your data or run ads. We do keep running totals of how the product is used, such as how many people opened the practice screen today and how each prompt scores. They are counts with no identifier attached, so they count events rather than follow people, and nothing about them is stored in your browser (§§3, 11). You can download or delete everything we hold at any time, yourself, from your data.
This policy explains how Colin Maloney(“RizzReps”, “we”) collects and uses personal information when you use rizzreps.com. It applies to everything on this site.
1. Who we are, and where we operate
- Colin Maloney, 4214 Island Drive, North Topsail Beach, NC 28460, United States
- Privacy contact: privacy@rizzreps.com
RizzReps is offered in the United States only. That is not a disclaimer — the site is unavailable outside the US and its territories, and requests from elsewhere are turned away at the edge before anything is stored or sent anywhere. Everything below therefore describes a service operated in the US, under US law, for people in the US. If you are outside the US you cannot use RizzReps, and we would rather say so than quietly take your data.
2. Adults only
RizzReps is for adults aged 18 or over. It deals with flirtation and romantic/sexual tension, and is not directed at children. We ask you to confirm your age before you practice. If we learn we have collected data from someone under 18, we delete it.
3. What we collect
If you never sign in
- Your streak: the dates you practiced, stored in your own browser (
localStorage, keyrizzreps.streak.days). It never reaches our servers, and clearing your browser storage erases it. - Your reply: sent to our server to be scored and passed to an AI provider (see §5), then discarded. It is never written to our database.
- Your IP address: when you are not signed in, it is what we count requests against, so we can stop abuse and keep the free daily allowance fair. It is held by our rate-limiting provider for the length of the counting window and no longer: one minute for the burst limit, 24 hours for the daily ones. See §11.
If you sign in with Google
- Account data: your email address and display name, received from Google. We never receive your Google password.
- Practice history. For each rep, only: which prompt you were shown, your score and band, the one move the grader picked as your biggest gap, and the date. Not the reply you wrote, and not the feedback or suggestion generated from it.
- Unlocked lines: which lines you have unlocked from the reply vault, so a credit is never charged twice for the same one. We store the line's identifier and the date, not any text you wrote.
- Session cookies: strictly necessary to keep you signed in.
- Usage counters: your daily allowance is counted against your account rather than your connection, so you get the number we promised even on a shared network. Your IP address is still checked against a much higher per-connection ceiling, to stop one host running up an unbounded bill.
If you use a referral code
- Your own code, the bonus credits it has earned you, how many people have used it, and whether you have used someone else's. It is in your data export and it goes when you delete your account.
- Not who referred you, and not who you referred. There is no record anywhere linking your account to theirs, in either direction. It is not hidden away or kept for internal use: the database has no column for it. Whoever's code you use is never told it was you, and you are never told whose code you used. What each side sees is a number.
If you subscribe to Pro
- Subscription record: your Stripe customer and subscription identifiers, the status of the subscription, which price you are on, when the current period ends, and whether you have cancelled. That is all we keep, and it is only there to answer “is this account Pro right now”.
- Not your card. Card number, expiry, security code and billing address are entered on Stripe's own checkout page and go to Stripe, not to us. They never reach our servers and there is nowhere in our database they could be stored. See §6.
Automatically
Our hosting, database and rate-limiting providers process technical data such as IP address and request logs to deliver and secure the service.
Whether or not you sign in: how we count what the product is doing
We keep a set of running daily totals so we can see where people give up. They are counts and nothing else: for a given day, the number of times the landing page was opened, which of the five buttons on it was clicked, how many times the practice screen was opened, how many reps were scored, how often the daily free limit was reached, and how each prompt scores on average.
There is no you in any of it. The table these go into has no column for an account, a session, a device, an IP address or a cookie, and that is not data we collect and then strip out. It is data we never ask for. So a total can go up, but nothing in it can be traced back to the person who made it go up. Nobody can ask it whether you clicked the button, how many times you visited, or what you did next, because the information that would answer those questions was never collected. What we get is the shape of the crowd, never a path through the site walked by one person.
Two consequences worth spelling out. Nothing is stored in your browser to make this work and nothing is read from it: no tracking cookie, no hidden identifier, no fingerprint (§12). And because there is nothing in those totals that belongs to you, there is nothing in them for us to show you or delete when you ask (§10). We list the table in your data download anyway, and say why it is empty of you, rather than leaving it out and letting you wonder.
4. Sensitive content, and why we don't keep it
RizzReps exists to help you practice flirting, so the replies you write may relate to your sex life or sexual orientation. Several state privacy laws treat that as sensitive information and hold it to a higher standard than ordinary personal information — and it is the kind of thing that does real damage to a real person if it ever leaks, which matters more than which statute names it.
Our answer is not to ask you to trust us with it. We simply never store it. Your reply is held in memory only for as long as it takes to score, then dropped; refreshing the page clears it from your browser too. Nothing you write is ever saved against your account, so there is no sensitive archive to leak, subpoena or hand over, and nothing for you to have to delete.
This is deliberate: your streak, scores and stats only ever needed numbers and dates, so numbers and dates are nearly all we asked the database to hold. The one exception is the named move above. It is chosen by reading your reply, but it can only ever be one of six words that ship in our own code, so what it records is which move to drill — the column could not hold anything you wrote even if something tried to put it there.
The same is true of the counts in §3, and it is enforced the same way rather than by us being careful. What a count records is that a rep happened and how it scored, never what you wrote. The database column that holds the label on a count will only accept a short, lowercase identifier with no spaces and no punctuation, which is what a prompt number or a button position looks like and is not what a sentence looks like. A reply could not be written there even by a part of our own code that tried to.
5. AI processing of your replies
To score a rep, we send the prompt and the reply you wrote to a third-party AI provider, which returns a score, feedback, and a suggested alternative reply. You are interacting with an automated system, not a person.
We send the text alone. Your name, email, and account ID are not attached to that request, and we keep no record linking it back to you.
The evaluator
If you use the evaluator, the situation you describe is sent to the same AI provider to be read, and is then discarded. It is never written to our database and never linked to your account, exactly as with practice replies.
We treat what you enter as a scenario to coach on. We ask you to leave out names and anything identifying, and the Terms require it; we make no attempt to identify anyone from it, do not enrich it against any other data, and keep none of it. If you believe someone has entered content about you, contact us at the address in §1, though in the ordinary case there is nothing stored left to remove.
This scoring is automated, but nothing turns on it: no eligibility, no pricing, no access decision. It is practice feedback in a game-like tool, and we do not use it to make decisions about you.
What the AI provider may do with it
We never store your text. That is a promise about our systems, and §4 explains how it is enforced. It is not a promise that nobody else ever reads it: the text has to leave our servers to be scored, and what the AI provider may then do with it is set by that provider's terms, not by ours. Those terms differ by provider, and for Google they differ by which API tier we pay for.
- Anthropic (Claude). Anthropic's Commercial Terms of Service state that Anthropic may not train models on customer content, meaning the inputs sent to the API and the outputs it returns. That applies to every call we make and does not depend on what we spend.
- Google (Gemini). This one depends on the tier.
- On a paid tier, Google's terms say it does not use prompts or responses to improve its products, processes them under its data processing addendum as a processor, and logs them only briefly to detect abuse of its own service.
- On the free (unpaid) tier, Google's terms say it uses the content submitted and the responses generated to provide, improve and develop Google products, services and machine-learning technologies, and that human reviewers may read, annotate and process API input and output, disconnected from the API key first. Google's own terms tell developers not to send sensitive or personal information to the unpaid tier.
This deployment is running Gemini on a paid tier, the one whose terms exclude your content from being used to improve Google's products and models. That is a statement about how we have configured and pay for the service; it is our responsibility, not something the app can verify from Google's side. If that ever changes we will update this page.
We will update this policy, and give prominent notice, before changing which providers we use or the terms we use them under.
6. Payments and your subscription
Pro is a recurring subscription taken through Stripe. When you start checkout we send Stripe your email address and an internal account identifier so the subscription lands on the right account. Everything else (your card details, your name, your billing address) you give to Stripe directly on a page Stripe serves. We never see or store it.
Stripe sends back a customer identifier and the status of your subscription, which we keep so the app knows whether to unlock Pro. We never receive your card number, and there is no field in our database that could hold one.
Stripe is not only handling this on our behalf. For parts of what it does (fraud prevention, complying with card-network rules, tax and anti-money-laundering obligations) Stripe decides for itself how your data is used, and is responsible for it in its own right. Its privacy notice covers that processing. One practical consequence is in §10: we can delete our records of you, but we cannot delete Stripe's.
7. Why we use it
| Purpose | Data | Why it is necessary |
|---|---|---|
| Score a rep and return feedback | Your reply | To provide what you asked for |
| Keep you signed in | Email, session cookie | To provide what you asked for |
| Keep your streak & scores on your account | Scores, dates (no content) | To provide what you asked for |
| Take payment and run your subscription | Email, account ID, Stripe IDs, subscription status | To provide what you asked for |
| Count your daily free allowance and credits | Account ID if signed in, otherwise IP address | To provide what you asked for |
| Stop abuse and keep AI costs bounded | IP address | To keep the service running safely |
| Keep the service secure and working | Technical logs | To keep the service running safely |
The two abuse-control rows deserve a word, because they are the ones you did not ask for. The data is an IP address, it is kept for hours at most, it is never used to profile you or work out who you are, and without it a public endpoint sits in front of a paid AI service with no limit at all. You can ask us to stop (§9), though it is what keeps the service usable, so we may not be able to serve you without it.
8. Who we share it with
We do not sell or share your personal information, and we do not use it for cross-context behavioural advertising. We use the providers below. Each is engaged under a data processing agreement, with two qualifications we would rather state than bury: Stripe also acts on its own account (§6), and Google's position depends on the Gemini tier in use (§5).
| Processor | Role | Location |
|---|---|---|
| Supabase | Authentication & database | US, AWS us-west-2 (Oregon) |
| Vercel | Hosting | US / global edge |
| Sign-in, and AI scoring (Gemini) | US | |
| Anthropic | AI scoring (fallback provider) | US |
| Upstash | Rate limiting & credits. Receives your IP address | US, AWS us-east-1 (N. Virginia) |
| Stripe | Payments. Receives your email, an account ID, and the card details you give it directly. Also acts on its own account for fraud and legal obligations (§6) | US / EU |
We may also disclose data where legally required, or to protect our rights or someone's safety.
9. Your choices about your data
You can see everything we hold, get a copy of it, correct it, or delete all of it, yourself, without asking us, from the page linked at the top of this policy. You can also stop using the service at any time and take your subscription with you.
We give these to everyone, not only to residents of states that require them. Several states now give their residents rights to know, correct, delete and opt out of the sale of personal information; we have not checked whether each of those statutes applies to a business this size, because building one path for everybody was simpler than building a lookup table of who deserves which rights. And there is no opt-out of sale to build: we do not sell your personal information, and never have. We also will not treat you worse for exercising any of this.
You don't have to ask us for most of them. Go to your data. Signed in, that page will hand you a file containing everything we hold about your account, and will delete all of it on request, with no email to send and no wait. Signed out it still works: there is nothing on our servers to show you, and it will clear what this browser has stored. For anything it doesn't cover, email privacy@rizzreps.com and we'll respond within one month.
Deleting erases your profile, your scores, your streak days, your banked longest-streak record, the lines you've unlocked, and our record of your subscription, and where we can, your sign-in account itself. If any part of it can't be removed automatically, we say so on the spot rather than reporting a clean delete, and we finish it by hand when you tell us. There is no stored practice content to erase, because we never kept any.
One thing we won't do while you're paying. If you have a live subscription that is still set to renew, we refuse the deletion and point you at the billing portal first. Deleting the account would remove the only record connecting you to that subscription, and Stripe would carry on charging a card for an account that no longer exists, with nothing left on our side able to see it happening. Cancel first and we'll delete straight after; if you have already cancelled and are just running out the period you paid for, we won't stand in your way.
One thing deletion does not reach. If you have paid us, Stripe keeps its own record of the customer, the payments and the invoices, and is required by tax, accounting and anti-fraud law to do so. We cannot delete those records on your behalf, and no privacy request to us can override a retention duty that binds Stripe. Tell us if your request covers payment history and we will point you to Stripe; everything on our side we can and will erase.
If you think we have got any of this wrong, email privacy@rizzreps.com first: one person reads it and can actually fix things. If that does not resolve it, you can raise it with the North Carolina Attorney General's office, or with the consumer protection office of your own state.
10. How long we keep it
The short version. What you write is never stored at all. Everything tied to your account lasts until you delete it, which you can do at any time from your data. Below that, the rate-limit counters expire within a day, and two things are not ours to end: the usage totals hold no identifier, so there is nothing in them to connect to you and delete, and Stripe keeps its payment records for as long as its own legal obligations say.
- What you write: never stored by us. Discarded as soon as the rep is scored, whether or not you are signed in. The same is true of anything you paste into the evaluator. How long the AI provider keeps it is set by that provider, not by us, and depends on the terms in §5. On a paid tier it is logged briefly for abuse detection; on Google's free tier no period is stated.
- Your account, unlocked lines & longest-streak record — until you delete your account. We do not currently delete dormant accounts on a timer, and we would rather say so than name a period we are not enforcing.
- Scores: 90 days on the per-rep score history, and 400 days on the dates you practiced. These are enforced — a job runs every night and deletes what has aged past them. Your all-time longest streak is banked as a single number before the older days go, so pruning the diary never costs you the record.
- Subscription record: while you have an account. Deleting the account deletes it.
- IP address and usage counters (rate limiting): for the length of the counting window only: one minute for the burst limit, and 24 hours for the daily limits, credits and the per-connection ceiling. They then expire by themselves.
- Usage totals (§3): two years, enforced by the same nightly job. It is not a limit the law requires of us, because there is nothing in those totals that belongs to any person; we set one because a table that grows forever is a table nobody ever looks at again, and a funnel number older than two years describes a product that no longer exists.
- Streak (browser): until you clear browser storage.
- Technical logs: for as long as our hosting provider retains them. The period is set by that provider's plan, not by us, so naming a number here would be quoting something we do not control.
- Payment records held by Stripe: for as long as Stripe's own legal obligations require, which is longer than any period above and is not ours to set. See §10.
11. Cookies and local storage
We use only what the service needs. There are no advertising trackers, no third-party analytics, and no cookie or identifier that follows you here or anywhere else on the site, and nothing here is shared with anyone. We do count how the product is used (§3), but that counting happens on our own servers: it puts nothing in your browser and takes nothing out of it, so there is nothing about it to consent to and nothing to opt out of.
- Nothing for the counters. No measurement cookie, no stored identifier, no fingerprint. When the page tells our server “the landing page was opened” or “the footer button was clicked”, that message is the whole of what it sends. It carries no name for you and reads nothing off your device to put in one.
- Session cookies (Supabase): strictly necessary to keep you signed in.
- localStorage, all of it stored in your browser and never sent to us:
rizzreps.streak.days(the dates you practiced),rizzreps.reps.today(today's rep count, for your daily goal),rizzreps.onboarding.v1(your 18+ confirmation, what you said you're here for, and your daily goal, so we don't ask again), andrizzreps.saveprompt.dismissed(that you closed the sign-in prompt). One more,rizzreps.consent.v1, is left over from an older version of the age gate. We only ever read it, so you aren't asked twice, and the control on your data clears it along with the rest.
12. Security
Data is encrypted in transit (HTTPS) and at rest by our providers. Database access is protected by row-level security so one account cannot read another's data. AI provider keys are held server-side only and never exposed to your browser. Subscription records can only be written by Stripe's signed webhook, never by a request from a browser.
13. Changes
We'll update the date at the top when this policy changes, and give prominent notice of anything material, particularly any change to how your practice content is used.