# Record Enrichment
Research accounts and contacts across the open web and compile enrichment updates into a file that a human reviews and applies to the CRM (customer relationship management system).

## When to use
- A batch of accounts or contacts has missing firmographic fields (company size, industry, location, job title).
- Sales or success asks for fresh context on a target account before an outreach or renewal push.
- A list of leads needs verification and gap-filling before being loaded into the CRM.
- Periodic hygiene sweeps to catch stale or outdated contact and account data.

## Tools
- `browser-search`: run web searches to locate a company's site, news, or a contact's current role.
- `browser-navigate`: open the company website, LinkedIn-indexed pages, press pages, or other source pages found via search.
- `browser-extract`: pull structured facts (industry, employee count, headquarters, title, recent news) off the opened page.
- `write-file`: stage the compiled enrichment updates as a review-ready file (e.g. CSV or markdown table).
- `send-message`: hand the staged file to a human for review and application to the CRM.

## Playbook
1. Get the list of accounts or contacts needing enrichment and the target fields to fill (from the assigning task or a provided file).
2. For each record, run `browser-search` for the company or contact name plus any distinguishing detail (domain, location, role).
3. Use `browser-navigate` to open the most relevant result: company homepage, about/team page, or a recent press release.
4. Use `browser-extract` to capture the specific fields needed: industry, employee count, headquarters city, contact title, recent funding or news.
5. If the first source is thin or ambiguous, repeat `browser-search` with a narrower query (add domain, city, or "site:" style qualifiers) and `browser-navigate` again to a better source.
6. Normalize findings per record: field name, old value (if known), new value, and the source URL you pulled it from.
7. Compile every record's findings into a single enrichment file with `write-file`, formatted as a table (record ID, field, current value, proposed value, source, confidence).
8. Note any records you could not confidently enrich (no reliable source found) in a separate section of the same file rather than guessing.
9. Send the staged file to a human via `send-message`, naming the CRM object type (accounts/contacts), the record count, and asking them to review and apply the updates — since updating CRM records requires PATCH/PUT access this skill does not have, the human must apply the changes.

## Failure modes
- Search returns no usable company or contact page: broaden or vary the query with `browser-search`; if still empty, mark the record as unresolved in the output file.
- Extracted data conflicts across sources: prefer the most recent or most authoritative source (company's own site over third-party), and note the conflict in the file for human judgment.
- A source page structure changes and `browser-extract` returns nothing useful: fall back to `browser-search` for an alternate source rather than guessing values.
- Large batch runs long or hits repeated empty results: pause, note progress and remaining records in memory, and continue in the next run rather than rushing low-confidence entries.

## Done when
- A single enrichment file exists (via `write-file`) covering every record in the batch, each row with proposed values, sources, and confidence.
- Unresolved records are explicitly listed rather than silently dropped.
- A human has been notified via `send-message` with the file location, record count, and a clear ask to review and apply the CRM updates.