Contact cache

Track all identified/contacted people across strategies.

How to use it

  1. Hit Copy the whole skill.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/lead-generation/capabilities/contact-cache#main ~/.claude/skills/contact-cache

For one project only, change the path to .claude/skills/contact-cache.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text49 lines
contact-cache/SKILL.md49 lines2.1 KBpushed 96d agoRawView on GitHub

Contact Cache

Track all identified/contacted people across strategies. CSV-backed contact database with dedup by LinkedIn URL or email. Prevents duplicate outreach when running strategies on a recurring cadence.

Usage

# Check if contacts are already cached
python3 skills/contact-cache/scripts/cache.py check --linkedin-urls "https://linkedin.com/in/person1,https://linkedin.com/in/person2"
python3 skills/contact-cache/scripts/cache.py check --emails "[email protected],[email protected]"

# Add a single contact
python3 skills/contact-cache/scripts/cache.py add --name "John Smith" --linkedin-url "https://linkedin.com/in/johnsmith" --email "[email protected]" --company "Acme Corp" --title "VP Finance" --strategy "2A-hiring-signal"

# Bulk import from CSV
python3 skills/contact-cache/scripts/cache.py add --csv /path/to/leads.csv --strategy "2A-hiring-signal"

# Update a contact's status
python3 skills/contact-cache/scripts/cache.py update --linkedin-url "https://linkedin.com/in/johnsmith" --status contacted --notes "Sent intro email 2026-02-24"

# Export the full cache
python3 skills/contact-cache/scripts/cache.py export --format csv
python3 skills/contact-cache/scripts/cache.py export --format json
python3 skills/contact-cache/scripts/cache.py export --status contacted
python3 skills/contact-cache/scripts/cache.py export --strategy "2A-hiring-signal"

# Print summary statistics
python3 skills/contact-cache/scripts/cache.py stats

Data

Contacts are stored in skills/contact-cache/data/contacts.csv. The file is auto-created on first use.

Dedup is by LinkedIn URL (preferred) or email. Both are normalized and hashed (SHA256, first 16 chars) to produce a stable contact_id.

Valid Statuses

new, qualified, contacted, replied, meeting_booked, converted, not_interested

1---
2name: contact-cache
3description: >
4 Track all identified/contacted people across strategies. CSV-backed contact
5 database with dedup by LinkedIn URL or email. Prevents duplicate outreach
6 when running strategies on a recurring cadence.
7tags: [lead-generation]
8---
9 
10# Contact Cache
11 
12Track all identified/contacted people across strategies. CSV-backed contact database with dedup by LinkedIn URL or email. Prevents duplicate outreach when running strategies on a recurring cadence.
13 
14## Usage
15 
16```bash
17# Check if contacts are already cached
18python3 skills/contact-cache/scripts/cache.py check --linkedin-urls "https://linkedin.com/in/person1,https://linkedin.com/in/person2"
19python3 skills/contact-cache/scripts/cache.py check --emails "[email protected],[email protected]"
20 
21# Add a single contact
22python3 skills/contact-cache/scripts/cache.py add --name "John Smith" --linkedin-url "https://linkedin.com/in/johnsmith" --email "[email protected]" --company "Acme Corp" --title "VP Finance" --strategy "2A-hiring-signal"
23 
24# Bulk import from CSV
25python3 skills/contact-cache/scripts/cache.py add --csv /path/to/leads.csv --strategy "2A-hiring-signal"
26 
27# Update a contact's status
28python3 skills/contact-cache/scripts/cache.py update --linkedin-url "https://linkedin.com/in/johnsmith" --status contacted --notes "Sent intro email 2026-02-24"
29 
30# Export the full cache
31python3 skills/contact-cache/scripts/cache.py export --format csv
32python3 skills/contact-cache/scripts/cache.py export --format json
33python3 skills/contact-cache/scripts/cache.py export --status contacted
34python3 skills/contact-cache/scripts/cache.py export --strategy "2A-hiring-signal"
35 
36# Print summary statistics
37python3 skills/contact-cache/scripts/cache.py stats
38```
39 
40## Data
41 
42Contacts are stored in `skills/contact-cache/data/contacts.csv`. The file is auto-created on first use.
43 
44Dedup is by LinkedIn URL (preferred) or email. Both are normalized and hashed (SHA256, first 16 chars) to produce a stable `contact_id`.
45 
46## Valid Statuses
47 
48`new`, `qualified`, `contacted`, `replied`, `meeting_booked`, `converted`, `not_interested`
49 

Discussion

Alternatives

Also in Company & contact data