Emails
The numbers that matter, in an email, on the day and at the hour you choose. What moved is written by code, so it is different every send.
An email is a note with the numbers in it: a sentence or two, the figure it is about, two or three more beside it, a chart, and what moved. It goes every day or every week on the weekday you choose, at the hour and in the time zone you choose, to the people you name. Nothing is sent until a person turns it on.
Making one
You ask for it in a chat. New email opens one with "Make me an email that" in the box, for you to finish ("...shows net sales, orders and average order every Friday at 7"); the assistant writes it from your metrics, shows it to you, sends you a test if you want, and saves it as a draft. A table or a chart in a chat answer becomes one too: Email it under it, or "send this to Nina every Monday". Sent now from there, it goes once and is not kept here. The chat then shows a card for the email with Open the draft, which goes straight to that email's panel, where the preview and Turn it on are. To change one, open it and choose Change it in a chat.
The list
Dashboards, Emails is a table: each email, when it goes ("Mondays, 7:00 am"), who it goes to, its status ("On · next Mon, Oct 5", Paused, Draft) and when it last went. One whose last send did not reach someone says so, with a dot: "Didn't reach Ruth last time".
Someone in a group other than Everything has no Emails screen: they make an email in a chat, it goes to them, and they find it under Settings, Account, in one table with their alerts. Click one for when it goes, when it last went, Pause and Delete.
On Free the list says how many you send yourself, and each one goes when you send it, to you. New email opens a new email beside the list for you to write (a title, a subject and the text), kept as a draft; its panel then offers Send me a test, which is how an email goes on Free: a test that goes is a send there, and Last sent, in the list and the panel, says when the last one went. The email's last line says the same: sent when you send it, and the day it last went. It goes to you alone, so it has no Stop sending me this and no Replies go to, and writing one doesn't ask when to hold it back or where replies go.
Click one and it opens on the right: when it goes and who it goes to, each with a quiet Change, so the schedule and the people change without a chat, and beside who it goes to, Stop sending me this if you get it or Send it to me too if you don't; when it last went (every send lists them all, with any that did not arrive and why); and the email exactly as it arrives. Under it: Change it in a chat, Send me a test, Send it now (to everyone it goes to, now, whatever its schedule; on Free an email goes to you alone, by Send me a test, so it is not there), Pause or Resume (Turn it on for a draft), and Remove. Edit the text opens the text behind it, for whoever wants to write it by hand. On Free an email goes to you when you send it, so the panel says so and offers Send me a test, Remove and Edit the text: nothing goes on a timer there. On Free, past the welcome's three messages, your own Claude Code writes and changes an email, through MCP.
What is in it
- A number. A defined metric for a period (last week, month to date, the last 30 days), with its change against the period before or the same days last year, in the metric's own format, and the receipt under it: whose definition, which version, the period's first and last day.
- A picture. A metric by week or month over a rolling period, or by a split (the top ten reps), drawn as a chart image so it shows in every mail client.
- A table. The first rows of a saved query, or a metric by its split (net sales by store), in the metric's own format with its receipt under it.
- What moved. Written by code, not the AI: this email's numbers ranked by how much they changed, any alert that fired since the last send, and any source or model behind. Different every send, and every line is a number with a trail.
- A few sentences on top, if you want them. Written by AI each time the email goes, from the email's own numbers and nothing else, to say what matters this time. Before it goes, our code checks each figure against the metric and period it names, with the same unit and direction (rounded is fine; a sum or a new number is not). An unclear match is left out. If one fails, the AI gets one more try; if that fails too, the email goes without them and its history says why. They are AI on its own, so when an admin has switched that off in Settings, Company, or it is at its ceiling for the month, the email goes without them and its history says so. Under them our code, never the AI, says they were written by AI and checked. They never carry a link.
Behind it is a note in a small Markdown, with each number on its own line as a block: ::number{metric=net_sales period=last_week label="Net sales" compare=previous as=net}. A sentence can carry it: "Last week we booked {{ net }}", and {{ net.as_of }} says when it was worked out. Nobody types a figure in; if a number is not a defined metric, define it first. For the sentences on top, the email starts with ::summary{}; the preview shows where they go, and a test writes them.
Before it goes
Saving renders it once, so a block that is wrong is refused with its line, and the panel shows it as it would go now. Send me a test mails it to you and nobody else, whatever the recipient list says; look at it on a phone. A failed test says it was not delivered. Then turn it on. Recipients must be people with an address; a name without one is skipped and the send says so. Names that resolve to the same address get one copy. Failed delivery is recorded as failed; five failed sends in a row pause the email with an Inbox card. Last sent changes only when a copy is delivered. An exceptions email can be told not to go when its number is empty; a standing summary always goes, because a summary that silently stops arriving is worse than one showing a quiet week. A key sees an email, and its sends, only when it reads everything the email shows, and what moved lists only the alerts its reader may see. If the key that made it is revoked, or the person who made it leaves, it pauses and a card in your Inbox says whose it was; nobody who has left is sent it.
Your own copy
The last line of every email is Stop sending me this: one click, no sign-in, and it stops your copy and nobody else's. The page it opens says what was stopped and has Send it to me again. Your mail app's own Unsubscribe button does the same. In the app you have Stop sending me this, or Send it to me too if you don't get it. Whoever made the email, and an admin, see who stopped as part of its list ("Ruth stopped"); putting Ruth back on the list doesn't start it again, only Ruth can. When everyone on it has stopped, the email isn't sent, and its history says "Not sent: nobody to send it to". On Free an email goes to you alone, so it has no such line.
Asking about it
An email made for a dashboard ends with Open the dashboard: the dashboard's own page, alone in its tab, the address its Full screen opens.
At the foot of every email is "Ask about this email": a link that opens a chat in the app with that exact email in front of it: the figures as they went, the chart and table rows, the body words, what moved, and the sentences on top. This kept copy stays the same when the schedule is edited or removed. So "why did net sales drop" is one click from the inbox, and the chat starts from what you read. Those figures are as of the send; ask for today's and the chat works them out again and says which is which. The chat opens for the people the email went to, whoever made it, and admins. Replies to the email itself go wherever it says when you make it or change it in a chat: to a person, to an address, or nowhere. Alert emails use the same frame, with a link that opens a chat about the alert.