@growthub/cli 0.3.53 → 0.3.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/worker-kits/growthub-ai-website-cloner-v1/.env.example +7 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/QUICKSTART.md +116 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/NEW-CLIENT.md +22 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/_template/brand-kit.md +27 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/growthub/brand-kit.md +26 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/bundles/growthub-ai-website-cloner-v1.json +53 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/ai-website-cloner-fork-integration.md +118 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/design-token-system.md +135 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/multi-phase-pipeline.md +129 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/parallel-builder-dispatch.md +103 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/clone-brief-sample.md +54 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/component-spec-sample.md +123 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/platform-handoff-sample.md +102 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/visual-qa-sample.md +119 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/growthub-meta/README.md +71 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/growthub-meta/kit-standard.md +47 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/kit.json +105 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/output/README.md +26 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/output-standards.md +75 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/runtime-assumptions.md +70 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/check-deps.sh +50 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/clone-fork.sh +66 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/verify-env.mjs +78 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/skills.md +186 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/asset-manifest.md +57 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/builder-dispatch-plan.md +92 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/clone-brief.md +59 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/component-spec.md +124 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/design-token-extraction.md +89 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/platform-handoff.md +114 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/reconnaissance-report.md +77 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/visual-qa-checklist.md +107 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/validation-checklist.md +76 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/workers/ai-website-cloner-operator/CLAUDE.md +256 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/.env.example +40 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/QUICKSTART.md +114 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/brands/NEW-CLIENT.md +42 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/brands/_template/brand-kit.md +49 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/brands/growthub/brand-kit.md +50 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/bundles/growthub-open-montage-studio-v1.json +55 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/cms-node-bridge.md +152 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/open-montage-fork-integration.md +120 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/pipeline-reference.md +147 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/provider-adapter-layer.md +105 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/cms-node-video-gen-sample.md +109 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/pipeline-selection-sample.md +67 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/platform-ready-handoff-sample.md +101 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/video-production-brief-sample.md +68 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/growthub-meta/README.md +7 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/growthub-meta/kit-standard.md +45 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/kit.json +107 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/output/README.md +34 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/output-standards.md +79 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/runtime-assumptions.md +86 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/setup/check-deps.sh +43 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/setup/clone-fork.sh +53 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/setup/verify-env.mjs +102 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/skills.md +254 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/asset-tracking.md +46 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/cms-node-pipeline-mapping.md +64 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/generation-batch-plan.md +70 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/pipeline-selection-brief.md +67 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/platform-ready-execution-handoff.md +103 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/prompt-matrix.md +48 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/provider-selection-brief.md +86 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/review-qa-checklist.md +59 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/scene-plan.md +65 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/video-production-brief.md +58 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/validation-checklist.md +46 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/workers/open-montage-studio-operator/CLAUDE.md +304 -0
- package/assets/worker-kits/growthub-postiz-social-v1/.env.example +18 -0
- package/assets/worker-kits/growthub-postiz-social-v1/QUICKSTART.md +136 -0
- package/assets/worker-kits/growthub-postiz-social-v1/brands/NEW-CLIENT.md +67 -0
- package/assets/worker-kits/growthub-postiz-social-v1/brands/_template/brand-kit.md +120 -0
- package/assets/worker-kits/growthub-postiz-social-v1/brands/growthub/brand-kit.md +117 -0
- package/assets/worker-kits/growthub-postiz-social-v1/bundles/growthub-postiz-social-v1.json +52 -0
- package/assets/worker-kits/growthub-postiz-social-v1/docs/ai-caption-layer.md +118 -0
- package/assets/worker-kits/growthub-postiz-social-v1/docs/bullmq-queue-layer.md +157 -0
- package/assets/worker-kits/growthub-postiz-social-v1/docs/platform-coverage.md +97 -0
- package/assets/worker-kits/growthub-postiz-social-v1/docs/postiz-fork-integration.md +143 -0
- package/assets/worker-kits/growthub-postiz-social-v1/examples/analytics-brief-sample.md +125 -0
- package/assets/worker-kits/growthub-postiz-social-v1/examples/client-proposal-sample.md +127 -0
- package/assets/worker-kits/growthub-postiz-social-v1/examples/content-calendar-sample.md +75 -0
- package/assets/worker-kits/growthub-postiz-social-v1/examples/social-campaign-sample.md +104 -0
- package/assets/worker-kits/growthub-postiz-social-v1/growthub-meta/README.md +128 -0
- package/assets/worker-kits/growthub-postiz-social-v1/growthub-meta/kit-standard.md +113 -0
- package/assets/worker-kits/growthub-postiz-social-v1/kit.json +104 -0
- package/assets/worker-kits/growthub-postiz-social-v1/output/README.md +56 -0
- package/assets/worker-kits/growthub-postiz-social-v1/output-standards.md +127 -0
- package/assets/worker-kits/growthub-postiz-social-v1/runtime-assumptions.md +159 -0
- package/assets/worker-kits/growthub-postiz-social-v1/setup/check-deps.sh +117 -0
- package/assets/worker-kits/growthub-postiz-social-v1/setup/clone-fork.sh +83 -0
- package/assets/worker-kits/growthub-postiz-social-v1/setup/verify-env.mjs +99 -0
- package/assets/worker-kits/growthub-postiz-social-v1/skills.md +277 -0
- package/assets/worker-kits/growthub-postiz-social-v1/templates/analytics-brief.md +123 -0
- package/assets/worker-kits/growthub-postiz-social-v1/templates/caption-copy-deck.md +127 -0
- package/assets/worker-kits/growthub-postiz-social-v1/templates/client-proposal.md +139 -0
- package/assets/worker-kits/growthub-postiz-social-v1/templates/content-calendar.md +65 -0
- package/assets/worker-kits/growthub-postiz-social-v1/templates/platform-publishing-plan.md +112 -0
- package/assets/worker-kits/growthub-postiz-social-v1/templates/scheduling-manifest.md +83 -0
- package/assets/worker-kits/growthub-postiz-social-v1/templates/social-campaign-brief.md +111 -0
- package/assets/worker-kits/growthub-postiz-social-v1/validation-checklist.md +79 -0
- package/assets/worker-kits/growthub-postiz-social-v1/workers/postiz-social-operator/CLAUDE.md +287 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/.env.example +15 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/QUICKSTART.md +90 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/brands/NEW-CLIENT.md +57 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/brands/_template/brand-kit.md +88 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/brands/growthub/brand-kit.md +92 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/bundles/growthub-twenty-crm-v1.json +56 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/docs/api-and-webhooks.md +296 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/docs/data-model-layer.md +172 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/docs/twenty-fork-integration.md +213 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/crm-playbook-sample.md +172 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/crm-setup-sample.md +100 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/lead-enrichment-sample.md +117 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/pipeline-automation-sample.md +132 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/growthub-meta/README.md +114 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/growthub-meta/kit-standard.md +61 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/kit.json +108 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/output/README.md +46 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/output-standards.md +175 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/runtime-assumptions.md +150 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/setup/check-deps.sh +56 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/setup/clone-fork.sh +77 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/setup/verify-env.mjs +105 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/skills.md +401 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/api-query-plan.md +179 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/crm-playbook.md +155 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/crm-setup-brief.md +94 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/custom-object-design.md +115 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/data-model-design.md +112 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/enrichment-field-map.md +100 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/import-mapping.md +139 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/integration-handoff.md +190 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/lead-enrichment-pipeline.md +128 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/pipeline-automation-brief.md +88 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/webhook-integration-spec.md +129 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/workspace-config-checklist.md +129 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/validation-checklist.md +115 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/workers/twenty-crm-operator/CLAUDE.md +310 -0
- package/package.json +1 -1
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# CRM Playbook — Growthub (SAMPLE)
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-04-15
|
|
4
|
+
**Kit:** `growthub-twenty-crm-v1`
|
|
5
|
+
**Version:** v1
|
|
6
|
+
|
|
7
|
+
> **Note:** This is a sample output. Adapt all procedures to the actual client context.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## ABOUT THIS PLAYBOOK
|
|
12
|
+
|
|
13
|
+
This playbook is the operating manual for the Growthub Twenty CRM workspace. It defines roles, daily workflows, pipeline procedures, and data hygiene rules. All four team members with CRM access must read this before their first session.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 1. TEAM ROLES AND PERMISSIONS
|
|
18
|
+
|
|
19
|
+
| Role | Name | Access level | Responsibilities |
|
|
20
|
+
|---|---|---|---|
|
|
21
|
+
| CRM Admin | Antonio Romero | Full access | Object config, member management, integration maintenance, data hygiene |
|
|
22
|
+
| Sales Rep | [Rep 1] | Create/edit own records | Lead creation, pipeline updates, notes |
|
|
23
|
+
| Sales Rep | [Rep 2] | Create/edit own records | Lead creation, pipeline updates, notes |
|
|
24
|
+
| CS Manager | [CS] | Read/edit post-close | Customer success tracking, renewal notes |
|
|
25
|
+
|
|
26
|
+
**Onboarding new members:** CRM Admin creates the workspace member in Settings > Members, assigns the correct role, and shares this playbook.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 2. DAILY WORKFLOW
|
|
31
|
+
|
|
32
|
+
### Sales rep daily workflow (10–15 min)
|
|
33
|
+
|
|
34
|
+
1. Log in to Twenty and open **Pipeline Board** view (pre-filtered: open opportunities, my records)
|
|
35
|
+
2. Review new leads assigned to you in the LEAD stage — move any that are ICP-qualified to QUALIFIED
|
|
36
|
+
3. For every call or email from today: add a Note on the Person record (what you discussed, next step, date)
|
|
37
|
+
4. Check Tasks due today — complete each or reschedule with a Note explaining the delay
|
|
38
|
+
5. End of day: every new contact from today's outreach must be in Twenty before logging off
|
|
39
|
+
|
|
40
|
+
**Expected daily time investment:** 10–15 minutes
|
|
41
|
+
|
|
42
|
+
### CRM Admin daily workflow (5–10 min)
|
|
43
|
+
|
|
44
|
+
1. Check import error log if enrichment pipeline ran overnight
|
|
45
|
+
2. Spot-check 3 records for data quality (no blank required fields, company linked, stage current)
|
|
46
|
+
3. Check workflow logs (Settings > Workflows) for any automation failures
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 3. PIPELINE MANAGEMENT PROCEDURES
|
|
51
|
+
|
|
52
|
+
### Creating a new Opportunity
|
|
53
|
+
|
|
54
|
+
1. Navigate to Opportunities → click `+ New`
|
|
55
|
+
2. Fill in: **Name** (e.g. "Acme Corp — Growthub Platform"), **Stage** (start at LEAD), **Amount**, **Close Date**
|
|
56
|
+
3. Link **Point of Contact** (Person) and **Company**
|
|
57
|
+
4. Set **Assignee** to yourself or the responsible rep
|
|
58
|
+
5. Add a first Note: where did this lead come from, what is the hook?
|
|
59
|
+
|
|
60
|
+
### Moving a stage
|
|
61
|
+
|
|
62
|
+
1. Open the Opportunity → click the stage badge at the top
|
|
63
|
+
2. Select the new stage
|
|
64
|
+
3. Add a Note immediately explaining what happened and what the next step is
|
|
65
|
+
4. If moving to **CLOSED_WON**: confirm Amount and Close Date are accurate before saving
|
|
66
|
+
5. If moving to **CLOSED_LOST**: add a Note with the reason (e.g. "No budget Q2", "Chose competitor", "Ghosted after demo")
|
|
67
|
+
|
|
68
|
+
**Pipeline stages and exit criteria:**
|
|
69
|
+
|
|
70
|
+
| Stage | Exit criteria |
|
|
71
|
+
|---|---|
|
|
72
|
+
| LEAD | ICP fit confirmed + email opened or replied |
|
|
73
|
+
| QUALIFIED | Discovery call complete, pain confirmed, budget range known |
|
|
74
|
+
| DEMO | Product demo complete, specific use case validated |
|
|
75
|
+
| PROPOSAL | Commercial terms sent or under negotiation |
|
|
76
|
+
| CLOSED_WON | Contract signed, payment confirmed |
|
|
77
|
+
| CLOSED_LOST | Explicitly lost or no response after 3 follow-ups past close date |
|
|
78
|
+
|
|
79
|
+
### Weekly pipeline review (team — 30 min)
|
|
80
|
+
|
|
81
|
+
**View:** Pipeline Board filtered to QUALIFIED + DEMO + PROPOSAL
|
|
82
|
+
**Sort:** Close Date ascending
|
|
83
|
+
|
|
84
|
+
For each open opportunity in the top 10 by close date:
|
|
85
|
+
- Is the stage accurate?
|
|
86
|
+
- When was the last Note added? (if >7 days, flag as stale)
|
|
87
|
+
- What is the next action and who owns it?
|
|
88
|
+
- Is there a Task assigned for the next action?
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 4. ENRICHMENT CADENCE
|
|
93
|
+
|
|
94
|
+
**Schedule:** Weekly on Monday at 6 AM (automated cron job)
|
|
95
|
+
|
|
96
|
+
**What runs automatically:**
|
|
97
|
+
- Apollo enrichment job pulls the latest saved search export and runs a merge import into Twenty
|
|
98
|
+
- New Person records are created; existing records are updated with latest enrichment data
|
|
99
|
+
|
|
100
|
+
**What to do if the enrichment job fails:**
|
|
101
|
+
1. CRM Admin checks the error log file `enrichment-errors.csv` (stored in the enrichment job output)
|
|
102
|
+
2. Review skipped records — most common reason is missing email
|
|
103
|
+
3. Manually add missing contacts from Apollo if volume is small (< 20 records)
|
|
104
|
+
4. Contact [developer] if the job fails to run at all (check cron logs)
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 5. REPORTING AND DASHBOARD INSTRUCTIONS
|
|
109
|
+
|
|
110
|
+
### Pipeline health view (built in Twenty)
|
|
111
|
+
|
|
112
|
+
**Filter:** Opportunities where stage IN [QUALIFIED, DEMO, PROPOSAL]
|
|
113
|
+
**Group by:** Stage
|
|
114
|
+
**Sort:** Close Date ascending
|
|
115
|
+
|
|
116
|
+
**Reading the view:**
|
|
117
|
+
- Count in each stage = pipeline coverage (healthy = more in LEAD/QUALIFIED than PROPOSAL)
|
|
118
|
+
- Total amount in DEMO + PROPOSAL = near-term revenue signal
|
|
119
|
+
- Opportunities with last Note > 14 days old = stale — review in weekly pipeline call
|
|
120
|
+
|
|
121
|
+
### Weekly metrics to track (manual, 5 min)
|
|
122
|
+
|
|
123
|
+
Count from Twenty each Friday:
|
|
124
|
+
- New Opportunities created this week
|
|
125
|
+
- Opportunities moved to CLOSED_WON this week
|
|
126
|
+
- Opportunities moved to CLOSED_LOST this week + note the loss reasons
|
|
127
|
+
- Opportunities moved to DEMO this week (pipeline velocity indicator)
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 6. ESCALATION AND HANDOFF PROTOCOLS
|
|
132
|
+
|
|
133
|
+
### Record dispute (wrong data)
|
|
134
|
+
|
|
135
|
+
1. Do **not** delete the record
|
|
136
|
+
2. Add a Note: "Data quality issue — [describe problem]" and tag `@antonio`
|
|
137
|
+
3. CRM Admin reviews and resolves within 2 business days
|
|
138
|
+
|
|
139
|
+
### Integration failure
|
|
140
|
+
|
|
141
|
+
1. Check Settings > Workflows for automation errors
|
|
142
|
+
2. Check enrichment error log file
|
|
143
|
+
3. If unresolved: email [developer contact] with the error message and timestamp
|
|
144
|
+
4. CRM Admin documents the gap in a Note on the affected object if data is missing
|
|
145
|
+
|
|
146
|
+
### Offboarding a team member
|
|
147
|
+
|
|
148
|
+
1. CRM Admin reassigns all open Opportunities from the departing member to the remaining rep
|
|
149
|
+
2. Reassigns all open Tasks
|
|
150
|
+
3. Deactivates the workspace member (Settings > Members > Deactivate)
|
|
151
|
+
4. Revokes any API tokens the member had access to
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## 7. MAINTENANCE AND DATA HYGIENE CHECKLIST
|
|
156
|
+
|
|
157
|
+
**Weekly (CRM Admin — 15 min):**
|
|
158
|
+
- [ ] Review import error log — resolve skipped records
|
|
159
|
+
- [ ] Check stale Opportunities (no update in 14 days) — flag for reps to update
|
|
160
|
+
- [ ] Confirm all Closed Won / Closed Lost opportunities have a loss/win reason Note
|
|
161
|
+
|
|
162
|
+
**Monthly (CRM Admin — 30 min):**
|
|
163
|
+
- [ ] Search for duplicate Person records (same email) — merge duplicates
|
|
164
|
+
- [ ] Search for Companies with no linked Persons — flag for review or archive
|
|
165
|
+
- [ ] Review workflow logs for repeated failures — escalate to developer if pattern
|
|
166
|
+
- [ ] Update this playbook if any procedures have changed
|
|
167
|
+
|
|
168
|
+
**Quarterly (CRM Admin + head of sales — 60 min):**
|
|
169
|
+
- [ ] Review pipeline stage definitions — do they still match how we sell?
|
|
170
|
+
- [ ] Evaluate enrichment provider data quality — are enriched fields accurate?
|
|
171
|
+
- [ ] Review custom field usage — archive any fields the team stopped using
|
|
172
|
+
- [ ] Check if new automation opportunities exist based on team pain points
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# CRM Setup Brief — Growthub (SAMPLE)
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-04-15
|
|
4
|
+
**Operator:** `twenty-crm-operator`
|
|
5
|
+
**Kit:** `growthub-twenty-crm-v1`
|
|
6
|
+
**Mode:** `cloud`
|
|
7
|
+
|
|
8
|
+
> **Note:** This is a sample output illustrating the quality and format expected from this kit. Adapt all values to the actual client context.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. CLIENT CONTEXT AND CRM OBJECTIVE
|
|
13
|
+
|
|
14
|
+
**Client:** Growthub
|
|
15
|
+
**Industry:** B2B SaaS / Growth Platform
|
|
16
|
+
**Company size:** 12 employees
|
|
17
|
+
**CRM objective:** Build a structured outbound sales pipeline with automated lead enrichment from Apollo, Stripe event capture, and Intercom conversation logging.
|
|
18
|
+
|
|
19
|
+
**Why Twenty:**
|
|
20
|
+
- Open-source, MIT license — no vendor lock-in risk for a growing platform company
|
|
21
|
+
- TypeScript/React/NestJS stack matches Growthub's existing codebase — easier to self-host and extend
|
|
22
|
+
- REST and GraphQL APIs make it straightforward to build custom enrichment pipelines
|
|
23
|
+
- Custom object support handles the non-standard Growthub product-led-growth workflow
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 2. DEPLOYMENT MODE
|
|
28
|
+
|
|
29
|
+
**Selected mode:** `cloud`
|
|
30
|
+
**API URL:** `https://api.twenty.com`
|
|
31
|
+
**Environment:** production
|
|
32
|
+
|
|
33
|
+
**Prerequisites confirmed:**
|
|
34
|
+
- [x] Twenty workspace created at app.twenty.com
|
|
35
|
+
- [x] API token generated: `growthub-production` token (stored in `.env`)
|
|
36
|
+
- [x] `node setup/verify-env.mjs` exits 0 — connected to workspace "Growthub" (id: abc123)
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 3. TEAM SIZE AND USER ROLES
|
|
41
|
+
|
|
42
|
+
| Role | User | Permissions |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| CRM Admin | Antonio Romero | Full access |
|
|
45
|
+
| Sales Rep | [Sales Rep 1] | Create/edit Opportunities and Persons |
|
|
46
|
+
| Sales Rep | [Sales Rep 2] | Create/edit Opportunities and Persons |
|
|
47
|
+
| CS Manager | [CS Manager] | Read/edit Opportunities post-close |
|
|
48
|
+
|
|
49
|
+
**Total workspace members:** 4
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 4. DATA SOURCES AND VOLUME ESTIMATES
|
|
54
|
+
|
|
55
|
+
| Source | Object type | Estimated volume | Import method |
|
|
56
|
+
|---|---|---|---|
|
|
57
|
+
| Apollo CSV export | Person + Company | ~1,200 contacts, ~400 companies | CSV import |
|
|
58
|
+
| Stripe | Company + Note | ~50 new customers/month | Webhook (customer.created) |
|
|
59
|
+
| Intercom | Note | ~150 conversations/month | Webhook (conversation.created) |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 5. INTEGRATION SCOPE
|
|
64
|
+
|
|
65
|
+
| Integration | Direction | Priority |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| Apollo | Inbound enrichment | High |
|
|
68
|
+
| Stripe | Inbound webhook | High |
|
|
69
|
+
| Intercom | Inbound webhook | Medium |
|
|
70
|
+
| Slack | Outbound notification (Closed Won) | Low |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 6. GO-LIVE TIMELINE AND MILESTONES
|
|
75
|
+
|
|
76
|
+
| Milestone | Target date | Owner |
|
|
77
|
+
|---|---|---|
|
|
78
|
+
| Data model finalized | 2026-04-18 | Antonio (CRM Admin) |
|
|
79
|
+
| Initial Apollo import complete | 2026-04-20 | Antonio |
|
|
80
|
+
| Stripe webhook live | 2026-04-22 | Developer |
|
|
81
|
+
| Intercom webhook live | 2026-04-25 | Developer |
|
|
82
|
+
| Stage automations active | 2026-04-25 | Developer |
|
|
83
|
+
| Team onboarded | 2026-04-28 | Antonio |
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 7. SUCCESS CRITERIA
|
|
88
|
+
|
|
89
|
+
- [x] All 1,200 contacts imported and deduplicated against email
|
|
90
|
+
- [x] Pipeline visible with 6 stages (Lead → Closed Won/Lost)
|
|
91
|
+
- [x] 3 automations active (stage change → task creation, Closed Won → Slack notify, Intercom → Note)
|
|
92
|
+
- [x] Stripe enrichment running on customer.created event
|
|
93
|
+
- [x] All 4 team members onboarded and logging daily activity in the CRM
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## OPEN QUESTIONS
|
|
98
|
+
|
|
99
|
+
- [ ] Does the head of sales want round-robin assignment or territory-based routing?
|
|
100
|
+
- [ ] Should Intercom conversations be logged as Notes on Person or as a custom Activity object?
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Lead Enrichment Pipeline — Growthub (SAMPLE)
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-04-15
|
|
4
|
+
**Kit:** `growthub-twenty-crm-v1`
|
|
5
|
+
**Mode:** `cloud`
|
|
6
|
+
|
|
7
|
+
> **Note:** This is a sample output. Adapt all values to the actual client context.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. ENRICHMENT PROVIDER(S)
|
|
12
|
+
|
|
13
|
+
| Provider | Auth mechanism | Data tier | Primary use |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| Apollo | Bearer token | Person + Company | Outbound lead source |
|
|
16
|
+
| Clay | API key | Person + Company | Enrichment waterfall (email verification + firmographic) |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 2. SOURCE FIELDS PROVIDED
|
|
21
|
+
|
|
22
|
+
### Apollo — Person fields
|
|
23
|
+
|
|
24
|
+
| Provider field | Data type | Example value |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| `first_name` | string | `Jane` |
|
|
27
|
+
| `last_name` | string | `Doe` |
|
|
28
|
+
| `email` | string | `jane@acme.com` |
|
|
29
|
+
| `title` | string | `Head of Growth` |
|
|
30
|
+
| `seniority` | string | `director` |
|
|
31
|
+
| `linkedin_url` | string | `https://linkedin.com/in/janedoe` |
|
|
32
|
+
| `city` | string | `San Francisco` |
|
|
33
|
+
| `organization.name` | string | `Acme Corp` |
|
|
34
|
+
| `organization.website_url` | string | `https://acme.com` |
|
|
35
|
+
| `organization.estimated_num_employees` | integer | `250` |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 3. DEDUPLICATION STRATEGY
|
|
40
|
+
|
|
41
|
+
**Person dedup key:** `emails.primaryEmail`
|
|
42
|
+
**Company dedup key:** `domain`
|
|
43
|
+
**Secondary person key (when email unavailable):** `linkedInLink.url`
|
|
44
|
+
|
|
45
|
+
**Dedup behavior:**
|
|
46
|
+
- Match found → **merge** (update existing record with enriched fields, preserve existing data)
|
|
47
|
+
- No match found → **insert** (create new record)
|
|
48
|
+
- If both email and LinkedIn are absent → **skip and log** for manual review
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 4. IMPORT MODE
|
|
53
|
+
|
|
54
|
+
**Selected mode:** `merge-with-insert-fallback`
|
|
55
|
+
|
|
56
|
+
**Rationale:** Growthub has existing contacts from previous manual spreadsheet work. Merging ensures enrichment data layers on top without creating duplicates.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 5. IMPORT METHOD
|
|
61
|
+
|
|
62
|
+
**Method:** CSV import via Twenty UI (first batch), then GraphQL mutation batch (ongoing enrichment)
|
|
63
|
+
|
|
64
|
+
**Import sequence:**
|
|
65
|
+
1. Export Apollo contact list as CSV with all available fields selected
|
|
66
|
+
2. Clean CSV: lowercase all emails, strip `https://` and trailing slashes from domain field
|
|
67
|
+
3. Import Company records first (Settings > Companies > Import)
|
|
68
|
+
4. Import Person records second with company linking enabled
|
|
69
|
+
5. Run post-import audit
|
|
70
|
+
|
|
71
|
+
**Batch size recommendation:** 500 records per batch
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 6. FIELD MAPPING (SUMMARY)
|
|
76
|
+
|
|
77
|
+
| Source field | → | Twenty object | Twenty field | Transformation |
|
|
78
|
+
|---|---|---|---|---|
|
|
79
|
+
| `email` | → | `Person` | `emails.primaryEmail` | lowercase, trim |
|
|
80
|
+
| `first_name` | → | `Person` | `name.firstName` | none |
|
|
81
|
+
| `last_name` | → | `Person` | `name.lastName` | none |
|
|
82
|
+
| `title` | → | `Person` | `position` | none |
|
|
83
|
+
| `linkedin_url` | → | `Person` | `linkedInLink.url` | none |
|
|
84
|
+
| `city` | → | `Person` | `city` | none |
|
|
85
|
+
| `organization.name` | → | `Company` | `name` | none |
|
|
86
|
+
| `organization.website_url` | → | `Company` | `domain` | strip `https://` and trailing `/` |
|
|
87
|
+
| `organization.estimated_num_employees` | → | `Company` | `employees` | integer cast |
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 7. POST-IMPORT VALIDATION
|
|
92
|
+
|
|
93
|
+
| Check | Expected result | Actual result |
|
|
94
|
+
|---|---|---|
|
|
95
|
+
| Total Person records imported | ~1,200 | [fill after import] |
|
|
96
|
+
| Total Company records imported | ~400 | [fill after import] |
|
|
97
|
+
| Duplicate email check | 0 duplicates | [fill after import] |
|
|
98
|
+
| Company linkage rate | ≥ 90% | [fill after import] |
|
|
99
|
+
| Skipped records (no email) | < 5% | [fill after import] |
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 8. ERROR AND FAILURE HANDLING
|
|
104
|
+
|
|
105
|
+
| Error type | Behavior | Resolution |
|
|
106
|
+
|---|---|---|
|
|
107
|
+
| Invalid email format | Skip record, log to `enrichment-errors.csv` | Manual review and clean |
|
|
108
|
+
| Duplicate email (post-dedup) | Merge into existing record | Review merged record for accuracy |
|
|
109
|
+
| Missing company domain | Create Company with name only; flag for manual domain entry | Review flagged companies weekly |
|
|
110
|
+
| API rate limit hit | Pause 30 seconds, retry with smaller batch | Reduce to 250 records/batch |
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 9. UPDATE FREQUENCY
|
|
115
|
+
|
|
116
|
+
**Enrichment cadence:** Weekly on Monday mornings
|
|
117
|
+
**Trigger:** Apollo saves a new export on Sundays; enrichment job runs at 6 AM Monday via cron
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Pipeline Automation Brief — Growthub (SAMPLE)
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-04-15
|
|
4
|
+
**Kit:** `growthub-twenty-crm-v1`
|
|
5
|
+
**Mode:** `cloud`
|
|
6
|
+
|
|
7
|
+
> **Note:** This is a sample output. Adapt all values to the actual client context.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## AUTOMATION INVENTORY
|
|
12
|
+
|
|
13
|
+
| # | Automation name | Trigger | Action | Status |
|
|
14
|
+
|---|---|---|---|---|
|
|
15
|
+
| 1 | Lead Qualified — Assign Rep + Create Follow-Up Task | Stage changes to QUALIFIED | Assign owner, create Task | planned |
|
|
16
|
+
| 2 | Demo Scheduled — Notify Slack | Stage changes to DEMO | Send outbound webhook to Slack | planned |
|
|
17
|
+
| 3 | Closed Won — Create Customer Onboarding Task | Stage changes to CLOSED_WON | Create Task, update field | planned |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## AUTOMATION 1 — LEAD QUALIFIED: ASSIGN REP AND CREATE FOLLOW-UP TASK
|
|
22
|
+
|
|
23
|
+
**Purpose:** When a lead's stage changes to QUALIFIED, assign the opportunity to the next available sales rep (round-robin, two reps) and create a follow-up task due in 24 hours.
|
|
24
|
+
|
|
25
|
+
### Trigger
|
|
26
|
+
|
|
27
|
+
| Property | Value |
|
|
28
|
+
|---|---|
|
|
29
|
+
| Trigger type | `on_field_change` |
|
|
30
|
+
| Target object | `Opportunity` |
|
|
31
|
+
| Field | `stage` |
|
|
32
|
+
| Previous value | any (except QUALIFIED) |
|
|
33
|
+
| New value | `QUALIFIED` |
|
|
34
|
+
|
|
35
|
+
### Action sequence
|
|
36
|
+
|
|
37
|
+
| Step | Action type | Target | Parameters |
|
|
38
|
+
|---|---|---|---|
|
|
39
|
+
| 1 | `assign_owner` | `Opportunity` | Round-robin between [Sales Rep 1 ID] and [Sales Rep 2 ID] |
|
|
40
|
+
| 2 | `create_task` | `Person` (pointOfContact) | `title: "Follow up with [Person name]", dueAt: +24h, assignee: opportunity.assignee` |
|
|
41
|
+
| 3 | `update_field` | `Opportunity` | `qualifiedAt: now()` (custom date field) |
|
|
42
|
+
|
|
43
|
+
### Failure behavior
|
|
44
|
+
|
|
45
|
+
**If step 1 fails (assignment):** Assign to CRM Admin as fallback
|
|
46
|
+
**If step 2 fails (task creation):** Retry once after 60 seconds; if still failing, send in-app notification to CRM Admin
|
|
47
|
+
**If step 3 fails (field update):** Log error; non-critical, do not halt
|
|
48
|
+
|
|
49
|
+
### Monitoring
|
|
50
|
+
|
|
51
|
+
Check the automation execution log in Twenty > Settings > Workflows weekly. Expected volume: 5–15 triggers per week.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## AUTOMATION 2 — DEMO SCHEDULED: NOTIFY SLACK
|
|
56
|
+
|
|
57
|
+
**Purpose:** When a deal enters the DEMO stage, post a message to the #sales-pipeline Slack channel so the full team sees demo activity in real time.
|
|
58
|
+
|
|
59
|
+
### Trigger
|
|
60
|
+
|
|
61
|
+
| Property | Value |
|
|
62
|
+
|---|---|
|
|
63
|
+
| Trigger type | `on_field_change` |
|
|
64
|
+
| Target object | `Opportunity` |
|
|
65
|
+
| Field | `stage` |
|
|
66
|
+
| Previous value | `QUALIFIED` |
|
|
67
|
+
| New value | `DEMO` |
|
|
68
|
+
|
|
69
|
+
### Action sequence
|
|
70
|
+
|
|
71
|
+
| Step | Action type | Target | Parameters |
|
|
72
|
+
|---|---|---|---|
|
|
73
|
+
| 1 | `send_webhook` | Slack Incoming Webhook URL | See payload below |
|
|
74
|
+
|
|
75
|
+
**Slack payload:**
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"text": "🎯 Demo stage reached: *{{opportunity.name}}* — assigned to {{opportunity.assignee.name}}. Close date: {{opportunity.closeDate}}",
|
|
80
|
+
"channel": "#sales-pipeline"
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Failure behavior
|
|
85
|
+
|
|
86
|
+
**If webhook fails:** Retry 3× (5s, 15s, 45s). If all retries fail: log error and send in-app notification to CRM Admin. Non-critical — pipeline is not blocked.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## AUTOMATION 3 — CLOSED WON: CREATE ONBOARDING TASK
|
|
91
|
+
|
|
92
|
+
**Purpose:** When a deal is marked as CLOSED_WON, automatically create a customer onboarding task assigned to the CS Manager.
|
|
93
|
+
|
|
94
|
+
### Trigger
|
|
95
|
+
|
|
96
|
+
| Property | Value |
|
|
97
|
+
|---|---|
|
|
98
|
+
| Trigger type | `on_field_change` |
|
|
99
|
+
| Target object | `Opportunity` |
|
|
100
|
+
| Field | `stage` |
|
|
101
|
+
| Previous value | any |
|
|
102
|
+
| New value | `CLOSED_WON` |
|
|
103
|
+
|
|
104
|
+
### Action sequence
|
|
105
|
+
|
|
106
|
+
| Step | Action type | Target | Parameters |
|
|
107
|
+
|---|---|---|---|
|
|
108
|
+
| 1 | `create_task` | `Person` (pointOfContact) | `title: "Onboard [Person name] — [Company name]", dueAt: +3 days, assignee: [CS Manager ID]` |
|
|
109
|
+
| 2 | `update_field` | `Opportunity` | `closedAt: now()` (custom date field) |
|
|
110
|
+
| 3 | `send_webhook` | Slack Incoming Webhook | Post to #customer-success: "New customer: [Company name]" |
|
|
111
|
+
|
|
112
|
+
### Failure behavior
|
|
113
|
+
|
|
114
|
+
**If task creation fails:** Retry once; then send email notification to CS Manager directly
|
|
115
|
+
**If Slack webhook fails:** Retry 3×; if all fail, log — non-critical
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## AUTOMATION DESIGN DECISIONS
|
|
120
|
+
|
|
121
|
+
| Decision | Choice | Rationale |
|
|
122
|
+
|---|---|---|
|
|
123
|
+
| Assignment method | Round-robin (2 reps) | Equal load distribution; no territory segmentation needed at current team size |
|
|
124
|
+
| Slack notification trigger | Stage change to DEMO (not QUALIFIED) | QUALIFIED happens frequently (5–15/week); only DEMO warrants team visibility |
|
|
125
|
+
| Onboarding task assignee | CS Manager (fixed) | Single CS contact at current team size; revisit when team grows |
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## OPEN QUESTIONS
|
|
130
|
+
|
|
131
|
+
- [ ] Should the Closed Won Slack notification include the deal amount? (confirm with head of sales)
|
|
132
|
+
- [ ] What is the round-robin assignment rule when one rep is on leave — assign to the other rep only, or default to CRM Admin?
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Growthub Agent Worker Kit — Twenty CRM v1
|
|
2
|
+
|
|
3
|
+
**Kit ID:** `growthub-twenty-crm-v1`
|
|
4
|
+
**Version:** `1.0.0`
|
|
5
|
+
**Type:** `worker`
|
|
6
|
+
**Execution mode:** `export`
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## What this kit does
|
|
11
|
+
|
|
12
|
+
This kit gives an agent a self-contained environment for implementing, configuring, and operating Twenty CRM — the open-source Salesforce/Apollo alternative — as a growth stack foundation.
|
|
13
|
+
|
|
14
|
+
It packages:
|
|
15
|
+
- agent operating instructions
|
|
16
|
+
- a locked CRM methodology
|
|
17
|
+
- runtime and deployment assumptions
|
|
18
|
+
- API, webhook, and data model reference docs
|
|
19
|
+
- CRM implementation templates (12 templates)
|
|
20
|
+
- example output artifacts (4 complete samples)
|
|
21
|
+
- brand kit system
|
|
22
|
+
- output standards
|
|
23
|
+
- setup scripts for local-fork and cloud modes
|
|
24
|
+
- contributor metadata
|
|
25
|
+
|
|
26
|
+
The intended operator is a growth engineer, CRM consultant, or AI agent responsible for implementing Twenty CRM for a B2B team and building enrichment pipelines, pipeline automations, and integration handoffs on top of it.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Folder structure
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
growthub-twenty-crm-v1/
|
|
34
|
+
├── kit.json
|
|
35
|
+
├── bundles/
|
|
36
|
+
├── workers/
|
|
37
|
+
│ └── twenty-crm-operator/
|
|
38
|
+
│ └── CLAUDE.md
|
|
39
|
+
├── brands/
|
|
40
|
+
│ ├── _template/brand-kit.md
|
|
41
|
+
│ ├── growthub/brand-kit.md
|
|
42
|
+
│ └── NEW-CLIENT.md
|
|
43
|
+
├── setup/
|
|
44
|
+
│ ├── clone-fork.sh
|
|
45
|
+
│ ├── verify-env.mjs
|
|
46
|
+
│ └── check-deps.sh
|
|
47
|
+
├── templates/
|
|
48
|
+
│ ├── crm-setup-brief.md
|
|
49
|
+
│ ├── data-model-design.md
|
|
50
|
+
│ ├── lead-enrichment-pipeline.md
|
|
51
|
+
│ ├── pipeline-automation-brief.md
|
|
52
|
+
│ ├── webhook-integration-spec.md
|
|
53
|
+
│ ├── api-query-plan.md
|
|
54
|
+
│ ├── crm-playbook.md
|
|
55
|
+
│ ├── custom-object-design.md
|
|
56
|
+
│ ├── import-mapping.md
|
|
57
|
+
│ ├── workspace-config-checklist.md
|
|
58
|
+
│ ├── integration-handoff.md
|
|
59
|
+
│ └── enrichment-field-map.md
|
|
60
|
+
├── examples/
|
|
61
|
+
│ ├── crm-setup-sample.md
|
|
62
|
+
│ ├── lead-enrichment-sample.md
|
|
63
|
+
│ ├── pipeline-automation-sample.md
|
|
64
|
+
│ └── crm-playbook-sample.md
|
|
65
|
+
├── docs/
|
|
66
|
+
│ ├── twenty-fork-integration.md
|
|
67
|
+
│ ├── api-and-webhooks.md
|
|
68
|
+
│ └── data-model-layer.md
|
|
69
|
+
├── output/
|
|
70
|
+
│ └── README.md
|
|
71
|
+
├── growthub-meta/
|
|
72
|
+
│ ├── README.md
|
|
73
|
+
│ └── kit-standard.md
|
|
74
|
+
├── skills.md
|
|
75
|
+
├── output-standards.md
|
|
76
|
+
├── runtime-assumptions.md
|
|
77
|
+
├── validation-checklist.md
|
|
78
|
+
├── QUICKSTART.md
|
|
79
|
+
└── .env.example
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Activation
|
|
85
|
+
|
|
86
|
+
1. Export the kit via `growthub kit download growthub-twenty-crm-v1`.
|
|
87
|
+
2. Point the agent working directory at the expanded folder.
|
|
88
|
+
3. The agent reads `workers/twenty-crm-operator/CLAUDE.md`.
|
|
89
|
+
4. `skills.md` provides the working method for every session.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Supported output categories
|
|
94
|
+
|
|
95
|
+
- CRM setup brief
|
|
96
|
+
- data model design
|
|
97
|
+
- lead enrichment pipeline
|
|
98
|
+
- pipeline automation brief
|
|
99
|
+
- webhook integration spec
|
|
100
|
+
- API query plan
|
|
101
|
+
- custom object design
|
|
102
|
+
- import mapping
|
|
103
|
+
- workspace config checklist
|
|
104
|
+
- integration handoff
|
|
105
|
+
- enrichment field map
|
|
106
|
+
- CRM playbook
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Source repository
|
|
111
|
+
|
|
112
|
+
Twenty CRM: [github.com/twentyhq/twenty](https://github.com/twentyhq/twenty)
|
|
113
|
+
License: MIT
|
|
114
|
+
Stack: TypeScript / React / NestJS / PostgreSQL / Redis
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Kit Standard — Twenty CRM v1
|
|
2
|
+
|
|
3
|
+
This document defines the locked contract for this kit.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Required files contract
|
|
8
|
+
|
|
9
|
+
Every path in `kit.json -> frozenAssetPaths` must exist in every valid release.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Bundle contract
|
|
14
|
+
|
|
15
|
+
The bundle manifest must remain aligned with `kit.json`:
|
|
16
|
+
- `bundle.kitId` matches `kit.id`
|
|
17
|
+
- `bundle.workerId` matches `entrypoint.workerId`
|
|
18
|
+
- `requiredFrozenAssets` stays a subset of `frozenAssetPaths`
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Agent operating rules
|
|
23
|
+
|
|
24
|
+
The entrypoint file is the operating law. `skills.md` is the methodology.
|
|
25
|
+
|
|
26
|
+
Required invariants:
|
|
27
|
+
- strict workflow order (Steps 0–10)
|
|
28
|
+
- environment gate passes before any planning work
|
|
29
|
+
- data model is defined before automation or enrichment pipelines
|
|
30
|
+
- deployment mode is always labeled in every output
|
|
31
|
+
- deduplication key is named in every enrichment or import artifact
|
|
32
|
+
- every automation trigger-action pair has a documented failure path
|
|
33
|
+
- no secrets are stored in any kit file or output artifact
|
|
34
|
+
- outputs are operational artifacts, not ideation-only text
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Runtime rules
|
|
39
|
+
|
|
40
|
+
- no secrets stored in kit files
|
|
41
|
+
- agent-only mode is always a valid fallback — no live CRM required for planning work
|
|
42
|
+
- cloud, self-hosted, and local-fork modes are all first-class
|
|
43
|
+
- outputs are Markdown only
|
|
44
|
+
- field names use Twenty's naming conventions (camelCase for fields, PascalCase for objects)
|
|
45
|
+
- SELECT option values use SCREAMING_SNAKE_CASE
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Versioning rules
|
|
50
|
+
|
|
51
|
+
Additive template/docs changes are minor-version work. Entrypoint path changes, export name changes, or fundamental workflow changes require a major version bump.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Scope rules
|
|
56
|
+
|
|
57
|
+
This kit is scoped to Twenty CRM implementation planning and operator documentation. It does not:
|
|
58
|
+
- provide a live CRM dashboard
|
|
59
|
+
- write application code (it produces specs and handoffs for developers)
|
|
60
|
+
- manage infrastructure directly
|
|
61
|
+
- store client data in kit files
|