office:crm-management
Manage contacts, companies, deals, and relationships. Use when adding contacts, logging interactions, or working with CRM data to prevent duplicates and maintain data quality.
$ インストール
git clone https://github.com/harperreed/office-admin-claude /tmp/office-admin-claude && cp -r /tmp/office-admin-claude/skills/crm-management ~/.claude/skills/office-admin-claude// tip: Run this command in your terminal to install the skill
name: office:crm-management description: Manage contacts, companies, deals, and relationships. Use when adding contacts, logging interactions, or working with CRM data to prevent duplicates and maintain data quality.
Office Admin CRM Management
When to Use This Skill
Use this skill ANY time you:
- Add contacts from emails or conversations
- Create or update deals
- Log interactions with people
- Search for existing contacts or companies
- Work with relationships between contacts
- Backfill CRM data from email history
- Need to check if a contact already exists
User CRM Preferences
Load user preferences from ~/.claude/office-admin-config.json:
{
"crm": {
"contactTypes": "professional" | "personal" | "mixed",
"detailLevel": "minimal" | "standard" | "detailed",
"autoLogInteractions": true | false,
"trackRelationships": true | false
}
}
Adapt your CRM workflow to match these preferences.
Core Principles
1. Always Check Before Adding
NEVER add a contact or company without checking if they already exist first.
# WRONG - adds without checking
mcp__pagen__add_contact(name="John Doe", email="john@example.com")
# RIGHT - check first
mcp__pagen__find_contacts(query="john@example.com")
# Only add if not found
2. Associate Contacts with Companies
When you know someone's company, ALWAYS link them:
# Add company first (if needed)
mcp__pagen__add_company(
name="Acme Corp",
domain="acme.com",
industry="Technology"
)
# Then add contact with company association
mcp__pagen__add_contact(
name="John Doe",
email="john@example.com",
company_name="Acme Corp",
phone="+1-555-0100"
)
3. Log Meaningful Interactions
After ANY significant email exchange, meeting, or conversation, log it (if user has autoLogInteractions enabled):
mcp__pagen__log_contact_interaction(
contact_id="abc-123",
note="Discussed Q4 partnership. They're interested in our AI tool. Follow up after Thanksgiving.",
interaction_date="2025-11-22"
)
Adjust detail level based on user's detailLevel preference:
- Minimal: Just key facts
- Standard: Context about interaction
- Detailed: Thorough notes with quotes, decisions, next steps
Available CRM Tools
Core Tools
mcp__pagen__add_company(name, domain, industry, notes)- Add new companymcp__pagen__add_contact(name, email, company_name, phone, notes)- Add new contactmcp__pagen__update_contact(id, name, email, phone, notes)- Update existing contactmcp__pagen__create_deal(title, company_name, amount, stage, contact_name, initial_note, expected_close_date, currency)- Create business opportunitymcp__pagen__update_deal(id, title, stage, amount, expected_close_date)- Update deal status
Search & Query Tools
mcp__pagen__query_crm(entity_type, query, filters, limit)- Universal search (contact/company/deal/relationship)mcp__pagen__find_contacts(query, company_id, limit)- Search contacts by name/emailmcp__pagen__find_companies(query, limit)- Search companies by name/domain
Relationship & Interaction Tools
mcp__pagen__log_contact_interaction(contact_id, note, interaction_date)- Log interactionsmcp__pagen__link_contacts(contact_id_1, contact_id_2, relationship_type, context)- Connect contactsmcp__pagen__find_contact_relationships(contact_id, relationship_type)- View relationshipsmcp__pagen__add_deal_note(deal_id, content)- Add notes to deals
Deal Stages
Use these standard stages for deals:
- prospecting - Initial conversations, exploring possibilities
- qualification - Determining if it's a real opportunity with potential
- proposal - Active proposal or pitch in progress
- negotiation - Terms being discussed, getting close
- closed_won - Deal completed successfully
- closed_lost - Deal didn't happen (still valuable to track why)
Workflow: Adding Contact from Email
When processing an email with a new person:
# 1. Check if contact exists
mcp__pagen__find_contacts(query="person@example.com")
# 2. If not found, extract info from email:
# - Full name
# - Email address
# - Company (if mentioned)
# - Phone (if in signature)
# - Context about them (adapt detail level to user's preference)
# 3. Check if company exists (if applicable)
mcp__pagen__find_companies(query="Example Corp")
# 4. Add company if needed
mcp__pagen__add_company(
name="Example Corp",
domain="example.com",
industry="Technology",
notes="[Context based on user's detailLevel preference]"
)
# 5. Add contact with company association
mcp__pagen__add_contact(
name="Jane Smith",
email="jane@example.com",
company_name="Example Corp",
phone="+1-555-0200",
notes="[Context based on user's detailLevel preference]"
)
# 6. Log the interaction (if autoLogInteractions enabled)
mcp__pagen__log_contact_interaction(
contact_id="<returned_id>",
note="[Detail based on user's detailLevel preference]",
interaction_date="2025-11-22"
)
# 7. Track relationships (if trackRelationships enabled)
# If they mention knowing someone else in your CRM:
mcp__pagen__link_contacts(
contact_id_1="<jane_id>",
contact_id_2="<bob_id>",
relationship_type="colleague",
context="Jane mentioned working with Bob at previous company"
)
Workflow: Creating a Deal
When you identify a business opportunity:
# 1. Ensure contact and company exist (see above)
# 2. Create the deal
mcp__pagen__create_deal(
title="AI Consulting Project - Example Corp",
company_name="Example Corp",
contact_name="Jane Smith",
stage="prospecting",
amount=50000, # in cents
currency="USD",
expected_close_date="2026-03-01",
initial_note="[Detail based on user's detailLevel preference]"
)
# 3. Log updates as deal progresses
mcp__pagen__add_deal_note(
deal_id="<deal_id>",
content="[Detail based on user's detailLevel preference]"
)
# 4. Update deal stage when it changes
mcp__pagen__update_deal(
id="<deal_id>",
stage="proposal",
amount=75000 # updated after scope discussion
)
What Counts as a "Deal"?
Track these as deals:
- ✅ Consulting or advisory opportunities
- ✅ Speaking engagements with compensation
- ✅ Book publishing opportunities
- ✅ Partnership or collaboration opportunities
- ✅ Investment opportunities
- ✅ Real estate transactions
- ✅ Major purchases or sales
- ✅ Sponsorships (being a sponsor or receiving sponsorship)
Don't track as deals:
- ❌ Social lunches with no business angle
- ❌ Informational coffee chats
- ❌ Personal favors or introductions
- ❌ Newsletter subscriptions
- ❌ Generic networking
Email Backfill Best Practices
When backfilling CRM from email history:
- Work in time-bounded batches - Process 1-2 months at a time
- Start with SENT emails - You're usually the initiator, so sent emails have better signal
- Then do INBOX - Catch incoming opportunities you might have missed
- Skip noise - Ignore newsletters, receipts, automated emails
- Focus on humans - Only add real people they interact with
- Log context - Include what was discussed, not just "sent email"
- Check for dupes - Always search before adding
- Respect detailLevel - Match note detail to user's preference
Contact Types and Filtering
Based on user's contactTypes setting:
Professional:
- Focus on work relationships
- Track company associations carefully
- Emphasize business context in notes
- Create deals for opportunities
Personal:
- Focus on personal relationships
- Company associations optional
- Emphasize personal context (how you met, shared interests)
- Deals less common
Mixed:
- Handle both types
- Clearly distinguish in notes which category
- Be flexible with detail level
- Track both business and personal context
Common Mistakes to Avoid
❌ Adding without checking
# This creates duplicates!
mcp__pagen__add_contact(name="Bob Jones", email="bob@test.com")
mcp__pagen__add_contact(name="Bob Jones", email="bob@test.com")
❌ Not associating with company
# Missing valuable context
mcp__pagen__add_contact(
name="Jane Smith",
email="jane@bigcorp.com"
# Should include company_name="BigCorp"!
)
❌ Wrong level of detail
# User has detailLevel: "minimal" but you write:
mcp__pagen__log_contact_interaction(
contact_id="abc",
note="Had extensive discussion about their company's AI strategy including their plans for Q1 implementation of LLM-based customer support, concerns about hallucinations, budget constraints around $50k, and follow-up scheduled for next Tuesday at 2pm to review proposal draft..."
)
# Should be:
mcp__pagen__log_contact_interaction(
contact_id="abc",
note="Discussed AI strategy. Follow up Tue 2pm with proposal."
)
❌ Not tracking deals
# Someone asks about consulting work - this is a deal!
# Don't just log it as an interaction
# Create a deal to track the opportunity
❌ Over-logging when autoLogInteractions is false
# If user disabled auto-logging, only log:
# - Significant milestones
# - Explicit user request
# - Deal-related interactions
Data Quality Guidelines
Good Contact Notes (based on detailLevel)
Minimal:
- How you met
- Their role or what they do
- One-line context
Standard:
- How you met
- What they're interested in
- Current conversation or project
- Key personal detail (timezone, etc.)
Detailed:
- Comprehensive background
- Detailed conversation history
- Personal preferences and patterns
- Relationship mapping
- Next steps and follow-ups
Good Company Notes
Include (scaled to detailLevel):
- Industry or sector
- Company size if relevant
- What they do
- Context about the relationship
Good Interaction Notes
Include (scaled to detailLevel):
- What was discussed
- Outcomes or decisions
- Next steps or follow-ups
- Date of interaction
Integration with Email Skill
When email-management skill identifies a new contact:
- Automatically trigger CRM workflow
- Check for existing contact
- Add if new (respecting CRM preferences)
- Log interaction if enabled
- Return to email workflow
Summary Checklist
Before adding to CRM, ask yourself:
- ☐ Did I check user's CRM preferences from config?
- ☐ Did I search to see if this contact already exists?
- ☐ Did I search to see if their company already exists?
- ☐ Did I include company association if I know it?
- ☐ Did I match the user's preferred detail level?
- ☐ Is autoLogInteractions enabled? Should I log this?
- ☐ Is this a deal I should be tracking?
- ☐ Should I track relationships to other contacts?
- ☐ Did I include phone number if available?
Remember: The CRM is only valuable if the data is clean and contextual. Quality over quantity, always.
Success Criteria
You're managing CRM well when:
- No duplicate contacts are created
- Contact notes match user's preferred detail level
- Interactions are logged appropriately (not too much, not too little)
- Deals are tracked consistently
- Relationships are mapped when user has that enabled
- Integration with email workflow is seamless
Repository
