$npx -y skills add Xuxchloris/export_skills --skill prospect-list-enrichmentUse when a trade agent needs to clean, deduplicate, normalize, enrich, or prepare CSV and Excel prospect lists before company research, scoring, or campaign planning
| 1 | # Prospect List Enrichment |
| 2 | |
| 3 | ## Overview |
| 4 | |
| 5 | Prepare CSV and Excel prospect lists for research and scoring. The core rule is to preserve source evidence while turning inconsistent rows into a reviewable company-level queue. |
| 6 | |
| 7 | Do not create generated company rows. Every enriched row must come from the user's file or a configured collection output. |
| 8 | |
| 9 | ## When to Use |
| 10 | |
| 11 | Use this skill when the user provides a CSV or Excel customer list, asks to remove duplicates, wants missing fields flagged, or needs a batch queue for company research. |
| 12 | |
| 13 | Use `prospect-discovery` first when the user needs a sourcing strategy instead of list processing. |
| 14 | |
| 15 | ## Inputs |
| 16 | |
| 17 | - CSV or Excel prospect list |
| 18 | - Product context from `product-loader` |
| 19 | - Market rules from `MARKET.yaml` |
| 20 | - Optional discovery output from `prospect-discovery` |
| 21 | |
| 22 | ## Outputs |
| 23 | |
| 24 | ```json |
| 25 | { |
| 26 | "input_rows": 0, |
| 27 | "unique_companies": 0, |
| 28 | "duplicate_rows": [], |
| 29 | "ready_for_research": [], |
| 30 | "needs_review": [], |
| 31 | "excluded_rows": [], |
| 32 | "output_columns": [], |
| 33 | "next_steps": ["company-research", "prospect-scoring"] |
| 34 | } |
| 35 | ``` |
| 36 | |
| 37 | ## Procedure |
| 38 | |
| 39 | 1. Run `python tools/batch_prospect_pipeline.py --input <prospects.csv|xlsx> --product <PRODUCT.yaml> --market <MARKET.yaml> --tone <TONE.yaml> --discovery <DISCOVERY.yaml> --output-dir <folder>` when one-step batch output is needed. |
| 40 | 2. If the product file is a catalog and the user names one product, add `--product-query <name>` or `--sku <sku>` instead of editing the catalog. |
| 41 | 3. Read CSV or Excel rows without changing the original file. |
| 42 | 4. Normalize column names and map available values to company name, website, country, business type, source URL, source note, contact email, contact phone, and contact clue. |
| 43 | 5. Normalize websites by domain and deduplicate rows by domain first, then by normalized company name and country. |
| 44 | 6. Preserve all source URLs and merge useful source notes when duplicates are combined. |
| 45 | 7. Mark rows without company name or website as `needs_review`. |
| 46 | 8. Mark rows outside the target market or unrelated to the product category as `excluded_rows` with a reason. |
| 47 | 9. Write `prospects.enriched.xlsx`, `research_reports.json`, `scores.xlsx`, and `email_drafts.xlsx` when using the batch pipeline. |
| 48 | 10. Treat `research_reports.json` as the source of fetched evidence for scoring and emails. |
| 49 | 11. Do not fill missing company facts from assumptions; use `needs_review`, `fetch_failed`, or `no_evidence`. |
| 50 | 12. If the user asks for a different output shape, preserve the same row data and choose the requested export format instead of changing the facts. |
| 51 | 13. Send research-ready rows to `company-research`; send researched rows to `prospect-scoring`. |
| 52 | |
| 53 | ## Verification |
| 54 | |
| 55 | - Original input file remains unchanged. |
| 56 | - Batch output includes `prospects.enriched.xlsx`, `research_reports.json`, `scores.xlsx`, and `email_drafts.xlsx`. |
| 57 | - Duplicate handling preserves source evidence. |
| 58 | - Every ready row includes company name, website, and source URL. |
| 59 | - Enriched rows include `contact_email`, `contact_phone`, `email_result`, and `phone_result`; missing contact values are written as `没有`. |
| 60 | - Missing fields are listed instead of guessed. |
| 61 | - No generated rows appear in output workbooks. |
| 62 | - Scoring and email drafts are based on fetched evidence. |
| 63 | - Research happens before scoring. |
| 64 | - Output format requests are honored without changing row facts. |
| 65 | |
| 66 | ## Common Mistakes |
| 67 | |
| 68 | | Mistake | Fix | |
| 69 | | --- | --- | |
| 70 | | Deduplicating only by display name | Prefer normalized website domain | |
| 71 | | Dropping source URLs during merge | Preserve every useful source record | |
| 72 | | Treating missing fields as empty facts | Mark them for review | |
| 73 | | Scoring raw rows immediately | Run company research first | |