Inbox & Auto-Review
FundAdmin AI can automatically classify and review fund documents as soon as they are placed in the Obsidian vault Inbox.

How It Works
~/FundAdmin-AI-Vault/Inbox/ ← drop PDF here (or upload via webapp)
↓
mcp-vault-server/watcher.js ← classifies by filename + magic bytes (~3s, no Claude)
↓
apps/worker/src/inbox-watcher.ts ← 30-second tick, deduped by filename
↓
/api/review/trigger ← fires for LPA files not yet reviewed
↓
review-pipeline.ts ← 5-agent Anthropic SDK pipeline
↓
vault_write_review ← review .md + .json sidecar in vault
↓
post-review hooks ← wire, capital, compliance, investor, obligation, performance, reconcileClassification
The watcher classifies documents without calling Claude — it uses filename patterns and PDF magic-byte content sniffing. Non-fund documents (10-K reports, bank statements, IRS forms) are automatically archived to Archive/_NonFundDocuments/.
The full SDK review pipeline only fires for documents classified as LPA-type files.
Triggering from the Webapp
Uploading via /w/[slug]/upload writes the PDF to ~/FundAdmin-AI-Vault/Inbox/. The inbox watcher picks it up on the next 30-second tick.
The upload API is also accessible directly:
curl -X POST http://localhost:3000/api/upload \
-H "x-api-key: $UPLOAD_API_KEY" \
-F "file=@document.pdf"Requirements: x-api-key header, magic-byte-validated PDF, under 50 MB.
Upload Queue
The upload queue page (/w/[slug]/upload/queue) shows pending inbox items with their classification and review status.
Review Status Lifecycle
new → under-review → action-required → completed → archivedStatus is tracked via YAML frontmatter in the review markdown file and mirrored to the Postgres inbox_item table.
Post-Review Hooks
After each review completes, the watcher automatically chains 8 tracking hooks. See MCP Vault Server for the full list.