Read WHY.md and METHODOLOGY.md first to understand the framework.
This is the Demand-Driven Context (DDC) framework — a methodology and toolkit for building domain knowledge bases that serve both humans and AI agents.
It contains:
- The DDC methodology — how demand-driven context curation works
- Tooling — a web UI for exploring knowledge bases
- A synthetic example domain — healthcare claims processing (for demos and testing)
- Templates — starter kit for applying DDC to your own domain
Knowledge bases grow slowly and deliberately. Every addition should be:
- Curated: Reviewed, structured, and placed correctly
- Incremental: Small commits, one concept at a time
- Non-bloating: No duplicate information, no "dump and forget"
Do NOT accumulate large uncommitted changes.
- Commit after completing each logical unit of work
- A "logical unit" = one entity added, one diagram updated, one decision documented
All content must be:
- Human readable: Clear prose, good formatting, visual diagrams
- Machine parseable: Structured frontmatter, consistent relationships, predictable locations
Format choices:
- Markdown with YAML frontmatter for entities
- PlantUML or Mermaid for diagrams
- YAML for configuration and reference data
Don't create files randomly. Every piece of content has a designated location based on its type. See the structure below.
<domain-name>/
|-- domain-knowledge/
| |-- meta/ # Configuration and guidelines
| | |-- entity-types.yaml # What entity types exist
| | +-- relationship-types.yaml # How things connect
| |
| |-- entities/ # Domain entities (13 types)
| | |-- offerings/ # Products and services delivered
| | |-- capabilities/ # Business capabilities
| | |-- teams/ # Product teams
| | |-- personas/ # User roles
| | |-- processes/ # Business processes and workflows
| | |-- business-events/ # Domain events that trigger actions
| | |-- systems/ # Software systems
| | |-- apis/ # API documentation
| | |-- data-models/ # Data structures and schemas
| | |-- data-products/ # Curated data assets for consumption
| | |-- platforms/ # Infrastructure and platform services
| | |-- jargon-business/ # Business terminology
| | +-- jargon-tech/ # Technical terminology
| |
| |-- diagrams/ # Visual representations
| | |-- architecture/ # Architecture views
| | |-- sequences/ # Sequence diagrams
| | |-- lifecycles/ # State machine diagrams
| | +-- processes/ # Process diagrams
| |
| +-- decisions/ # Architecture decisions
| |-- active/ # Problems being worked on
| +-- resolved/ # Completed ADRs
|
|-- sandbox/ # Problem exploration (NOT production knowledge)
| +-- <problem-name>/ # One folder per active problem
|
+-- ddc-cycle-logs/ # Structured logs of each DDC cycle
When you receive a problem or question, follow this navigation pattern:
- Integration question? -> Start with
entities/systems/,entities/apis/, anddiagrams/sequences/ - Data question? -> Start with
entities/data-models/andentities/data-products/ - Terminology confusion? -> Start with
entities/jargon-business/orentities/jargon-tech/ - Process question? -> Start with
entities/processes/andentities/business-events/ - Infrastructure question? -> Start with
entities/platforms/andentities/systems/ - Product/offering question? -> Start with
entities/offerings/andentities/capabilities/ - Architecture decision? -> Check
decisions/for similar past decisions
Follow relationships in entity frontmatter:
related_systems-> Read those system filesimplements_capability-> Understand the business capabilitydepends_on-> Understand dependencies
- Check
decisions/resolved/for similar problems - Check for reusable integration or design patterns
- Reference specific entities and diagrams
- Explain reasoning based on domain knowledge
- Identify gaps if information is missing
- Check if similar content already exists
- Identify the correct location based on content type
- Use the appropriate format (see below)
---
type: <entity-type-id>
id: <unique-kebab-case-id>
name: <Human Readable Name>
description: <One-line description>
status: active | deprecated | planned
related_systems: [system-id-1, system-id-2]
implements_capability: capability-id
depends_on: [entity-id-1, entity-id-2]
---
# Human Readable Name
## Overview
<Prose description>
## Details
<More details, diagrams, etc.>---
type: decision
id: <decision-id>
name: <Decision Title>
status: active | resolved
date_opened: YYYY-MM-DD
date_resolved: YYYY-MM-DD (if resolved)
participants: [person1, person2]
related_systems: [system-id-1]
---
# Decision Title
## Context
<What is the situation?>
## Problem
<What needs to be decided?>
## Options Considered
1. Option A - description
2. Option B - description
## Decision
<What was decided and why?>
## Consequences
<What are the implications?>The goal is to create specialized sub-agents that can perform domain-specific cognitive work:
| Agent | Role | Key Skills |
|---|---|---|
ta-agent |
Technology Architect | Integration design, system reasoning, ADR drafting |
po-agent |
Product Owner | Requirements analysis, journey mapping, prioritization |
se-agent |
Senior Engineer | Code review, solution design, technical mentorship |
da-agent |
Data Architect | Data model design, flow analysis, governance |
sa-agent |
Security Architect | Security review, compliance checking, threat modeling |
Each agent has:
- Learning Path — ordered reading list to build domain context
- Skills — specific capabilities the agent can perform
- Reasoning Patterns — how to approach different problem types
- Production knowledge (
entities/,diagrams/, etc.): Curated, validated, navigable - Sandbox (
sandbox/): Experiments, work-in-progress, problem exploration
Never mix them. Sandbox content may be incomplete or incorrect. It's for exploration.