Privacy policy
This privacy policy lists what this site stores about you, in full. It is a short list, and every line of it is checkable against the source code.
What is stored
| What | Why | How long, and in what form |
|---|---|---|
| Your email addressemail: · key: · account: | To tie keys, credits and purchases to one account, and to show a signed-in visitor their own usage. | Plaintext, lowercased. Kept until you revoke the key. |
| A SHA-256 hash of your API keykey: | To recognise the key when you present it. | The key itself is never stored and cannot be recovered — not by you, not by us. Shown once at issue. |
| A count of credits used this monthusage:<month>:<email> | The free tier is 5 credits a month and something has to count them. | An integer per address per month. Expires on its own 40 days later. |
| A session, if you sign insession: | So you stay signed in. | An opaque random id in a httpOnly cookie. The row holds your email address, and with Google sign-in also your name and avatar URL. 30 days. |
| A pending email sign-in, if you ask for a codeemail-login:<email> | To check the code or link you were sent. | Hashes of the code and the link token, where to return you, and the time. Deleted when used, gone after 15 minutes either way. A counter of codes asked per address and per IP limits abuse. |
| A log of each callcall_log | So the dashboard can show your usage, and a failed call can be explained when you ask about it. | Time, which tool or endpoint, the names of the questions (never their text), credits charged, input tokens, latency, and whether it succeeded or why not. Kept until deleted on request. |
| Your purchasesgranted:<order> | So a payment adds its credits exactly once, and a billing question can be answered. | Order id, email address, credits and time. Kept, because a payment has to stay reconcilable with the processor's own record. |

What is not stored
- The text you send to the API or type into the playground, chess board, Wikirace or any other tool. It is forwarded to the model and the answer is returned. Nothing on this side writes it to a database or a log.
- Your Google password. The sign-in happens on Google's own page; this site never sees it.
- Your own TypeSafe key, if you use one. It stays in your browser, goes with each tool or API request that should run on it, is passed to TypeSafe for that one call and dropped, and is never written to a database or a log here.
- Any payment detail. The card form is hosted by the merchant of record named on the checkout page before you enter anything, Waffo or Creem (Stripe, for packs bought before 2026-10-03). No card number, expiry or CVC reaches this site or is stored here; what comes back from a payment is an email address, a plan name and a credit count.
- Anything you typed, in analytics: lib/analytics.ts sends event names and buckets only.
- Your workspace chats. A conversation, its attached documents and its results stay in your browser. Each message goes to the language model you pick, through OpenRouter; attached documents go to Jev, and only their names and first few hundred characters reach the language model. None of it is written to a database or a log here.
The first line is the one in this privacy policy that matters if you paste a real support ticket into the playground: your text is sent to TypeSafe's API, because that is the tool, but nothing here keeps it. TypeSafe states that it does not train on customer requests or responses; that is their claim about their systems, linked below.
Cookies
| Cookie | Set when | Life |
|---|---|---|
| jev_session | You sign in, with Google or an emailed code. httpOnly, SameSite=Lax, Secure. | 30 days |
| jev_oauth_state | You start a sign-in. A CSRF guard, single-use, cleared the moment you come back. | Minutes |
| jev_next | You start a sign-in from a page. Holds that page's path so you land back on it; cleared when you return. | Minutes |
| jev_free | You run a tool or the playground without an account. httpOnly; counts how many of the three anonymous runs are used. | 30 days |
| jev_offer_start | Your first visit. The time you arrived, which starts your own launch-offer countdown; nothing else. | 1 year |
| jagent_lang | You pick a language in the switcher. Holds that choice, such as ja. | 1 year |
| jagent_geo | Your first page view. The language chosen from your country, kept so the one-time switch to a translated page never repeats; the country itself is not stored. | 1 year |
| jagent_theme | You press the light/dark button. Holds light or dark; choosing the system setting again deletes it. | 1 year |
| _ga, _ga_* | Always. Google Analytics 4, property G-GFSFDXTZNN. | Up to 2 years, set by Google |
| — | Umami sets no cookie at all. It is the second analytics tool here and the one we would keep if only one survives. | n/a |
The ad iframes set cookies of their own that this site neither controls nor reads. They are served from a separate document precisely so their scripts are not running in the same place as your session — but that is a containment measure, not an absence. A content blocker removes them and nothing on this site breaks.
Who else sees anything
Each name links to that service's own privacy policy.
| Vercel | Hosting and request logs |
| Neon | The Postgres database holding the rows above |
| Sign-in (OAuth) and Google Analytics 4 | |
| Umami | Analytics, alongside GA4. No cookies, no fingerprinting, and it honours Do Not Track |
| X | Demo videos on /jev-demos and the home page, loaded when they scroll into view; X then sets its own cookies |
| Stripe | Card payments for credit packs bought before 2026-10-03, and refunds of those. Hosted the card form and received the buyer's email address; no card detail reached this site |
| Railway | Hosts our payment service, which holds the record of each Stripe payment (order, email address, amount) and of Waffo and Creem payment events this site reports to it |
| Waffo | A merchant of record for credit purchases, and the WeChat Pay route. Hosts the card form and receives your email address; no card detail reaches this site |
| Creem | A second merchant of record, used when the others cannot take the payment. Same data, same card handling |
| Cloudflare | Sends the sign-in code you ask for (Email Sending, from login@jev-agent.com). Receives your email address and the code |
| TypeSafe AI | The Jev API. Receives the text you submit to a tool or the API |
| OpenRouter | Routes the language models behind the workspace chat, the batch agent's planner, the rubric generator and the citation checker, and receives what you type there; it is asked to use only providers that do not collect it. Also the fallback route for Jev calls when TypeSafe's own API is unreachable |
| OpenAlex, Crossref, Semantic Scholar, Europe PMC | Scholarly indexes the citation checker searches. They receive the title of each reference it looks up, and nothing else from your text |
| Adsterra | The ad slots. Loads in an iframe and sets its own cookies |
Deleting what we have
There is no account-deletion form. There is an endpoint that removes the two rows that identify you:
DELETE /api/keysSend your key as the bearer token. It revokes the key and releases your address. Three things stay: the month's credit count, deliberately, because it is what stops “delete and re-register” from being an unlimited allowance (it expires on its own 40 days later); the call log; and any purchase record, which has to stay reconcilable with the processor's.
If you want the count or the call log gone sooner, or you have lost the key and cannot send it, email support@jev-agent.com and it will be deleted by hand.
Analytics, if you would rather not
The browser's Do Not Track setting alone does not stop Google Analytics; any content blocker does. Umami, the second tool, honours that setting on its own and drops query strings and hashes before recording, since this site puts things like ?purchased=starter in a URL. Neither has a server-side fallback, so blocking them means we cannot see you.
Last reviewed 2026-10-03.
Changes to this privacy policy
When what this site stores changes, the table at the top of this privacy policy changes in the same commit, so the page and the code cannot say different things for long. Questions about this privacy policy go to support@jev-agent.com.