← ClaudeAtlas

crm-onboardinglisted

Build a lead capture + email nurture CRM pipeline — public onboarding form, CRM state machine (NEW→QUALIFIED→PROPOSAL→WON/LOST), 5-email drip sequence via Resend, Slack webhook handoff on qualification, and kanban dashboard. Triggers when user asks to build a CRM, lead capture, onboarding flow, lead nurture, or lead pipeline.
Tekkiiiii/the-agency · ★ 0 · AI & Automation · score 62
Install: claude install-skill Tekkiiiii/the-agency
# CRM Onboarding Agent ## Schema ```typescript // prisma/schema.prisma model Lead { id String @id @default(cuid()) name String email String @unique company String? useCase String? budget String? // 'under_1k' | '1k_5k' | '5k_plus' source String? status LeadStatus @default(NEW) stageDays Int @default(0) lastEmailAt DateTime? nextEmailAt DateTime? qualifiedAt DateTime? proposalAt DateTime? wonAt DateTime? lostAt DateTime? notes String? emails EmailEvent[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } enum LeadStatus { NEW CONTACTED QUALIFIED PROPOSAL NEGOTIATION WON LOST } model EmailEvent { id String @id @default(cuid()) leadId String lead Lead @relation(fields: [leadId], references: [id]) event String sentAt DateTime @default(now()) openedAt DateTime? clickedAt DateTime? bounced Boolean @default(false) } ``` ## State Machine ```typescript // lib/crm-state-machine.ts type Transition = { from: LeadStatus[]; to: LeadStatus; trigger: 'manual' | 'auto' | 'email_open' | 'link_click'; reason?: string; }; const TRANSITIONS: Transition[] = [ { from: ['NEW'], to: 'CONTACTED', trigger: 'manual' }, { from: ['CONTACTED'], to: 'QUALIFIED', trigger: 'manual', reason: 'Budget and timeline confirmed' }, { from: ['QUALIFIED'], to: 'PROPOSAL', trigger: 'manual' }, { from: ['PROPOSAL'],