How it works
When the agent processes a conversation, it identifies the sender and either matches them to an existing contact or creates a new one. Contacts can have multiple identities across different channels.Identities
Each contact can have identities from any channel:| Channel | Identity format |
|---|---|
| Slack | slack:U0123ABC |
whatsapp:15551234567 | |
| iMessage | imessage:user@example.com |
| Telegram | telegram:123456789 |
email:user@example.com |
Contact profiles
Contacts are stored with:- Name and slug (URL-friendly identifier)
- Organization and role
- Email and phone
- Identity list (channel-specific IDs)
- Profile notes (markdown, stored in
data/contacts/)
Agent tools
The LLM agent can manage contacts during conversation processing:lookup_contact— search by name or identityupsert_contact— create or update a contact profilelink_contact_identity— add a new channel identity to an existing contactmerge_contacts— consolidate two duplicate contacts into one