Email & follow-ups
The six mails nobody answered.
@attest_tagdirect message3 tool calls
Sent mail from the last fortnight, reduced to the threads where the asker wrote last and nothing came back, with the ones that never wanted a reply dropped. A list short enough to act on, out of a mailbox nobody else can read.
Dan4:50 PM
who have I emailed in the last fortnight that never wrote back?
attest_tagApp4:51 PM
- http_request · GET gmail.googleapis.com/gmail/v1/users/me/messages?q=in:sent newer_than:14d · 31 messages
- http_request · GET …/threads/{id}?format=metadata · 22 threads
- run_js · last sender per thread · 6 unanswered
Six threads, yours was the last word. Worth a nudge:
- Harrow Freight — 12 days. You sent the quote and asked for a decision by the 8th.
- Mei, Northwind — 9 days. Contract redlines returned, no acknowledgement.
- Recruiter, platform role — 8 days. You asked for two more profiles.
The other three are a thank-you, a calendar confirmation and a mail to a no-reply address — none of them wanted an answer. I’ll draft nudges for any of the three if you say which.
google/gemini-flash14k in430 out$0.0071Configure
How the turn went
Threads, not messages — and the arithmetic of who spoke last is worked, not guessed.
- 01
Sent mail is the wrong unit; threads are the right one
A sent message tells you nothing on its own. Each thread it belongs to is read as metadata, and the question asked of it is whether the last message in it is the asker’s — which is the only definition of unanswered that survives contact with a real mailbox.
- 02
The sort is code, not recall
Working out the last sender across twenty-two threads and ordering by age is done in the sandbox, where it either runs or fails visibly. Counting in prose is the reliable way to be confidently wrong.
- 03
The threads that never wanted a reply
A thank-you, a confirmation and a no-reply address are dropped and then named, so the list is short without hiding what it dropped. A silently filtered list is one you have to check by hand, which is the work this was meant to remove.
What it needs
The setup, in the console.
What it will not do
Enforced outside the model.
It cannot tell you who has not replied to a colleague; it can only read the mailbox of the person asking.
It does not nudge anybody on its own. The drafts are a separate ask, and each one is a held write.
Try it
Say it in a channel it is in.
The sentence as it was typed. It works in any channel the bot has been invited to that carries the connection above — no command syntax, no form, and follow-ups in the thread need no mention.
who have I emailed in the last fortnight that never wrote back?
http_requestrun_js
More in Email & follow-ups
The inbox, triaged and drafted — and never sent without you.
- What actually needs you this morning.DM · what in my inbox actually needs me today?
- The reply, drafted with the real number in it.DM · draft a reply to Dan about the PO split — check what we actually invoiced him in October
- The overnight mail, at half past seven, and nothing else.DM · every weekday at 7:30 send me anything that landed overnight from a customer, and nothing else
Bring the channel this would live in.
Sign up, connect the service above in one channel, and type this sentence yourself — or run the same binary on your own infrastructure.