Skip to content

Affinity filing

A mahogany desk, an Affinity ledger, and a one-way glass toward faint SharePoint folders.

Affinity is the fund’s CRM source of truth. Native SharePoint sync is Affinity → SharePoint only, and it copies files uploaded to a company record — not “found in your email”, not Granola, not LinkedIn.

tq is the only writer. This job runs on the MBP. It is work-lane: the Affinity key lives in work-cli / tq secrets, never in haus SOPS or Power Automate.

Date: 2026-08-15 · Status: Active · Host: MBP · Repo: ~/Projects/work-cli

JobWhenWrites
vc.work.file-mailevery 2 hours (Aqua)file-mail --all then file-notes --all
vc.work.weekly-briefFriday 16:07reminders --execute, then a read-only digest

Live paths are symlinks into the repo. Wrappers source launchd/tq-repo.sh, which puts $REPO/src on PYTHONPATH and refuses to run if import triptyq is another git worktree. The shared .venv is not the SoT — see The venv that ran main.

Terminal window
launchd/test-file-mail # named smoke: pin + --all + file-notes exist
tail -f ~/.openclaw/logs/triptyq-file-mail.log
launchctl print gui/$(id -u)/vc.work.file-mail

tq affinity file-mail — attachments. Permanent (v1 entity-files has no delete). Idempotent by filename. Refuses images, fund-level packs, payroll/HR.

tq affinity file-notes — notes. Deletable. Material subject required. Calendar accepts, intros and HR refused. Four partners forwarding the same update is one note. Granola meetings whose title names the portco are filed once per meeting id.

LinkedIn stays the Chrome/Safari extension. No unattended scrape.

tq affinity writeback --execute is a human button after tearsheet curation. Not on a timer.

portcosync writes Jocasta DuckDB only. It is not the CRM.

LetterMeaning here
Everything E2E Testedlaunchd/test-file-mail green; local CI (ruff, mypy, 913 tests); live ~/.triptyq/bin/file-mail exit 0
in Sanctum-docsThis page + sidebar + the 2026-08-15 field note
Mergedwork-cli 9842790 on origin/main; this chapter on sanctum-docs main
And DeployedPlist + wrapper are repo symlinks; consumer verified through ~/.triptyq/bin/file-mail

Operator detail for partners lives in the work repo: work-cli/docs/02_workflows/09_affinity-filing.md.