Better context for Addie: Skip welcome goals + passive note extraction#628
Merged
Conversation
The outbound planner was suggesting the "Welcome - What Brings You" goal to users who are clearly already engaged with the community (e.g., committee leaders, working group members). These users don't need to be asked what brings them here. Added eligibility check to skip intro goals for users who show any of these engagement indicators: - Committee leader status - Working group membership - Council membership - 10+ Slack messages in the last 30 days 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Two improvements to how Addie understands members: 1. Enriched LLM context in outbound planner: - Role in Community now prominently shows Committee Leader, Council Member, WG Member - Notes from channel conversations displayed separately for context - Removed duplicate committee leader from capabilities section 2. Passive note extraction from public channels: - New 'note' insight type for storing interesting tidbits as text - Watches all public channels Addie is in - Rate-limited queue (5s between LLM calls) to avoid API overload - Only extracts notable statements (interests, what they're building, opinions) - Stores as observations with medium confidence Example flow: Christina posts "I'm really interested in doing more with user data" → Extracted note: "Mentioned being interested in doing more with user data (in #wg-creative)" → Shows in planner context: "Notes from Channel Conversations: - Mentioned being interested..." 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Rename 141_note_insight_type.sql to 142_note_insight_type.sql since 141_fix_feed_email_slugs.sql already exists on main. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Rename note_insight_type migration to 143 since 142_member_search_analytics.sql was added to main. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
bokelley
added a commit
that referenced
this pull request
Jan 6, 2026
#628) * Skip welcome goals for highly engaged users The outbound planner was suggesting the "Welcome - What Brings You" goal to users who are clearly already engaged with the community (e.g., committee leaders, working group members). These users don't need to be asked what brings them here. Added eligibility check to skip intro goals for users who show any of these engagement indicators: - Committee leader status - Working group membership - Council membership - 10+ Slack messages in the last 30 days 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Add passive note extraction from public channels Two improvements to how Addie understands members: 1. Enriched LLM context in outbound planner: - Role in Community now prominently shows Committee Leader, Council Member, WG Member - Notes from channel conversations displayed separately for context - Removed duplicate committee leader from capabilities section 2. Passive note extraction from public channels: - New 'note' insight type for storing interesting tidbits as text - Watches all public channels Addie is in - Rate-limited queue (5s between LLM calls) to avoid API overload - Only extracts notable statements (interests, what they're building, opinions) - Stores as observations with medium confidence Example flow: Christina posts "I'm really interested in doing more with user data" → Extracted note: "Mentioned being interested in doing more with user data (in #wg-creative)" → Shows in planner context: "Notes from Channel Conversations: - Mentioned being interested..." 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Fix duplicate migration version number Rename 141_note_insight_type.sql to 142_note_insight_type.sql since 141_fix_feed_email_slugs.sql already exists on main. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Fix migration version conflict (142 -> 143) Rename note_insight_type migration to 143 since 142_member_search_analytics.sql was added to main. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two improvements to help Addie use existing context better:
Skip welcome goals for engaged users - Don't ask "what brings you here?" to committee leaders, working group members, or active Slack users who are clearly already part of the community.
Passive note extraction from channels - Watch public channels Addie is in and extract interesting tidbits when people reveal something about themselves (interests, what they're building, opinions). Stored as text notes, not structured insights.
Why
LLMs already know context from company names and roles. If we tell Claude "Christina is CMO of Scope3", it already knows Scope3 is a sustainability company. We don't need to infer and store "interested in sustainability" - we just need to pass rich context and let the LLM reason naturally.
Changes
Skip welcome goals
outbound-planner.tsto skip intro goals for users with:Passive note extraction
passive-note-extractor.tsservice with rate-limited queue (5s between LLM calls)Files changed
server/src/addie/services/outbound-planner.ts- Eligibility check + richer promptserver/src/addie/services/passive-note-extractor.ts- New serviceserver/src/slack/events.ts- Hook for passive extractionserver/src/db/migrations/141_note_insight_type.sql- New insight typeTest plan
🤖 Generated with Claude Code