$npx -y skills add Xuxchloris/export_skills --skill decision-maker-finderUse when a trade agent needs decision-maker clues, buyer roles, purchasing manager signals, sourcing contacts, category manager hints, contact-page evidence, or email validation status
| 1 | # Decision Maker Finder |
| 2 | |
| 3 | ## Overview |
| 4 | |
| 5 | Find role-level contact clues from company pages and optional enrichment API results. The core rule is to output decision-maker evidence with `source_url`, `role`, and `email_status` while also forcing a separate email and phone search across checked pages. |
| 6 | |
| 7 | ## When to Use |
| 8 | |
| 9 | Use this skill when the user asks who to contact, whether a company has purchasing clues, or how to enrich a prospect with decision-maker signals. |
| 10 | |
| 11 | Use `company-research` first when the company fit is still unknown. |
| 12 | |
| 13 | ## Inputs |
| 14 | |
| 15 | - Company website |
| 16 | - Company name and country, if available |
| 17 | - Decision-maker roles from `MARKET.yaml` |
| 18 | - Contact enrichment settings from `DISCOVERY.yaml` |
| 19 | - Optional output from `prospect-list-enrichment` |
| 20 | |
| 21 | ## Outputs |
| 22 | |
| 23 | ```json |
| 24 | { |
| 25 | "website": "", |
| 26 | "pages_checked": [], |
| 27 | "contact_search": { |
| 28 | "email_result": "found|没有", |
| 29 | "phone_result": "found|没有", |
| 30 | "emails": [], |
| 31 | "phones": [] |
| 32 | }, |
| 33 | "candidates": [ |
| 34 | { |
| 35 | "name": "", |
| 36 | "role": "", |
| 37 | "email": "", |
| 38 | "email_status": "missing|invalid_format|format_valid|domain_match|api_verified", |
| 39 | "phone": "", |
| 40 | "phone_status": "missing|found", |
| 41 | "confidence": "low|medium|high", |
| 42 | "source_url": "", |
| 43 | "evidence": "" |
| 44 | } |
| 45 | ], |
| 46 | "review_notes": [] |
| 47 | } |
| 48 | ``` |
| 49 | |
| 50 | ## Procedure |
| 51 | |
| 52 | 1. Run `python tools/decision_maker_finder.py --website <url> --output <decision_makers.json>` when file output is needed. |
| 53 | 2. If the input is only a company name or company link, resolve the official website when possible before contact analysis. |
| 54 | 3. Check company pages such as homepage, about, contact, team, catalog, and product pages. |
| 55 | 4. Always run official website contact search across every checked page for email and phone values, even when no role clue is found. |
| 56 | 5. If email or phone is not found, output `email_result: "没有"` or `phone_result: "没有"` in `contact_search`. |
| 57 | 6. Look for role clues such as Owner, Founder, Purchasing Manager, Sourcing Manager, Category Manager, Procurement Manager, and Buyer. |
| 58 | 7. Validate email syntax and mark whether the email domain appears company-level. |
| 59 | 8. If a phone appears near a role clue, include it with `phone_status`. |
| 60 | 9. If `DISCOVERY.yaml` has a configured contact enrichment API, use its schema and record API results as additional evidence. |
| 61 | 10. Return role, name if visible, email if visible, phone if visible, confidence, source URL, and evidence text. |
| 62 | 11. Pass useful candidates into `prospect-scoring` as decision-maker access evidence. |
| 63 | |
| 64 | ## Verification |
| 65 | |
| 66 | - Every candidate includes a role and source URL. |
| 67 | - `contact_search` is present even when there are no candidates. |
| 68 | - Official website contact search runs when a company name, website, or company link is available. |
| 69 | - `email_status` is present for every candidate. |
| 70 | - Missing email or phone search results are written as `没有`. |
| 71 | - A role clue is not described as confirmed purchase intent. |
| 72 | - API keys are read from environment variables, not written into output files. |
| 73 | - Low-confidence clues remain review items. |
| 74 | |
| 75 | ## Common Mistakes |
| 76 | |
| 77 | | Mistake | Fix | |
| 78 | | --- | --- | |
| 79 | | Treating a role mention as a named contact | Separate role, name, and evidence | |
| 80 | | Calling a generic email verified | Use `format_valid` unless stronger evidence exists | |
| 81 | | Leaving phone or email blank after search | Put `没有` in `contact_search` result fields | |
| 82 | | Dropping source pages | Keep `source_url` for every candidate | |
| 83 | | Sending outreach automatically | Return candidates for human review | |