Memory That Compounds
Every interaction with Rowboat contributes to its understanding:Automatic Capture
Your emails, meetings, and voice memos are automatically processed to extract entities and context
Entity Resolution
Multiple mentions of the same person, project, or organization are merged into a unified note
Relationship Mapping
Connections between people, organizations, and projects are tracked automatically
Temporal Context
Rowboat remembers when interactions happened and can understand how relationships evolve
How Memory Builds
1. Initial Contact
When Rowboat first encounters someone in your communications:2. Enrichment Over Time
As you continue interacting, the note grows richer:3. Cross-Referencing
Rowboat automatically links related entities:When John mentions “Project Atlas” in a meeting, Rowboat:
- Finds or creates a Project Atlas note
- Links John to the project
- Links Acme Corp to the project
- Updates all three notes with this context
Entity Merging
Rowboat intelligently handles the same entity appearing in multiple sources:Example: Merging Person Notes
Example: Merging Person Notes
Email 1 (Jan 15):Creates: Updates: Updates:
People/John Doe.md with email and organizationMeeting (Jan 22):People/John Doe.md with meeting context and interestsEmail 2 (Jan 30):People/John Doe.md with Project Atlas linkResult: A single comprehensive note about John with all context.Knowledge Index
Rowboat maintains an in-memory index of all entities for fast lookup:- Quickly resolve entity mentions
- Avoid creating duplicate notes
- Find related entities for context
- Generate summaries and insights
The index is rebuilt before each processing batch to ensure newly created notes are immediately available for merging.
Temporal Awareness
Rowboat tracks when information was captured, enabling:Recency Weighting
Recent interactions carry more weight in understanding current context:- “What’s John working on?” → Prioritizes recent emails/meetings
- “Tell me about Project Atlas” → Shows latest status
Historical Context
Older information provides valuable background:- “How did we meet Sarah?” → References first contact
- “What projects have we done with Acme?” → Shows complete history
Evolution Tracking
Rowboat can understand how things change:- Role changes (“John was promoted to VP”)
- Project status (“Atlas went from planning to active”)
- Relationship depth (“Met quarterly → now weekly meetings”)
Privacy & Local Storage
All memory is stored locally on your machine:Knowledge Base
~/.rowboat/knowledge/Your Obsidian-style notes organized by entity typeSource Files
~/.rowboat/gmail_sync/
~/.rowboat/fireflies_transcripts/
~/.rowboat/granola_notes/Raw source data in markdown formatState Tracking
~/.rowboat/knowledge_graph_state.jsonProcessing state for incremental updatesMemory Architecture
Processing Pipeline
State Management
Rowboat uses a modular state system:- Hybrid change detection (mtime + hash) identifies new/changed files
- Incremental processing handles files in small batches
- Progressive saving preserves progress after each batch
- Git versioning tracks all changes to notes
Practical Examples
Example 1: Deal Tracking
Week 1: Email from [email protected] about partnership → CreatesPeople/Sarah Chen.md and Organizations/StartupCo.md
Week 2: Meeting with Sarah and her CTO about integration
→ Updates Sarah’s note, creates People/Alex Kumar.md, links to Projects/StartupCo Integration
Week 4: Follow-up emails, contract negotiation
→ Updates project status, tracks decision timeline
Week 6: Ask Rowboat “What’s the status with StartupCo?”
→ Rowboat synthesizes info from Sarah’s note, Alex’s note, project note, and recent emails
Example 2: Conference Connections
You attend a conference and meet 15 people. Over the next week:- You have follow-up emails with 8 of them
- Rowboat creates notes for each person
- Links them to their organizations
- Tracks which projects you discussed
- When and where you met
- What you discussed
- Their organization and role
- Any follow-ups or commitments
Versioning & History
Every change to your knowledge base is versioned using Git:View Version History
View Version History
- Audit trail of how knowledge evolved
- Recovery if something goes wrong
- Debugging to understand what changed when
Source Code Reference
Key implementation files:apps/x/packages/core/src/knowledge/build_graph.ts:162-229- Entity extraction and mergingapps/x/packages/core/src/knowledge/knowledge_index.ts- Index structure and buildingapps/x/packages/core/src/knowledge/graph_state.ts- State managementapps/x/packages/core/src/knowledge/version_history.ts- Git versioning