Dash

Privacy Policy

Last updated 1 October 2026

Dash helps you see what you already own and what you spend. To do that it can, with your permission, read purchase-related messages in your email. This page explains exactly what it reads, what it keeps, and what it never keeps.

It can also send notes from your notes vault to a language model when you ask it to. The section on your notes says what is sent.

And when you ask Dash, the app’s assistant, a question, it can search your connected Gmail and read a message it finds. The section on asking Dash about your email says what that sends and what it keeps.

Who we are

Dash is operated by [TODO: legal entity name]. You can reach us at [TODO: contact email].

Google user data we access

If you choose to connect a Gmail account, we request the https://www.googleapis.com/auth/gmail.readonly scope. This is a restricted scope and it is read-only: we can never send, modify, or delete anything in your mailbox.

We use it for two purposes:

  • To find messages that are order confirmations, shipping and delivery notices, cancellations, and return or refund confirmations, and to extract the purchase details from them.
  • To answer a question you ask Dash about your email, by searching your mailbox at the moment you ask and, when the question is about what a message says, reading that message. This is described in the section on asking Dash about your email.

We do not download your mailbox for either. For purchases we ask Google for messages matching a narrow search: purchase-related subject lines and sender patterns, within the time window you choose when connecting (30 days to 2 years, 180 days by default). When you ask Dash, the search is built from the sender, words and dates your question names, and is run in Gmail itself across every mailbox you have connected.

What we store

From messages that turn out to be purchases, we keep the structured facts:

  • Merchant, order number, order date, and currency
  • Line items: product name, variant, quantity, and price
  • Subtotal, tax, shipping, discount, and total
  • Shipment status, tracking numbers, and delivery dates
  • Return and refund status and refunded amounts
  • The message identifier, its subject line, and the sender address, so we can show you where an order came from and correct it if we read it wrong

What we never store

  • The body of any email. Message content is held in memory only while a message is being read, and is never written to our database, our logs, or our error reports.
  • Anything about your unrelated mail. Most messages we look at turn out not to be purchases. For those we record only the message identifier and the date, so we know to skip the message next time. We do not keep the subject line or the sender. This is enforced by a constraint in our database, not by convention.
  • Attachments, with one exception described below: the calendar invite attached to an interview email.

Calendar invites

An interview email usually carries a calendar invite — the same attachment your mail app uses to offer you an “add to calendar” button. We read it, because it states the time of your interview precisely and the surrounding sentence rarely does.

From that invite we keep the appointment and nothing else: the start time and time zone, how long it runs, the meeting link or the location as the organiser wrote it, the names and work addresses of the people invited, and the invite’s own identifier so that a rescheduled interview updates the one already on your board instead of appearing twice. The invite’s description text is read and discarded with the rest of the message body.

This needs no access to your calendar. We do not connect to Google Calendar, we cannot see appointments that did not arrive by email, and we never write anything to a calendar of yours.

Automated processing

To read a purchase email we may send the message text to a large language model provider, which returns the structured order details. We send only what is needed to read that one message, we do not send your identity along with it, and we disable provider-side retention where the provider supports it. The provider does not use this content to train models.

Asking Dash about your email also sends parts of your messages to a language model, as the next section describes.

Asking Dash about your email

If a Gmail account is connected, Dash can answer questions such as “when did Anthony last email me?” or “what did the landlord say about the deposit?”. It works whichever parts of the app you have switched on, and only when you ask. Dash searches Gmail at that moment, through the read-only access described above, across every mailbox you have connected. Nothing is copied from your mailbox in advance, and the app builds no index of your mail.

What Dash reads goes to Anthropic’s Claude models, which write the answer. What is sent:

  • For a search, up to 20 matching messages, newest first, across all your mailboxes. For each one: the sender, the recipients, the subject, the date and time it arrived, and Gmail’s one-line preview of it. When more than one mailbox is connected, the address of the mailbox it is in is sent too. A search reads only these headers and the preview, and never fetches the message text.
  • For a message Dash opens, the same details for that one message and its text, up to the first 8,000 characters. The text is the message’s plain-text version, or its formatted version converted to plain text when there is no plain one. Attachments, including calendar invites, are not sent. Dash opens a message only when your question is about what it says, and only the messages the question is about.

Because the recipients and the mailbox address are part of what is sent, your email address can be among it. Your question and the earlier turns of the same conversation are sent with it, so Dash can answer follow-ups.

Nothing Dash reads from your mail is stored. The search results and the message text are held in memory for the one answer and then discarded. What is saved with the conversation is:

  • Your question and Dash’s answer.
  • For each message Dash cites, a label naming the sender and the day it arrived, the link that opens it in Gmail, and the identifiers of the message and of the mailbox it is in.
  • What Dash searched for (the sender, words and dates) and which message it opened, with the number of messages each search found.

No subject line, preview or message text is saved, except where Dash quotes or describes it in the answer it writes. Dash’s email search is available only inside the app, and is not offered to other assistants you connect to your dashboard.

Your notes and the language model

Four features send the text of your notes to Anthropic’s Claude models: writing a quiz, reading a note for Learn, reading notes for the map of what you write about, and asking Maya for its thoughts on a note and replying to it. Writing a quiz, reading for Learn, asking Maya and replying to it run when you press their button, on the note or notes you picked. Maya can also write on a new note of yours without being asked, as described below. The map can also be filled by a sweep, which you start from the map page. The sweep sends every note in your vault, apart from those listed below, without you picking them. It runs in the background a few minutes at a time until it has reached every note or you stop it.

What is sent:

  • Writing a quiz. The title of each note you picked and the text the questions are written from. A short note is sent whole. A long one is split at its headings, and the sections the questions come from are sent. When you answer, the question, the answer the model expected, your answer and the note’s title are sent so your answer can be marked.
  • Reading a note for Learn. First the note’s title and its first 1,500 characters, to decide whether it argues anything. If it does, the note is sent again, section by section up to its first ten sections, with the name of the subject you chose and the names of the ideas already in that subject, so none is proposed twice.
  • Reading notes for the map. First the note’s title and its first 1,500 characters, to decide whether it argues anything. If it does, the note is sent one section at a time, each with the note’s title, the section’s heading and the names of the themes already on your map. This happens to one note when you use its Map section, and to every note in turn while a sweep runs.
  • Asking Maya about a note. The note’s title and its first 12,000 characters; the titles and first 1,500 characters of up to eight of your other notes whose meaning is closest to it; and the names and statements of up to sixteen positions from your map that come from those notes or share the note’s themes, each with up to two sentences quoted from the notes they were read from. The model may also search the web for what others have written on the same question. Its searches are its own words, written from what it was sent, and go to Anthropic’s web search.
  • Replying to Maya. The note’s title and its first 12,000 characters, the thread’s question, Maya’s thought on the note (which carries the sentences it quoted from your other notes), the summary of where you have got to, and every reply in the thread, yours and Maya’s. If the note has since moved into a folder that is never read, or now contains what looks like an API key, its text is left out and Maya answers from the thread alone. When your reply turns on something the thread does not hold, Maya can look it up with the same lookups Dash uses to answer a question, such as the notes and positions nearest the note, and what those return is sent too. Like a thought, a reply may also search the web for a source’s exact words.
  • Maya writing without being asked. Once an hour, the notes that are new or changed since the last day and a half are looked at, each version once. If Jev (below) judges that a note is working something out, Maya writes a thought on it and opens a thread marked “Maya picked”, at most three in a day. What is sent to write that thought is what is sent when you ask Maya about the note.

Jev is a classifier run by TypeSafe, a company separate from Anthropic. It reads your notes only if Jev has been turned on for your account, which it is not by default. When it is on, two things send note text to TypeSafe. While a map sweep runs, the title and first 1,500 characters of each note it reads go to Jev for the first read described above. And each hour, the title and first 4,000 characters of each new or changed note go to Jev with one question: whether the writer is working something out that a thoughtful partner could argue with. Only a note Jev is sure of gets a thought from Maya. When Jev is off for your account, nothing is sent to TypeSafe and Maya writes only when you ask.

What is never sent:

  • For a quiz or for Learn, a note you did not pick.
  • Your name, email address or account. A request carries the note and the instructions, and nothing that says whose note it is.
  • The folder or file path of a note. Only its title is sent.
  • The rest of a note that the first read judges to be a record rather than an argument, such as a travel plan or a log of measurements. Only its first 1,500 characters were sent.
  • For the map, from a sweep or from one note: any part of a note in a folder you mark as a journal or leave out (Vault settings, Private folders), of a note that contains what looks like an API key, or of a note under 80 characters. These are turned away before anything is sent.
  • For the map, the part of a note past its first 400,000 characters.
  • When asking Maya: any part of a note in a folder you mark as a journal or leave out, or of a note that contains what looks like an API key, whether it is the note you asked about or one of your other notes. Such a note shows no way to ask Maya at all.
  • To Jev: the folder or file path of a note, or any part of a note in a folder you mark as a journal or leave out, of a note that contains what looks like an API key, or of a note under 80 characters. Maya does not write on such a note by itself.

Nothing sent from your notes is used to train a model. Anthropic’s commercial terms do not allow it to train models on what is sent through its API, and this app does not train models of its own.

How your data is protected

  • The tokens that let us read your mailbox are encrypted before they are stored, with a key held separately from the database.
  • All traffic is encrypted in transit.
  • Every record is tied to your account and isolated at the database level, so one user’s data cannot be read by another. We test this automatically on every change.
  • Access to production systems is limited to what is needed to operate the service.

Sharing

We do not sell your data, and we do not share it for advertising. We use a small number of service providers to run the service — hosting, database, background job processing, and the language model provider described above — and they may process data only on our instructions.

Your choices

  • You never have to connect an inbox. The app works with orders you add by hand.
  • Disconnect at any time, from Settings. Doing so revokes our access token with Google immediately and deletes the data we imported from that account.
  • You can also revoke our access directly at myaccount.google.com/permissions.
  • Delete your account, from Settings. This revokes any Google tokens, removes every record we hold about you, and cannot be undone.

Retention

We keep your purchase records until you delete them or delete your account. Message identifiers for messages we skipped are kept so that re-syncing does not re-examine them, and are deleted when you disconnect the account they belong to.

Job descriptions are kept in full

The job search side of the app is a deliberate exception to the retention rule above, and it is worth being explicit about because it looks inconsistent otherwise.

When you paste a job link or a description, the full text of the posting is stored and kept indefinitely. Three reasons: it is public information published on a public page, it is the input to the requirement extraction and to every draft the app writes, and refetching it later usually fails because the posting has been taken down. Job descriptions are the employer’s text about a role, not your correspondence.

Looking a company up

On a company’s page you can ask the app to fill in blank details — industry, headquarters, rough headcount, logo. That sends the company’s name to Wikidata and may fetch the company’s own public homepage to read its icon. Nothing about you is sent with either request, and neither happens unless you press the button.

Separately, company logos on the board and in lists fall back to Google’s public favicon endpoint when no logo has been stored yet. Your browser requests it directly, so what Google can see is the company’s domain alongside your IP address — in aggregate, the list of companies you are looking at. No key, no account, and nothing about the role or the application is sent. If that trade is not one you want, set USE_FAVICON_SERVICE to false in lib/jobs/companies/avatar.ts: logos then come only from Wikidata and the company’s own site, and everything else shows initials.

Information about other people

The contacts feature on the job search side stores information about third parties — recruiters, interviewers, people you want an introduction to. They have not agreed to anything, so the app is deliberately narrow about it.

  • The schema has room for a name, job title, public professional profile URL and work email address, and nothing else. There is nowhere to put a personal phone number or a home address.
  • Nothing is scraped. The app does not log in to LinkedIn or fetch anything behind a login. Contacts are typed in, pasted, or come from the data export LinkedIn lets you download, which you upload yourself on the Jobs settings page.
  • From that export the app keeps, for each connection, the name, company, job title and profile URL, and the email address for the few people whose address LinkedIn includes. They are saved as contacts marked as LinkedIn connections, and you can hide them from the Contacts list. It also keeps the invitations you sent and received with their notes, and the text of messages in conversations you took part in, as entries in that contact’s history. One-way recruiter and sales InMail is counted and not imported.
  • The same export also supplies your applications, the answers you gave on them, saved jobs, followed companies, profile history, LinkedIn Learning courses and Premium receipts, which are your own records. The zip file is stored in a private storage bucket that only you can read, and it is deleted with your account.
  • Names of interviewers may be extracted from a scheduling email, or read from the calendar invite attached to it, because that is what the email is about. Their work address is kept when the invite lists it, so the same person is recognised next time rather than added twice. Nothing else about them is extracted.

Limited Use

Shopping Manager’s use and transfer of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.

Changes

If we change how we handle your data we will update this page and the date at the top.

Terms of Service