@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.
Files changed (141) hide show
  1. package/assets/worker-kits/growthub-ai-website-cloner-v1/.env.example +7 -0
  2. package/assets/worker-kits/growthub-ai-website-cloner-v1/QUICKSTART.md +116 -0
  3. package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/NEW-CLIENT.md +22 -0
  4. package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/_template/brand-kit.md +27 -0
  5. package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/growthub/brand-kit.md +26 -0
  6. package/assets/worker-kits/growthub-ai-website-cloner-v1/bundles/growthub-ai-website-cloner-v1.json +53 -0
  7. package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/ai-website-cloner-fork-integration.md +118 -0
  8. package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/design-token-system.md +135 -0
  9. package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/multi-phase-pipeline.md +129 -0
  10. package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/parallel-builder-dispatch.md +103 -0
  11. package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/clone-brief-sample.md +54 -0
  12. package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/component-spec-sample.md +123 -0
  13. package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/platform-handoff-sample.md +102 -0
  14. package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/visual-qa-sample.md +119 -0
  15. package/assets/worker-kits/growthub-ai-website-cloner-v1/growthub-meta/README.md +71 -0
  16. package/assets/worker-kits/growthub-ai-website-cloner-v1/growthub-meta/kit-standard.md +47 -0
  17. package/assets/worker-kits/growthub-ai-website-cloner-v1/kit.json +105 -0
  18. package/assets/worker-kits/growthub-ai-website-cloner-v1/output/README.md +26 -0
  19. package/assets/worker-kits/growthub-ai-website-cloner-v1/output-standards.md +75 -0
  20. package/assets/worker-kits/growthub-ai-website-cloner-v1/runtime-assumptions.md +70 -0
  21. package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/check-deps.sh +50 -0
  22. package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/clone-fork.sh +66 -0
  23. package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/verify-env.mjs +78 -0
  24. package/assets/worker-kits/growthub-ai-website-cloner-v1/skills.md +186 -0
  25. package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/asset-manifest.md +57 -0
  26. package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/builder-dispatch-plan.md +92 -0
  27. package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/clone-brief.md +59 -0
  28. package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/component-spec.md +124 -0
  29. package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/design-token-extraction.md +89 -0
  30. package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/platform-handoff.md +114 -0
  31. package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/reconnaissance-report.md +77 -0
  32. package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/visual-qa-checklist.md +107 -0
  33. package/assets/worker-kits/growthub-ai-website-cloner-v1/validation-checklist.md +76 -0
  34. package/assets/worker-kits/growthub-ai-website-cloner-v1/workers/ai-website-cloner-operator/CLAUDE.md +256 -0
  35. package/assets/worker-kits/growthub-open-montage-studio-v1/.env.example +40 -0
  36. package/assets/worker-kits/growthub-open-montage-studio-v1/QUICKSTART.md +114 -0
  37. package/assets/worker-kits/growthub-open-montage-studio-v1/brands/NEW-CLIENT.md +42 -0
  38. package/assets/worker-kits/growthub-open-montage-studio-v1/brands/_template/brand-kit.md +49 -0
  39. package/assets/worker-kits/growthub-open-montage-studio-v1/brands/growthub/brand-kit.md +50 -0
  40. package/assets/worker-kits/growthub-open-montage-studio-v1/bundles/growthub-open-montage-studio-v1.json +55 -0
  41. package/assets/worker-kits/growthub-open-montage-studio-v1/docs/cms-node-bridge.md +152 -0
  42. package/assets/worker-kits/growthub-open-montage-studio-v1/docs/open-montage-fork-integration.md +120 -0
  43. package/assets/worker-kits/growthub-open-montage-studio-v1/docs/pipeline-reference.md +147 -0
  44. package/assets/worker-kits/growthub-open-montage-studio-v1/docs/provider-adapter-layer.md +105 -0
  45. package/assets/worker-kits/growthub-open-montage-studio-v1/examples/cms-node-video-gen-sample.md +109 -0
  46. package/assets/worker-kits/growthub-open-montage-studio-v1/examples/pipeline-selection-sample.md +67 -0
  47. package/assets/worker-kits/growthub-open-montage-studio-v1/examples/platform-ready-handoff-sample.md +101 -0
  48. package/assets/worker-kits/growthub-open-montage-studio-v1/examples/video-production-brief-sample.md +68 -0
  49. package/assets/worker-kits/growthub-open-montage-studio-v1/growthub-meta/README.md +7 -0
  50. package/assets/worker-kits/growthub-open-montage-studio-v1/growthub-meta/kit-standard.md +45 -0
  51. package/assets/worker-kits/growthub-open-montage-studio-v1/kit.json +107 -0
  52. package/assets/worker-kits/growthub-open-montage-studio-v1/output/README.md +34 -0
  53. package/assets/worker-kits/growthub-open-montage-studio-v1/output-standards.md +79 -0
  54. package/assets/worker-kits/growthub-open-montage-studio-v1/runtime-assumptions.md +86 -0
  55. package/assets/worker-kits/growthub-open-montage-studio-v1/setup/check-deps.sh +43 -0
  56. package/assets/worker-kits/growthub-open-montage-studio-v1/setup/clone-fork.sh +53 -0
  57. package/assets/worker-kits/growthub-open-montage-studio-v1/setup/verify-env.mjs +102 -0
  58. package/assets/worker-kits/growthub-open-montage-studio-v1/skills.md +254 -0
  59. package/assets/worker-kits/growthub-open-montage-studio-v1/templates/asset-tracking.md +46 -0
  60. package/assets/worker-kits/growthub-open-montage-studio-v1/templates/cms-node-pipeline-mapping.md +64 -0
  61. package/assets/worker-kits/growthub-open-montage-studio-v1/templates/generation-batch-plan.md +70 -0
  62. package/assets/worker-kits/growthub-open-montage-studio-v1/templates/pipeline-selection-brief.md +67 -0
  63. package/assets/worker-kits/growthub-open-montage-studio-v1/templates/platform-ready-execution-handoff.md +103 -0
  64. package/assets/worker-kits/growthub-open-montage-studio-v1/templates/prompt-matrix.md +48 -0
  65. package/assets/worker-kits/growthub-open-montage-studio-v1/templates/provider-selection-brief.md +86 -0
  66. package/assets/worker-kits/growthub-open-montage-studio-v1/templates/review-qa-checklist.md +59 -0
  67. package/assets/worker-kits/growthub-open-montage-studio-v1/templates/scene-plan.md +65 -0
  68. package/assets/worker-kits/growthub-open-montage-studio-v1/templates/video-production-brief.md +58 -0
  69. package/assets/worker-kits/growthub-open-montage-studio-v1/validation-checklist.md +46 -0
  70. package/assets/worker-kits/growthub-open-montage-studio-v1/workers/open-montage-studio-operator/CLAUDE.md +304 -0
  71. package/assets/worker-kits/growthub-postiz-social-v1/.env.example +18 -0
  72. package/assets/worker-kits/growthub-postiz-social-v1/QUICKSTART.md +136 -0
  73. package/assets/worker-kits/growthub-postiz-social-v1/brands/NEW-CLIENT.md +67 -0
  74. package/assets/worker-kits/growthub-postiz-social-v1/brands/_template/brand-kit.md +120 -0
  75. package/assets/worker-kits/growthub-postiz-social-v1/brands/growthub/brand-kit.md +117 -0
  76. package/assets/worker-kits/growthub-postiz-social-v1/bundles/growthub-postiz-social-v1.json +52 -0
  77. package/assets/worker-kits/growthub-postiz-social-v1/docs/ai-caption-layer.md +118 -0
  78. package/assets/worker-kits/growthub-postiz-social-v1/docs/bullmq-queue-layer.md +157 -0
  79. package/assets/worker-kits/growthub-postiz-social-v1/docs/platform-coverage.md +97 -0
  80. package/assets/worker-kits/growthub-postiz-social-v1/docs/postiz-fork-integration.md +143 -0
  81. package/assets/worker-kits/growthub-postiz-social-v1/examples/analytics-brief-sample.md +125 -0
  82. package/assets/worker-kits/growthub-postiz-social-v1/examples/client-proposal-sample.md +127 -0
  83. package/assets/worker-kits/growthub-postiz-social-v1/examples/content-calendar-sample.md +75 -0
  84. package/assets/worker-kits/growthub-postiz-social-v1/examples/social-campaign-sample.md +104 -0
  85. package/assets/worker-kits/growthub-postiz-social-v1/growthub-meta/README.md +128 -0
  86. package/assets/worker-kits/growthub-postiz-social-v1/growthub-meta/kit-standard.md +113 -0
  87. package/assets/worker-kits/growthub-postiz-social-v1/kit.json +104 -0
  88. package/assets/worker-kits/growthub-postiz-social-v1/output/README.md +56 -0
  89. package/assets/worker-kits/growthub-postiz-social-v1/output-standards.md +127 -0
  90. package/assets/worker-kits/growthub-postiz-social-v1/runtime-assumptions.md +159 -0
  91. package/assets/worker-kits/growthub-postiz-social-v1/setup/check-deps.sh +117 -0
  92. package/assets/worker-kits/growthub-postiz-social-v1/setup/clone-fork.sh +83 -0
  93. package/assets/worker-kits/growthub-postiz-social-v1/setup/verify-env.mjs +99 -0
  94. package/assets/worker-kits/growthub-postiz-social-v1/skills.md +277 -0
  95. package/assets/worker-kits/growthub-postiz-social-v1/templates/analytics-brief.md +123 -0
  96. package/assets/worker-kits/growthub-postiz-social-v1/templates/caption-copy-deck.md +127 -0
  97. package/assets/worker-kits/growthub-postiz-social-v1/templates/client-proposal.md +139 -0
  98. package/assets/worker-kits/growthub-postiz-social-v1/templates/content-calendar.md +65 -0
  99. package/assets/worker-kits/growthub-postiz-social-v1/templates/platform-publishing-plan.md +112 -0
  100. package/assets/worker-kits/growthub-postiz-social-v1/templates/scheduling-manifest.md +83 -0
  101. package/assets/worker-kits/growthub-postiz-social-v1/templates/social-campaign-brief.md +111 -0
  102. package/assets/worker-kits/growthub-postiz-social-v1/validation-checklist.md +79 -0
  103. package/assets/worker-kits/growthub-postiz-social-v1/workers/postiz-social-operator/CLAUDE.md +287 -0
  104. package/assets/worker-kits/growthub-twenty-crm-v1/.env.example +15 -0
  105. package/assets/worker-kits/growthub-twenty-crm-v1/QUICKSTART.md +90 -0
  106. package/assets/worker-kits/growthub-twenty-crm-v1/brands/NEW-CLIENT.md +57 -0
  107. package/assets/worker-kits/growthub-twenty-crm-v1/brands/_template/brand-kit.md +88 -0
  108. package/assets/worker-kits/growthub-twenty-crm-v1/brands/growthub/brand-kit.md +92 -0
  109. package/assets/worker-kits/growthub-twenty-crm-v1/bundles/growthub-twenty-crm-v1.json +56 -0
  110. package/assets/worker-kits/growthub-twenty-crm-v1/docs/api-and-webhooks.md +296 -0
  111. package/assets/worker-kits/growthub-twenty-crm-v1/docs/data-model-layer.md +172 -0
  112. package/assets/worker-kits/growthub-twenty-crm-v1/docs/twenty-fork-integration.md +213 -0
  113. package/assets/worker-kits/growthub-twenty-crm-v1/examples/crm-playbook-sample.md +172 -0
  114. package/assets/worker-kits/growthub-twenty-crm-v1/examples/crm-setup-sample.md +100 -0
  115. package/assets/worker-kits/growthub-twenty-crm-v1/examples/lead-enrichment-sample.md +117 -0
  116. package/assets/worker-kits/growthub-twenty-crm-v1/examples/pipeline-automation-sample.md +132 -0
  117. package/assets/worker-kits/growthub-twenty-crm-v1/growthub-meta/README.md +114 -0
  118. package/assets/worker-kits/growthub-twenty-crm-v1/growthub-meta/kit-standard.md +61 -0
  119. package/assets/worker-kits/growthub-twenty-crm-v1/kit.json +108 -0
  120. package/assets/worker-kits/growthub-twenty-crm-v1/output/README.md +46 -0
  121. package/assets/worker-kits/growthub-twenty-crm-v1/output-standards.md +175 -0
  122. package/assets/worker-kits/growthub-twenty-crm-v1/runtime-assumptions.md +150 -0
  123. package/assets/worker-kits/growthub-twenty-crm-v1/setup/check-deps.sh +56 -0
  124. package/assets/worker-kits/growthub-twenty-crm-v1/setup/clone-fork.sh +77 -0
  125. package/assets/worker-kits/growthub-twenty-crm-v1/setup/verify-env.mjs +105 -0
  126. package/assets/worker-kits/growthub-twenty-crm-v1/skills.md +401 -0
  127. package/assets/worker-kits/growthub-twenty-crm-v1/templates/api-query-plan.md +179 -0
  128. package/assets/worker-kits/growthub-twenty-crm-v1/templates/crm-playbook.md +155 -0
  129. package/assets/worker-kits/growthub-twenty-crm-v1/templates/crm-setup-brief.md +94 -0
  130. package/assets/worker-kits/growthub-twenty-crm-v1/templates/custom-object-design.md +115 -0
  131. package/assets/worker-kits/growthub-twenty-crm-v1/templates/data-model-design.md +112 -0
  132. package/assets/worker-kits/growthub-twenty-crm-v1/templates/enrichment-field-map.md +100 -0
  133. package/assets/worker-kits/growthub-twenty-crm-v1/templates/import-mapping.md +139 -0
  134. package/assets/worker-kits/growthub-twenty-crm-v1/templates/integration-handoff.md +190 -0
  135. package/assets/worker-kits/growthub-twenty-crm-v1/templates/lead-enrichment-pipeline.md +128 -0
  136. package/assets/worker-kits/growthub-twenty-crm-v1/templates/pipeline-automation-brief.md +88 -0
  137. package/assets/worker-kits/growthub-twenty-crm-v1/templates/webhook-integration-spec.md +129 -0
  138. package/assets/worker-kits/growthub-twenty-crm-v1/templates/workspace-config-checklist.md +129 -0
  139. package/assets/worker-kits/growthub-twenty-crm-v1/validation-checklist.md +115 -0
  140. package/assets/worker-kits/growthub-twenty-crm-v1/workers/twenty-crm-operator/CLAUDE.md +310 -0
  141. package/package.json +1 -1
@@ -0,0 +1,155 @@
1
+ # CRM Playbook — [CLIENT NAME]
2
+
3
+ **Date:** YYYY-MM-DD
4
+ **Kit:** `growthub-twenty-crm-v1`
5
+ **Version:** v1
6
+
7
+ ---
8
+
9
+ ## ABOUT THIS PLAYBOOK
10
+
11
+ This playbook is the operating manual for the [CLIENT NAME] Twenty CRM workspace. It defines roles, daily workflows, pipeline procedures, enrichment cadences, and data hygiene rules. Every team member with CRM access should read and follow this document.
12
+
13
+ ---
14
+
15
+ ## 1. TEAM ROLES AND PERMISSIONS
16
+
17
+ | Role | Name | Access level | Responsibilities |
18
+ |---|---|---|---|
19
+ | CRM Admin | [name] | Full access | Object configuration, user management, integration maintenance |
20
+ | Sales Rep | [name] | Create/edit own records | Lead creation, pipeline updates, note-taking |
21
+ | CS Manager | [name] | Read + edit post-close | Customer success tracking, renewal management |
22
+
23
+ **Onboarding new members:** CRM Admin creates workspace member in Settings > Members and assigns the correct role.
24
+
25
+ ---
26
+
27
+ ## 2. DAILY WORKFLOW
28
+
29
+ ### Sales rep daily workflow
30
+
31
+ 1. Log in to Twenty and open the Opportunity pipeline view
32
+ 2. Review any new leads assigned to you (filter: `assignee = me`, `stage = LEAD`)
33
+ 3. Update stage for any leads that progressed since yesterday
34
+ 4. Add a Note for every contact or company you spoke with
35
+ 5. Check open Tasks due today and complete or reschedule them
36
+ 6. Before end of day: all new contacts from today's calls must be in Twenty
37
+
38
+ ### CRM admin daily workflow
39
+
40
+ 1. Check the import error log (if enrichment pipeline is running)
41
+ 2. Review any automation failures in the workflow logs
42
+ 3. Confirm new workspace members have correct permissions
43
+ 4. Spot-check 3–5 records for data quality (no blank required fields)
44
+
45
+ ---
46
+
47
+ ## 3. PIPELINE MANAGEMENT PROCEDURES
48
+
49
+ ### Creating a new Opportunity
50
+
51
+ 1. Navigate to Opportunities
52
+ 2. Click `+ New`
53
+ 3. Fill in: name, stage, linked Person (pointOfContact), linked Company, amount, close date
54
+ 4. Set the assignee to the responsible sales rep
55
+ 5. Add a first Note with context
56
+
57
+ ### Moving a stage
58
+
59
+ 1. Open the Opportunity record
60
+ 2. Click the stage selector and choose the new stage
61
+ 3. Add a Note explaining the stage change (what happened, next step)
62
+ 4. If moving to `CLOSED_WON`: confirm amount and close date are accurate
63
+ 5. If moving to `CLOSED_LOST`: add a Note with the loss reason
64
+
65
+ ### Pipeline review (weekly — team)
66
+
67
+ Run the pipeline report query (see API Query Plan) or filter in Twenty:
68
+ - All Opportunities: stage in [QUALIFIED, DEMO, PROPOSAL]
69
+ - Sort by close date ascending
70
+ - Review top 10 by close date
71
+
72
+ ---
73
+
74
+ ## 4. ENRICHMENT CADENCE
75
+
76
+ **Enrichment schedule:** [one-time / weekly on [day] / monthly on [day] / event-triggered]
77
+
78
+ **Enrichment procedure (if CSV-based):**
79
+
80
+ 1. Export contacts from [Apollo / Clay / source] with the filters defined in the Lead Enrichment Pipeline doc
81
+ 2. Open the CSV and remove any test or duplicate entries
82
+ 3. Import via Twenty: navigate to [Person / Company] > Import
83
+ 4. Select the field mapping profile saved as `[mapping-profile-name]`
84
+ 5. Run the import
85
+ 6. After import: check the error log and resolve skipped records
86
+
87
+ **Enrichment procedure (if API/webhook-based):**
88
+
89
+ The enrichment pipeline runs automatically via [webhook / scheduled API call]. Review the error log weekly and resolve any skipped records.
90
+
91
+ ---
92
+
93
+ ## 5. REPORTING AND DASHBOARD INSTRUCTIONS
94
+
95
+ ### Pipeline health view
96
+
97
+ **Filter:** Opportunities where stage is in [LEAD, QUALIFIED, DEMO, PROPOSAL]
98
+ **Group by:** Stage
99
+ **Sort by:** Close date ascending
100
+
101
+ **Reading the view:**
102
+ - Count of opportunities in each stage = pipeline coverage
103
+ - Total amount in DEMO + PROPOSAL = near-term revenue signal
104
+ - Opportunities with no stage update in 14+ days = stale — review and update or close
105
+
106
+ ### Contact view
107
+
108
+ **Filter:** Persons created in the last 30 days
109
+ **Sort:** Created at descending
110
+
111
+ Use this view weekly to confirm all new contacts are properly linked to Companies and have no missing required fields.
112
+
113
+ ---
114
+
115
+ ## 6. ESCALATION AND HANDOFF PROTOCOLS
116
+
117
+ ### CRM data dispute
118
+
119
+ If a record looks incorrect (wrong company, wrong stage, stale data):
120
+ 1. Do not delete — add a Note documenting the issue
121
+ 2. Tag `@[CRM Admin]` in the note
122
+ 3. CRM Admin resolves within 2 business days
123
+
124
+ ### Integration failure
125
+
126
+ If the enrichment pipeline or a webhook stops working:
127
+ 1. CRM Admin checks the workflow logs in Twenty > Settings > Workflows
128
+ 2. If logs are inconclusive, check the error log from the enrichment provider
129
+ 3. Escalate to [developer contact] with the error message and timestamp
130
+
131
+ ### Offboarding a team member
132
+
133
+ 1. CRM Admin reassigns all open Opportunities from the departing member
134
+ 2. Reassign all open Tasks
135
+ 3. Deactivate the workspace member in Settings > Members
136
+
137
+ ---
138
+
139
+ ## 7. MAINTENANCE AND DATA HYGIENE CHECKLIST
140
+
141
+ **Weekly:**
142
+ - [ ] Review import error log — resolve skipped records
143
+ - [ ] Check open Opportunities for stale records (no update in 14 days)
144
+ - [ ] Confirm all Closed Won / Closed Lost opportunities have a close reason Note
145
+
146
+ **Monthly:**
147
+ - [ ] Audit duplicate Person records (same email) — merge or remove
148
+ - [ ] Audit Companies with no linked Persons — flag for review
149
+ - [ ] Review workflow automation logs for failures
150
+ - [ ] Update the CRM Playbook if any procedures have changed
151
+
152
+ **Quarterly:**
153
+ - [ ] Review custom object field usage — deprecate unused fields
154
+ - [ ] Review pipeline stage definitions — adjust if the sales process has changed
155
+ - [ ] Evaluate enrichment provider quality and coverage
@@ -0,0 +1,94 @@
1
+ # CRM Setup Brief — [CLIENT NAME]
2
+
3
+ **Date:** YYYY-MM-DD
4
+ **Operator:** `twenty-crm-operator`
5
+ **Kit:** `growthub-twenty-crm-v1`
6
+ **Mode:** `[cloud / self-hosted / local-fork / agent-only]`
7
+
8
+ ---
9
+
10
+ ## 1. CLIENT CONTEXT AND CRM OBJECTIVE
11
+
12
+ **Client:** [CLIENT NAME]
13
+ **Industry:** [industry]
14
+ **Company size:** [N employees]
15
+ **CRM objective:** [primary objective — e.g. "Build a structured outbound sales pipeline with automated lead enrichment from Apollo"]
16
+
17
+ **Why Twenty:**
18
+ - [reason 1]
19
+ - [reason 2]
20
+
21
+ ---
22
+
23
+ ## 2. DEPLOYMENT MODE
24
+
25
+ **Selected mode:** `[cloud / self-hosted / local-fork]`
26
+ **API URL:** [URL or TBD]
27
+ **Environment:** [production / staging / development]
28
+
29
+ **Prerequisites confirmed:**
30
+ - [ ] Twenty workspace created
31
+ - [ ] API token generated
32
+ - [ ] `node setup/verify-env.mjs` passes
33
+
34
+ ---
35
+
36
+ ## 3. TEAM SIZE AND USER ROLES
37
+
38
+ | Role | User | Permissions |
39
+ |---|---|---|
40
+ | CRM Admin | [name] | Full access |
41
+ | Sales Rep | [name] | Create/edit Opportunities and Persons |
42
+ | CS Manager | [name] | Read/edit Opportunities post-close |
43
+
44
+ **Total workspace members:** [N]
45
+
46
+ ---
47
+
48
+ ## 4. DATA SOURCES AND VOLUME ESTIMATES
49
+
50
+ | Source | Object type | Estimated volume | Import method |
51
+ |---|---|---|---|
52
+ | [Apollo CSV export] | Person + Company | [N contacts] | CSV import |
53
+ | [Stripe webhooks] | [custom object or Note] | [events/month] | Webhook |
54
+ | [Intercom] | Note | [conversations/month] | Webhook |
55
+
56
+ ---
57
+
58
+ ## 5. INTEGRATION SCOPE
59
+
60
+ | Integration | Direction | Priority |
61
+ |---|---|---|
62
+ | [Apollo] | Inbound enrichment | High |
63
+ | [Stripe] | Inbound webhook | High |
64
+ | [Intercom] | Inbound webhook | Medium |
65
+ | [Slack] | Outbound notification | Low |
66
+
67
+ ---
68
+
69
+ ## 6. GO-LIVE TIMELINE AND MILESTONES
70
+
71
+ | Milestone | Target date | Owner |
72
+ |---|---|---|
73
+ | Data model finalized | YYYY-MM-DD | [CRM admin] |
74
+ | Initial import complete | YYYY-MM-DD | [CRM admin] |
75
+ | Enrichment pipeline live | YYYY-MM-DD | [developer] |
76
+ | Automations active | YYYY-MM-DD | [developer] |
77
+ | Team onboarded | YYYY-MM-DD | [CRM admin] |
78
+
79
+ ---
80
+
81
+ ## 7. SUCCESS CRITERIA
82
+
83
+ - [ ] All [N] contacts imported and deduplicated against domain
84
+ - [ ] Pipeline visible with [N] stages
85
+ - [ ] At least [N] automations active (stage transitions, follow-up tasks)
86
+ - [ ] Enrichment pipeline running on [cadence] cadence
87
+ - [ ] All team members onboarded and using the CRM daily
88
+
89
+ ---
90
+
91
+ ## OPEN QUESTIONS
92
+
93
+ - [ ] [Open question 1]
94
+ - [ ] [Open question 2]
@@ -0,0 +1,115 @@
1
+ # Custom Object Design — [CLIENT NAME]
2
+
3
+ **Date:** YYYY-MM-DD
4
+ **Kit:** `growthub-twenty-crm-v1`
5
+ **Mode:** `[cloud / self-hosted / local-fork / agent-only]`
6
+
7
+ ---
8
+
9
+ ## CUSTOM OBJECT: [OBJECT NAME]
10
+
11
+ **Purpose:** [What problem this custom object solves — e.g. "Track partner accounts separate from customer companies"]
12
+ **Creation method:** `[Settings > Objects (UI) / metadata API]`
13
+ **Scope:** `[per-workspace / this client only]`
14
+
15
+ ---
16
+
17
+ ## FIELD TABLE
18
+
19
+ | Field name (camelCase) | Display label | Type | Required | Options / Notes |
20
+ |---|---|---|---|---|
21
+ | `[fieldName]` | [Label] | `TEXT` | [Yes / No] | |
22
+ | `[fieldName]` | [Label] | `NUMBER` | [Yes / No] | |
23
+ | `[fieldName]` | [Label] | `SELECT` | [Yes / No] | Options: [A, B, C] |
24
+ | `[fieldName]` | [Label] | `RELATION` | [Yes / No] | Links to `[Object]` |
25
+ | `[fieldName]` | [Label] | `DATE` | [Yes / No] | |
26
+ | `[fieldName]` | [Label] | `BOOLEAN` | [Yes / No] | |
27
+ | `[fieldName]` | [Label] | `LINK` | [Yes / No] | |
28
+ | `[fieldName]` | [Label] | `EMAILS` | [Yes / No] | |
29
+ | `[fieldName]` | [Label] | `CURRENCY` | [Yes / No] | Store in micros |
30
+
31
+ **Select field options (if any):**
32
+
33
+ | Field | Option value (SCREAMING_SNAKE_CASE) | Display label |
34
+ |---|---|---|
35
+ | `[fieldName]` | `[OPTION_A]` | [Label A] |
36
+ | `[fieldName]` | `[OPTION_B]` | [Label B] |
37
+
38
+ ---
39
+
40
+ ## RELATIONSHIP DEFINITIONS
41
+
42
+ | Relation field | Direction | Target object | Cardinality | Notes |
43
+ |---|---|---|---|---|
44
+ | `[relationField]` | outgoing | `[TargetObject]` | many-to-one | [notes] |
45
+ | `[relationField]` | incoming | `[TargetObject]` | one-to-many | [notes] |
46
+
47
+ **Relationship map:**
48
+
49
+ ```text
50
+ [CustomObject] ──── [relationField] ────> [TargetObject]
51
+ [AnotherObject] <─── [inverseField] ─── [CustomObject]
52
+ ```
53
+
54
+ ---
55
+
56
+ ## DISPLAY CONFIGURATION
57
+
58
+ | Property | Value |
59
+ |---|---|
60
+ | Label (singular) | [e.g. Partner Account] |
61
+ | Label (plural) | [e.g. Partner Accounts] |
62
+ | Icon | [Twenty icon name — e.g. `building`, `user`, `star`] |
63
+ | Default view | `[list / kanban]` |
64
+ | Kanban grouping field (if kanban) | `[fieldName]` |
65
+
66
+ ---
67
+
68
+ ## CREATION PROCEDURE
69
+
70
+ ### Via UI (Settings > Objects)
71
+
72
+ 1. Go to Settings > Objects
73
+ 2. Click `+ New custom object`
74
+ 3. Set label (singular and plural), icon
75
+ 4. Add each field from the field table above
76
+ 5. Configure select options for any SELECT fields
77
+ 6. Add relation fields and select the target object
78
+ 7. Save and activate the object
79
+
80
+ ### Via Metadata API
81
+
82
+ ```graphql
83
+ mutation CreateCustomObject {
84
+ createOneObject(input: {
85
+ labelSingular: "[Label Singular]"
86
+ labelPlural: "[Label Plural]"
87
+ nameSingular: "[objectName]"
88
+ namePlural: "[objectNames]"
89
+ icon: "[icon-name]"
90
+ description: "[description]"
91
+ }) {
92
+ id
93
+ nameSingular
94
+ labelSingular
95
+ }
96
+ }
97
+ ```
98
+
99
+ Then add fields with `createOneField` mutations per field.
100
+
101
+ ---
102
+
103
+ ## VALIDATION RULES
104
+
105
+ | Rule | Field | Condition | Behavior |
106
+ |---|---|---|---|
107
+ | [Rule 1] | `[field]` | [condition] | [show error / block save] |
108
+ | [Rule 2] | `[field]` | [condition] | [behavior] |
109
+
110
+ ---
111
+
112
+ ## OPEN QUESTIONS
113
+
114
+ - [ ] [Decision needed — e.g. "Should this object be visible to all team members or only admins?"]
115
+ - [ ] [Question 2]
@@ -0,0 +1,112 @@
1
+ # Data Model Design — [CLIENT NAME]
2
+
3
+ **Date:** YYYY-MM-DD
4
+ **Kit:** `growthub-twenty-crm-v1`
5
+ **Mode:** `[cloud / self-hosted / local-fork / agent-only]`
6
+
7
+ ---
8
+
9
+ ## 1. STANDARD OBJECTS IN USE
10
+
11
+ | Object | In use? | Configuration notes |
12
+ |---|---|---|
13
+ | `Person` | [Yes / No] | [e.g. "primary contact object — email as dedup key"] |
14
+ | `Company` | [Yes / No] | [e.g. "linked to Person via relation"] |
15
+ | `Opportunity` | [Yes / No] | [e.g. "6-stage pipeline: Lead → Closed Won"] |
16
+ | `Note` | [Yes / No] | [e.g. "used for Intercom conversation summaries"] |
17
+ | `Task` | [Yes / No] | [e.g. "auto-created by stage-change automation"] |
18
+ | `Workspace Member` | Yes | [roles: admin, sales, cs] |
19
+
20
+ ---
21
+
22
+ ## 2. CUSTOM OBJECTS
23
+
24
+ ### [Custom Object Name 1]
25
+
26
+ **Purpose:** [description]
27
+ **Creation method:** [UI (Settings > Objects) / metadata API]
28
+
29
+ | Field name | Type | Required | Options / Notes |
30
+ |---|---|---|---|
31
+ | `[fieldName]` | `[TEXT / NUMBER / SELECT / RELATION / ...]` | [Yes / No] | [options or notes] |
32
+ | `[fieldName]` | `[TYPE]` | [Yes / No] | |
33
+
34
+ **Relationships:**
35
+ - Links to `[Object]` via `[fieldName]` (one-to-one / one-to-many / many-to-many)
36
+
37
+ **Display configuration:**
38
+ - Label (singular): [label]
39
+ - Label (plural): [label plural]
40
+ - Icon: [Twenty icon name]
41
+ - Default view: [list / kanban]
42
+
43
+ ---
44
+
45
+ ## 3. PERSON OBJECT — FIELD CONFIGURATION
46
+
47
+ | Field name | Type | Required | Notes |
48
+ |---|---|---|---|
49
+ | `name.firstName` | `TEXT` | Yes | |
50
+ | `name.lastName` | `TEXT` | Yes | |
51
+ | `emails.primaryEmail` | `EMAILS` | Yes | Dedup key |
52
+ | `phones.primaryPhoneNumber` | `PHONES` | No | |
53
+ | `company` | `RELATION` | No | Links to Company |
54
+ | `position` | `TEXT` | No | Job title |
55
+ | `linkedInLink.url` | `LINK` | No | |
56
+ | `city` | `TEXT` | No | |
57
+ | `[customField]` | `[TYPE]` | [Yes/No] | [source: enrichment provider] |
58
+
59
+ ---
60
+
61
+ ## 4. COMPANY OBJECT — FIELD CONFIGURATION
62
+
63
+ | Field name | Type | Required | Notes |
64
+ |---|---|---|---|
65
+ | `name` | `TEXT` | Yes | |
66
+ | `domain` | `TEXT` | No | Dedup key |
67
+ | `employees` | `NUMBER` | No | |
68
+ | `annualRecurringRevenue.amountMicros` | `CURRENCY` | No | |
69
+ | `address` | `ADDRESS` | No | |
70
+ | `linkedInLink.url` | `LINK` | No | |
71
+ | `[customField]` | `[TYPE]` | [Yes/No] | |
72
+
73
+ ---
74
+
75
+ ## 5. OPPORTUNITY OBJECT — FIELD CONFIGURATION
76
+
77
+ | Field name | Type | Required | Notes |
78
+ |---|---|---|---|
79
+ | `name` | `TEXT` | Yes | |
80
+ | `stage` | `SELECT` | Yes | See stage options below |
81
+ | `amount.amountMicros` | `CURRENCY` | No | Store in micros (×1,000,000) |
82
+ | `closeDate` | `DATE` | No | ISO 8601 |
83
+ | `pointOfContact` | `RELATION` | No | Links to Person |
84
+ | `[customField]` | `[TYPE]` | [Yes/No] | |
85
+
86
+ **Stage options (SELECT values):**
87
+
88
+ | Value | Label | Order |
89
+ |---|---|---|
90
+ | `LEAD` | Lead | 1 |
91
+ | `QUALIFIED` | Qualified | 2 |
92
+ | `DEMO` | Demo | 3 |
93
+ | `PROPOSAL` | Proposal | 4 |
94
+ | `CLOSED_WON` | Closed Won | 5 |
95
+ | `CLOSED_LOST` | Closed Lost | 6 |
96
+
97
+ ---
98
+
99
+ ## 6. RELATIONSHIP MAP
100
+
101
+ ```text
102
+ Person ──── company ────> Company
103
+ Person <─── pointOfContact ─── Opportunity
104
+ Company <─── [relation] ─── [CustomObject]
105
+ ```
106
+
107
+ ---
108
+
109
+ ## 7. OPEN QUESTIONS / DECISIONS REQUIRED
110
+
111
+ - [ ] [Decision 1 — e.g. "Should LeadSource be a custom field on Person or a separate custom object?"]
112
+ - [ ] [Decision 2]
@@ -0,0 +1,100 @@
1
+ # Enrichment Field Map — [CLIENT NAME]
2
+
3
+ **Date:** YYYY-MM-DD
4
+ **Kit:** `growthub-twenty-crm-v1`
5
+ **Provider:** [Apollo / Clearbit / Clay / Hunter / other]
6
+
7
+ ---
8
+
9
+ ## PERSON FIELD MAP
10
+
11
+ **Dedup key:** `emails.primaryEmail`
12
+ **Update frequency:** [weekly / monthly / on-trigger]
13
+
14
+ | Provider field | Provider type | → | Twenty object | Twenty field | Twenty type | Transformation | Required |
15
+ |---|---|---|---|---|---|---|---|
16
+ | `first_name` | string | → | `Person` | `name.firstName` | `TEXT` | none | Yes |
17
+ | `last_name` | string | → | `Person` | `name.lastName` | `TEXT` | none | Yes |
18
+ | `email` | string | → | `Person` | `emails.primaryEmail` | `EMAILS` | lowercase, trim | Yes (dedup key) |
19
+ | `phone_numbers[0].raw_number` | string | → | `Person` | `phones.primaryPhoneNumber` | `PHONES` | none | No |
20
+ | `title` | string | → | `Person` | `position` | `TEXT` | none | No |
21
+ | `linkedin_url` | string | → | `Person` | `linkedInLink.url` | `LINK` | none | No |
22
+ | `city` | string | → | `Person` | `city` | `TEXT` | none | No |
23
+ | `seniority` | string | → | `Person` | `[custom field: seniority]` | `SELECT` | map to SELECT options | No |
24
+ | `departments` | array | → | `Person` | `[custom field: department]` | `TEXT` | join with comma | No |
25
+ | `[provider field]` | [type] | → | `Person` | `[field]` | `[type]` | [transform] | [Yes/No] |
26
+
27
+ ---
28
+
29
+ ## COMPANY FIELD MAP
30
+
31
+ **Dedup key:** `domain`
32
+ **Update frequency:** [same as person / separate cadence]`
33
+
34
+ | Provider field | Provider type | → | Twenty object | Twenty field | Twenty type | Transformation | Required |
35
+ |---|---|---|---|---|---|---|---|
36
+ | `organization.name` | string | → | `Company` | `name` | `TEXT` | none | Yes |
37
+ | `organization.website_url` | string | → | `Company` | `domain` | `TEXT` | strip protocol, strip trailing slash | Yes (dedup key) |
38
+ | `organization.estimated_num_employees` | integer | → | `Company` | `employees` | `NUMBER` | integer cast | No |
39
+ | `organization.annual_revenue` | number | → | `Company` | `annualRecurringRevenue.amountMicros` | `CURRENCY` | multiply by 1,000,000 | No |
40
+ | `organization.industry` | string | → | `Company` | `[custom field: industry]` | `SELECT` | map to SELECT options | No |
41
+ | `organization.linkedin_url` | string | → | `Company` | `linkedInLink.url` | `LINK` | none | No |
42
+ | `[provider field]` | [type] | → | `Company` | `[field]` | `[type]` | [transform] | [Yes/No] |
43
+
44
+ ---
45
+
46
+ ## SELECT OPTION MAPPINGS
47
+
48
+ ### seniority → Person.seniority
49
+
50
+ | Provider value | → | Twenty SELECT value |
51
+ |---|---|---|
52
+ | `founder` | → | `FOUNDER` |
53
+ | `c_suite` | → | `C_SUITE` |
54
+ | `vp` | → | `VP` |
55
+ | `director` | → | `DIRECTOR` |
56
+ | `manager` | → | `MANAGER` |
57
+ | `individual_contributor` | → | `INDIVIDUAL_CONTRIBUTOR` |
58
+ | `[value]` | → | `[TWENTY_VALUE]` |
59
+
60
+ ### industry → Company.industry
61
+
62
+ | Provider value | → | Twenty SELECT value |
63
+ |---|---|---|
64
+ | `software` | → | `SOFTWARE` |
65
+ | `saas` | → | `SOFTWARE` |
66
+ | `fintech` | → | `FINTECH` |
67
+ | `healthtech` | → | `HEALTHTECH` |
68
+ | `ecommerce` | → | `ECOMMERCE` |
69
+ | `[value]` | → | `[TWENTY_VALUE]` |
70
+
71
+ ---
72
+
73
+ ## FIELDS EXCLUDED FROM ENRICHMENT
74
+
75
+ | Provider field | Reason for exclusion |
76
+ |---|---|
77
+ | `id` | Internal provider ID — not stored in Twenty |
78
+ | `photo_url` | Not mapped — no avatar field in standard Twenty |
79
+ | `[field]` | [reason] |
80
+
81
+ ---
82
+
83
+ ## EDGE CASES AND NOTES
84
+
85
+ | Case | Handling |
86
+ |---|---|
87
+ | Email is null | Skip record — log to error file |
88
+ | Domain is null on company | Attempt to extract from email domain — if still null, skip |
89
+ | Multiple emails returned | Use `email` field as primary; log additional emails |
90
+ | Revenue value is 0 | Do not import — leave `annualRecurringRevenue` blank |
91
+ | [Case] | [handling] |
92
+
93
+ ---
94
+
95
+ ## ENRICHMENT MATCH KEY SUMMARY
96
+
97
+ | Object | Primary key | Secondary key | Fallback |
98
+ |---|---|---|---|
99
+ | `Person` | `emails.primaryEmail` | `linkedInLink.url` | Skip and log |
100
+ | `Company` | `domain` | `name` (exact match) | Create new |