Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

I built an AI email assistant in .NET with SerpApi and a local LLM. Here’s what broke.

Description and use

The author built a .NET console app that reads Gmail, filters bulk mail, drafts replies with a local LLM, and looks up sender company info via SerpApi, keeping email content local and never sending automatically.

Problem

The author had 53 unread emails, many of which were newsletters or automated notifications, and needed a way to identify important messages and draft replies without sending anything automatically.

Outcome

The assistant successfully filtered bulk mail, avoided sending to no‑reply addresses, and reduced SerpApi usage by only querying relevant emails. Draft replies and company summaries were generated locally, keeping email content private.

Workflow

  • Read Gmail via IMAP (MailKit)
  • Filter out bulk/automated emails using List-Unsubscribe header and address heuristics
  • Send remaining emails to local LLM (Ollama) to get category, summary, and draft reply
  • Extract sender domain and query SerpApi with google_light engine
  • Use LLM to summarize company info from SerpApi results
  • Output draft reply and company summary to console

Evidence

I built a small .NET console app that reads my inbox, skips the noise, drafts replies for the emails that matter, and tells me who the sender's company actually is.

Source

It never sends anything. It drafts; I decide.

Source

My email content stays on my machine. The language model runs locally with Ollama.

Source

Most of a real inbox doesn’t need AI at all. Bulk mail usually carries a List-Unsubscribe header, and automated senders follow predictable patterns.

Source

Once the filter was in, most of the inbox never reached the model. That’s when it clicked for me: the AI was the smaller part of the job.

Source

  • Record date: 2026-10-25T12:11:30.376Z