Save your real Gmail conversations to Google Contacts every Monday

Every Monday morning, an agent finds the people you actually email back and forth with, adds them to Google Contacts, and posts a tidy summary to Slack.

Agentic Task
GmailGoogle ContactsSlackPersonal ProductivityOperationsData SyncNotifications & AlertsDaily Digests

Every Monday at 9am local time, sweep my Gmail for people I have been emailing back and forth with who are not yet in my Google Contacts, add the real humans, and post a summary to Slack.

Trigger: cron, every Monday at 9am.

Step 1. Use Gmail List Messages with a query that covers the last 30 days in both Sent and Inbox (something like newer_than:30d in:sent OR newer_than:30d in:inbox). Page through results and pull headers with Gmail Get a Message (metadata format is enough for the grouping pass) so you have From, To, Cc, and Date for each message.

Step 2. Group messages by the counterparty email address (the non-me side). Keep only addresses where I sent them at least 2 messages AND they sent me at least 2 messages in the window. This is the real-conversation filter. One-off blasts in either direction do not count.

Step 3. For each surviving candidate, check whether the address is already saved using Google Contacts. Note: the People API requires a warmup call to Search Contacts with an empty query before the first real search will return results, so do that once at the start of this step. Then for each candidate, call Search Contacts with the email, and also call Search Other Contacts (the auto-saved bucket Gmail populates) with the email. If either returns a match, drop the candidate.

Step 4. Judge the remainder. Skip no-reply patterns (noreply, no-reply, donotreply, mailer-daemon, postmaster, notifications@, alerts@, etc.), newsletter and marketing senders, transactional/receipt senders, and obvious automated mail like calendar invites and shipping notifications. Use the From display name, the sender domain, and one sample message body via Gmail Get a Message (full format) to make the call. When in doubt, skip and explain why in the summary.

Step 5. For each survivor, extract a best-guess full name. Prefer a clean name from the From header (strip quotes and any address). If the From name looks like an email or is missing, parse the most recent signature block from a sample message body for a likely first and last name. Keep it to ONE name entry per contact: Google Contacts treats names as a singleton field and will reject a create with multiple.

Step 6. Make sure a contact group called "Auto-Saved from Gmail" exists. List Contact Groups first to check; if it is not there, Create Contact Group with that name. Hold on to its resource name for the next step.

Step 7. Use Google Contacts Batch Create Contacts to add all the survivors in one call (cap at 200 per batch, page if needed). Each contact gets one name entry, the email address, and membership in the Auto-Saved from Gmail group.

Step 8. Post a single Slack message to the channel I pick when setting this up. Format it as a short readable summary: a header like "Saved N new contacts from Gmail this week", then a list of who got added with their name, email, and how many back-and-forth exchanges I had with them in the window, then a short "Skipped (borderline)" section listing any candidates the agent deliberately dropped along with the reason (looked like a newsletter, no real name found, etc.). Use Slack mrkdwn (single asterisks for bold). If nothing was saved, post a brief note saying so instead of nothing.

Ask me for: the Slack channel to post the summary in, and confirm the timezone for the Monday 9am trigger. Default everything else (30-day window, 2-and-2 threshold, group name).

Additional information

What does this prompt do?
  • Once a week, scans your last 30 days of Gmail to find the people you genuinely email back and forth with, at least twice in each direction.
  • Skips no-reply addresses, newsletters, receipts, calendar invites, and anyone already saved in your contacts.
  • Pulls a clean full name from the email signature and adds the survivors to Google Contacts under a dedicated Auto-Saved from Gmail group.
  • Posts a Slack summary showing who got added, how many exchanges you had with them, and a short note on anyone borderline it deliberately skipped.
What do I need to use this?
  • A Gmail account the agent can read messages from.
  • A Google Contacts account the agent can add contacts to (same Google account is fine).
  • A Slack workspace and the channel you want the weekly summary posted in.
How can I customize it?
  • Change the schedule. Run it daily, on Fridays, or once a month instead of Monday morning.
  • Tighten or loosen the threshold. Require more than two exchanges, or look back 60 or 90 days instead of 30.
  • Rename the contact group, point the Slack summary at a private channel or DM, or add extra filters like only saving people from outside your own company domain.

Frequently asked questions

Will it flood my address book with newsletters and no-reply addresses?
No. The agent only saves people you genuinely exchanged messages with, at least twice in each direction, and explicitly skips no-reply addresses, newsletters, receipts, and automated mail like calendar invites.
Will it create duplicates of people I already have?
Before saving anyone, the agent checks both your saved contacts and your auto-saved Other contacts in Google. Anyone already known is dropped from the list.
Where do the new contacts end up?
They go into a dedicated Google Contacts group called Auto-Saved from Gmail, which the agent creates on its first run. That way you can review or bulk-edit them separately from your hand-curated contacts.
Can I run it more or less often than weekly?
Yes. Monday at 9am is just the default. You can change the schedule, the lookback window, or the back-and-forth threshold when you set the workflow up.
Does it post the summary anywhere besides Slack?
Slack is the default. You can swap the Slack message for a Gmail summary to yourself, a Notion page, or any other tool you connect.

Stop losing track of people you actually email.

Connect Gmail, Google Contacts, and Slack once, and Geni quietly saves the humans worth remembering every Monday.