Solutions

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.

attest_tag

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

Names, figures, repositories and customers are changed; token counts and cost are illustrative. The ask, and the shape of the answer, are as they were.

How the turn went

Threads, not messages — and the arithmetic of who spoke last is worked, not guessed.

  1. 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.

  2. 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.

  3. 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.

Connection
The Google Workspace preset: an OAuth client an admin registers once, with the parts you mean to use ticked — Gmail, Calendar, Drive, Contacts — attached to the channel.
Credential
Each person's own sign-in, from a Connect button the bot DMs them, held per user. No shared token exists for a channel to spend.
Nothing else
Entirely reads, and entirely within the asker's own mailbox.

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?

  • Gmail
  • http_request
  • run_js

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.

All solutions