Build / Proof of Work

The networking tool I wanted
didn't exist,
so I built it.

Contacts log themselves from a voice note. Follow-ups schedule automatically. And when it's time to reach out, your inbox already has a draft written in your voice.

In Progress Python Anthropic API Airtable pyairtable click April 2026

The part of networking that breaks isn't the meeting. It's the 72 hours after: you meant to follow up and didn't, you forgot the colleague they mentioned, a warm contact went cold because nothing reminded you until it felt awkward to reach out.

But there's a second, quieter problem. Even when you do keep up with people, your network is stored in scattered notes, faded memory, and LinkedIn connections you couldn't describe without looking them up. You know your network exists. You just can't use it. When an opportunity comes up, you scroll and guess. When you need an intro, you try to remember if you know anyone. It shouldn't work this way.

You talk. It structures.

After a coffee chat or event, you dump 60 seconds of voice notes, the way you'd tell a friend about someone you just met. The system parses it into a full structured contact record and schedules your follow-up. No forms. No fields to fill.

Input / voice dump

"Met Priya Nair at the ULI Toronto Young Leaders event Thursday evening. She is an analyst at CBRE doing industrial market research, working on a report about AI adoption in commercial real estate. We talked for about 20 minutes. She asked if she could send me some questions for her research. She mentioned a colleague named David Park on the residential side at Cushman. Should follow up with Priya next week, maybe once the context template article is live."

Output / terminal
Parsing contact dump...
-- Priya Nair --
Company: CBRE
Role: Analyst, Industrial Research
How met: Event (ULI Toronto)
Tags: CRE AI/Tech Potential Collab
Follow-up in 5 days via LinkedIn
Also mentioned:
+ David Park -- Cushman
+ Contact created: Priya Nair
+ Interaction logged
+ Skeleton created: David Park
Follow-up: April 16, 2026
P
Priya Nair
CBRE · Industrial Research Analyst
Tags
CRE AI/Tech Potential Collab
Notes
Mid-research on AI adoption in CRE at CBRE. Asked to send follow-up research questions. Expressed genuine interest in Claude workflow content.
Follow-up
She asked to reach out first. Reciprocate early. Share the context template article as a hook into the CRE + AI angle. April 165 days
D
David Park
Cushman & Wakefield · Residential CRE
Auto-created
Referred by Priya Nair (CBRE). Residential CRE at Cushman. Activate after warming Priya. The referral chain is there. Use it with intention.
The part that matters

When Priya mentioned David, I never wrote his name down. I would have forgotten him entirely. The system created his skeleton record automatically at the moment of capture, with the referral context pre-filled. That thread is now alive whether or not I remember to act on it.

That's what makes this feel different from a spreadsheet. The referral chain is preserved at the moment of telling, not at the moment of remembering.

Ask your network a question.

The tracker isn't just a reminder system. It's a context layer Claude can actually reason over. When you've got a specific goal, like an internship search, a career move, or a project that needs collaborators, you just ask a plain question in the terminal (your normal words, not code). It pulls your contact history and surfaces specific, actionable answers.

tracker / query mode
$ python -m tracker.tracker query "Internship applications in 6 months -- who should I start warming now, and what should I say?"
Network query / April 2026
1. Priya Nair /CBRE, Industrial Research / New, follow-up due April 16
She asked to reach out to you. You haven't responded yet. This is your highest-leverage open thread. She's mid-research on AI in CRE, which is exactly your positioning. Send the article. Start the thread. The ask writes itself.
2. Sarah Chen /Colliers, VP Data Analytics / Warming, last contact 18 days ago
Knows your work, actively evaluating AI tools for comp analysis. A genuine check-in, something that serves her rather than asks for something, would land well right now. She could be a reference or an intro source within Colliers. Do not wait until you need something.
3. David Park /Cushman & Wakefield, Residential / New, skeleton (not yet met)
You haven't met him. The referral from Priya exists but hasn't been activated. Sequence matters here: warm Priya first, then ask for the introduction. Cold-reaching a referred contact before the referrer knows you well undermines both relationships.
Referral path to Cushman & Wakefield
You Priya Nair (CBRE) David Park (Cushman)

Follow-up logic that actually makes sense.

No AI magic. Flat rule: next follow-up date is last contact plus interval. The interval scales with how warm the relationship is. Checking in with someone you met once should not feel the same as checking in with a strong contact you've been building for a year.

Relationship Default interval Logic
New 5 – 14 days depending on how you met Event / Conference = 5d  ·  Coffee Chat = 7d  ·  Intro = 10d  ·  Cold outreach = 14d
Warming 21 days You've had at least one good exchange. Stay present without overdoing it.
Strong 45 days Real relationship. Doesn't need constant maintenance, but does need some.
Dormant alert Flagged at 60 days Warming or Strong contacts with no interaction in 60 days surface in the weekly digest. You decide whether to re-engage.

Relationship strength is always your call, not the system's. It tracks recency and logs interactions. It won't label a contact "Strong" because you emailed them twice. That's yours to decide.

What's actually in here.

tracker/
tracker.py    -- CLI: add, event, digest, status, done, snooze, query, setup
parser.py    -- Claude parsing logic, ContactRecord dataclass
airtable_sync.py -- all Airtable reads and writes
followup.py    -- interval logic, digest generation
config.py    -- field names, table names, interval defaults
prompts/
tracker_parse.md  -- the Claude parsing prompt

Each of these is a command you type into your terminal (or the terminal panel inside Claude Code) and press Enter. The code in the left column is what you type. The description on the right is what happens.

add "..." Talk about someone you just met. It parses the details, creates the Airtable record, and schedules your follow-up.
query "..." Ask a plain question about your network and get a specific, reasoned answer back.
digest Print today's follow-up queue: who's due, why, and dormant contacts that need attention.
event "Name" Create an event, then log every person you met there in one session. All linked automatically.
done "Name" --notes "..." Mark a follow-up complete. Add a note about what you sent. The next follow-up schedules itself.
send-reminders Find everyone due today, draft a message for each person using Claude, and send the whole thing to your inbox.
voice-setup Walk through nine questions about how you actually write. Claude turns your answers into a voice profile. Every future draft uses it.
setup --create Build the full Airtable base and all its tables automatically. Nothing to set up by hand.

From zero to first contact in 15 minutes.

New to Claude Code or using a terminal for the first time?

There's a plain-English setup guide that walks through every single step: what to install, what to paste, what each command does, and what to do if something breaks.

You don't need to know Python. The guide handles it. Open the setup guide.

1
Connect Airtable to Claude. This means installing a small plugin called an MCP server (don't let the name scare you — it's literally just a connector that lets Claude talk to Airtable). You'll also need a Personal Access Token from Airtable, which is just a password your account generates for you. The companion guide below walks you through both in about five minutes.
2
Open the file config/secrets.env in any text editor (eek, I know — but it's genuinely just a plain text file, like a notepad. You're pasting two values in and saving). One is your Anthropic API key from console.anthropic.com, the other is your Airtable token from step one. The companion guide shows you exactly where to find both.
3
Open the terminal in Claude Code (it's the panel at the bottom of the screen — if you can't see it, press Ctrl+` to open it), paste this in, and press Enter: python -m tracker.tracker setup --create. That's the whole step. It builds your full Airtable base automatically. You don't configure anything by hand.
4
Log your first contact. Back in that same terminal, paste this and replace the text in quotes with a description of someone you recently met: python -m tracker.tracker add "Met [name] at [event]...". You'll see the parsed record appear right there.
Companion guide
Connect Airtable to Claude in 5 minutes

On the day you're due to reach out,
your inbox already has a draft.

The tracker knows when each follow-up is due. Set it to run every morning, or just trigger it manually when you want it, and it finds everyone due that day, drafts a suggested message for each person using Claude, and sends everything to your inbox in one email. No switching between apps, no blanking on what to say. Each draft is specific to that person and what you actually talked about.

The drafts get better when the tracker knows how you actually write. Run voice-setup in your terminal and it'll walk you through nine questions: how you open a message, what phrases make you wince, how formal you actually are. Claude turns your answers into a voice profile. Save it once. Every future draft sounds like you, not like a generic follow-up.

Companion guide
Build your voice guidelines: the nine questions
Get the build

Take the whole thing.
It's yours to run.

The full module, the parsing prompt, the Airtable schema, and the setup command. Clone it, adapt it, make it yours.

View on GitHub