Innovation Engine — communication

Linkedin Draft Cross-Pollinator

April 30, 2026

When `commit-to-linkedin-draft` fires for a new commit, also scan the last 7 days of Fathom meeting summaries and Claude session titles for thematic overlap, then append a 'why this matters' paragraph drawn from the actual conversation context. Turns shipped commits into LinkedIn posts that reference the real customer pain or insight that drove the work — not just the technical change.

linkedin-enginefathom-mcpclaude-session-trackercommit-to-linkedin-draft

Create `~/bin/linkedin-draft-enrich` (~80 lines Python). On invocation: (1) read the latest draft from `~/linkedin-engine/drafts/`, (2) extract keywords from commit subject via simple TF-IDF against a stopword list, (3) query Fathom MCP `list_meetings` for last 7 days and grep summaries for keyword overlap, (4) grep `~/.claude/projects/*/` session titles for same keywords, (5) if ≥1 match, call `claude -p` (batched, single call) with the draft + matched snippets asking for one paragraph connecting commit-to-conversation, (6) append to draft with `---\nContext:` separator. Wire as post-hook in `commit-to-linkedin-draft`.

Built & Ready
## Summary

**Created `~/bin/linkedin-draft-enrich`** (96 lines, executable Python).

For each LinkedIn draft (today's, or paths passed as args):
1. Loads draft JSON, skips if already enriched
2. Extracts top keywords from commit messages via word-frequency against a stopword list
3. Greps `~/fathom-meetings/*.md` (last 7 days by mtime) for keyword overlap, captures top hit + 400-char snippet
4. Greps first user message of `~/.claude/projects/*/*.jsonl` sessions (last 7 days) for keyword overlap
5. If ≥1 match, makes a single batched `claude -p --model haiku` call asking for a 2–3 sentence "Why this matters" paragraph that connects the commit to the actual context
6. Writes back `context_paragraph` + `context_sources[]` to the JSON, and appends `\n---\nContext:\n…` to a sibling `.md` file

**Wired into `~/bin/commit-to-linkedin-draft`** as a post-hook (5-line addition): runs `linkedin-draft-enrich` after drafts are written; failure is non-fatal.

**Verified:** keyword extraction, recent-file scanning (1156 recent sessions found), grep snippet matching against real meeting summaries.

**Not wired:** no cron — runs only when `commit-to-linkedin-draft` runs (which is itself the trigger, per the title). The `claude -p` call has the known ~100s session-startup tax noted in CLAUDE.md; timeout set to 300s.
Active Projects
innovation-engine, russ-telegram, linkedin-engine, .claude, bys-website
Category
communication