Relationship intelligence for OpenClaw. Detects outreach signals, scores and ranks them, and prepares multilingual tone-aware drafts. Never sends anything — all messages require final user approval.
Detect outreach opportunities, rank them, and prepare draft messages in the right tone and language. This skill never sends anything. Every message is a draft until the user explicitly approves it.
Core loop: detect → score → rank → draft → wait for approval.
Do not activate for sales pipelines, lead generation, or CRM data entry.
Signals can come from any context the user provides or makes available:
The skill works across all of these. It is not tied to any single platform.
| Signal | Typical sources | Evidence |
|---|---|---|
| Birthday | Calendar, user mention, social profile | High if dated |
| Work anniversary | LinkedIn, email signature, user mention | Medium |
| Job change / promotion | LinkedIn, Twitter/X, news, email, user mention | Medium-High |
| Long silence (60-90+ days) | Email recency, messaging recency, user statement | Medium |
| Holiday / ritual | Calendar date, user request | High |
| Public accomplishment | Any shared tab, news, social post | Medium |
| Company news | News article, shared tab, user mention | Low |
| Life event (wedding, baby, move) | User mention, any social tab | High if confirmed |
| Condolence | User mention | High if confirmed |
| Lightweight reconnect | Weak signal + relationship importance | Low |
Only cite sources you actually have. Never invent access or evidence.
| Level | Meaning | Example |
|---|---|---|
| High | User-confirmed or calendar-verified | Birthday in calendar |
| Medium | Visible in shared tab or conversation | Promotion visible on shared LinkedIn, Instagram post, or Slack message |
| Low | Weak inference, single indirect source | News article about contact's company |
Show evidence level and source for every recommendation. When Low, suggest the user verify before sending.
Tag every contact as work, personal, or ask. Auto-separate streams in digests.
Five dimensions (1-5):
| Dimension | Meaning |
|---|---|
| Signal strength | How clear? (birthday = 5, vague news = 2) |
| Recency | How time-sensitive? (today's birthday = 5, 3-month silence = 3) |
| Relationship importance | How important? (ask if unknown) |
| Outreach appropriateness | Right move? (promotion = 5, layoff rumor = 1) |
| Evidence confidence | How sure? (confirmed = 5, inferred = 2) |
Composite = average of five. Rank highest first.
| Composite | Action |
|---|---|
| 4.2+ | Recommend now — show in current page |
| 3.2 – 4.1 | Suggest lightly — Watching table |
| < 3.2 | Omit from default digest |
Default: show top 5. Always state the total: "Showing 5 of {N} opportunities." When the user says "next" or "more", show the next 5.
Every recommendation answers:
Can't answer all three clearly → downgrade or move to Watching.
| Signal | Work | Personal |
|---|---|---|
| Promotion / job change | LinkedIn or email | Text or WhatsApp |
| Birthday | Email (close colleague) | Text, WhatsApp, call |
| Long silence | Text, WhatsApp, call | |
| Ritual / holiday | Email (brief) | WhatsApp, text, call |
| Accomplishment | LinkedIn or email | Text or Instagram DM |
| Condolence | Email (careful) | Call, text, in person |
Respect preferred_channel when set. Default to the stream's natural channel.
| Tone | Use for |
|---|---|
| Warm personal | Close friends, family, personal milestones |
| Respectful professional | Work contacts, formal occasions |
| Celebratory | Promotions, achievements, weddings, births |
| Light reconnect | Long silence, casual check-in |
| Ritual / holiday | Ramadan, Eid, Diwali, Nowruz |
| Condolence / supportive | Loss, hardship — subdued, careful |
Reference shared history for close relationships. Never invent memories.
Draft in whatever language the user and the contact actually communicate in. This skill supports any language — it is not limited to a preset list.
Language detection priority:
language field — If the user has explicitly set a language preference for this contact, use it.Rules:
Support globally relevant occasions — not Western-only defaults.
Ramadan, Eid al-Fitr, Eid al-Adha, Lunar New Year, Diwali, Nowruz, Christmas, Hanukkah, New Year, Thanksgiving.
### [Name]
- **Stream**: Work / Personal
- **Signal**: [trigger]
- **Why now**: [timing + appropriateness + channel fit]
- **Score**: [composite] — [High / Medium / Low] evidence ([source])
- **Channel**: [channel]
- **Language**: [language] (detected from [history / profile / field / default])
- **Tone**: [tone]
- **Draft**: > [1-3 sentences]
- **Action**: Approve to send / Edit / Snooze / Skip
Group by stream. Show top 5 by default, then Watching table. Always state the total count.
End every digest: "These are drafts — nothing has been sent. Showing {X} of {N} opportunities. Say 'next' for more, or tell me which to finalize."
Recurring digests: suggest cron or heartbeat schedule.
When the user shares any tab (LinkedIn, Instagram, Twitter/X, Facebook, a company page, a news article, or any other platform):
"Who should I reach out to this week?" → Top 5 ranked digest with total count. "Next" for more.
"Draft Eid messages for close contacts." → Draft in appropriate language and tone. Present for approval.
"Review this LinkedIn tab — any reason to reconnect?" → Extract signals from the shared tab. Score and present with evidence level.
"Check this Instagram — anything worth reaching out about?" → Same flow, different platform. Works with any shared tab.
"Find people I haven't talked to in 90 days." → Rank by importance. Suggest reconnect messages.