crm-onboardinglisted
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'],