# Memify Quickstart
> Step-by-step guide to enriching existing knowledge graphs with derived facts
A minimal guide to running a small enrichment pass over your existing knowledge graph to add useful derived facts (e.g., coding rules) without re-ingesting data.
**Before you start:**
* Complete [Quickstart](getting-started/quickstart) to understand basic operations
* Ensure you have [LLM Providers](setup-configuration/llm-providers) configured
* Have an existing knowledge graph (add → cognify completed)
## What Memify Does
* Pulls a subgraph (or whole graph) into a mini-pipeline
* Applies enrichment tasks to create new nodes/edges from existing context
* Defaults: extracts relevant chunks and adds coding rule associations
## Code in Action
```python theme={null}
import asyncio
import cognee
from cognee import SearchType
async def main():
# 1) Add two short chats and build a graph
await cognee.add([
"We follow PEP8. Add type hints and docstrings.",
"Releases should not be on Friday. Susan must review PRs.",
], dataset_name="rules_demo")
await cognee.cognify(datasets=["rules_demo"]) # builds graph
# 2) Enrich the graph (uses default memify tasks)
await cognee.memify(dataset="rules_demo")
# 3) Query the new coding rules
rules = await cognee.search(
query_type=SearchType.CODING_RULES,
query_text="List coding rules",
node_name=["coding_agent_rules"],
)
print("Rules:", rules)
asyncio.run(main())
```
This simple example uses basic text data for demonstration. In practice, you can enrich large knowledge graphs with complex derived facts and associations.
## What Just Happened
### Step 1: Build Your Knowledge Graph
```python theme={null}
await cognee.add([
"We follow PEP8. Add type hints and docstrings.",
"Releases should not be on Friday. Susan must review PRs.",
], dataset_name="rules_demo")
await cognee.cognify(datasets=["rules_demo"])
```
First, create your knowledge graph using the standard add → cognify workflow. Memify works on existing graphs, so you need this foundation first.
### Step 2: Enrich with Memify
```python theme={null}
await cognee.memify(dataset="rules_demo")
```
This runs the default memify tasks on your existing graph. No data parameter means it processes the existing graph, optionally filtering with `node_name` and `node_type`.
### Step 3: Query Enriched Data
```python theme={null}
rules = await cognee.search(
query_type=SearchType.CODING_RULES,
query_text="List coding rules",
node_name=["coding_agent_rules"],
)
```
Search for the newly created derived facts using specialized search types like `SearchType.CODING_RULES`.
## Customizing Tasks (Optional)
```python theme={null}
from cognee.modules.pipelines.tasks.task import Task
from cognee.tasks.memify.extract_subgraph_chunks import extract_subgraph_chunks
from cognee.tasks.codingagents.coding_rule_associations import add_rule_associations
await cognee.memify(
extraction_tasks=[Task(extract_subgraph_chunks)],
enrichment_tasks=[Task(add_rule_associations, rules_nodeset_name="coding_agent_rules")],
dataset="rules_demo",
)
```
You can customize the memify pipeline by specifying your own extraction and enrichment tasks.
## What Happens Under the Hood
The default memify tasks are equivalent to:
* **Extraction**: `Task(extract_subgraph_chunks)` - pulls relevant chunks from your graph
* **Enrichment**: `Task(add_rule_associations, rules_nodeset_name="coding_agent_rules")` - creates new associations and rules
This creates derived knowledge without re-processing your original data.
Learn about custom data models
Learn about custom tasks and pipelines
Understand knowledge graph fundamentals
---
> To find navigation and other pages in this documentation, fetch the llms.txt file at: https://docs.cognee.ai/llms.txt