my-people-api
$
npx mdskill add myapihq/myapi/my-people-apiQuery a signal-rich B2B contact database filtered by Goldfox confidence and company behaviors.
- Build high-precision outbound target lists with strong filtering controls.
- Depends on Goldfox crawl data and shares filter contract with my-company-api and my-audience-api.
- Filters by confidence tier, email type, seniority, and company behavioral signals like has_c_level.
- Returns people with embedded company data for direct use or saving via my-audience-api.
SKILL.md
.github/skills/my-people-apiView on GitHub ↗
---
name: my-people-api
version: 1.0.0
description: >
Contact database backed by the Goldfox crawl. Filter people by Goldfox confidence tier, seniority, email type, country, link confidence, plus rich behavioral company signals (has_c_level, has_careers_page, has_decision_maker, etc.). The targeting layer for outbound campaigns.
triggers: [people, contacts, leads, prospects, search, filter, goldfox, decision-makers, c-level, b2b targeting, corporate email]
checksum: sha256-pending
---
# MyPeopleAPI
A queryable contact database for B2B targeting, sourced from the **Goldfox** crawl. The data model is signal-rich: every row carries a Goldfox confidence tier, a per-link confidence score, an email type classification, and the embedded company's behavioral signals (has_c_level, has_careers_page, etc.). Filter on those signals to get high-precision target lists.
## Capabilities
<!-- llm:start -->
The database returns people with their embedded company. Use when:
- Building an outbound list with strong precision controls (e.g. only corporate-email c_levels in DE)
- Filtering for buying signals (companies with careers/investors/shop pages, decision-makers present)
- Combining with `my-audience-api` to save a filter snapshot for reuse across campaigns
Filter contract — shared with `my-company-api` and the `filter` field of `my-audience-api`. OR within an array; AND across fields. **Empty filter = all rows with default confidence=high (Goldfox's curated tier).**
```json
{
"confidence": ["high"],
"country": ["US", "DE"],
"country_consistent": true,
"seniority": ["c_level", "vp_director"],
"email_type": ["corporate"],
"tld_class": ["cctld"],
"has_c_level": true,
"has_decision_maker": true,
"has_careers_page": true,
"is_registered_entity": true,
"min_headcount": 5,
"min_source_count": 3,
"min_link_confidence": 0.8,
"keyword": "platform",
"limit": 100,
"offset": 0
}
```
Allowed values:
- **confidence**: `high` (default — 96.4% of dataset, no UGC) / `low` (UGC source — spot-check) / `very_low` (UGC + freemail mismatch — usually drop)
- **seniority**: `c_level`, `vp_director`, `manager`, `senior_ic`, `ic`
- **email_type**: `corporate`, `freemail`, `role_based`, `other_corporate`
- **tld_class**: `cctld`, `generic`, `vanity`, `low_trust`, `other`
- **country**: ISO 3166-1 alpha-2 (US, DE, GB, …) — consensus across TLD + address + phone
- **keyword**: case-insensitive substring on the row's domain (NOT name or title)
- **link_confidence**: 0–1 per person; 1.0 = email-domain match (definitive), 0.5 = strong, lower = weak
<!-- llm:end -->
## Commands
<!-- generated:start -->
| Command | What it does |
|---|---|
| `myapi people search [--confidence <csv>] [--country <csv>] [--seniority <csv>] [--email-type <csv>] [--tld-class <csv>] [--has-c-level] [--has-decision-maker] [--has-careers-page] [--has-investors-page] [--has-shop-page] [--is-registered-entity] [--country-consistent] [--keyword <text>] [--min-headcount N] [--min-source-count N] [--min-link-confidence 0..1] [--limit N] [--offset N]` | Filter people; returns id/name/email/domain/country/link_conf table |
| `myapi people get <person_id>` | Get a single person with embedded company |
<!-- generated:end -->
CSV-flag values use OR within (e.g. `--seniority c_level,vp_director` is `seniority IN (c_level, vp_director)`). Boolean flags are presence-only (`--has-c-level` enables it; omit to leave unfiltered).
## Examples
<!-- llm:start -->
```bash
# 1. Decision-makers in DE/FR/GB with corporate emails
myapi people search \
--seniority c_level,vp_director \
--country DE,FR,GB \
--email-type corporate \
--limit 20
# 2. High-precision filter: definitive link + registered entity + careers signal
myapi people search \
--min-link-confidence 0.9 \
--is-registered-entity \
--has-careers-page \
--country US
# 3. Single person with full company context
myapi people get p_MTdlc2llY2xlLmZy.0
```
### End-to-end recipe — outbound campaign target list
```bash
# Build the target audience (saved filter)
AID=$(myapi audience create "EU decision makers w/ careers signal" \
--source people \
--filter '{"seniority":["c_level","vp_director"],"country":["DE","FR","GB"],"email_type":["corporate"],"has_careers_page":true}' \
--json | jq -r .id)
# Pull members for inspection
myapi audience members $AID --limit 100 --json > targets.json
```
<!-- llm:end -->
## Notes
- The dataset is the Goldfox crawl — multi-million-row corporate contact data with provenance signals. Filter quality matters: defaults to `confidence=high` gives 96.4% of rows by count, but it's the curated tier; widening with `confidence=low` brings UGC rows that need spot-checking.
- `seniority`, `email_type`, and `min_link_confidence` are people-only — silently ignored on `my-company-api` and on audiences with `--source company`.
- `keyword` matches the row's **domain**, not name/title. Use `--keyword acme` to find people whose domain contains "acme".
- For a persistent target list, use `my-audience-api` (snapshot the filter; re-evaluate on `audience refresh`).
Run `myapi people --help` for full flag reference.