Ingestion Pipeline
When you ingest content, it goes through:- Secret scanning — checks for API keys, passwords, tokens
- Deduplication — SHA-256 hash prevents duplicate articles
- LLM metadata extraction — auto-tags people, topics, organizations, action items, sentiment
- Embedding generation — creates vector embeddings for semantic search
- Chunk sync — breaks content into retrievable chunks for RAG
Supported Sources
| Source | Method |
|---|---|
| Markdown files | bestmate ingest --file or directory |
| Obsidian vaults | macOS app auto-sync or bestmate deploy --vault |
| Granola meetings | macOS app auto-sync (every 30 min) |
| Slack conversations | @bestmate ingest in channels |
| Text | bestmate ingest "your text" |
| Stdin | cat file.txt | bestmate ingest |
Visibility Levels
| Level | Who can query | Set with |
|---|---|---|
| Private | Only the owner | --private (default) |
| Team | Team members | --team |
| Organization | Everyone in org | --org |
| Specific users | Named individuals | --visible-to email@... |
Managing Articles
RAG Retrieval
When someone queries a twin:- Query is embedded and compared against chunk embeddings
- Top chunks are scored with boosts for twin match, expertise areas, and recency
- Stale content (>90 days) gets a -15% penalty (except decisions)
- Top 5 chunks + legacy article matches are combined as context
- LLM generates an answer with confidence score