Rolodex Agent¶
Thinklio Built-in Agent Specification Version 0.1 | March 2026
1. Purpose and Problem Statement¶
Rolodex is the relationships agent. It manages the People, Organisations, and Interactions layers of the Thinklio data model — the CRM-equivalent layer that gives every other agent context about who it is dealing with.
The problem it solves is relationship amnesia: without a structured, agent-accessible record of who people are, what organisations they belong to, and what history exists with them, every agent interaction starts from zero. Rolodex provides the shared memory layer that makes agent interactions feel contextually aware.
It is used directly by users (browsing contacts, logging interactions, preparing for meetings) and indirectly by other agents (the Enquiry Agent looks up whether an inbound contact is known; the Mail Agent pulls salutation and organisation context; the Writer Agent can personalise content based on recipient profile).
2. UI Structure¶
Chat Tab¶
Full natural language access to Rolodex data: - "Who do I know at Lavan Lawyers?" - "Log a call with James Chen — he confirmed the contract is progressing" - "What's the last interaction I had with Sarah at Cares Communities?" - "Add a new contact: Tom Archer, CFO at Novansa" - "Show me everyone I haven't spoken to in 90 days"
People Tab¶
A searchable, filterable list of person records. Each row shows name, primary organisation, role, last interaction date, and tags. Clicking a record opens the Person detail panel (see section 3).
Filters: by organisation, tag, interaction recency, custom field values.
Organisations Tab¶
Equivalent list view for Organisation records, showing name, industry, contact count, last interaction date, and tags. Clicking opens the Organisation detail panel.
Interactions Tab¶
A chronological feed of all logged interactions across all contacts, filterable by person, organisation, type, date range, and tag. Useful for reviewing recent communication history before a meeting or when onboarding a new team member to a relationship.
Network Tab¶
A visual graph view of relationships: people linked to organisations, organisations linked to other organisations (e.g. a subsidiary relationship), and people linked to people (e.g. "introduced by"). Not intended for deep analysis — primarily useful for quickly understanding connection context.
3. Data Model¶
Person¶
Person
├── person_id UUID
├── full_name string
├── preferred_name string | null
├── pronouns string | null
├── email[] ContactDetail[]
├── phone[] ContactDetail[]
├── role string | null
├── organisation_id UUID | null
├── tags string[]
├── notes string | null
├── custom_fields object
├── created_at timestamp
├── updated_at timestamp
└── linked_records[]
├── record_type enum (Interaction | Item | Task | Note | Artefact)
└── record_id UUID
Organisation¶
Organisation
├── org_id UUID
├── name string
├── industry string | null
├── website string | null
├── email[] ContactDetail[]
├── phone[] ContactDetail[]
├── address Address | null
├── parent_org_id UUID | null
├── tags string[]
├── notes string | null
├── custom_fields object
├── created_at timestamp
├── updated_at timestamp
└── linked_records[]
├── record_type enum (Person | Interaction | Item | Task | Note | Artefact)
└── record_id UUID
Interaction¶
Interaction
├── interaction_id UUID
├── type enum (call | email | meeting | message | note | other)
├── direction enum (inbound | outbound | internal) | null
├── occurred_at timestamp
├── duration_minutes integer | null
├── summary string
├── participants[]
│ ├── person_id UUID
│ └── role string | null
├── organisation_id UUID | null
├── tags string[]
├── created_by UUID (user or agent)
└── linked_records[]
├── record_type enum (Item | Task | Note | Artefact)
└── record_id UUID
4. Configuration¶
4.1 Admin Configuration¶
| Setting | Description |
|---|---|
| Custom fields | Define workspace-level custom fields for Person and Organisation records |
| Industry taxonomy | Configurable industry categories for Organisation records |
| Interaction types | Extend or restrict the default interaction type list |
| Data import/export | Permitted formats and sources for bulk import (CSV, vCard, CRM connectors) |
| Visibility rules | Whether person/org records are private to creator or visible across workspace |
4.2 User Configuration¶
| Setting | Description |
|---|---|
| Default view | Which People / Organisations / Interactions tab opens first |
| Interaction reminder | Notify when a tagged contact hasn't been contacted in N days |
| Auto-log from Mail | Whether the Mail Agent automatically creates Interaction records from sent/received emails |
| Auto-log from Calendar | Whether the Calendar Agent automatically creates Interaction records from attended meetings |
5. Agent Capabilities¶
| Capability | Description |
|---|---|
| Find person | Look up a person by name, email, phone, or organisation |
| Find organisation | Look up an organisation by name, domain, or industry |
| Create person | Add a new Person record |
| Create organisation | Add a new Organisation record |
| Update record | Change any field on a Person or Organisation |
| Log interaction | Create an Interaction record against one or more participants |
| Interaction history | Return the interaction history for a person or organisation, optionally filtered by type or date |
| Enrich | Given a name and/or email, attempt to infer additional context (organisation, role) from existing records or connected data sources |
| Relationship context | Given a person or organisation, return a natural language summary of the relationship: who they are, last contact, open items, any linked tasks |
| Dormant contacts | Identify contacts with no interaction in a specified period |
6. Inter-Agent Behaviour¶
- Enquiry Agent queries Rolodex to check whether an inbound contact is known before creating a new Person record. If a match is found, the inbound Item is linked to the existing record.
- Mail Agent optionally creates Interaction records automatically when emails are sent to or received from known contacts.
- Calendar Agent optionally creates Interaction records for attended meetings where participants are known contacts.
- Writer Agent can request relationship context from Rolodex to personalise content (e.g. a letter to a known contact uses the correct salutation and references previous interactions where appropriate).
- Taskmaster can display tasks linked to a Person or Organisation when viewing a Rolodex record.
7. Use Cases¶
UC-1: Pre-meeting briefing¶
A user asks "brief me on my meeting with Sarah at Lavan Lawyers". Rolodex returns: who Sarah is, her role, the organisation context, the last three interactions (dates, types, summaries), any open tasks linked to her record, and any open Items linked to the organisation.
UC-2: Interaction logging via chat¶
After a phone call, a user says "log a 20-minute call with Marcus Chen — he's agreed to the revised timeline, I need to send him a follow-up". Rolodex creates the Interaction record and optionally creates a Taskmaster task for the follow-up.
UC-3: Dormant relationship review¶
A user asks "who haven't I spoken to in over 60 days that I've tagged as important?" Rolodex returns the list, with last interaction dates and one-line relationship summaries.
UC-4: Inbound contact enrichment¶
The Enquiry Agent receives an inbound email from an unknown sender. It queries Rolodex. No match found. Rolodex creates a minimal Person record from the email address and name header, flags it as unverified, and returns the new record ID for the Enquiry Agent to link the inbound Item to.
UC-5: Bulk import from CSV¶
An admin imports a contact list from a previous CRM. Rolodex maps fields, deduplicates against existing records, and creates Person and Organisation records in bulk, flagging any rows with insufficient data for manual review.
8. Open Questions¶
- Visibility rules for person/org records need careful design. In a solo workspace, everything is private. In a team workspace, should records be shared by default or private unless explicitly shared? The sales vs. support use case argues for shared by default; the personal contacts use case argues against.
- Auto-logging from Mail and Calendar should be opt-in by default to avoid cluttering interaction history with low-value automated entries. What level of filtering applies — all emails, or only emails to/from known contacts?
- The Network (graph) tab is valuable but complex to implement well. Is it a phase-one feature or can it be deferred?
- Relationship context generation (the pre-meeting brief) requires synthesising across multiple records. Should this be a Rolodex capability or a dedicated Briefing Agent that draws on Rolodex?
Previous: Taskmaster Agent | Next: Keeper Agent