Skip to content
Back to skills

Discover Contacts

ASecurity

Research and enrich professional contacts and marketing prospects. Uses /dogpile to find current company, role, recent news, and company intelligence. Ingests CSV contact lists and outputs enriched profiles to /memory.

  • 6 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 11, 2026
content-marketinggoshellbashgitapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned September 11, 2026

npx -y skills add grahama1970/agent-skills --skill discover-contacts --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Discover Contacts?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Discover Contacts
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/grahama1970-discover-contacts/badge)](https://www.skillsdirectory.com/skills/grahama1970-discover-contacts)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: discover-contacts
description: >
  Research and enrich professional contacts and marketing prospects.
  Uses /dogpile to find current company, role, recent news, and company intelligence.
  Ingests CSV contact lists and outputs enriched profiles to /memory.
allowed-tools: ["Bash", "Read", "Write", "Task"]
triggers:
  - research contacts
  - enrich contacts
  - discover contacts
  - look up contacts
  - research prospects
  - find out about this person
  - who is this contact
  - company research
  - prospect research
  - enrich this CSV
  - research this company
  - what does their company do
  - marketing research
metadata:
  short-description: "Contact and prospect research via /dogpile enrichment"
  author: "Graham"
  version: "0.1.0"

provides:
  - discover-contacts
composes:
  - task-monitor
  - agentic-evals
disciplines:
  - research-retrieval
domains:
  - marketing
---

# discover-contacts

Research and enrich professional contacts and marketing prospects. Takes a contact
list (CSV, YAML, or individual names) and uses `/dogpile` to build comprehensive
profiles with current company info, role, recent news, and company intelligence.

## Why This Exists

Contact lists go stale fast. People change jobs, companies get acquired, divisions
restructure. A CSV from a DARPA conference 6 months ago is already outdated. This
skill uses deep multi-source research to answer: **"Who is this person NOW, and
what is their company doing?"**

## Architecture

```
┌──────────────────────────────────────────────────────┐
│              discover-contacts                        │
│  - Ingest contact list (CSV/YAML/name)               │
│  - Batch or single-contact research                  │
│  - Rate-limited concurrent /dogpile calls            │
│  - Enrichment pipeline                               │
└──────────────────────────────────────────────────────┘
         │                              │
    ┌────┴──────┐                 ┌─────┴─────────┐
    │ Person    │                 │ Company        │
    │ Research  │                 │ Research       │
    ├───────────┤                 ├────────────────┤
    │ - LinkedIn│                 │ - Website      │
    │ - Papers  │                 │ - News         │
    │ - GitHub  │                 │ - Funding      │
    │ - News    │                 │ - Contracts    │
    │ - Patents │                 │ - Key hires    │
    └───────────┘                 └────────────────┘
         │                              │
         └──────────┬───────────────────┘
                    │
    ┌───────────────┴────────────────────┐
    │         Enriched Profile           │
    │  - Current role + company          │
    │  - Company summary + sector        │
    │  - Recent news (last 6 months)     │
    │  - Publications / patents          │
    │  - Social links                    │
    │  - Confidence + staleness score    │
    │  → Stored to /memory               │
    │  → Written to enriched CSV/YAML    │
    └────────────────────────────────────┘
```

## Commands

```bash
# Research a single contact
./run.sh research "John Rushby" --org "SRI International"

# Research a company
./run.sh company "Galois, Inc."

# Enrich a CSV contact list (batch)
./run.sh enrich /mnt/storage12tb/media/personas/references/darpa_arcos_contacts.csv

# Enrich with concurrency limit
./run.sh enrich contacts.csv --concurrency 3 --delay 5

# Research a specific contact from the CSV
./run.sh research --csv contacts.csv --row 5

# Check enrichment freshness
./run.sh freshness contacts.csv

# Export enriched profiles
./run.sh export contacts.csv --format yaml --output enriched_contacts.yaml
```

## Input Formats

### CSV (primary)
```csv
first_name,last_name,organization,email
John,Rushby,SRI International,rushby@csl.sri.com
```

### YAML
```yaml
contacts:
  - name: John Rushby
    org: SRI International
    email: rushby@csl.sri.com
```

### Single contact (CLI)
```bash
./run.sh research "John Rushby" --org "SRI International"
```

## Enrichment Pipeline

For each contact, the skill runs a structured research pipeline:

### 1. Person Research
```
/dogpile "{first_name} {last_name} {organization} current role"
```
Extracts:
- **Current role and company** (may have changed from CSV)
- **LinkedIn profile** (via Brave search)
- **Recent publications** (ArXiv, Google Scholar)
- **GitHub activity** (if technical)
- **Recent news mentions**
- **Conference talks** (YouTube)

### 2. Company Research
```
/dogpile "{organization} recent news funding contracts"
```
Extracts:
- **Company summary** — what they do, sector, size
- **Recent news** — last 6 months of significant events
- **Government contracts** — via /ops-sam-gov if relevant
- **DARPA programs** — via /ops-darpa if relevant
- **Key hires/departures** — leadership changes
- **Funding/acquisitions** — financial events

### 3. Profile Assembly
Merges person + company research into enriched profile:

```yaml
contact:
  name: John Rushby
  current_role: Senior Computer Scientist
  current_org: SRI International
  previous_org: null  # or previous if changed
  email: rushby@csl.sri.com
  email_status: likely_valid  # or stale, bounced
  linkedin: null
  github: null
  research:
    publications: 3  # recent papers found
    patents: 0
    talks: 1
  company:
    name: SRI International
    sector: Defense/Research
    size: 2000+
    recent_news:
      - "SRI awarded $X contract for..."
    darpa_programs:
      - ARCOS
      - PROOFS
    sam_gov_active: true
  enriched_at: "2026-02-12T12:00:00Z"
  confidence: 0.85  # how confident in current info
  staleness_days: 0
```

## Rate Limiting

Batch enrichment is rate-limited to avoid burning through API quotas:

| Setting | Default | Description |
|---------|---------|-------------|
| `--concurrency` | 2 | Parallel /dogpile calls |
| `--delay` | 10 | Seconds between batches |
| `--budget` | 20 | Max /dogpile calls per run |
| `--skip-enriched` | true | Skip contacts enriched within 30 days |

## Storage

```
/mnt/storage12tb/media/personas/references/
├── darpa_arcos_contacts.csv          # Original CSV
├── darpa_arcos_enriched.yaml         # Enriched profiles
├── company_profiles/
│   ├── sri_international.yaml
│   ├── galois_inc.yaml
│   └── ...
└── enrichment_log.json               # Audit trail
```

## Memory + Taxonomy Integration

The skill integrates with the shared memory and taxonomy systems via
`memory_integration.py` for cross-session contact intelligence:

- **Pre-hook (`recall_prior_research`)**: Before researching a contact, recalls
  prior enrichment data for that person. Avoids redundant /dogpile calls and
  surfaces previously gathered intelligence.
- **Post-hook (`learn_contact`)**: After enrichment, stores the contact profile
  (name, company, role, sources, enrichment data) to memory with taxonomy
  bridge tags for cross-skill recall.
- **Bridge keywords**: Precision, Resilience, Fragility, Corruption, Loyalty, Stealth
  (tuned to contact research domain).
- **Tags**: `["discover_contacts", person_name] + bridges`

Gracefully degrades if `common.memory_client` or `taxonomy/taxonomy.py` are unavailable.

Enriched profiles are also stored to `/memory` for cross-skill access:

```bash
# After enrichment, profiles available via:
/memory recall "John Rushby SRI International"
/memory recall "DARPA ARCOS contacts"
/memory recall "defense contractors formal verification"
```

## File Structure

```
discover-contacts/
  SKILL.md                   # This file
  run.sh                     # Shell entry point
  sanity.sh                  # Sanity checks
  config.py                  # Paths, constants, skill references
  memory_integration.py      # Memory + Taxonomy hooks
```

## Leveraged Skills

| Skill | Purpose |
|-------|---------|
| `/dogpile` | Multi-source deep research per contact |
| `/memory` | Store enriched profiles for recall |
| `/ops-sam-gov` | Government contract lookup |
| `/ops-darpa` | DARPA program participation |
| `/brave-search` | Free web search for current info |
| `/perplexity` | Deep research for high-value contacts |

## Persona Generation

Enriched contacts can seed `/create-persona` for fictional personas:

```bash
# Research a contact, then create an inspired-by persona
./run.sh research "Natasha Neogi" --org NASA
/create-persona --inspired-by /mnt/storage12tb/media/personas/references/company_profiles/nasa.yaml
```

This bridges the gap between real-world contacts and the persona system.

## Privacy & Ethics

- Contact data is stored locally only (12TB drive)
- No data is sent to external services beyond search queries
- Research uses only publicly available information
- Email validation does NOT send emails
- Enrichment log tracks all research for audit

Files in this skill

  • SKILL.md9.3 KB
  • config.py1.3 KB
  • fixtures/agentic_eval.json495 B
  • memory_integration.py7.3 KB
  • pyproject.toml207 B
  • run.sh2 KB
  • sanity.sh1.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.