Relationship Memory

The problem

There was a time I thought I could keep track of dates and appointments in my head. I didn’t need a calendar.

Obviously that was ridiculous, and at some point I stopped fighting it.

Relationships are the same problem.

I run a coworking community. Twenty years of that means I know a lot of people. I’d walk into a meeting and blank on whether we talked last month or last year. I’d promise to make an introduction and forget by Tuesday.

Nobody tries to hold their calendar in their head anymore. But we still try to hold relationships in our head - who we talked to, what we promised, who’s drifting away.

Same problem. Same denial. No equivalent tool.

What I tried

CRMs felt wrong because the data model is wrong. They treat people like leads - qualify them, stage them, close or discard.

A pipeline stage doesn’t describe a relationship.

Spreadsheets lasted a week. “Reach out to 5 people a day” routines burned out by day three because I spent all my energy deciding who to reach out to.

The question I needed answered wasn’t “who should I sell to next?” It was “who am I about to lose touch with?”

How it started

I’d already been building Andy - my AI executive assistant - to handle email, calendar, and daily operations. So when the relationship problem kept nagging at me, I didn’t go shopping for an app. I started with what I had.

One file per person. Name, role, how we met, what we talked about. Structured so Andy could read and update them without me.

I also tracked what I called “orbits” - the shared context that connects people. A community you’re both in. A conference you both attended. A mutual friend.

These turned out to matter more than anything else in the system.

Then I noticed my sent email was already telling me which relationships were active. If I emailed someone last week, the relationship is current. I don’t need to log anything.

Andy’s first scan of my outbox found people I’d been emailing regularly but never tracked.

That’s when it stopped being a contact list.

What changed when it got real

Once I could measure freshness, I could measure staleness.

The first time I ran the detector, more than half my contacts were stale. I’d been losing touch with people I cared about and had no idea.

Not every relationship needs the same attention. A VIP gets flagged after 14 days of silence. Someone from my coworking community gets 30 - if I haven’t talked to someone in my own building for a month, something’s off. A casual contact from a conference gets 90.

Orbits made this smarter. When a few stale contacts share the same orbit - all from the same event, say - Andy suggests one group outreach instead of separate emails.

I also had to build a way to stop nudging. Some relationships aren’t cold, they’re finished. A vendor from a one-time project. A recruiter from a job I didn’t take.

Marking them dormant prevents false alarms. And false alarms kill trust in any system.

If they email me again, they reactivate.

Adding text messages

The system already watched email and calendar. Adding text messages meant a third signal source.

The hard part wasn’t reading texts. It was matching them. Phone numbers and first-name-only contacts don’t map cleanly to existing files.

Andy built confidence-scored matching. High confidence, auto-match. Medium, flag for me. Low, skip.

What mattered: nothing downstream broke. Freshness tracking, staleness detection, orbit clustering, afternoon nudges - all worked immediately with the new signal.

The system needed a resolver, not a rebuild.

How it runs

Every morning at 8am, Andy scans my sent emails - one parallel agent per recipient, all running simultaneously.

Every 15 minutes, text messages sync.

Every afternoon at 2pm, the nudge system checks who’s going cold. Closest to their threshold shows up first.

Before any meeting, Andy pulls the relationship file. I walk in knowing what we discussed, what I promised, and what’s changed.

I don’t measure this in contacts tracked or nudges sent. I measure it in conversations that happened because the system caught something I would have missed.

← All use cases