--- name: contact-enrichment-on-create description: Enriches a newly created CRM contact with role, seniority, company context, and professional background, returned as a display card with proposed field updates for the rep to confirm. Use when a new contact is created, or the user asks to "enrich this contact", "who is this lead", "fill in the gaps on this person", "who just came in". license: MIT compatibility: Requires a connected CRM and web enrichment. Read-first — proposes, does not write. metadata: author: Builder.org version: 2.0.0 persona: Operator Owen rave: R4 A3 V4 E4 category: crm --- # Contact Enrichment on Create ## What it does When a contact lands in your CRM, this fills in who they actually are: role, seniority, company context, and a recent signal, so the rep knows the lead before replying to it. Results come back as a display card with proposed field updates; nothing is written until the rep confirms. ## When to use - "Enrich this contact", "who is this lead", "fill in the gaps on this person", "who just came in". - Triggered on contact creation. - Not for scoring and routing an inbound form fill end to end; that is `lead-triage-form-fill`. Not for deep pre-outreach research; that is `prospect-intelligence-deep-dive`. ## Inputs A contact email or record ID. Nothing else. Works with any CRM your assistant can read (HubSpot, Salesforce, or similar). ## The bar - Verified or blank. A field the sources cannot confirm stays empty and is marked "not found", because a guessed seniority poisons every report built on it later. - Every proposed field value names its source. "Director of Operations (LinkedIn, checked today)" is reviewable; "Director of Operations" is a claim. - The card leads with the one thing the rep needs before replying: who this person is and whether they look like the ICP. - Existing field values are never proposed for overwrite unless the evidence is stronger than what is there, and the card shows both old and new when it does. ## Workflow 1. **Read what exists.** Pull the contact and any associated company from the CRM first, so enrichment fills gaps instead of overwriting someone's work. 2. **Enrich the person.** Title, seniority, and role via the web and whatever enrichment tool is connected; a professional profile link; one recent professional signal (a post, a talk, a role change) when findable. Match identity carefully: the email domain must agree with the claimed employer, or the mismatch gets flagged instead of merged. 3. **Enrich the company.** Size, industry, region, and one recent news item with a date. If no company is associated, propose the association from the email domain as one of the confirmable updates. 4. **Assess fit.** A quick ICP read: fit, partial, or unclear, with the one-line reason. This is a hint for prioritization, not a score; the full scoring pass belongs to triage. 5. **Return the display card** with enriched values, sources, and the proposed CRM updates listed field by field for confirmation. Write only what is confirmed, exactly as shown. ## Output ``` ## [Name] · enrichment **Role:** [title, seniority] ([source]) · **Fit:** [fit/partial/unclear: reason] **Company:** [name · industry · size · region] ([source]) **Signal:** [recent professional or company signal, dated] **Profile:** [link, or "not found"] **Proposed CRM updates (confirm to apply):** - [field]: [new value] ([source]) [· replaces: old value, if any] Not found: [fields left blank and why] ``` ## Worked example ``` Fictional example. Never reuse these names or numbers in real output. ## Priya Raman · enrichment **Role:** VP of Preconstruction, senior (LinkedIn, checked today) · **Fit:** fit: mid-size commercial builder, exactly the estimating-pain profile **Company:** Cobalt Build Co · commercial construction · ~200 employees · Pacific Northwest (company site + LinkedIn) **Signal:** Cobalt won the Riverside medical campus bid on Feb 4, their largest project this year (local business journal) **Profile:** linkedin.com/in/[handle] **Proposed CRM updates (confirm to apply):** - Job title: VP of Preconstruction (LinkedIn) · replaces: "VP" (form fill) - Company association: Cobalt Build Co (email domain match) - Industry: Commercial construction (company site) Not found: direct phone, office location beyond region. Left blank rather than guessed. ``` ## Never - Never write to the CRM without confirmation, and never write more than the card showed. - Never guess a title, seniority, or company from the shape of an email address alone. - Never merge identities on a name match when the domain disagrees; flag "possible different person" instead. - Never propose overwriting a human-entered field with a weaker source. ## Recovery - Nothing found on the person: enrich the company side fully, mark the person "thin public footprint", and suggest the one question the rep should ask in their first reply to fill the gap. - Free-email contact with no company clues: say the enrichment ceiling is low, return what identity checks allow, and propose no company association. - Two plausible identity matches: present both with their evidence and let the rep pick; the card writes nothing on an ambiguous identity. - Contact already fully enriched: say so and stop. "No updates needed" is a result, not a failure to produce something.