Always-on contact freshness monitoring service. Periodically re-researches stale contacts via /dogpile, detects job changes and company news, and alerts via Discord when significant changes are found.
Always-on contact freshness monitoring service. Runs on a schedule (via
/scheduler) to keep contact profiles current, detect significant changes
(job moves, company news, acquisitions), and alert via Discord.
Contact enrichment is a point-in-time snapshot. People change jobs. Companies get acquired. Programs end. This service ensures your contact intelligence stays fresh without manual re-research.
This skill is always-on. It:
Anti-pattern: Reporting status and waiting for the human to ask "what next?" is UNACCEPTABLE. The agent must proactively fix issues and continue the monitoring loop.
┌──────────────────────────────────────────────────────┐
│ monitor-contacts │
│ - Scheduled via /scheduler (nightly or weekly) │
│ - Staleness-based priority queue │
│ - Change detection engine │
│ - Discord alerting │
└──────────────────────────────────────────────────────┘
│ │ │
┌────┴─────┐ ┌────┴─────┐ ┌────┴──────┐
│ Staleness │ │ Change │ │ Alert │
│ Scanner │ │ Detector │ │ Engine │
├──────────┤ ├──────────┤ ├───────────┤
│ Age check │ │ Diff old │ │ Discord │
│ Priority │ │ vs new │ │ webhook │
│ queue │ │ profile │ │ Summary │
└──────────┘ └──────────┘ └───────────┘
# Start monitoring (foreground)
./run.sh monitor
# Start as background service
./run.sh start
# Stop background service
./run.sh stop
# Check service status
./run.sh status
# Run one monitoring cycle manually
./run.sh cycle
# Show contact freshness report
./run.sh report
# Show recent changes
./run.sh changes --since 7d
# Configure monitoring
./run.sh config --interval weekly --budget 10 --alert-channel contacts
Each cycle:
1. SCAN — Find contacts with staleness > threshold
├── Default threshold: 30 days
├── High-priority contacts: 14 days
└── Low-priority contacts: 90 days
2. PRIORITIZE — Sort by staleness + importance
├── Contacts with upcoming meetings/events → top
├── Contacts in active deals/programs → high
└── Cold contacts → low
3. RESEARCH — Re-enrich top N stale contacts
├── Uses /discover-contacts research pipeline
├── Budget-limited (default: 10 contacts per cycle)
└── Rate-limited to avoid API exhaustion
4. DIFF — Compare new profile vs stored profile
├── Job title changed?
├── Company changed?
├── New publications?
├── Company news (funding, acquisition)?
└── Email likely stale?
5. ALERT — Notify on significant changes
├── Discord embed with change summary
├── Color-coded: green (positive), yellow (neutral), red (attention)
└── Weekly digest option
The change detector tracks these signals:
| Signal | Severity | Example |
|---|---|---|
| Job change | High | "John Rushby moved from SRI to DARPA" |
| Company acquisition | High | "Galois acquired by [company]" |
| New DARPA program | Medium | "Contact's company awarded new DARPA contract" |
| New publication | Low | "3 new papers on ArXiv" |
| Email bounce | Medium | "Email domain changed" |
| Company funding | Medium | "Series B announced" |
| Company layoffs | High | "Major restructuring reported" |
| Conference appearance | Low | "Speaking at [event]" |
Contact Change Detected
━━━━━━━━━━━━━━━━━━━━━━
John Rushby
Was: Senior Computer Scientist @ SRI International
Now: Program Manager @ DARPA I2O
Change Type: Job Change (High Priority)
Detected: 2026-02-12
Source: LinkedIn via Brave Search
Action: Update contact record and reach out?
Contact Monitor — Weekly Digest
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Contacts Checked: 15/60
Changes Found: 3
Job Changes (1):
• John Rushby: SRI → DARPA
Company News (1):
• Galois, Inc.: Awarded DARPA PROOFS Phase 2
New Publications (1):
• Natasha Neogi: 2 new papers on ArXiv
Stale Contacts (5):
• 5 contacts not refreshed in 60+ days
Next cycle: 2026-02-19
Budget used: 8/10 /dogpile calls
Contacts can be tagged with priority tiers:
priority_tiers:
critical: # Check every 14 days
- contacts with active deals
- contacts in current programs
standard: # Check every 30 days (default)
- general professional network
cold: # Check every 90 days
- historical contacts
- inactive relationships
# monitor-contacts config