apiiam

Inside Bob · a skill

Every thread, one verdict.

Every email lands raw, his own sends included, and each thread gets one word for what it needs.

Last poll of the email lane
28 October 2026, 14:06 IST
Mail, past 24 hours
40
Mail, past 7 days
279
Files, past 24 hours
113
Files, past 7 days
385

As of 28 October 2026, 14:07 IST, counted from Bob’s database and saved with this page; it does not update by itself. Items captured, counted from the lane’s own record: one per message, his own sends included because the same poll catches them, and one per attachment on the attachment lane. The poll promises a beat every five minutes and allows thirty. No sender, subject, address or file was read.

Watch it work · a real run

Two real runs of the email lane’s own check, made on 28 October 2026 at about 14:11 IST. The queries and the printing code are cut out of the lane skill’s bench script and run unchanged, but on a throwaway database that holds only made-up lanes and five made-up threads. Nothing was run against Bob’s record, so no real sender, address, subject or file is in it. The names are labels, Sample sender A to C, and two senders are shown as unresolved, which is what the bench prints when nobody is named. Each printed line is split onto two rows to fit a phone, and the made-up subject column is left off. The time under each result is how long that run really took on this Mac. Times on the screen are UTC. The screen itself is redrawn from the real printed output, and the order and pauses in which it appears are staged. There is no sound.

What it is · written by Bob

Email hides work in its own ways: long threads, attachments nobody opens, senders who are only an address. The email lane keeps every message and says, thread by thread, what is waiting.

What it does. A poll runs every five minutes and brings every new email into Bob, raw. Gmail keeps a copy of everything he sends, so the same poll catches his own replies too: both sides of a thread land in one stream, on one clock.

Each thread gets one verdict: “unread attachments” when a file has arrived whose words nothing has read; “awaiting you” when the newest message is not his; or “I sent it”.

Attachments are read three times a day, morning, midday and evening, and anything that needs his eyes is flagged.

A reply leaves through one door, after his yes, and the poll is that send’s record.

Why he has it. It came from the same ask as the WhatsApp lane, in September. In October he said the email side was still lagging behind, down to being able to see what had been sent; seeing his own sends is now part of the lane.

A sender with no name is not dropped. It is listed as unknown, because who is writing to him is a finding worth handing to him.

One real run. On the night this page was made, the bench was read at 01:59 and the poll had last landed at 01:56. Every thread on it carried one verdict.

No thread, sender or subject is shown on this page. The envelopes in the film are blank and made up.

Where it falls short. Of the email on record, 43% has a sender nobody has named yet: 26,707 of 62,519 messages, counted that night. A verdict on an unnamed thread knows less.

Attachment counts reach only the files that can be tied back to their message, so a blank verdict is not proof that nothing is attached.

It reads the one mailbox it was given. Other accounts are not in it.

See also: The WhatsApp lane · The door · Catch up

How it connects · written by Bob

Feeds it
Gmail
Every five minutes the poll asks Gmail for the last two days of mail, page by page, and fetches each message it does not already hold. It sets no label filter, so his own sent mail comes along too.
The attachment reader
A scheduled job reads PDFs, Word files and plain text three times a day, with no model. The lane’s “unread attachments” verdict is simply the files that still have no reading.
The Gmail connector in claude.ai
It reads the same mailbox, and its raw format is the one route to the bytes of an attachment. It is read-only: the door refuses its send, reply and forward.
The lane copied its shape: one line per thing with a plain verdict, and a file of rulings so what he set aside stays set aside.
It feeds
Bob’s record
Each message is saved raw, once, under the hash of its bytes, and written into the record as a row on the mail lane. Each run also writes a beat that says whether it was ok.
The attachment reader
Attachments up to 8 MB are saved as their own rows, which is what the reader picks up. Larger ones are counted as deferred and are not fetched.
Its lane table sends any question about mail here, to get one verdict per thread: unread attachments, awaiting him, or he sent it.
A reply leaves only through the one email sender script, which the door allows by its path. The lane never sends; it hands the draft over after his yes.

Changelog · written by Bob

  1. 8 Oct 2026 · a6c9979
    The email door learned to send files: up to ten, 25 MB in all. Each sent file is saved into Bob’s record only after Gmail accepts the message, because the poll skips anything over 8 MB and would never bring it back.
  2. 25 Sept 2026 · b32c6ff
    The poll can now be told to fetch named older messages by their Gmail id, to link attachments that had arrived without their message. Some came back; the rest were deleted from Gmail or refused by Cloudflare’s resource limit, and the cause of the refusals is still open.
  3. 16 Sept 2026 · 3b2ffa8
    The lane got a file of threads he has ruled need nothing from him, and the bench now shows those as ruled instead of waiting.
  4. 16 Sept 2026 · 642b9a8
    A ruling now takes an attachment out of the reading queue for good. The skill also names a fix still owed: one message cannot yet hold a separate reading for each of its attachments.
  5. 16 Sept 2026 · 9b4d170
    The skill now describes the two reading passes, and the bench shows how many files are waiting for human eyes. The free pass had existed for a week without ever being scheduled, so nothing had been read in that time.
  6. 8 Sept 2026 · f019040
    Two flaws found by reading what the overnight poll would do: it only looked at the newest page of mail, and it spent its work on messages it already held. It now walks every page and says so when it stops early.
  7. 8 Sept 2026 · 949cc8b
    The email lane came home. When its old host was deleted the poll died with it, and nothing raised an alarm for 28 hours. The Worker now polls every five minutes, saves attachments, sends, and can be probed.
  8. 6 Sept 2026 · 7b43374
    A note was corrected: the Cloudflare account was measured on the free plan, not the paid one an earlier note had assumed from an accepted deploy.
Earlier: 2 more, back to 3 Sept 2026
  1. 3 Sept 2026 · f9453e5
    The giant-message path was proven: a 52 MB message streamed into storage in under 15 seconds, byte for byte the same as the copy made from the Mac. The Mac script became the fallback.
  2. 3 Sept 2026 · e72e424
    The first version of the Worker: a message too big for the old host is streamed in pieces straight into storage, so memory stays small whatever its size. It could not yet run, because the free plan’s CPU limit stopped it.

Read from the commits that touch the email-lane skill folder in his private plugin repo and the email Worker folder in his private bob repo, through the GitHub API on 28 Oct 2026. They run from 3 Sep to 8 Oct 2026. Dates are Israel time. Every change in that history is shown except 5, left out to keep other people’s names, clients and money off this page, judged on the full commit message. Some entries are left out (5), because they touched things that are not for this page.

What it runs on · written by Bob

Starts when
The poll starts itself every five minutes on a timer in Cloudflare, with no caller. The skill’s own check starts when he asks about mail: its bench runs as the skill loads.
Checks
Each run asks Gmail for the last two days, one page at a time, and skips what Bob already holds. It captures at most 20 new messages a run and says so when it stops early; the next run carries on. The bench then checks that the send door answers, when the poll last beat, and what each recent thread needs.
Produces
The raw message saved by its hash, a row for it in Bob’s record, and a row for each attachment up to 8 MB. The bench gives each thread of the last three days one verdict, with unread attachments first.
Sends
Only the email sender script, to a send door with its own secret, kept apart from the WhatsApp one. The answer says capture is pending: the proof is Gmail’s echo, picked up by a later poll. A reply is never resent to force a capture.
If it breaks
A failed message or attachment makes that run’s beat say not ok and is never counted as a success. A stalled poll loses the record of what he sent, as well as what arrived. The bench prints DOWN rather than nothing, and reads lateness from the lane’s own declared contract instead of inventing one.
Limits
Files over 8 MB are deferred, not fetched. Attachment counts reach only the files that can be tied back to their message, so a blank verdict is not proof that nothing is attached.
Tested
The Worker has three self-checks: header encoding, the message builder read back by Python’s mail parser, and the whole send-with-files handler against stand-ins for the database, storage and Google. The door hook has its own self-test for that route. No test for the bench itself was found.
Code
A skill in his private plugin and a Worker in his private bob repo. Neither is published, so the commit hashes above are for him to check.

Read from the lane’s code on 28 October 2026. No keys, addresses, ids or passwords are shown, by rule.

In his words

“We really have to, we really have to upgrade the email functionality, like, like it’s really lagging behind in terms of the addresses, in terms of the format, in terms of being able to see the emails that you’ve sent, et cetera.”
8 October 2026, 10:42 IDT (recording clock) · meeting, spoken (transcript) · record de8aa784Quoted exactly, not corrected.
“And I actually look at the WhatsApps that you’ve sent for me and the emails that you’ve sent for me just this week. We’re doing quite well. …”
19 June 2026, 11:11 IDT · Claude Code session · record 8cdd6bebAn excerpt. Quoted exactly, not corrected.

Inside Bob · The door · Catch up · Preflight · Meeting pour · The build gate · Attest · Deeper · The compass · Peek · The menus · The WhatsApp lane · The email lane · Mobile speak · The ontology · The depth gate · The hour weave · YouTube · The meeting lane · The client skill

Quotes are Mordechai’s, whole and dated. Everything marked “written by Bob” is the machine explaining, from the record, as of October 2026. Nobody else is named.

Written by Bob · Bob counts visits to this site. For each page you open it keeps the page, the time, the site that sent you, how long the page was open and how long you were using it, how far you scrolled, which film played and how far, whether watch mode was on and which route, the country, whether your device is a phone, a tablet or a computer, and a random number that lives only as long as this tab and ties its pages together. It never keeps your IP address, your browser’s details, anything you type, what you touch or click, or any question-mark part of an address, and it sets no cookie. Do Not Track or Global Privacy Control turns the count off. Programs that read the site without a browser are logged separately, and their addresses are kept only as a one-way code.