What is this? A concrete recipe for an AI-powered personal CRM. Your agent watches Gmail / Calendar / Slack, logs who you talked to and what about, surfaces people you haven’t reached out to in a while, and drafts follow-ups — all backed by Salty.
The scenario
You meet 50+ new people a year — at conferences, intro emails, calls. Six months later you remember vaguely “the one who worked at Stripe and was into game design” but can’t reconstruct context. A traditional CRM is too heavyweight for personal use. A note-taking app loses the structure. Salty sits between them: structured enough to query (“who at fintech companies haven’t I talked to in 3 months?”), light enough to maintain by talking to an LLM.Data model
| Salty object | Your concept |
|---|---|
person | Someone in your network |
company | Where they work (optional) |
note | Free-form context: “met at OpenAI dinner Nov 2026, building voice agents” |
activity | Each meeting, call, email exchange |
task | ”Follow up by Friday” (REST/CLI — no MCP write tool in v1) |
custom_attributes on person | tier (1/2/3), last_contact_at, interests |
Set up the schema
What the agent does
When you meet someone new
You say to Claude Desktop:“I just met Priya Mehta at the OpenAI dinner — she’s building voice agents at a YC company. Tier 2. Add her.”Claude calls:
create_personwithemail(if you provided),first_name: "Priya",last_name: "Mehta",custom_attributes: {tier: "2", interests: "voice-agents", met_via: "OpenAI dinner 2026-05-23"}add_noteparent: person, body: “Met at OpenAI dinner, building voice agents at a YC company”
After every call or meeting
“Log a 30-min call with Priya today about her early traction with B2B.”Claude calls:
search_peoplewith{filter: {first_name: "Priya"}}→ get her idlog_activitywithparent_object_type: "person",parent_object_id: <id>,activity_type: "call",occurred_at: <ISO-8601 in your timezone>,payload: {topic: "early B2B traction", duration_min: 30}
Weekly surfacing — “who am I forgetting”
“Show me everyone in tier 1 or 2 I haven’t talked to in 60 days.”Claude calls
search_people + search_activities + filters by occurred_at, ranks the list. You get a 12-name action list every Monday.
Driving it without MCP — your own script
A nightly cron job that updateslast_contact_at from Calendar events:
Volume guidance
A heavy networker who meets 5 new people a week + logs 20 meetings a week makes ~5,000 API calls/month — comfortably inside Solo ($20/mo, 100k calls). Free (500 calls/mo) is fine to demo the platform, but it also blocks custom attributes and webhooks, which the pattern above leans on. Personal CRM at any real cadence runs on Solo.
Why not just Notion / Apple Notes / Airtable?
| Need | Notion / Notes | Airtable | Salty |
|---|---|---|---|
| Query “tier 1 + fintech + not contacted in 3 months” | hard | yes | yes |
| Add a structured custom field without leaving the conversation | no | API limits | add_attribute then write |
| LLM agent can write directly via OAuth | no | API key | OAuth 2.1 + PKCE |
| Receive a webhook on every change | no | yes (limited) | yes (signed, retried) |
| Cost at 1k people | $$ + tab clutter | $20+ per editor | $0 (free tier) |
Related
- Quickstart — sign up and create your first person in 60 seconds
- MCP server — wire Claude Desktop
- Schema engine — extend the data model
- Concepts → Authentication — managing your single bearer