Enrichment
Enrichment is rmbr's two-phase data capture model. You capture raw input quickly, then add structured detail later — either manually or with AI assistance.
Two-Phase Data Capture
The core idea: capture first, organize later.
- Raw phase — jot down a thought as fast as possible. No required fields beyond the raw text.
- Enrichment phase — when you have time (or an AI assistant does it for you), add structured fields like title, priority, domain, tags, and links to goals.
This removes friction from the capture moment while still producing well-structured data.
Enrichment Status
Every entity carries an enrichment_status field:
| Status | Meaning |
|---|---|
raw | Just created, only has unstructured input |
enriched | Structured fields have been filled in |
Enrichment Fields Per Module
Each module defines its own enrichment fields:
Todos
title— concise summary of the taskpriority— low, medium, high, or criticaldue_date— deadlinegoal_id— link to a parent goal
Goals
title— goal namequarter— Q1, Q2, Q3, or Q4year— target yearkpis— JSON array of key performance indicators
Kudos
direction— given or receivedperson— who the kudos involvessummary— what happenedcontext— additional detailgoal_id— link to a related goal
TIL (Today I Learned)
title— what you learnedcontent— detailed explanationdomain— subject areatags— JSON array of topic tags
Study
title— topic namedomain— subject areagoal_id— link to a related goal
Single-Step Creation
MCP create tools accept enrichment fields directly alongside the raw input. This means an AI assistant can create a fully enriched entity in a single call instead of the two-step create-then-enrich flow.
Example: a user says:
I need to fix the login bug by Friday, high priority
The AI calls the todo create tool with:
{
"raw_input": "I need to fix the login bug by Friday, high priority",
"title": "Fix login bug",
"priority": "high",
"due_date": "2026-03-27"
}The resulting todo is created with enrichment_status: 'enriched' immediately — no second step needed.
Enrichment Prompts
Each module provides an enrichment prompt that guides AI assistants on how to extract structured data from raw input. These prompts are defined in src/core/prompts.ts and tell the AI what fields to look for, what formats to use, and what to leave blank when information is missing.
Shared Enrichment Logic
The utility function enrichEntity() in src/shared/enrichment.ts handles the common pattern of updating a record's structured fields and flipping its enrichment_status from raw to enriched. Individual module services call this utility so enrichment behavior stays consistent across the codebase.