> ## Documentation Index
> Fetch the complete documentation index at: https://docs.duckbrain.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Contacts

> Contacts → DuckBrain ingest (Available)

**Status:** Available

Your people, backed by **[clawdex](https://github.com/openclaw/clawdex)** — a plaintext, git-backed contacts repo at `~/.clawdex/contacts/`, one `people/<slug>/person.md` per person: YAML frontmatter (name, emails, phones, tags, account handles) plus a freeform markdown bio. This is a **direct** file source: DuckBrain reads those `person.md` files directly (no SQLite), one bronze row per person whose text is the whole contact card. A person is searchable by name, any contact point, their tags, or your notes about them.

```bash theme={null}
brew install steipete/tap/clawdex          # or: go install github.com/openclaw/clawdex/cmd/clawdex@latest
clawdex init ~/.clawdex/contacts
clawdex import                              # imports Apple Contacts
clawdex person add "Ada Lovelace" --email ada@example.com --tag investor
duckbrain sync contacts
duckbrain search "investor intro" --source contacts
```

## What gets ingested

* **One bronze row per person** — the text is the entire contact card, so name, contact points, tags, and your bio notes are all searchable.
* **Upsert on a stable per-person id** — editing a `person.md` updates that row in place.
* **Manual refresh.** No auto-refresh lane; run `clawdex import` / `clawdex person add`, then `duckbrain sync contacts`.

## Facet mapping

| Facet            | Value                                     |
| ---------------- | ----------------------------------------- |
| `--source`       | `contacts` (alias `clawdex`)              |
| title            | the person's name                         |
| observer         | `owner` (you)                             |
| platform\_source | null — contacts aren't a message platform |

<Note>
  Rows are `classification: confidential` and never leave the machine.
</Note>
