Staying in Contact
A systematic way to remind myself which people I haven’t written to in a while. Automated and convenient. It connects a database hosted by Airtable with Todoist and generates a suggestion to contact people I haven’t written to in a while.

Communication is Hard

Keeping track of people is hard. There is a growing list of people who I’ve met in my life, whose company I value and I enjoy talking with. For whatever reason though, I haven’t written or called them in a very long time: old friends from school, colleagues from previous jobs, university friends. The list of contacts I have saved and I’d classify as having a friendly relationship with is well over 200 by now. During my teenage years, keeping in touch used to be easier, partly because the number of people in my circles was way smaller, partly because nowadays, life tends to get in the way more frequently. I’m working on more projects, I try to invest more time into family, and there are way more daily errands. That I’m falling behind on.

To-Do Lists are Easy

What I do have, is a system of checklists that I am pretty diligent at working through every day. (Foundations of a life. So in order to minimize the hurdle of figuring out, who I haven’t spoken to in a while, I’ve set up an automation that handles this process for me and conveniently places a contact name into my daily to-do’s every once in a while.

Main Components

Based on an airtable similar to Jacob Greenfeld’s Stay in Touch article, I set up a table with the columns name, category, last contact, next contact, and a reminder field:

The Next Contact field and the Reminder are a formula. The Contact Category is an alphabetical range from A-E, A being a person I want to contact very often, and E is an ’expired’ contact, which is a variation on Derek Silver’s classification scheme. Based on this airtable, a Python script picks one of the contacts set to remind at random once every other day and adds a todo into my todoist.

Once the script runs again, the previous todos are evaluated, to see if they have been completed. If that’s the case, the last contact fields are updated to the date the todo was checked off. The script will only remind me again once the contact category time limit triggers again.

Some Thoughts

This system is obviously unaware of the actual contact state I have with the person it recommends. If for example the other person has contacted me recently, or I decided to write the person without a reminder, I’ll just mark the todo as complete without any actual action. This isn’t supposed to mimic an actual all-encompassing Contact Management System after all. It’s a simple way to nudge me into calling more people that I want to talk to anyway but typically wouldn’t take the time.

Technical Details

The code for the Next Contact field in Airtable:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
IF(Category="E",
    DATEADD({Last Contact}, 100, 'year'),
    IF(Category="D",
        DATEADD({Last Contact},12,'month'),
        IF(Category="C",
            DATEADD({Last Contact},6,'month'),
            IF(Category="B",
                DATEADD({Last Contact},2,'month'),
                IF(Category="A",
                    DATEADD({Last Contact},3,'weeks')
                )
            )
        )
    )
)

The code for Reminder:

1
2
3
4
5
6
7
IF(  
    AND(    
        {Next Contact},
        NOW() >= {Next Contact}  
        ), 
    "Reminder"
   )

If you’d like to check out the python script which handles Airtable - Todoist connections, I’ll work on documenting it further, to make it open-source ready.