Agent-managed personal CRM
Use Rowset when you want a trusted agent to maintain relationship context without turning every follow-up into a manual spreadsheet chore.
For a complete implementation with separate people, interaction, and commitment records, follow the AI agent CRM guide.
Keep recalled preferences in agent memory and current contact fields in the CRM dataset. The guide to AI agent memory vs structured state shows how to choose the authoritative home for each fact.
Starter shape
Create a people dataset. Use email as the index when contacts have reliable
email addresses, or person_id when one person can have several addresses.
People dataset indexed by email or person_id.
| name | company | contact_category | last_interaction | next_contact | notes | |
|---|---|---|---|---|---|---|
| alex@example.com | Alex Morgan | Northstar Labs | A | 2026-07-01 | 2026-07-22 | Asked for implementation examples |
| sam@studio.dev | Sam Lee | Studio Dev | B | 2026-06-24 | 2026-08-24 | Intro from May conference |
| nora@acme.com | Nora Patel | Acme | C | 2026-06-28 | 2026-12-28 | Wants security details |
Agent jobs
- Add people and companies from meeting notes, emails, or chat summaries.
- Update relationship stage after each conversation.
- Find stale promises before they become dropped balls.
- Export a CSV or JSONL snapshot when you want a backup or handoff.
Dataset context and semantic schema
Add instructions that define stage meanings, follow-up rules, and what counts as
private notes. Mark email as an email column, last_interaction as a date,
and next_action as free text. Keep the agent honest: it should update rows
only from trusted notes or direct user instruction.
Calculate follow-up dates
Create next_contact as a date formula when each contact category has a fixed
cadence:
SWITCH(
{contact_category},
"A", DATEADD({last_interaction}, 3, "weeks"),
"B", DATEADD({last_interaction}, 2, "months"),
"C", DATEADD({last_interaction}, 6, "months"),
"D", DATEADD({last_interaction}, 12, "months")
)
Add a boolean formula such as
AND({next_contact}, TODAY() >= {next_contact}) to make due contacts directly
filterable through MCP, REST, and the dataset view. Formula columns calculate
live and remain read-only; your agent only updates source fields such as
last_interaction and contact_category.
Connect it
Use MCP access first. If MCP is unavailable, use the Dataset API with a bearer API key. Public previews should stay off unless you deliberately want a read-only relationship board.