A keep in touch board built on your Google Contacts
See which relationships are going cold, set how often you want to reach out to each person, and let the board sort itself from then on.
Build me a keep in touch app on top of my Google Contacts. My address book stores people but tells me nothing about which relationships are going cold, so I want a persistent board I open and work out of, showing the people I have chosen to stay close to and how overdue each one is. This is not a scheduled digest and nothing gets posted to chat. It is a surface I visit, and the only thing that runs on demand is a drafting agent I trigger from a button.
The home screen is a board with three columns: Due now, Due soon, and In good shape. Every person I have added to the board sits in exactly one column, decided by comparing the last time we actually talked against the touch cadence I set for that person. I pick the cadence once per person from monthly, quarterly, or twice a year, and the app remembers it, so from then on the board sorts itself every time I open it. Within Due now, put the most overdue people first. Each card shows the person's name, photo if there is one, their email address, the cadence I chose, and how long it has been since we last spoke in plain language like 'last spoke 4 months ago'.
I add people to the board through a searchable picker. Populate it from Google Contacts using List Contacts, and also include people from List Other Contacts, which is the pool of people I have emailed but never formally saved. Let me filter the picker by label using List Contact Groups so I can pull in, say, everyone tagged Friends or Investors. Use Search Contacts and Search Other Contacts to power the type ahead as I type a name. Remember that Google Contacts reads require a personFields or readMask parameter, so always request names, emailAddresses, photos, and memberships. Being in my address book does not put someone on the board. The board is only the people I explicitly add, because the whole point is that I have chosen these relationships.
The last contact date on each card is computed by a handler, not entered by me. For a given person, query Gmail List Messages for their email address to find the most recent message either direction, and query Google Calendar List Events for meetings we both attended, checking the attendee list for their address. Take whichever of those two is more recent and treat that as the real last touch. Use Get a Message to pull subject lines and dates for the messages List Messages returns, since that operation gives back only message and thread ids. Cache the computed result so the board loads fast, and give me a refresh control to recompute a person on demand.
Opening a card shows me context before I reach out: the subject lines of the recent email threads with that person, each with its date, and the titles and dates of recent meetings we both attended. I want enough to remember what is going on with them without leaving the app and digging through Gmail.
Put a 'Draft a check in' button on every card. It kicks off a background agent for that one person. The agent reads our recent Gmail history using List Messages and Get a Message, works out what we last actually talked about, and writes a short personal note that references that specifically rather than a generic hello. It should sound like a human being who remembers the last conversation, and it should be short. The agent saves the note as a real draft with Gmail Create a Draft, addressed to that person, and then posts the draft text back into the card so I can read it in the app before deciding to open Gmail. Show me when a draft already exists for someone, and let me re run the agent to get a fresh version, updating the existing draft with Update a Draft rather than piling up duplicates. Use List Drafts to reconcile if a draft was deleted in Gmail directly. Never send anything, only ever draft.
I need two escape hatches on every card. First, snooze: push a person out by a few weeks when now is not the right moment, and they drop out of Due now until the snooze expires. Second, mark as contacted: when the conversation happened somewhere the app cannot see, like a phone call or lunch, I tell it we spoke and the cadence clock restarts from today. Let me change someone's cadence at any point, and let me remove someone from the board entirely without touching their contact record.
One important design point: the cadence, the snooze state, the manual contacted marks, and the board membership itself are all app owned data. Store them in the app. Do not try to write any of it back onto the Google Contacts record as custom fields or notes. Google Contacts is a read only source of who these people are and how to reach them, and everything about the relationship cadence lives in the app.
What does this prompt do?
- Puts the people you have chosen to stay close to on one board, grouped into Due now, Due soon, and In good shape, so you can see at a glance who is slipping.
- Works out the last time you actually spoke by checking both your email history and your calendar for meetings you both attended, then uses whichever is more recent.
- Lets you set a check in rhythm once per person, monthly, quarterly, or twice a year, and remembers it so the board keeps reordering itself for you.
- Gives every card a Draft a check in button that has an assistant read your recent history with that person and write a short personal note referencing what you last talked about, saved straight to your Gmail drafts.
What do I need to use this?
- A Google account with your contacts, Gmail, and Google Calendar
- Permission for the app to read your contacts, recent email, and calendar events
- A short list of people you already know you want to stay in touch with
- Optional: labels or groups already set up in Google Contacts if you want to add people by label
How can I customize it?
- Change the cadence options, for example add a weekly or yearly rhythm alongside monthly, quarterly, and twice a year
- Decide what counts as staying in touch, email only, or email plus meetings you both attended
- Set how far ahead Due soon reaches, and how long the snooze button pushes someone out
- Adjust the tone and length of the drafted check in note so it sounds like you
FAQs
Does this change anything in my Google Contacts?
What happens if we talked on the phone or met up in person?
Does it read all of my email?
Can I add someone who is not saved in my contacts?
Does it send emails for me?
How is this different from a reminder in my calendar?
Related templates
See who is due, build a week of dinners on demand, swap anything you do not like, then send the recipe and grocery links yourself.
See every install this week day by day, with the crew, the homeowner, whether materials were ordered, and the latest jobsite photos.
Search live job postings, save the good ones to a pipeline board, and see what each role really pays before you apply.
An accounts receivable board that sorts every overdue Jobber invoice by age, then helps you draft, approve, and log every collection email you send.
Pick a date, a starting point and a radius, then build a sequenced day of customer visits that lands straight on your calendar.
A calibration board that lines up every candidate's answer to the same question, hides names until your panel has scored, and writes the agreed rating back.
Stop letting the relationships you care about go quiet.
Turn your address book into a board that tells you who to reach out to next, and drafts the note for you.