Skip to content

feat: add outreach response tracking and goal follow-up system#678

Merged
bokelley merged 3 commits into
mainfrom
bokelley/outreach-response-tracking
Jan 8, 2026
Merged

feat: add outreach response tracking and goal follow-up system#678
bokelley merged 3 commits into
mainfrom
bokelley/outreach-response-tracking

Conversation

@bokelley

@bokelley bokelley commented Jan 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Track DM responses to proactive outreach messages
  • Track link click conversions when users sign up via outreach links
  • Add goal follow-up job that sends gentle reminders for unanswered outreach (runs every 4 hours during business hours)
  • Add goal outcome reconciliation (check if goals were achieved through other means like joining a working group)
  • Add admin API endpoints for follow-up preview, reconciliation preview, and user timeline view
  • Add follow_up_template, max_attempts, days_between_attempts to outreach_goals schema

Key Changes

Response Tracking

  • bolt-app.ts: Detect and record DM/Assistant responses to outreach
  • http.ts: Track conversions when users click login links from outreach

Goal Follow-Up Job

  • New goal-follow-up.ts job that:
    • Sends follow-up messages for unanswered outreach (after configurable days)
    • Reconciles goal outcomes (e.g., if we invited someone to a WG and they later joined)
    • Runs every 4 hours during business hours (9am-6pm ET, weekdays)

Admin API

  • GET /api/admin/outreach/follow-ups/preview - Preview pending follow-ups
  • GET /api/admin/outreach/reconciliation/preview - Preview reconcilable goals
  • POST /api/admin/outreach/follow-ups/run - Manually trigger job
  • GET /api/admin/outreach/timeline/:slackUserId - View full outreach timeline for a user

Test plan

  • Typecheck passes
  • All existing tests pass
  • Migration applies successfully (tested locally)
  • Goal follow-up job starts and logs correctly
  • Admin outreach page loads
  • Manual testing of response tracking with real Slack DMs (post-deploy)
  • Manual testing of follow-up messages (post-deploy)

🤖 Generated with Claude Code

bokelley and others added 3 commits January 8, 2026 07:20
- Track DM responses to proactive outreach messages
- Track link click conversions when users sign up via outreach links
- Add goal follow-up job that sends gentle reminders for unanswered outreach
- Add goal outcome reconciliation (check if goals were achieved through other means)
- Add admin API endpoints for follow-up preview, reconciliation preview, and user timeline view
- Add follow_up_template, max_attempts, days_between_attempts to outreach_goals schema

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Migration 148 was added to main (148_slack_only_engagement_scores.sql)
while this branch was in progress.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Migration 149 was added to main (149_simplify_engagement_scoring.sql)
while this branch was in progress.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@bokelley bokelley merged commit 029eaf4 into main Jan 8, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant