← NimbleCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Nimble
Snapshot Sep 30, 2026 · 22:54 UTC · version 1.7.0
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "meeting-prep",
"description": "Researches meeting attendees and their companies before any meeting using\nreal-time web data. Surfaces roles, recent activity, company context, and\ntalking points — then maps cross-attendee relationships.\n\nUse this skill when the user asks to prepare for a meeting, research someone\nthey're meeting, or wants context on attendees. Common triggers: \"prepare me\nfor my meeting\", \"who am I meeting with\", \"research this person\", \"meeting\nprep\", \"brief me on [person]\", \"I have a meeting with [person/company]\",\n\"get me ready for my call\", \"what should I know about [person]\",\n\"background on [person] before our meeting\", \"attendee research\".\n\nRequires the Nimble CLI (nimble search, nimble extract) for live web data.\nDo NOT use for multi-company competitor monitoring (use competitor-intel)\nor single-company deep dives without attendees (use company-deep-dive).\n",
"included_files": [
{
"relative_path": "references/attendee-agent-prompt.md",
"size_in_bytes": 4545
},
{
"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
}
],
"skill_md_contents": "---\nname: meeting-prep\ndescription: |\n Researches meeting attendees and their companies before any meeting using\n real-time web data. Surfaces roles, recent activity, company context, and\n talking points — then maps cross-attendee relationships.\n\n Use this skill when the user asks to prepare for a meeting, research someone\n they're meeting, or wants context on attendees. Common triggers: \"prepare me\n for my meeting\", \"who am I meeting with\", \"research this person\", \"meeting\n prep\", \"brief me on [person]\", \"I have a meeting with [person/company]\",\n \"get me ready for my call\", \"what should I know about [person]\",\n \"background on [person] before our meeting\", \"attendee research\".\n\n Requires the Nimble CLI (nimble search, nimble extract) for live web data.\n Do NOT use for multi-company competitor monitoring (use competitor-intel)\n or single-company deep dives without attendees (use company-deep-dive).\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 - Read\n - Write\n - Edit\n - Glob\n - Grep\n - Agent\n - AskUserQuestion\nmetadata:\n author: Nimbleway\n version: 1.6.1\n category: productivity\n---\n\n# Meeting Prep\n\nResearch-powered meeting preparation with attendee intelligence and company context.\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\n\nFollow the transport selection + standard preflight from `references/nimble-playbook.md` — pick CLI or MCP at session start, then run the standard preflight calls (date calc, today, profile, memory index) in parallel.\n\nFrom the 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 → read `~/.nimble/memory/people/index.md` to identify existing\n person profiles. Load relevant `~/.nimble/memory/people/` files for attendees\n before — skip redundant searches, surface prior meeting notes. Follow\n `[[path/entity]]` cross-references in person files: if an attendee's file links\n to `[[competitors/widgetco]]`, load that competitor file for richer context (e.g.,\n recent intel from competitor-intel runs). Also check `~/.nimble/memory/companies/`\n for cached company research.\n **No same-day report check** — meeting-prep is per-meeting, not per-day. Users\n may prep for multiple meetings in one day. Instead, check entity freshness:\n if a person/company profile was updated within the last 24 hours, offer to reuse\n it: \"I have a recent profile for **[Name]** from earlier today. Use it, or refresh?\"\n- No profile → that's fine. Meeting prep doesn't require onboarding. Proceed to Step 1.\n\n### Step 1: Gather Meeting Context\n\nParse the meeting details from `$ARGUMENTS` or ask the user.\n\n**Calendar shortcut:** If the user didn't specify attendees and a calendar connector\nis available — either a calendar MCP tool (look for `list_events` in the tool list)\nor the `gws` CLI (`gws calendar +agenda --today`) — offer to pull today's meetings\nso they can pick one. If neither is available, skip this silently.\n\n**If clear** (e.g., \"prep me for my meeting with Alex Kim at WidgetCo tomorrow\"):\n- Extract: attendee name(s), company, meeting date/time (if given)\n- Confirm briefly: \"Preparing briefing for your meeting with **Alex Kim** at **WidgetCo**...\"\n\n**If partial** (e.g., \"prep me for my meeting tomorrow\"):\n- Ask one clarifying question in plain text:\n > \"Who are you meeting with? (names, titles, and company if you have them)\"\n\n**If just a person** (e.g., \"research John Smith\"):\n- Proceed with the person. Try to infer their company from search results.\n\n**Extract these fields:**\n\n| Field | Required | Source |\n|-------|----------|--------|\n| Attendee name(s) | Yes | User input or calendar event |\n| Company | Preferred | User input or inferred from search |\n| Attendee title(s) | Optional | User input or discovered in Step 2 |\n| Meeting type | Required | User input, inferred, or asked (discovery, demo, check-in, interview, partnership, internal) |\n| Meeting date/time | Optional | User input |\n| Additional context | Optional | User notes (\"they're evaluating our product\", \"board member intro\") |\n\n**Meeting type detection** — if the user doesn't specify, infer from context clues:\n\n| Signal | Inferred type |\n|--------|---------------|\n| \"prospect\", \"demo\", \"sales call\" | Sales / discovery |\n| \"interview\", \"candidate\" | Interview |\n| \"board\", \"investor\" | Board / investor |\n| \"partner\", \"integration\" | Partnership |\n| \"check-in\", \"sync\", \"1:1\" with colleague | Internal |\n| No signal | Ask (see below) |\n\n**If no signal** — don't guess \"general external.\" The meeting type gates whether the\nValue Positioning section is generated, so it's worth one question. Use AskUserQuestion:\n\n> **What's the goal of this meeting?**\n> - **Sales / discovery** — pitching, demo, exploring fit\n> - **Partnership** — integration, co-selling, joint venture\n> - **Board / investor** — board meeting, investor update, fundraising\n> - **Interview** — evaluating a candidate\n> - **General / other** — networking, catch-up, or not sure\n\nMap the answer to the meeting type. If the user picks \"General / other\", treat as\ngeneral external (no value positioning section).\n\nThe meeting type shapes the briefing focus — specifically, it determines whether the\nValue Positioning section (Step 4.5 + Step 6) is generated. Value positioning activates\nfor: **sales/discovery, partnership, board/investor**. It is skipped for: **interview,\ninternal, general external**.\n\n### Step 2: WSA Discovery\n\nDiscover available WSAs for each attendee's company domain:\n\n```bash\nnimble extract:templates list --limit 100 # then filter items for \"{company-domain}\"\n```\n\nRun one search per unique company simultaneously. Filter for SERP/PDP WSAs,\nprefer `managed_by: \"nimble\"`, validate with `nimble extract:templates get --extract-template-name {name}`.\nCache discovered names + params. Pass them to attendee agents in Step 3 for richer\ndata. If no WSAs found, continue with `nimble search` alone.\n\n### Step 3: Per-Attendee Research (sub-agents)\n\nRead `references/attendee-agent-prompt.md` for the full agent prompt template.\nFollow the sub-agent spawning rules from `references/nimble-playbook.md`\n(bypassPermissions, batch max 4, explicit Bash instruction, fallback on failure).\n\n**Check memory first.** For each attendee, check `~/.nimble/memory/people/[name-slug].md`.\nIf a profile exists and is < 30 days old, load it as known context and pass it to the\nagent so it focuses on what's new. If > 30 days old, run a full refresh.\n\nSpawn `nimble-researcher` agents (`agents/nimble-researcher.md`) with\n`mode: \"bypassPermissions\"`. One agent per attendee. Pass discovered WSA names\nfrom Step 2 to each agent for enrichment.\n\n**Important:** The Nimble API has a 10 req/sec rate limit per API key. With each agent\nrunning 4-5 searches, limit concurrent agents to 2 per batch. For 3+ attendees, batch\nin groups of 2.\n\n**Call estimation & Scaled Execution:** Before launching agents, estimate total API\ncalls: ~5 searches per attendee + ~4 company searches + 3-5 extractions = ~(5 × N) + 9\ncalls. For 3+ attendees (15+ calls), tell agents to use `extract-batch` for page\nextractions instead of individual calls. See the Scaled Execution pattern in\n`references/nimble-playbook.md` for tier selection.\n\n**Batch 1** (2 agents simultaneously):\n- Attendee 1 research\n- Attendee 2 research\n\n**Batch 2** (if needed):\n- Attendee 3 research\n- Attendee 4 research\n\n**Single attendee optimization:** If only one person, run the searches directly from\nthe main context instead of spawning an agent — saves overhead.\n\n**Fallback:** If any agent fails or returns empty, run those searches directly from\nthe main context. Don't leave gaps in the briefing.\n\n### Step 3.5: Gap Check\n\nBefore proceeding, verify every attendee has at least a title and company confirmed.\n\n**For any attendee with < 3 meaningful results or \"Role Unknown\":**\n1. Run a `--focus social` fallback search directly (this searches social platform\n people indices and is the most reliable way to find someone):\n `nimble search --query \"[Name] [Company]\" --focus social --max-results 5 --search-depth lite`\n2. If `--focus social` is unavailable, fall back to:\n `nimble search --query \"[Name]\" --include-domain '[\"linkedin.com\"]' --max-results 5 --search-depth lite`\n3. Try name variations: \"[First] [Last]\", \"[Full Name] [Company] [Title if known]\"\n\nDo NOT present a briefing with \"Role Unknown\" — exhaust social search first. If still\nnothing after fallbacks, note it honestly: \"Limited public presence — could not confirm\nrole. Consider asking for their LinkedIn URL.\"\n\nAlso collect **LinkedIn profile URLs** for each attendee during this step if not already\nfound. These are high-value for the final briefing output and Notion distribution.\n\n### Step 4: Company Research\n\nResearch the attendees' company for meeting-relevant context. This is a lighter version\nof company-deep-dive — focused on what's useful for the conversation, not a full 360°.\n\n**Company name quoting:** If the company name contains common words that cause noisy\nresults (e.g., \"Acme Supply\", \"Nova Dynamics\", \"Global Industries\"), wrap it in escaped\nquotes: `\"\\\"Acme Supply\\\" news\"`. Use `--include-domain '[\"[domain]\"]'` as an alternative anchor.\n\nMake these Bash calls simultaneously:\n\n- `nimble search --query \"\\\"[Company]\\\" news\" --focus news --start-date \"[14-days-ago]\" --max-results 8 --search-depth lite`\n- `nimble search --query \"\\\"[Company]\\\" product launch OR announcement\" --focus news --start-date \"[14-days-ago]\" --max-results 5 --search-depth lite`\n- `nimble search --query \"about\" --include-domain '[\"[domain]\"]' --max-results 3 --search-depth lite`\n- `nimble search --query \"\\\"[Company]\\\" funding OR raised OR investors\" --max-results 5 --search-depth lite`\n\nIf your user's company profile exists, also run:\n- `nimble search --query \"[Company] [UserCompany] OR [user-domain]\" --max-results 5 --search-depth lite`\n\nThis catches any existing relationship between the two companies — prior partnerships,\nmentions, shared investors, or competitive overlap.\n\n**If < 3 results** from the news searches, retry without `--start-date`.\n\n**Date validation:** When including company news in the briefing, verify that the\n**event date** (when something actually happened) is recent, not just the article date.\nSee `references/nimble-playbook.md` → \"Signal Date Validation\" for details. If a snippet\nuses past-tense language like \"last year\" or \"back in Q3\", treat it as background context\nrather than recent news.\n\n**If the company was already researched** (exists in `~/.nimble/memory/companies/`),\nload the existing profile and only run the news search for fresh updates.\n\n### Step 4.5: Value Positioning Research\n\n**Skip this step** if the meeting type is interview, internal, or general external.\n\nThis step cross-references what you learned about the attendee's company (Step 4) with\nthe user's own business profile to find concrete positioning angles. It works best when\n`business-profile.json` exists with at least `company.name` and `company.domain`.\n\n**If no profile exists**, skip searches that reference the user's company or competitors\n(searches 2, 4, 5) and rely on generic research (searches 1, 3) for positioning insights.\nUse any WSAs discovered in Step 2 for richer attendee company data.\nThe Value Positioning section will be thinner but still useful — pain-to-solution mapping\nand tech stack discovery work without a profile.\n\n**Load the user's sales context** from `~/.nimble/business-profile.json`:\n- `sales_context.key_differentiators` — what makes the user's product unique\n- `sales_context.integration_partners` — tools the user's product connects with\n- `sales_context.case_studies` — similar customers and outcomes\n- `sales_context.common_objections` — pre-built objection responses\n- `competitors` — tracked competitors (check if the attendee's company uses any)\n\nIf `sales_context` doesn't exist in the profile, the skill still works — the value\npositioning section will rely on web research alone rather than profile-enriched data.\nMention at the end: \"Tip: Add sales context to your profile for richer positioning\nnext time.\"\n\n**Make these Bash calls simultaneously** (3-5 searches depending on available data):\n\n1. `nimble search --query \"\\\"[AttendeeCompany]\\\" tech stack OR tools OR platform OR uses\" --max-results 5 --search-depth lite`\n → Discover what tools/platforms they use — match against `integration_partners`\n\n2. `nimble search --query \"\\\"[AttendeeCompany]\\\" [UserCompany] OR [user-domain]\" --max-results 5 --search-depth lite`\n → Any existing relationship, mentions, or competitive overlap (skip if already run in Step 3)\n\n3. `nimble search --query \"\\\"[AttendeeCompany]\\\" challenges OR pain points OR struggling OR migrating\" --max-results 5 --search-depth lite`\n → Pain signals to map against user's value props\n\n4. (If `competitors` list exists) `nimble search --query \"\\\"[AttendeeCompany]\\\" [CompetitorName1] OR [CompetitorName2]\" --max-results 5 --search-depth lite`\n → Check if they use a competitor — critical for displacement positioning\n\n5. (If `case_studies` exist with matching industry) `nimble search --query \"[UserCompany] [attendee-industry] case study OR customer story\" --max-results 5 --search-depth lite`\n → Find published case studies in the attendee's industry to reference\n\n**From the results, extract:**\n- Tools/platforms they use (for integration hooks)\n- Pain signals or challenges (for value mapping)\n- Competitor usage (for displacement angles)\n- Industry match to existing case studies (for social proof)\n\nThis data feeds directly into the Value Positioning section in Step 5.\n\n### Step 5: Deep Extraction\n\nFrom Steps 3-4.5, identify the **top 3-5 most informative URLs** across all results.\nPrioritize:\n- Attendee's own LinkedIn posts, articles, or talks\n- Recent company announcements directly relevant to the meeting\n- Interviews or profiles of the attendee\n- The company's about/team page (if attendee title wasn't found)\n- (If value positioning active) Pages revealing their tech stack or tool usage\n- (If value positioning active) Articles about their challenges or migration plans\n\nMake one Bash call per URL, all simultaneously:\n\n`nimble extract --url \"https://...\" --format markdown`\n\nFor extraction failures, follow the fallback in `references/nimble-playbook.md`.\n\n**Single attendee + known company:** Skip company extraction, focus on person URLs.\n**Multiple attendees:** Prioritize person-specific URLs over company-level ones.\n\n### Step 6: Synthesize Briefing\n\nStructure the output as a meeting prep briefing. Adapt focus based on meeting type.\n\n```\n# Meeting Prep: [Company Name]\n*[Meeting date/time if known] | Prepared [today's date]*\n\n## Quick Take\n[2-3 sentences: who you're meeting, why it matters, and the one thing to know\ngoing in. This is the \"read nothing else\" paragraph.]\n\n## Attendees\n\n### [Name] — [Title]\n**Background:** [Current role, time in position, career trajectory highlights]\n**Recent Activity:** [What they've been posting, speaking about, or working on.\n Direct quotes from posts/talks when available.]\n**Conversation hooks:** [2-3 specific things to reference — shared connections,\n their recent project, a post they wrote, a talk they gave]\n**Notes from prior meetings:** [If exists in memory — what was discussed, their\n preferences, open items. \"No prior meetings on file\" if none.]\n\n[Repeat for each attendee]\n\n## Relationship Map\n[Cross-attendee connections — shared employers, mutual connections, overlapping\n interests, organizational dynamics between attendees. Skip if single attendee.]\n\n## Company Context\n- **What they do:** [One line]\n- **Size / Stage:** [Employees, funding stage, HQ]\n- **Recent news:** [Top 2-3 items, dated with source]\n- **Relevant to your meeting:** [How their company context connects to your\n discussion — e.g., recent product launch you might discuss, funding that\n signals growth, leadership change affecting priorities]\n\n## Value Positioning\n*[Only for sales/discovery, partnership, and board/investor meetings. Omit entirely\n for interview, internal, and general external meetings.]*\n\n### Value Mapping\n[Match their specific needs/pain points to your capabilities. Every mapping must\n be grounded in research from Step 4.5, not generic claims.\n Format: \"They [specific finding with source] → Your product [specific capability]\"]\n\n### Integration Hooks\n[Tools/platforms they use that your product integrates with. Only include\n integrations confirmed from research (their tech stack) AND your profile\n (integration_partners). If no overlap found, say so honestly.]\n\n### Recommended Positioning\n[2-3 sentences on how to frame your pitch for THIS specific company and person.\n Consider: their company stage, recent news, the attendee's role and priorities,\n and any competitive displacement opportunity. This is the \"elevator pitch\n calibrated to this meeting\" paragraph.]\n\n### Reference Customers\n[Similar companies from your case_studies that match their industry, size, or\n use case. Include the outcome/metric if available. If no matching case studies,\n omit this subsection rather than forcing a weak match.]\n\n## Talking Points\n[3-5 specific, actionable conversation starters grounded in the research.\n Not generic \"ask about their priorities\" — specific: \"Ask about their\n migration from [old tool] to [new tool] that they announced last month.\"\n When value positioning is active, weave 1-2 positioning angles into the\n talking points naturally — don't make every talking point a sales pitch.]\n\n## Watch Out For\n[1-3 things to be aware of — sensitive topics (recent layoffs, bad press),\n potential awkward overlaps, information gaps you couldn't fill.]\n\n## Sources\n[Numbered list of key URLs cited in the briefing]\n```\n\n**Meeting type adaptations:**\n\n| Type | Emphasis | Add to briefing | Value Positioning |\n|------|----------|-----------------|-------------------|\n| Sales / discovery | Buyer authority, pain signals, competitive stack | \"Qualification signals\" section | **Yes** — full section |\n| Partnership | Mutual benefit signals, integration opportunities | \"Alignment opportunities\" section | **Yes** — focus on integration hooks |\n| Board / investor | Financial context, market position, portfolio overlap | \"Key metrics to reference\" section | **Yes** — focus on recommended positioning |\n| Interview | Candidate's work history depth, cultural signals | \"Assessment angles\" section | No |\n| Internal | Skip company research, focus on person's recent work | Lighter format, no company section | No |\n| General external | Balanced across all dimensions | Standard format above | No |\n\n**Core rules:**\n- Every factual claim about an external company or person must have a source URL.\n Data drawn from the user's own business profile (differentiators, integrations,\n case studies) should be attributed to the profile rather than requiring an\n external source.\n- Lead with the Quick Take — most readers stop there.\n- Talking points must be specific to THIS meeting, grounded in research findings.\n Never generate generic conversation starters.\n- Say \"no public information found\" for a person rather than speculating about their\n role or background.\n- If memory has prior meeting notes, surface open items and continuity points\n prominently — this is the highest-value content.\n- Value Positioning claims must be grounded in research from Step 4.5. Never\n generate generic positioning advice like \"highlight your product's strengths.\"\n Every value mapping must reference a specific finding about the attendee's\n company paired with a specific capability from the user's profile or research.\n- If `sales_context` is missing from the profile, note it once at the end of the\n Value Positioning section: \"Tip: Edit your profile at\n `~/.nimble/business-profile.json` to add sales context (differentiators,\n integrations, case studies) for richer positioning next time.\"\n\n### Step 7: Save to Memory\n\nMake all Write calls simultaneously:\n\n- Report → `~/.nimble/memory/reports/meeting-prep-[company-slug]-[date].md`\n- Per attendee → `~/.nimble/memory/people/[name-slug].md`\n (use the format in `references/memory-and-distribution.md`). Add `[[path/entity]]`\n cross-references for the attendee's employer (e.g., `[[competitors/widgetco]]` or\n `[[companies/widgetco]]`) and any other discovered relationships.\n- Company profile → update `~/.nimble/memory/companies/[company-slug].md` if new\n company data was found. Add reverse cross-references to the people researched\n (e.g., `[[people/alex-kim]]`).\n- Profile → update `last_runs.meeting-prep` in `~/.nimble/business-profile.json`\n (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\nThe person profile in `people/` should contain structured key facts (role, background,\ninterests, communication style) that can be loaded by future meeting prep runs.\n\n### Step 8: Share & Distribute\n\n**Always offer distribution — do not skip this step.** Follow\n`references/memory-and-distribution.md` for connector detection, sharing flow, and\nsource links enforcement.\n\n### Step 9: Follow-ups\n\n- **Go deeper** on an attendee → more focused person research\n- **Add attendees** → research additional people joining the meeting\n- **\"What about [topic]?\"** → targeted search on specific dimension\n- **\"Looks good\"** → done\n- **Sibling skills:** `company-deep-dive` for a full 360 on the company,\n `competitor-intel` to track them as a competitor, `competitor-positioning`\n to compare messaging before a sales meeting\n\n---\n\n## Agent Teams Mode (Dual-Mode)\n\nCheck at startup: `echo $CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS`\n\n**Team mode** (flag set): Spawn **teammates** instead of sub-agents. Each teammate\nresearches one attendee and can message the others when finding cross-connections.\n\n| Teammate | Focus | Cross-checks with |\n|----------|-------|-------------------|\n| **Attendee 1 researcher** | Full person + company research for attendee 1 | All other teammates (shared employers, connections) |\n| **Attendee 2 researcher** | Full person + company research for attendee 2 | All other teammates |\n| **[Additional per attendee]** | ... | ... |\n\nHow cross-attendee discovery works:\n1. Each teammate researches their assigned attendee independently\n2. When a teammate discovers a workplace, school, or connection that overlaps with\n another attendee, they send a message to that teammate: \"My attendee [Name] worked\n at [Company] from 2019-2022 — did yours overlap?\"\n3. The receiving teammate checks and responds\n4. Lead (you) collects all cross-references and builds the Relationship Map section\n\nThis produces higher-quality relationship maps than solo mode because teammates\nactively search for connections rather than just comparing results post-hoc.\n\n**Solo mode** (flag not set): Standard sub-agent flow from Step 3.\n\n---\n\n## What This Skill Is NOT\n\n- **Not competitor monitoring** — use `competitor-intel` for tracking competitors\n- **Not a company deep dive** — use `company-deep-dive` for research without attendees\n- **Not a CRM** — gathers web intelligence, doesn't manage contacts or pipelines\n- **Not a calendar app** — reads events for context but doesn't manage them\n\n---\n\n## Error Handling\n\nSee `references/nimble-playbook.md` for the standard error table. Skill-specific errors:\n\n- **Person not found:** Try name variations (full, first+last, with company). If still\n nothing: \"Couldn't find public info on [Name]. Can you share their title or LinkedIn?\"\n- **Ambiguous name:** Present top candidates with company/title context and ask.\n- **Empty company results:** Note it and focus on attendee-level findings.\n"
}SHA-256: 8b1ad749450d0a971d26d1f1efb29b89dcace51b00fd9c887638bcad9800c1e4