Contact Discovery
Use this skill when you need to find public contact details for a company or a specific person at that company.
Why it helps:
- finds public emails when they are actually exposed on the public web,
- finds contact paths when no direct email is visible,
- surfaces company email-format clues without guessing,
- keeps the agent from inventing private contact data.
Best for:
- pre-outreach contact discovery,
- finding public press/support/team contact pages,
- checking whether a person has a public email trail,
- finding company email-format clues for later human review.
Need a key?
- Get free search access and your API key at: https://prismfy.io
Setup
- Install the skill:
openclaw skills install contact-discovery
- Add your Prismfy API key:
export PRISMFY_API_KEY="ss_live_your_key_here"
To keep it after restart:
echo 'export PRISMFY_API_KEY="ss_live_your_key_here"' >> ~/.bashrc
source ~/.bashrc
Preflight:
PRISMFY_API_KEYis setcurlandjqare installed
Advanced setup:
- if quota lives on a different endpoint than search, set
PRISMFY_API_ROOTorPRISMFY_ME_URL
- Verify API access:
cd ~/.openclaw/workspace/skills/contact-discovery
bash contact-find.sh --quota
- Quick smoke test:
cd ~/.openclaw/workspace/skills/contact-discovery
bash contact-find.sh --company "Vercel" --query-family company
- Export a JSON report:
cd ~/.openclaw/workspace/skills/contact-discovery
bash contact-find.sh --person "Guillermo Rauch" --company "Vercel" --query-family all --out contact_discovery_report.json
Optional automation:
# Run from this skill directory:
# ~/.openclaw/workspace/skills/contact-discovery
cp -r hooks/contact-discovery ~/.openclaw/hooks/
find ~/.openclaw/hooks/contact-discovery -maxdepth 1 -type f | sort
openclaw hooks enable contact-discovery
openclaw hooks list
When to Use
Use this skill when:
- a user asks for a public email or public contact method,
- a user wants a contact path for a person or company,
- the next step is outreach and contact discovery is the blocker,
- a lead already exists and the missing piece is how to reach them.
When NOT to Use
Avoid using this skill when:
- the task is lead qualification rather than contact discovery,
- the user wants private or guessed contact data,
- the task only needs company/person verification,
- there is no person, company, or domain anchor at all.
Inputs
--company(optional)--domain(optional)--person(optional)--role(optional)--query-family(optional:identity|direct|company|pattern|all)- at least one of
--company,--domain, or--personis required
Family notes:
- person-only mode is strongest with
direct,identity, orall - if
companyorpatternis used with person-only input, the helper falls back to weaker public-web clues and should be treated as lower confidence
Outputs
Primary chat output:
- short verdict in plain language,
public_email_found | contact_path_found | company_contact_found | company_email_pattern_found | not_found | ambiguous,- best public contact clue,
- one concrete source URL.
Optional artifact output:
- JSON when the user asks for a file, export, or machine-readable report.
- Use
--out <file>to write the report to disk.
If JSON artifact is produced, required fields are:
timestamp_utcskill_versionentity_typeidentity_statuscontact_verdictsummarypublic_emails[]contact_paths[]email_pattern_clues[]source_urls[]run_failure_code
Execution
- Resolve identity first:
- canonical company domain if possible,
- person + company match if person-focused.
- Run Prismfy query families in this order:
identitydirectcompanypattern
- Return the strongest safe verdict:
public_email_foundcontact_path_foundcompany_contact_foundcompany_email_pattern_foundnot_foundambiguous
- Reply in chat first.
- Emit JSON only when requested or when
--outis used.
Command examples:
# Check quota / connectivity
bash contact-find.sh --quota
# Company contact discovery
bash contact-find.sh --company "Vercel" --query-family company
# Person + company contact discovery
bash contact-find.sh --person "Guillermo Rauch" --company "Vercel" --query-family all
# Export a report
bash contact-find.sh --person "Guillermo Rauch" --company "Vercel" --query-family all --out contact_discovery_report.json
Execution contract:
- preferred mode: balanced
- source cap: up to 5 URLs per query
- default chat mode: concise, human-readable, no raw JSON dump
- only treat an email as found if it appears explicitly in public evidence
- do not infer a private email from a pattern clue alone
- strongest verdicts come from
--query-family all - human review is still recommended before high-value outreach
Query families
identity
- official site
- contact/about/team pages
- person + company exact match
direct
- person + company + email/contact
- person + company + author/press
- person + domain clue
company
- company or domain contact pages
- press/support/help/team pages
- general company contact email traces
- in person-only mode, falls back to public contact/profile page discovery
pattern
- company email format pages or mentions
- domain email format clues
- pattern-only evidence for later review
- in person-only mode, only yields weak clue discovery and should stay conservative
Failure Handling
Use these failure codes:
PRISMFY_UNAVAILABLEPRISMFY_INVALID_RESPONSEIDENTITY_UNCLEARNO_PUBLIC_EVIDENCERATE_LIMIT_OR_TIMEOUT
Handling guidance:
- If Prismfy is unavailable, say so explicitly.
- If identity is unclear, mark
ambiguous. - If only a pattern clue exists, say that clearly and do not present it as a real email.
- Never invent or guess a personal email.
Response Style
- In normal chat, do not lead with JSON.
- Lead with the verdict.
- Then show the best public email or best contact path.
- Keep it compact.
- Mention a report filename only if
--outcreated one.
Safety
- Do not expose API keys.
- Do not guess personal emails from patterns.
- Do not claim a contact method exists unless backed by public evidence.
- Do not present likely deliverability as confirmed deliverability.
Minimal Example
Input:
--person:Guillermo Rauch--company:Vercel
Default chat output:
Contact path found.1. Identity: canonical domain = vercel.com2. Evidence: emails=0, direct_hits=2, company_hits=3, pattern_hits=1, official_hits=23. Path: https://vercel.com/contact4. Source: https://vercel.com/contact