What we collect
- Check data. The brand and category you enter, the 5 generated buyer questions, the AI's answers, and your resulting score. This is what powers your results and any shareable link you create.
- A hashed IP address. We hash your IP address (SHA-256) before storing it, and only use it to enforce the per-minute burst limit and the global daily cap on checks. We never store your raw IP address.
- Your email, only if you give it to us. If you leave your address alongside a check result, we store the email address you enter and, optionally, a reference to the check it relates to. We do not collect email addresses any other way.
- Analytics. We use Google Tag Manager to load analytics tags that tell us which pages get visited and how people find the site. We also count two things you do: that a check finished, and that an email was saved. Those two counts carry no detail about you — the check event includes only a coarse band for the score (none, some, most or all of the 5 questions), and neither one carries your brand, your category, your email address, your result link, or any of the AI's answers. This does not affect the data described above — your checks, hashed IP, and any email are handled the same way regardless.
- Your account, if you create one. Your email address and your password — the password only ever as a PBKDF2-SHA256 derivation with a random per-account salt, from which there is no path back to what you typed. A login session is a random token in a cookie; we store only its SHA-256, so a copy of our database cannot be replayed as a login.
- Provider API keys, only the ones you deliberately save. If you save a key on the Settings page, we store it encrypted. See the section below for exactly what that protects you against, and what it does not.
What we don't collect
- No raw IP addresses — only the hashed form described above.
- No password in a readable form — see above.
- No API key from a one-off check. If you paste your own key for ChatGPT, Gemini, DeepSeek, Groq or Perplexity into the checker on the home page, it is sent with that one check, used to ask the questions, and discarded when the request ends. It is never written to our database and never written to a log, at any level, including error logs. That is unchanged. Keys you deliberately save in Settings are a separate, opt-in thing, described next.
Bring-your-own-key providers
The free check runs on Claude using our own Anthropic key, and on Gemini using our own Google key. You can optionally add your own API key for another provider to compare answers. When you do:
- The key travels with that single check over HTTPS, is used as an authorization header for the requests to that provider, and is discarded. We store nothing about it — not the key, not a hash of it, not a fingerprint.
- If you tick “Remember these keys in this browser”, the keys are saved in your own browser's local storage on your device so you don't have to paste them each time. That is a convenience with a real tradeoff: anything running in that browser can read them. The box is off by default, and “Forget saved keys” clears them.
- Your brand, category and the generated questions are sent to whichever providers you select. For a provider you supplied a key for, that request is processed under its own API terms and your own account with them. For Claude and Gemini on a free check, it is processed under our accounts — see the note on Google below.
Keys you save in Settings
If you have an account, you can save a provider API key so you don't have to paste it every time. That is opt-in, it is not required for anything, and every weekly run works without it. Here is exactly what happens to a saved key:
- It is encrypted (AES-256-GCM) before it is written to our database, under a key that is not stored in that database. So a copy of the database on its own contains no usable keys.
- The limit of that, stated plainly: this site can decrypt what it stores, because it has to in order to use the key. So the encryption protects you if our database leaks. It does not protect you from us, and we are not going to claim otherwise. If that is not a trade you want, don't save a key — pasting one into a one-off check still works and stores nothing.
- We keep the last four characters unencrypted so the page can tell you which key is saved. We never display the key again and never return it from any API.
- A saved key is used for two things only: a run you explicitly start on your keys from a keyword's page, and every run of a keyword you have set to daily. Both spend your budget with that provider. A weekly run never touches it — that one is on our key, as it always was — and it is never used for anyone else's check.
- Removing a key on the Settings page deletes the stored row.
Who else sees this data
Running a check requires sending your brand, category, and generated questions to Anthropic (the maker of Claude) and to Google (the maker of Gemini) to get the AI's answers — that's the core of the product. Each processes that request under its own API terms. The site itself runs on Cloudflare (Workers, D1 database, and Turnstile for bot protection), which processes traffic and stores data on our behalf as our infrastructure provider.
If you subscribe to a paid plan, Stripe processes the payment. Your card details go to Stripe directly and never reach our servers — we store only the customer and subscription identifiers Stripe gives us back, which is what tells the app which plan you are on. We cannot see your card number, and we never charge a free account.
Google is different from the others, and you should know how. Our Gemini key is on Google's free tier, and Google states that content submitted on that tier is used to improve their products. Anthropic's API terms do not do this. So a free check sends your brand and category to two companies on two different bargains: Anthropic processes it to answer and no more, while Google may also learn from it. If that matters to you, add your own Gemini API key in Settings — a check on your key runs under your account and your terms with Google, not ours.
We don't sell data, and we don't share it with anyone else for advertising or marketing purposes.
Why we store check results at all
Storing each check is what makes the "Copy verdict" / "Share on X" links and the /r/<id> results page work — if we didn't keep the record, a shared link would have nothing to load. It also lets us enforce fair-use rate limits without asking you to sign in.
How long we keep it
Check records and hashed IPs are kept to operate the product (results pages, rate limiting, and abuse prevention). If you'd like a check or a stored email removed, contact us — see below.
Your choices
Running a check needs a free account, so we hold the email address you sign up with — that, and a password we only ever store as a PBKDF2 hash, is the whole of it.
You can delete your account yourself, from Settings. It removes your account, every tracked query and its run history, every check you have run, any saved provider keys, your API tokens and connected apps. Shared result links stop working, because the answers behind them are part of what gets deleted. If you have a paid plan it is cancelled with Stripe first, and if that cancellation fails nothing is deleted — we will not leave you being charged for an account you can no longer log into. We keep one thing: a record that Stripe sent us a billing event, with your account identifier removed from it.
If you only want an email address removed, or a single shared result taken down without deleting the account, reach out via alejandrorioja.com and we'll handle it.
Changes to this policy
If what we store changes — for example, when accounts or the paid plan launch — this page will be updated first, and the "last updated" date at the top will reflect it.
Run a free check