crm-email

Classifies Gmail messages and routes extracted CRM activity to Airtable and Slack.

Updated Mar 3, 2026
One-click install
npx skills add https://github.com/dylanpoler-a11y/poler-team-website --skill crm-email-dylanpoler-a11y
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: crm-email
Source: https://github.com/dylanpoler-a11y/poler-team-website/tree/main/.claude/skills/crm-email
Command: npx skills add https://github.com/dylanpoler-a11y/poler-team-website --skill crm-email-dylanpoler-a11y

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Inbound and sent email contains client conversations, deal signals, deadlines, and attachments that never make it into the CRM, forcing teams to manually log activity and risking lost follow-ups on consulting deals. ## Core Features & Use Cases - Body-first email classification: Uses Claude Sonnet to read each email body and decide which consulting clients, deals, and listings are discussed, with participant matching as a secondary signal. - Automated CRM writes: Creates and updates Airtable records (Consulting Clients, Deals, Contacts, Tasks, Activity, Listing Notes) including auto-stage moves, deal value updates, and task creation from stated deadlines. - Slack notifications and review queue: Pings each client's owner with detailed write summaries, queues overnight digests, and flags ambiguous threads as CRM_NEEDS_REVIEW for daily audit. - Use Case: A team member forwards a client thread about a hotel deal; the cron extracts the referenced companies, appends a continuation note to the existing thread's activity rows, creates a task for the stated deadline, and pings the deal owner in Slack within five minutes. ## Quick Start Ask Claude Code to review or modify the email-to-CRM classification rules in this skill and mirror the changes in api/cron/process-emails.js.

Frequently Asked Questions about crm-email

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I automatically log Gmail emails to Airtable CRM records?

Run a cron job that fetches Gmail messages, uses an LLM to extract which clients and deals each email discusses, then writes notes, tasks, and attachments to the matching Airtable records. This skill defines that pipeline using a Vercel cron, Claude Sonnet, and Airtable tables.

How does the email classification decide which CRM record to write to?

Classification is body-first: Sonnet reads each email body and identifies referenced consulting clients and listings before participant matching runs. Participant matches act as a secondary signal, and real-estate Lead matches are always dropped because other pipelines own Lead creation.

Can this pipeline handle email threads with multiple replies?

Yes, thread continuity uses the Gmail threadId as a dedup key so each thread gets one activity row. Replies to an already-linked thread append dated continuation notes automatically, bypassing confidence gating and re-classification.

What happens when an email cannot be matched to any CRM record?

Emails from team members with no match are labeled CRM_NEEDS_REVIEW and trigger a Slack ping within five minutes. A daily 23:00 UTC audit re-runs extraction on stalled review threads and surfaces still-ambiguous ones in a Slack digest.

Does the cron create real-estate leads from inbound emails?

No, the cron is consulting-only and never creates or updates real-estate Leads. Lead creation is owned by separate pipelines such as the website form handler, Facebook lead webhook, CINC sync, and MLS feed, whose notification emails are filtered at fetch.