Privacy & access
jevmail scores a proposed email draft against your own sent mail. You paste a draft on the site, or an agent you have given a key submits one; jevmail reads the conversation it replies to and examples of your sent mail, asks your saved questions about the draft, and returns typed answers: yes probabilities, categories or positions on your own rubric. You can save a successfully reviewed proposal to Gmail, or link an existing Gmail draft. Send draft sends the reviewed content unchanged. A matching reviewed Gmail draft keeps its original formatting, attachments and Bcc; attachment contents are not analyzed. Changes since the final version check require a refresh. When sending a text-only review, Jevmail creates a Gmail draft containing those exact words.
What jevmail accesses
Google provides your account ID, name and email address. With your consent, jevmail reads Gmail. New connections ask for Google’s read-only Gmail permission. Sending is optional: when you enable it, Google also asks for permission to manage drafts and send mail on your behalf. Accounts with the older send-only permission must grant draft permission first. Older connections with Gmail’s modify permission can already send. Agent keys and connected apps cannot send through jevmail. jevmail’s use and transfer to any other app of information received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements.
Scoring a draft reads the message it replies to and up to 9 other messages in that conversation, up to 6 recent sent messages addressed to the draft’s recipients, and up to 4 other recent sent messages. Trying a question on your own mail prepares a test set from your 20 most recent sent emails, each with its conversation and sent-mail evidence, and up to 10 recent agent drafts from the audit. Name completion reads To and Cc from your last hundred sent messages and From from your last hundred inbox messages. Conversation lookup reads previews for the recipients you typed; those previews are shown only to you. While a Gmail draft review is open, the linked draft and attachment names, sizes and types may be refreshed every thirty seconds while the tab is visible. When you send, Gmail is checked again and the original MIME is read to verify its current version; Gmail sends the existing draft by ID without replacement content. Attachment contents are not analyzed or stored.
The Needs you list and conversation progress read the encrypted synced mailbox copy without asking Gmail or triggering a browser refresh. Each mailbox shows its actual completed sync time, syncing status or a named failure with its last confirmed time. Retained SENT evidence can confirm a reply after a later sync failure; an incomplete copy cannot establish that a conversation is open or that an inbox is empty. No separate computed progress snapshot is kept.
Jevmail scores each eligible copied inbox thread against your saved question through Vercel AI Gateway. Only the latest message in a thread is eligible. A later message from anyone leaves every earlier message in that thread out of next and the inbox. An inbox row links a draft only when that draft replies to the latest message on that row. A thread whose latest message is yours is not offered for reply. The model sees each copied message in the thread: sender, recipients, subject, date and short snippet, never an unseen full body. One score is saved per thread. A new message in the thread, including one you sent, makes that score stale until the thread is rescored; the previous score is not served. Scores are saved in Postgres. The importance view reads them and makes no model or Gmail call. next rescores the current top thread through Vercel AI Gateway, including the current time, and continues with the new top until one thread remains top; each fresh score is saved and logged with that call’s request id. next makes no Gmail call, and it never sends, alters a draft, or changes Gmail. Handling one thread leaves the remaining scores and order unchanged. Unscored threads are counted explicitly and retried during sync. Changing the saved question starts a background rescore; the previous question and its scores keep serving, with a rescore notice, until all replacement scores are ready. next takes no arguments and serves the saved question. Scores are model judgments, not verified identity or urgency. Named warnings describe incomplete, failed or lapsed mailbox copies; pending mail never produces a false empty-inbox claim.
Same-sender lookup reads the source message’s sender and List-Id from the copy, or accepts a bare sender address or List-Id directly. It matches INBOX rows only in the requested connected mailbox, excludes the source and returns up to twenty message IDs with sender, subject and date, newest first. No other mailbox is searched, no Gmail or model call is made, and nothing is archived. Named warnings disclose incomplete or lapsed copies, and capped means more matches may exist. The agent must ask you before archiving through its own authorized Gmail access. Replied and dismissed conversations are excluded from next; age and model scores never handle mail.
How the model is used
A new assessment is one request to Typesafe.ai’s Jev model through Vercel AI Gateway. Each request is asked afresh; an identical one made while the first is still running is refused, not run twice. A new request carries the draft as submitted, bounded plain-text excerpts of up to 2,000 bytes from each evidence email with their senders, recipients, subjects and dates, and your questions. Each answer follows your question’s type: Noul returns a yes probability, Choice returns a category and distribution, and Score returns a position on your ordered levels; there is no combined quality score, critique or rewrite. Agents cannot send email; only you can send a reviewed draft from the website. For a Gmail draft, attachment filenames, sizes and types are included, with an explicit indication that their contents were not read. The draft body is accepted up to 12,000 bytes and passed unchanged. Email content is treated as untrusted data, never as instructions.
Your mail is used only for the scoring, conversation lookup and inbox triage you or your authorized agent request. jevmail does not use it to train or improve any model. The agent or connected app you authorize receives the inbox messages you ask it to triage. Scoring requests, and the inbox previews next weighs, pass through Vercel AI Gateway to Typesafe, which processes each request under its own data policies; jevmail does not claim zero retention by that provider. Scores are estimates: they have not been calibrated against your own judgment of your drafts.
Agent keys
You create one agent key per account in Settings → Agent access. It is shown once, replaces any older key, expires after 30 days, stops working when Gmail is disconnected, and can be revoked at any time. jevmail stores only its hash. The key can score drafts, read and try your questions, and read the next inbox email across your connected mailboxes. A connected MCP app has the same triage access. Only your signed-in browser session can change saved definitions. When requested, the key can save a scored draft to Gmail and update that same draft with later revisions. It cannot overwrite unrelated drafts or changes made in Gmail, send email, or act as you in the browser. Assessments are limited to twelve per account per minute.
Application outboxes
Applications you register have separate, scoped keys, stored only as hashes. They can submit proposed plain-text emails, retrieve their own originals and approval status, and report send outcomes; they cannot read your Gmail or personal questions, or approve proposals. The original proposal, application-supplied context, saved owner versions and discard actor/time are kept encrypted in Neon until you delete your account. Discard prevents further approval or editing; it does not erase the review history. It cannot recall a version already shared with an application.
Application questions are configured separately from your Gmail questions. Only when you explicitly request an application evaluation does jevmail send the selected saved message version, the application’s supplied context and those definitions through Vercel AI Gateway to Typesafe.ai. It does not look up Gmail evidence. Each evaluation’s question definitions and version, exact evidence, model requests and any received responses, native answers and failure details are kept encrypted with the application for inspection until account deletion. Oversized model responses are omitted with an explicit failure and byte count. These are model judgments, never permission to send; manual review does not require an evaluation.
Approving an exact version shares its sender, all recipients (including Bcc), subject and text with your application through its configured HTTPS webhook. Jevmail never sends application email; the application sends through its own provider and reports the result. Webhook endpoint URLs and signing secrets, approvals, delivery attempts and application reports (including provider receipt IDs and text actually sent) remain encrypted until account deletion. Response bodies from webhook endpoints are not retained. Missing delivery results remain unknown; retries require your action and may reach an app that already received the event. An app report is its claim about sending, not independent provider verification; changed text or a superseded approval is visibly flagged.
What is stored
Your identity, sessions and encrypted Google tokens are stored encrypted in Neon Postgres. Your questions, and your question for choosing the next email, are stored encrypted per account. Every draft scored, from the site or by an agent, is kept in a private, encrypted audit: the accepted draft and recipients, the exact excerpts prepared for scoring, the questions and scores, the revision link, any owner feedback submitted with a revision, timestamps and failures. When you send, an encrypted delivery record keeps the final body, footer, timestamps, Gmail message ID, Bcc recipients, attachment metadata and any uncertain outcome, so a repeated request does not send twice. Only your signed-in session can open Draft calls; agent keys cannot. The draft audit is retained for 90 days from each call. Expired records, including their delivery records, are deleted when the audit is next read or written; the entire audit also expires after 90 days without a write. Delivery records automatically expire 90 days after the send attempt, and checking or updating an outcome does not extend that period. Expired drafts cannot be sent through jevmail. Invalid or oversized submissions are not retained.
So a question’s test set holds still while you compare wordings, the test set is kept encrypted for six hours, scoped to your account and Google connection; answers on it are asked afresh each time and not kept. Your send-as addresses are read from Gmail when needed and not kept. Synced message content is retained in the encrypted mailbox copy described below. An operational log keeps, for seven days, which emails each model call named, by ID and hash, never their content. A usage ledger keeps counts of requests, Gmail calls and model tokens per account for two years. An activity log records each request and lifecycle event—signups, logins, mailbox connections, agent key changes and draft actions—with timestamps, request area, status, duration and the Gmail requests each made (method, result and timing), but never draft text, subjects, recipients or message bodies; it is retained for 90 days per account. Separately, for each request you or your agent make, the input, each request jevmail sent its scoring model with the model’s answer, and the answer jevmail returned, which can include draft text, recipients and email excerpts, are kept encrypted per account for 90 days so you can inspect them in your log; only your signed-in session can open them. Message bodies are never written to application logs. Messages sent through the support page are kept encrypted for a year with the address they came from, so they can be answered. Gmail pacing, request-limit counts and temporary write reservations are stored in Neon Postgres, keyed by account ID or a hashed request source, with expiry timestamps. Account deletion removes coordination records keyed to your account. Activity, usage, support and call logs, draft audits and delivery/export state, draft choices and review pointers, saved questions and their numbering, and account, mailbox, session, OAuth, agent-key and Gmail-health records are stored in Neon Postgres. Content-bearing records are encrypted. Retained test sets, research snapshots and inbox progress caches are stored encrypted with their original expiry. Expired records stop being readable at their expiry time and are physically removed by a daily retention job. Each operation an agent calls also returns a request id and appends one row for that account: the id, time, operation, caller, mailbox, and the message and thread ids given or returned. That row has no subject, body or sender address. It is kept for the life of the account and removed when the account is deleted. Hosting and model-request routing are provided by Vercel, storage by Neon, and scoring by Typesafe.ai; each may process your data outside Québec and Canada.
If you run the optional local question-research tool, it reads up to 120 sent messages and up to ten agent drafts from the connected mailbox you choose. Research snapshots are encrypted on the server for 24 hours and can be exported to private local files. Evaluations send the stored drafts and evidence through Vercel AI Gateway to Typesafe.ai. When you explicitly run question proposals with gateway authentication and a chosen model, the local tool sends discovery writing and development failures through Vercel AI Gateway to that model’s provider; it does not send held-out test cases to the proposer. Research does not save questions or send email. Local exports and reports remain on your computer until you delete them.
Jevmail keeps an encrypted copy of your synced mail: your inbox, sent mail since the oldest inbox message, and previously tracked conversations, including message text. A background sync runs every minute and, when enabled, when Gmail notifies us through Google Pub/Sub; a notification carries only your address and a change number. Subjects, senders, recipients, previews and message text are encrypted. IDs, times, labels, message ownership and whether you replied to, archived, or resolved a conversation are kept separately, along with keyed lookup hashes of senders, mailing-list IDs, and Message-ID headers. A sent message whose In-Reply-To or References header names a message in another open thread marks that thread resolved in Jevmail and leaves it out of next until a newer message arrives or the resolution is cleared. That match does not call a model, and Gmail labels and drafts are not changed. A first sync or resync can take several runs; a partial or failed run is never marked complete. While a copy fills, next-email selection and draft review can use conversations whose sent-mail range is already fully copied, with a partial-copy warning and check time; messages that might have an uncopied reply remain unavailable. A copy stopped by the size limit keeps serving that covered window. The copy mirrors Gmail deletions on the next successful sync and keeps full synced messages regardless of age or handled state. It is used only for Jevmail features and is wiped when you disconnect Gmail, remove that mailbox, or delete your account. Review pages, next-email selection and same-sender lookup read this copy without asking Gmail. Scoring new drafts, explicit send checks and sent-mail ingestion may still read Gmail.
Inbox scoring runs after mailbox sync, on a saved-question change, and through a fifteen-minute retry job. It includes eligible copied mail already present when scoring starts. Each score’s model context is that thread’s copied sender, recipients, subject, date and snippet, plus the latest message of at most five other open threads in the same mailbox from the last 14 days. A related thread shares a human From, To, or Cc address; participants on a mailing-list message and no-reply-style addresses do not count. The application log records how many related threads were included and the context size, not their text. Each bounded run attempts up to twenty-five missing scores; unsuccessful attempts rotate and retry on later runs. Scores keep message IDs, dates, numeric importance, question versions and scoring times in Neon, linked to the encrypted mailbox copy. The serving question is encrypted. Canonical replied and dismissed state comes from the copy, with no separate handled flag. Scoring never sends or archives mail. Successful scores are reused for that question; completed replacement generations remove obsolete scores. Scores are deleted with the thread, mailbox or account. Automatic scoring retains usage counts and content-free model-call metadata, without model inputs or outputs in the owner’s call log. The retired batch-choice cache and older scoring-index tables are no longer used; their schema remains temporarily for safe deployment rollback.
Inbox triage inputs and outputs are kept in the call log for its usual 90 days. Outcome records from the retired resolve feature no longer affect inbox choices; legacy records are removed when you delete your account. Separate archiving credentials from that feature are never used for Gmail access and are revoked and removed when you disconnect Gmail or delete your account.
Your choices
Signing out ends the current session. Disconnecting Gmail revokes Google access, deletes saved tokens, stops agent keys and signs you out on all devices. It also deletes the encrypted mailbox copy, inbox index and mailbox sync cursors; your questions, draft-call audit and basic account identity remain for when you reconnect. Deleting your account (Settings → Delete account) revokes Google access to every connected mailbox and deletes everything jevmail keeps for you: your identity, sign-ins, agent keys, questions, drafts and their scores, deliveries, inbox resolutions, call log, operation request ids and caches. Messages you sent to support are kept so they can be answered. You can also remove jevmail’s access in your Google Account’s third-party connections.
Managing your data
To request account and data deletion, contact the operator below. The terms of service say what jevmail is for and where responsibility sits.
Who is responsible
jevmail is operated by Ben Nevile, who is also the person responsible for the protection of personal information under Québec’s private-sector privacy law. Reach him through the support page or by email at support@jevmail.xyz to ask what jevmail holds about you, to correct it, or to have it deleted.