Unlocking my email with AI

When I was in NYC a week ago, a friend pushed back our meeting by 90 minutes. I got a text and the calendar update. Didn’t think anything of it.

When we’re hanging out, I mentioned I’ve been tinkering a bit with AI to get more use out of the largest repo in our lives — our email inbox. My friend pulls out his phone and show me this app Poke. It was poke that pushed our meeting back on his command.

When he wakes up in the morning, Poke which is integrated with his Google suite, sends him a brief. It includes a summary of any emails or action items he received that it judges he would prioritize. It shows his schedule for the day. He had to deal with something pressing that conflicted with our appointment so he simply told Poke to notify me that he’d need to push the meeting back. Poke then emailed and texted me. He just treated his SMS like a personal assistant and it handled the rest.

This isn’t an ad for Poke, but just another thing I saw in the wild that previews how automation creep is about to turn into a flood.

Fun aside: When you onboard with poke you negotiate your monthly price with the app! The friend is well-known in investing circles and very online so the app tried to extract a high price arguing that it knew he was a baller. He got the price down 90% and told me he knows people that have gotten it to $0.

Back to email. I was thinking about marketing-related stuff for moontower. Over the years, readers have emailed me saying my content helped them land trading jobs or their boss told them to subscribe, or my post was forwarded to their desk.

[It’s a peacocky thing to say, but in the past year, the feedback is blunt about this letter being read at every market-making shop. The audience I have in my brain when I do the Thursday posts is an experienced trader who probably has juniors that he or she would rather say “go read this” rather than explain the things themselves. They’re busy trading, and I’ve already invested in the words so they can save their breath.]

I wanted to collect all these emails, but keyword search is far too manual. The ultimate crux of the problem is semantic understanding:

“My PM told the desk to subscribe” and “I got the offer at Citadel” are both results of interest, but there are many variations of these phrases and the words that comprise them share a wide range of contexts (“offer”, “desk”)

I asked the Gemini in Gmail to find them. It returned 4 when I’d expect hundreds, so its method lacks depth.

I turned to Claude to build a pipeline. It took some back and forth, but ultimately it worked beautifully. Which is exciting because it’s a reusable workflow for semantic search on any body of work, of which, Gmail is just one instance.

The pipeline is quite simple. This is how it works:

Step 1: Multiple searches using narrow keyword queries

  • 14 targeted Gmail API keyword searches instead of 1 semantic query
  • Each catches a different flavor: job language + “Moontower”, boss language + “newsletter”, forwarding language + “your post”
  • Result: ~4,200 candidates
  • Snag: First queries were too broad (13K results). Fix: anchor every query to “Moontower”

⚡AI Deliverable: Python script to push through Gmail API

 

Step 2 — Fetch the emails via API

  • Gmail API pulls full email bodies programmatically — no export needed
  • Result: 3,922 emails fetched
  • Snag: Rate-limited at email 2,850. Fix: retry logic + caching to disk

⚡AI Deliverable: I actually used Claude extension in the browser to set up my Gmail API access

 

Step 3 — LLM classifies each one

  • Claude Haiku reads each email: “Is this a finance professional affirming Kris’s work?”
  • Categorizes matches: job placement, boss recommendation, team sharing, praise
  • Result: 585 matches
  • Snags: Wrong model string (3,900 silent 404s), API overload, ran out of credits mid-run, Python exception mismatch. Fix: incremental saving + resume flag

⚡AI Deliverable: This is the main AI magic. Classifying the email as something I’m actually looking for based on the context

Results

  • 44 team/desk sharing
  • 24 job placements
  • 8 boss recommendations
  • ~$3 API cost, ~8 hours runtime, 370 lines of Python

Now if I could only have my Twitter DMs accessible via this pipeline 🙂

Takeaway

Use each tool for what it’s good at. Search engines are good at retrieval, but LLMs are good at judgment.

10 minutes? lmao

Leave a Reply