Skip to content

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 ]  [ People ]  [ Organisations ]  [ Interactions ]  [ Network ]

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