← NimbleCONTENT HISTORY

Update to Nimble

Snapshot Sep 30, 2026 · 22:54 UTC · version 1.7.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "healthcare-providers-enrich",
  "description": "Fills gaps in existing healthcare practitioner lists — adds missing phone numbers,\ncredentials, specialties, contact info, education, reviews, and regulatory data.\n\nTriggers: \"enrich my provider list\", \"fill in missing data\", \"add phone numbers\nto these doctors\", \"complete this practitioner database\", \"enrich CRM export\",\n\"fill gaps in my provider data\", \"supplement this healthcare list\".\n\nAccepts CSV, Google Sheet URL, or pasted data. Searches for each provider's\npractice website, extracts missing fields, and enriches with reviews, clinical\ntrials, and accreditation via WSAs.\n\nDo NOT use for extracting providers from practice URLs — use healthcare-providers-extract instead.\nDo NOT use for validating credentials — use healthcare-providers-verify instead.\nDo NOT use for discovering practices — use market-finder or local-places instead.\nDo NOT use for general extraction — use nimble-web-expert instead.\n",
  "included_files": [
    {
      "relative_path": "references/memory-and-distribution.md",
      "size_in_bytes": 22058
    },
    {
      "relative_path": "references/nimble-playbook.md",
      "size_in_bytes": 37015
    },
    {
      "relative_path": "references/profile-and-onboarding.md",
      "size_in_bytes": 9344
    },
    {
      "relative_path": "references/provider-extraction-patterns.md",
      "size_in_bytes": 6868
    },
    {
      "relative_path": "references/wsa-reference.md",
      "size_in_bytes": 6385
    }
  ],
  "skill_md_contents": "---\nname: healthcare-providers-enrich\ndescription: |\n  Fills gaps in existing healthcare practitioner lists — adds missing phone numbers,\n  credentials, specialties, contact info, education, reviews, and regulatory data.\n\n  Triggers: \"enrich my provider list\", \"fill in missing data\", \"add phone numbers\n  to these doctors\", \"complete this practitioner database\", \"enrich CRM export\",\n  \"fill gaps in my provider data\", \"supplement this healthcare list\".\n\n  Accepts CSV, Google Sheet URL, or pasted data. Searches for each provider's\n  practice website, extracts missing fields, and enriches with reviews, clinical\n  trials, and accreditation via WSAs.\n\n  Do NOT use for extracting providers from practice URLs — use healthcare-providers-extract instead.\n  Do NOT use for validating credentials — use healthcare-providers-verify instead.\n  Do NOT use for discovering practices — use market-finder or local-places instead.\n  Do NOT use for general extraction — use nimble-web-expert instead.\nallowed-tools:\n  - Bash(nimble:*)\n  - Bash(date:*)\n  - Bash(cat:*)\n  - Bash(mkdir:*)\n  - Bash(python3:*)\n  - Bash(echo:*)\n  - Bash(jq:*)\n  - Bash(ls:*)\n  - Bash(wc:*)\n  - Read\n  - Write\n  - Edit\n  - Glob\n  - Grep\n  - Agent\n  - AskUserQuestion\nmetadata:\n  author: Nimbleway\n  version: 1.6.1\n  category: healthcare\n---\n\n# Healthcare Providers Enrich\n\nFill gaps in existing practitioner lists with verified web data, powered by Nimble's\nweb data APIs.\n\nUser request: $ARGUMENTS\n\n**Before running any commands**, read `references/nimble-playbook.md` for Claude Code\nconstraints (no shell state, no `&`/`wait`, sub-agent permissions, communication style).\n\n---\n\n## Instructions\n\n### Step 0: Preflight + WSA Discovery\n\n**Sibling handoff check:** Before running full preflight, check if\n`healthcare-providers-extract` ran earlier in this session by following the Sibling\nHandoff pattern from `references/nimble-playbook.md`. If same-day extract output\nexists, skip CLI check and profile load, and reuse WSA Layer 1/3 inventory. Only\nre-run Layer 2 if the specialty changed.\n\n**Otherwise, run full preflight** from `references/nimble-playbook.md` (5 simultaneous\nBash calls: date calc, today, CLI check, profile load, index.md load).\n\n**Also simultaneously** — run WSA discovery and setup:\n- `mkdir -p ~/.nimble/memory/{reports,healthcare-providers-enrich/checkpoints}`\n- `ls ~/.nimble/memory/healthcare-providers-enrich/checkpoints/ 2>/dev/null`\n- Run Layer 1 (vertical) and Layer 3 (general tools) WSA discovery from\n  `references/wsa-reference.md`. Layer 2 (session-specific) runs after Step 1 when\n  you know the user's specialty.\n\nClassify discovered agents into phases and validate with `nimble extract:templates get` per\n`references/wsa-reference.md`.\n\nFrom the preflight results:\n- CLI missing or API key unset -> `references/profile-and-onboarding.md`, stop\n- Tag all `nimble` CLI calls: `nimble --client-source nimble-agent-skills <subcommand>`. MCP requests are attributed at the transport level — see `references/nimble-playbook.md`.\n- Profile exists -> note it for context. Determine mode using smart date windowing\n  from `references/nimble-playbook.md`:\n  - **Full mode:** first run OR last run > 14 days ago\n  - **Quick refresh:** last run < 14 days ago (re-enrich only records with gaps)\n  - **Same-day repeat:** if `last_runs.healthcare-providers-enrich` is today, check\n    for existing report at `~/.nimble/memory/reports/healthcare-providers-enrich-*[today].md`.\n    If found, ask: \"Already ran today. Run again for fresh data?\"\n- No profile -> that's fine. This skill doesn't require onboarding. Proceed to Step 1.\n\n### Step 1: Parse Input + Starting Questions\n\n**Chained-from-extract shortcut:** Check for a same-day extract report:\n```bash\nls ~/.nimble/memory/reports/healthcare-providers-extract-*$(date +%Y-%m-%d).md 2>/dev/null\n```\nIf a same-day report exists, parse the `{slug}` from the filename and load\n`~/.nimble/memory/healthcare-providers-extract/{slug}/providers.json`. The practice\ndomains and page URL patterns are already known — construct individual bio page URLs\nfrom the site's URL convention and skip Step 3 entirely. This avoids N unnecessary\nweb searches. If no same-day report exists, do not reuse old `providers.json` files.\n\nParse `$ARGUMENTS` for input type using the Input Parsing Pattern from\n`references/nimble-playbook.md`. Key routing:\n- **Extract output detected** (providers.json) -> proceed to Step 2, mark Step 3 skip\n- **CSV/Sheet/pasted data detected** -> proceed to Step 2\n- **Unclear** -> ask (counts as 1 of max 2 prompts)\n\n**If input is clear**, confirm and ask one shaping question (plain text, not\nAskUserQuestion):\n\n> \"Found **N providers** in your list. Quick questions:\n> 1. Which fields need filling? (contact info, credentials, specialty, reviews, regulatory — or all gaps)\n> 2. Healthcare vertical? (ophthalmology, dental, dermatology, general, or other)\"\n\n**If input is ambiguous**, use AskUserQuestion (counts as 1 of max 2 prompts):\n\n> **What provider list should I enrich?**\n> - Paste provider data directly (name + any known info, one per line)\n> - Provide a CSV file path or Google Sheet URL\n> - Or describe what you have (e.g., \"a list of 50 ophthalmologists with just names and states\")\n\nSkip questions the user already answered in their initial message.\n\n### Step 2: Analyze Existing Data\n\nParse the input into structured records. For each provider, identify:\n- **Known fields** — what the user already has (name, state, specialty, etc.)\n- **Missing fields** — gaps against the 5 core fields from\n  `references/provider-extraction-patterns.md` (name, credentials, specialty,\n  contact, education)\n- **Enrichment targets** — additional fields the user requested (reviews, regulatory,\n  accreditation)\n\n**Early exit — no gaps:** If all providers are already High confidence (5/5 fields),\nskip to Step 5 (WSA enrichment) or report: \"All providers already have complete\nprofiles. Want me to add supplementary data (reviews, clinical trials, accreditation)\ninstead?\"\n\nBuild a gap analysis summary:\n\n> \"Analyzing **N providers**:\n> - Names: N/N present\n> - Credentials: N/N present (N missing)\n> - Specialty: N/N present (N missing)\n> - Contact info: N/N present (N missing)\n> - Education: N/N present (N missing)\n>\n> Starting enrichment for **N providers with gaps**...\"\n\nRun Layer 2 WSA discovery now that you know the specialty:\n```bash\nnimble extract:templates list --limit 50  # filter items for \"[specialty]\"\nnimble extract:templates list --limit 50  # filter items for \"[directory-user-mentioned]\"\n```\n\nSee `references/wsa-reference.md` for session-specific discovery.\n\n### Step 3: Web Search for Provider Identity\n\nFor each provider with gaps, find their practice website and bio page:\n\n```bash\nnimble search --query \"[provider name] [credentials] [location] [specialty]\" --max-results 5 --search-depth lite\n```\n\n**Search strategy:**\n- Include all known fields in the query to disambiguate common names\n- Prioritize results from practice websites over directory listings\n- If the provider has a known practice name, add it to the query\n- For providers with only name + state, broaden: `\"[name] [state] doctor\"`\n\n**Result selection:** Pick the most relevant result — practice bio page > healthcare\ndirectory profile > LinkedIn. Save the selected URL for extraction.\n\nFor 10+ providers, use sub-agents (see Sub-Agent Strategy below).\n\n**Checkpoint (mandatory):** You MUST write the checkpoint file before proceeding.\nInterrupted runs with 20+ providers waste significant API credits without resume.\n```bash\necho '{...}' > ~/.nimble/memory/healthcare-providers-enrich/checkpoints/{slug}/search.json\n```\n\n### Step 4: Extract Missing Fields\n\nChoose extraction strategy based on provider count. Follow the Scaled Execution\npattern from `references/nimble-playbook.md` — it covers individual calls (1-10),\n`extract-batch` (11-100), and the confirmation gate for larger jobs. Use the Page\nExtraction with Retry pattern from the same reference for garbage detection and\nretry logic.\n\nParse extracted content for missing fields using the detection patterns from\n`references/provider-extraction-patterns.md` (credential regex, specialty keywords,\ncontact patterns, education mentions).\n\n**Merge rules:**\n- Only fill fields that are actually missing — never overwrite existing data\n- Track which fields were added and their source URL\n- If extracted data conflicts with existing data, keep the existing value and flag\n  the conflict for user review\n\n**Checkpoint (mandatory):** You MUST write the checkpoint file before proceeding.\n```bash\necho '{...}' > ~/.nimble/memory/healthcare-providers-enrich/checkpoints/{slug}/extraction.json\n```\n\n### Step 5: WSA Enrichment (Optional)\n\nIf the user requested reviews, regulatory data, or accreditation — or if the gap\nanalysis shows most core fields are already filled and enrichment adds more value:\n\n**Run enrichment-phase WSAs** discovered in Step 0. See `references/wsa-reference.md`\nfor the enrichment phase mapping, agent evaluation, and fallback chains.\n\nFor each practice or provider, run relevant enrichment agents simultaneously.\nFollow the Scaled Execution pattern from `references/nimble-playbook.md` for\nbatching.\n\n**Merge enrichment data** into provider records:\n- Reviews/ratings -> add as supplementary fields (not part of core 5)\n- Clinical trial activity -> add as supplementary field\n- Accreditation status -> add as supplementary field\n\n### Step 6: Deduplication & Confidence Scoring\n\nFollow the Entity Deduplication and Entity Confidence Scoring patterns from\n`references/nimble-playbook.md`. Skill-specific dedup rules and the 5-field\nconfidence criteria are in `references/provider-extraction-patterns.md`.\n\n**Enrichment-specific confidence:** Score only the **newly added** fields:\n- **High** — field found and confirmed by 2+ sources\n- **Medium** — field found from 1 source\n- **Low** — field inferred or partially matched\n\n### Step 7: Output\n\nPresent results as an enrichment diff — showing what was added to each provider.\nGroup by practice, sort by confidence within each group, and include a \"What This\nMeans\" section at the end with actionable next steps.\n\n```markdown\n# Provider Enrichment: [N] Providers Updated\n*[Date] | [A] fields added across [P] providers | [H] High, [M] Medium, [L] Low confidence*\n\n## TL;DR\nEnriched [P] of [T] providers. Added [A] total fields: [breakdown by field type].\n[Key finding: e.g., \"Found contact info for 18 of 20 providers, 3 have clinical trials\"].\n\n## Enrichment Results\n\n| # | Name | Added Fields | Confidence | Source |\n|---|------|-------------|------------|--------|\n| 1 | Dr. Jane Smith | +credentials (MD, FACS), +contact ((555) 123-4567) | High | [source](url) |\n| 2 | Dr. John Doe | +specialty (General Ophthalmology), +education (Wills Eye) | Medium | [source](url) |\n| 3 | Dr. Alex Chen | +contact ((555) 987-6543) | Low | [source](url) |\n\n## Detailed Records\n\n### Dr. Jane Smith\n**Existing:** Name, State (TX)\n**Added:**\n- Credentials: MD, FACS — [source](url)\n- Contact: (555) 123-4567 — [source](url)\n- Education: Fellowship, Bascom Palmer Eye Institute — [source](url)\n**Confidence:** High (3 fields added, 2 sources)\n\n[Repeat per provider with additions]\n\n## Providers Not Enriched\n[List providers where no additional data was found, with attempted searches]\n\n## Data Quality Summary\n- **Fully enriched (5/5 fields):** [N] providers\n- **Partially enriched:** [N] providers — common gaps: [list]\n- **No new data found:** [N] providers\n\n## Sources\n[Clickable URL for every page used, grouped by provider]\n\n## What This Means\n[Actionable interpretation: which providers are ready to contact, which need more\ndata, what the enrichment coverage tells you about this list's quality]\n```\n\n**Source links are mandatory.** Every added field must trace back to a source URL.\n\n### Step 8: Save to Memory\n\nMake all Write calls simultaneously:\n\n- Report -> `~/.nimble/memory/reports/healthcare-providers-enrich-{slug}-{date}.md`\n- Enriched data -> `~/.nimble/memory/healthcare-providers-enrich/{slug}/enriched.json`\n- Profile -> update `last_runs.healthcare-providers-enrich` in\n  `~/.nimble/business-profile.json` (only if profile exists)\n- Follow the wiki update pattern from `references/memory-and-distribution.md`: update\n  `index.md` rows for all affected entity files, append a `log.md` entry for this run.\n- Clean up checkpoint (complete run) or keep (partial run)\n\n### Step 9: Share & Distribute\n\n**Always offer distribution — do not skip.** Follow\n`references/memory-and-distribution.md` for connector detection and sharing flow.\n\nNotion: full enrichment report as a dated subpage.\nSlack: TL;DR with enrichment summary and field counts only.\n\n### Step 10: Follow-ups\n\n- **\"Tell me more about Dr. X\"** -> show full enriched profile\n- **\"Export as CSV\"** -> generate CSV with original + enriched fields\n- **\"Enrich more fields\"** -> re-run with expanded field targets\n- **\"Which providers still have gaps?\"** -> filter to incomplete records\n\n**Sibling skill suggestions:**\n\n> **Next steps:**\n> - Run `healthcare-providers-verify` to validate the enriched credentials and\n>   license status\n> - Run `healthcare-providers-extract` to discover more providers from practice\n>   websites\n> - Run `market-finder` to find additional practices in this area\n\n---\n\n## Sub-Agent Strategy\n\nFor batch enrichment (10+ providers), use `nimble-researcher` agents\n(`agents/nimble-researcher.md`) to parallelize search and extraction.\n\nFollow the sub-agent spawning rules from `references/nimble-playbook.md`\n(bypassPermissions, batch max 4, explicit Bash instruction, fallback on failure).\n\n**Spawn pattern:** One agent per batch of 5 providers. Each agent runs Steps 3-4\nfor its assigned providers and returns enriched records. Tell each agent to use\n`nimble extract-batch` for its assigned URLs rather than individual `nimble extract`\ncalls — one batch call per agent is faster and more reliable than sequential calls.\n\n**Small batch optimization:** If fewer than 10 providers, run directly from the\nmain context instead of spawning agents.\n\n**Fallback:** If any agent fails, run those enrichments directly from the main\ncontext. Never leave gaps in the output.\n\n---\n\n## Error Handling\n\nSee `references/nimble-playbook.md` for the standard error table (missing API key,\n429, 401, empty results, extraction garbage). Skill-specific errors:\n\n- **No search results for provider:** \"Couldn't find a web presence for [name] in\n  [state]. The name may be too common or the provider may not have an online\n  presence. Want me to try with additional context (practice name, specialty)?\"\n- **Ambiguous provider match:** \"Found multiple providers named [name] in [state].\n  Can you confirm which one? [list top 3 with practice names]\"\n- **All extractions returned garbage:** \"The provider websites appear to be heavily\n  JavaScript-rendered. Retrying with browser rendering...\" (auto-retry with\n  `--render` per the shared pattern)\n- **CSV/Sheet parse error:** \"Couldn't parse the input file. Expected columns with\n  provider names and at least one identifier (state, specialty, or practice).\n  Can you paste the data directly instead?\"\n- **No gaps detected:** Handled in Step 2 (early exit to WSA enrichment or report).\n"
}

SHA-256: f99da7d4c85c46782dfbb87cea08114126318a5c426b6b7ef685d1994982d950