with one click
officecrm-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.
// Manage contacts, companies, deals, and relationships. Use when adding contacts, logging interactions, or working with CRM data to prevent duplicates and maintain data quality.
Manage calendar events, check conflicts, handle scheduling from emails. Use when adding events or coordinating meetings to ensure proper timezone handling and conflict detection.
Handle email tasks (checking inbox, drafting replies, managing threads, adding events to calendar). Use when working with emails to prevent common mistakes like broken threading or missing recipients.
Set up your personal productivity style and preferences. Use when you first install office or want to customize your workflow patterns.
| 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. |
Use this skill ANY time you:
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.
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
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"
)
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:
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 statusmcp__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/domainmcp__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 dealsUse these standard stages for deals:
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"
)
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
)
Track these as deals:
Don't track as deals:
When backfilling CRM from email history:
Based on user's contactTypes setting:
Professional:
Personal:
Mixed:
# 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")
# Missing valuable context
mcp__pagen__add_contact(
name="Jane Smith",
email="jane@bigcorp.com"
# Should include company_name="BigCorp"!
)
# 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."
)
# Someone asks about consulting work - this is a deal!
# Don't just log it as an interaction
# Create a deal to track the opportunity
# If user disabled auto-logging, only log:
# - Significant milestones
# - Explicit user request
# - Deal-related interactions
Minimal:
Standard:
Detailed:
Include (scaled to detailLevel):
Include (scaled to detailLevel):
When email-management skill identifies a new contact:
Before adding to CRM, ask yourself:
Remember: The CRM is only valuable if the data is clean and contextual. Quality over quantity, always.
You're managing CRM well when: