Marketing · Step
People and contacts
Finds the right people at each company.
What it does
One step of the Research your audience playbook. Goose runs it when you ask for the playbook. You can also ask for it on its own.
The skill file
What your AI app reads when it runs this skill.
people-and-contacts
Reads: passing accounts; personas and title synonyms; ../research-audience/references/contacts-and-compliance.md; ../research-audience/references/data-sources.md.
Does:
-
Free first, breadth before depth: for every kept account, get names and titles from the cheapest place first — the company's team, about and leadership pages, press releases, conference speaker pages, podcast guest pages, public profile headlines in web-search results (
"<title>" "<company>"), the company's LinkedIn page's public people list. Paid profile reads only in the approved top-up, to confirm titles the free pass could not. -
Pick by company size and role (champion + economic buyer; category buyer for retail). Max 3 per account, different roles.
-
Confirm current employer and title from a dated source (a dated search headline counts, labelled
search-headline); if sources disagree, the newer wins; if unclear, drop. Chains → an account row with the vendor portal or buying-office route, plus 1–2 person rows (sameaccount_id) for a category buyer confirmed by a dated source: LinkedIn route, email only if published or pattern-evidenced. Leave person rows out only when the retailer's vendor page says portal-only or not to contact buyers — note it innotes. Independent shops and small venues → one account-level row with the shop's published inbox (own-domain or published webmail) or IG/DM as the route; the owner's name only if a dated source gives it — an unnamed owner is not a reason to drop. Drop third-party recruiters and consultants (people who don't work for the account), fractional/advisor, interns, ex-, agency staff named for a client, competitor and own staff. When the account is a recruiting or staffing firm, its recruiters, sourcers and researchers are the users and champions — keep them. -
Contact route — when the connector has email find and check, follow
../research-audience/references/data-sources.md§ When the contact routes exist (cheapest first, stop at the first found address the checker passes — one checker, a second only onunknown— never phones or personal modes). Otherwise: look for the exact work address on public pages (team page, press release, filing, speaker bio). Found →email_candidatewith statuspublished (<url>)(an address moves toemailonly after a checker passes it). Pattern-guess only when a published address at the same domain shows the pattern — cite it. A shop's own published webmail address counts aspublished. Otherwise record the best other route (LinkedIn, buying inbox, contact form, phone, IG for small shops). -
Set the person's location and
region_flag; exclude Germany/Austria by default unless the human said otherwise; flag UK sole traders/partnershipsUK-soletrader: consent needed(Companies House check) and give them a visit or a letter as the route (other_contact_route=visit/letter: <published shop address> (<url>)) (phone only after a TPS check, noted; never a cold IG DM), withemailblank; a Canadian or AU/NZpattern-guessis not sendable — give another route or drop; other countries flaggedother:<country>. -
Suppression check: hash each person's keys the ledger's way (outcomes-ledger § Suppression without personal data) and drop any that match a suppressed
key_hash— before any paid lookup on them.
Writes: people rows with title source and date, email (checker-passed only), email_candidate, email_status, email_source, other_contact_route, person_location, region_flag, persona_role.
Rules: never label an address verified unless a checker said so. Never use personal webmail or role addresses for people at companies with a named buyer (independent shops' published inboxes are the exception, as account rows), or anything behind a login.

