Weekly stay-in-touch nudges from your relationship list

By General Input

Every Monday at 8am, surface the ten people you are most overdue to reach out to, pre-write each email in Gmail, and post a ranked summary to Slack.

Integrations

  • General Input Database
  • Gmail
  • Slack

Type

Agentic Task

Categories

  • Personal Productivity
  • Sales

Build me a weekly stay-in-touch agent workflow on top of my own relationship ledger. The General Input Database is the source of truth for who I want to keep in touch with; Gmail and Slack are purely output channels.

Trigger: cron, every Monday at 8am in my local timezone.

Data source: a table in the General Input Database called relationships that I maintain by hand. The columns are name (text), email (text), target_cadence_days (integer, e.g. 30, 60, or 90), last_contacted_at (date), and context_note (short free-text reminder about who they are and what we last talked about). If the table does not exist yet, scaffold it during setup so I can populate it. Query the table with Execute SQL on the user-database service.

Each run, do the following:

1. Select all rows where julianday('now') - julianday(last_contacted_at) > target_cadence_days. For each overdue row compute days_overdue = (today - last_contacted_at) - target_cadence_days. Sort descending by days_overdue (most overdue first) and take the top ten.

2. If the overdue list is empty, post a one-line Slack message saying "Nobody is overdue this week, nice work" and stop. Otherwise continue.

3. For each of the top ten overdue people, draft a short, warm, personalized re-engagement email using their name and context_note. Keep each email to roughly three to five sentences, conversational tone, no marketing fluff. Save each one as a draft in Gmail using the Create a Draft operation (do not use Send a Message; I want to review before sending). Set the To header to the row's email and leave the subject short and human (for example, "checking in" or "long time no talk"). Capture the returned draft id from Gmail so we can link to it.

4. After all ten drafts exist, post a single ranked summary message to Slack using the Send a Message operation, sent to my personal DM channel by default (let me pick a different channel at setup). The summary should be one Slack message with one line per person, ranked by days overdue, showing: name, days overdue, the context note, and a clickable link to the Gmail draft using the format https://mail.google.com/mail/u/0/#drafts/<draftId> wrapped in Slack mrkdwn link syntax. Put a short header at the top like "10 people you are overdue to reach out to" and use Slack mrkdwn formatting (single asterisks for bold).

Important constraints: never actually send any email, only create drafts. Never update last_contacted_at automatically; I will update it by hand after I send a draft, so the contact drops off the overdue list naturally. If Gmail draft creation fails for a particular row, skip that person, keep going, and note the failure inline in the Slack summary. Treat the relationship table as read-only from this workflow.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredA brand asset library your marketing team actually searchesLiveKit live operations console for room moderationChat quality review board for LiveChat support leadsCompetitor LinkedIn ad watchlist with a permanent archiveLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsA searchable RFP answer library your bid team drafts fromSee which target accounts just started advertising on LinkedIn