Personal Contacts CRM INI File

oz, 2022-02-27

Wow, even without a clickbait, SEO-optimized "How-to ..." or "X Reasons ..." prefix, the post title sounds like a heap of bullshit! 😅

So far, my biggest pain point migrating away from "big tech" was my contacts list neatly synchronized by Google. In the last year, I missed quite some birthdays, address updates and have generally been "minimal-social" due to lack of proper bookkeeping!

History and Requirements

I already made it a habit to note key learnings after interactions with people I don't meet regularly. When companies do this, it's called Customer Relationship Management (CRM), so the ever rotating clerks know of your correspondence. This may sound creepy, but has the benefit of being more considerate and respectful with each other's time. No more "I thought, I already told you" or "What was the name of your child again?" That "database" was a set of local text files and I wanted to combine it with the contacts list exported from Google (.csv).


Solution and Format

Eventually, I settled for an INI file. Python has built-in support and greping works, too. Each person gets a section. Master data are key-value pairs, notable events are date-note pairs.


bday = 1990-09-29
email =
address = Foo St. 23, 01234 City
2020-06-22 = Met for lunch, recently switched to ABCorp, children are well
2021-09-29 = Birthday telephone call, vegan for 6 months

phone = +49 123456789
info = Met at festival

Alice = XYZ user group meetup 2022-02-02, new to City and topic
John = XYZ user group meetup 2022-02-02, did Karate (6th Kyu) in school

Keys for unknown values may be omitted, unknown values in structured data may be masked with ? characters (e.g. unknown birth year may become ????). This has the benefit of easy parsing/greping. I made a little script which reads all birthdays (if present), sorts them by month and day, and prints the entire list with a "today" marker. For me, this is a good-enough substitute for Google Calendar birthday notifications.

Next Steps

Currently, I keep the INI file locally and back it up to KeePass. More automated encryption and synchronization would be nice.

But first, I still need to migrate a good chunk of contacts data. 🙂