Vault Operations - Core PCP Data Layer
Quick Start
Vault is PCP's core data layer. It handles:
- Capturing anything the user shares (text, observations, ideas)
- Searching across all captured content
- Task management (auto-created from captures or manual)
- Entity linking (people, projects, topics)
- Relationships (contact tracking, stale relationship detection)
- Project Health (activity monitoring, stalled project detection)
Script: vault_v2.py
Smart Capture
What Happens When the User Shares Something
When you receive content to remember, use smart_capture():
from vault_v2 import smart_capture
result = smart_capture("John mentioned the API needs rate limiting by Friday")
# Returns:
# {
# 'capture_id': 123,
# 'task_id': 456, # Auto-created if deadline detected
# 'type': 'note', # note|task|idea|decision|question
# 'entities': {...}, # Extracted people, projects, topics
# 'linked': {...} # Linked to existing DB records
# }
Auto-Detection Features
The capture system automatically:
- Extracts entities: People, projects, topics mentioned
- Detects intent: Is this a note, task, idea, or decision?
- Parses dates: "tomorrow", "next Friday", "by EOD"
- Creates tasks: When deadlines or action items detected
- Links to existing records: Matches people/projects in DB
- Updates contact history: When people are mentioned
CLI Usage
# Capture text
python vault_v2.py capture "Meeting with John - decided to use Redis for caching"
# Output shows what was detected
Captured as decision (ID: 123)
Created task (ID: 456)
People: John
Linked to projects: [1]
Search
Smart Search (Default)
Searches captures, people, projects, and files:
from vault_v2 import smart_search
results = smart_search("rate limiting")
# Returns list of matches from different sources
Unified Search (Cross-System)
Searches ALL PCP data sources with consistent format:
from vault_v2 import unified_search
# Search everything
results = unified_search("budget")
# Search specific sources only
results = unified_search("budget", sources=["knowledge", "tasks"])
Valid sources: captures, knowledge, emails, tasks
CLI Usage
# Default search (captures, people, projects)
python vault_v2.py search "rate limiting"
# Search all sources (captures, knowledge, emails, tasks)
python vault_v2.py search "rate limiting" --all
# Search specific sources
python vault_v2.py search "budget" --sources knowledge,tasks
Task Management
Functions
from vault_v2 import get_tasks, complete_task
# Get pending tasks
pending = get_tasks(status="pending")
# Get tasks due within N days
urgent = get_tasks(due_within_days=3)
# Complete a task
complete_task(task_id=42)
CLI Usage
# List pending tasks (default)
python vault_v2.py tasks
# List completed tasks
python vault_v2.py tasks done
# List all tasks
python vault_v2.py tasks all
Commitment Tracking
Commitments are things the user has committed to do or follow up on.
Commitment Types
| Type | Examples |
|---|---|
follow_up |
"I'll follow up with John", "Let me get back to you" |
promise |
"I'll send the document", "I will review it by Friday" |
deadline |
"Due by EOD", "Deadline is January 15" |
Relationship Intelligence
PCP tracks people the user interacts with, maintaining relationship history.
Automatic Tracking
When smart_capture() processes text:
- Entity extraction identifies people mentions
- People are auto-created if not found
last_contactedandinteraction_countupdated automatically
result = smart_capture("Had coffee with John about the API project")
# -> John's last_contacted updated to now
# -> John's interaction_count incremented
People Functions
from vault_v2 import get_person, add_person, get_relationship_summary, get_stale_relationships
# Find person by name
person = get_person("John")
# Add new person
person_id = add_person("Jane Doe", relationship="colleague", context="From Acme Corp")
# Get full relationship summary
summary = get_relationship_summary(person_id)
# Includes: contact history, recent captures, shared projects
# Find people not contacted recently
stale = get_stale_relationships(days=14)
CLI Usage
# Basic person info
python vault_v2.py person 1
# Full relationship summary
python vault_v2.py person 1 --summary
# Find stale relationships (not contacted in N days)
python vault_v2.py relationships --stale 14
Stale Relationship Detection
People are "stale" if:
- Contacted before, but too long ago: More than N days since last contact
- Never contacted despite mentions: Has mentions but no
last_contacted
Results are sorted with most urgent first.
Project Health & Context
PCP tracks project health automatically.
Health Status Definitions
| Status | Meaning |
|---|---|
healthy |
Active in last 14 days, no overdue tasks |
needs_attention |
No activity in 14-30 days |
stalled |
No activity in 30+ days |
has_overdue |
Active but has overdue tasks |
inactive |
Project status is not "active" |
Functions
from vault_v2 import get_project, get_project_health, get_stalled_projects, restore_context, get_project_context
# Get project by name
project = get_project("PCP")
# Get health metrics
health = get_project_health(project_id)
# Includes: activity levels, task counts, staleness indicator
# Find stalled projects
stalled = get_stalled_projects(days=14)
# Restore full project context (for getting back up to speed)
context = restore_context(project_id)
# Get structured context data
ctx = get_project_context(project_id)
# Returns: project info, health, captures, decisions, tasks, people, knowledge
CLI Usage
# Basic project info
python vault_v2.py project 1
# Full health metrics
python vault_v2.py project 1 --health
# Find stalled projects
python vault_v2.py projects --stalled 14
# Restore context (by ID or name)
python vault_v2.py context PCP
python vault_v2.py context 1
python vault_v2.py context PCP --json
Suggestion Approval
Pattern detection generates task suggestions. Use vault_v2.py to approve them:
from vault_v2 import approve_suggestion, dismiss_suggestion
from patterns import get_suggested_tasks
# Get pending suggestions
suggestions = get_suggested_tasks(status="pending")
# Approve and create task
result = approve_suggestion(suggestion_id=1, project_id=5)
# Dismiss (mark as not useful)
dismiss_suggestion(suggestion_id=2)
CLI Usage
# List pending suggestions
python vault_v2.py suggestions
# Approve and create task
python vault_v2.py suggestions --approve 1
# Dismiss
python vault_v2.py suggestions --dismiss 2
Statistics
# Get vault statistics
python vault_v2.py stats
# Output:
# Captures: 150 (5 today)
# Tasks: {'pending': 12, 'done': 45}
# Overdue: 2
# People: 25
# Projects: 4 active
# Files: 18
When To Use What
| User Says... | Function/Command |
|---|---|
| "Remember this..." | smart_capture(content) |
| "What did X say about..." | smart_search(query) |
| "Find everything about..." | unified_search(query) |
| "What tasks are pending?" | get_tasks(status="pending") |
| "Mark that done" | complete_task(task_id) |
| "I'll follow up with John" | Create task with store_task() |
| "What's overdue?" | get_tasks(status="pending", overdue=True) |
| "Who is John?" | get_person("John") or get_relationship_summary(id) |
| "Who haven't I talked to?" | get_stale_relationships(days=14) |
| "How's project X doing?" | get_project_health(id) |
| "Get me up to speed on X" | restore_context(id) |
| "What projects need attention?" | get_stalled_projects(days=14) |
Key Patterns
Capture vs Knowledge
- Capture (vault_v2.py): Transient observations, conversations, notes
- Knowledge (knowledge.py): Permanent facts, architecture decisions
Use smart_capture() for what the user shares in conversation.
Use add_knowledge() for facts that should persist permanently.
Entity Detection
Captures automatically extract:
- People: Names mentioned (auto-created if new)
- Projects: Keywords matched to active projects
- Topics: Key themes for pattern detection
- Dates: Deadlines, reminders, time references
Contact Tracking
When a capture mentions a person, the system automatically:
- Updates
last_contactedtimestamp - Increments
interaction_count - Sets
first_contactedif first time
This enables stale relationship detection.
Database Tables
| Table | Purpose |
|---|---|
captures_v2 |
All captured content |
people |
People tracked |
projects |
Projects tracked |
tasks |
Action items |
suggested_tasks |
Pattern-generated suggestions |
Related Skills
/knowledge-base- Permanent facts and decisions/brief-generation- Briefs include stale relationships, stalled projects