@elevasis/ui 2.31.0 → 2.32.0

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 (144) hide show
  1. package/dist/{CoreAuthKitInner-KSEGSB67.js → CoreAuthKitInner-QC62UHTZ.js} +1 -1
  2. package/dist/api/index.js +3 -3
  3. package/dist/app/index.css +38 -0
  4. package/dist/app/index.d.ts +69 -9
  5. package/dist/app/index.js +7 -6
  6. package/dist/auth/context.js +1 -1
  7. package/dist/auth/index.js +1 -1
  8. package/dist/charts/index.js +5 -6
  9. package/dist/{chunk-XQHZBA65.js → chunk-2RJMVWFJ.js} +1 -6
  10. package/dist/{chunk-CW3UNAF2.js → chunk-4DYOXEH6.js} +410 -5
  11. package/dist/{chunk-HQGF4ATG.js → chunk-4MFNGNHF.js} +118 -141
  12. package/dist/{chunk-ND42LPY4.js → chunk-4QK76KIF.js} +6 -6
  13. package/dist/chunk-5FJJ72HU.js +13 -0
  14. package/dist/chunk-5J4PDX26.js +112 -0
  15. package/dist/{chunk-QDEETKYT.js → chunk-6DWD423K.js} +9 -9
  16. package/dist/{chunk-SHQXMW4F.js → chunk-7KZINJLP.js} +46 -28
  17. package/dist/{chunk-L3BVJWML.js → chunk-EPTHX4VZ.js} +1 -1
  18. package/dist/{chunk-JKSUN5GN.js → chunk-GCOQ3TBG.js} +81 -746
  19. package/dist/{chunk-DZTG5IAC.js → chunk-I2KLQ2HA.js} +1 -7
  20. package/dist/{chunk-L2NVFLXU.js → chunk-IQHU7O5Y.js} +4 -4
  21. package/dist/{chunk-P55BJZZW.js → chunk-IZWTVFJ2.js} +16 -4
  22. package/dist/{chunk-QHEWXU7I.js → chunk-JFL3GRD4.js} +1 -1
  23. package/dist/{chunk-Q6OYNEGR.js → chunk-LLRXA7D7.js} +5 -6
  24. package/dist/{chunk-7KC4P3AU.js → chunk-MOY4VOHF.js} +2 -12
  25. package/dist/{chunk-XQQEKWTL.js → chunk-N55DVMAG.js} +6 -2
  26. package/dist/{chunk-TOIXUWR6.js → chunk-ND5TDV2J.js} +1 -1
  27. package/dist/{chunk-WF227UBV.js → chunk-QQHOKTJA.js} +4 -4
  28. package/dist/{chunk-T3IPHEYJ.js → chunk-QTI3KC7D.js} +4335 -554
  29. package/dist/chunk-QXCDKE2O.js +486 -0
  30. package/dist/{chunk-3BAPR3KA.js → chunk-RQA2EVN3.js} +5 -15
  31. package/dist/{chunk-HYNYEBHM.js → chunk-RQTWIXJ5.js} +3 -3
  32. package/dist/chunk-T35FWDAB.js +4342 -0
  33. package/dist/{chunk-DWK2QIAK.js → chunk-TYRUKGGD.js} +1 -1
  34. package/dist/{chunk-GRDLB6LM.js → chunk-UROTM5OR.js} +13 -1
  35. package/dist/{chunk-6YT4IKJ7.js → chunk-VNAZTCHA.js} +15 -0
  36. package/dist/{chunk-5LJAEZMA.js → chunk-VRNMNB3O.js} +5 -6
  37. package/dist/chunk-WQPX44YM.js +1626 -0
  38. package/dist/{chunk-7HMCB26R.js → chunk-XZGSCABI.js} +1 -1
  39. package/dist/chunk-YLQEVSOR.js +299 -0
  40. package/dist/{chunk-Y4FWCG7Y.js → chunk-ZQOKIGZP.js} +8 -7
  41. package/dist/components/chat/index.js +1 -1
  42. package/dist/components/index.css +38 -0
  43. package/dist/components/index.d.ts +152 -50
  44. package/dist/components/index.js +36 -39
  45. package/dist/components/navigation/index.css +38 -0
  46. package/dist/components/navigation/index.js +4 -3
  47. package/dist/execution/index.d.ts +7 -2
  48. package/dist/execution/index.js +1 -1
  49. package/dist/features/auth/index.css +38 -0
  50. package/dist/features/auth/index.d.ts +91 -14
  51. package/dist/features/auth/index.js +42 -10
  52. package/dist/features/clients/index.css +38 -0
  53. package/dist/features/clients/index.d.ts +1 -1
  54. package/dist/features/clients/index.js +16 -15
  55. package/dist/features/crm/index.css +38 -0
  56. package/dist/features/crm/index.d.ts +80 -18
  57. package/dist/features/crm/index.js +16 -15
  58. package/dist/features/dashboard/index.css +38 -0
  59. package/dist/features/dashboard/index.d.ts +65 -25
  60. package/dist/features/dashboard/index.js +16 -16
  61. package/dist/features/delivery/index.css +38 -0
  62. package/dist/features/delivery/index.d.ts +80 -18
  63. package/dist/features/delivery/index.js +15 -15
  64. package/dist/features/knowledge/index.css +38 -0
  65. package/dist/features/knowledge/index.d.ts +20 -18
  66. package/dist/features/knowledge/index.js +112 -597
  67. package/dist/features/lead-gen/index.css +38 -0
  68. package/dist/features/lead-gen/index.d.ts +45 -43
  69. package/dist/features/lead-gen/index.js +16 -16
  70. package/dist/features/monitoring/index.css +38 -0
  71. package/dist/features/monitoring/index.d.ts +20 -18
  72. package/dist/features/monitoring/index.js +17 -17
  73. package/dist/features/monitoring/requests/index.css +38 -0
  74. package/dist/features/monitoring/requests/index.d.ts +21 -19
  75. package/dist/features/monitoring/requests/index.js +15 -14
  76. package/dist/features/operations/index.css +38 -0
  77. package/dist/features/operations/index.d.ts +930 -66
  78. package/dist/features/operations/index.js +21 -24
  79. package/dist/features/seo/index.d.ts +20 -18
  80. package/dist/features/seo/index.js +2 -2
  81. package/dist/features/settings/index.css +38 -0
  82. package/dist/features/settings/index.d.ts +80 -18
  83. package/dist/features/settings/index.js +16 -15
  84. package/dist/graph/index.js +1 -1
  85. package/dist/hooks/delivery/index.css +38 -0
  86. package/dist/hooks/delivery/index.d.ts +60 -0
  87. package/dist/hooks/delivery/index.js +3 -3
  88. package/dist/hooks/index.css +38 -0
  89. package/dist/hooks/index.d.ts +301 -87
  90. package/dist/hooks/index.js +14 -13
  91. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +143 -33
  92. package/dist/hooks/operations/command-view/utils/transformCommandViewData.js +1 -1
  93. package/dist/hooks/published.css +38 -0
  94. package/dist/hooks/published.d.ts +301 -87
  95. package/dist/hooks/published.js +14 -13
  96. package/dist/index.css +38 -0
  97. package/dist/index.d.ts +976 -1341
  98. package/dist/index.js +15 -14
  99. package/dist/initialization/index.d.ts +60 -0
  100. package/dist/initialization/index.js +1 -1
  101. package/dist/knowledge/index.d.ts +809 -1160
  102. package/dist/knowledge/index.js +5988 -2140
  103. package/dist/{chunk-O2QOPJI5.js → knowledge-search-index-5KYPO746.js} +96 -852
  104. package/dist/layout/index.js +3 -4
  105. package/dist/organization/index.css +38 -0
  106. package/dist/organization/index.js +1 -1
  107. package/dist/profile/index.d.ts +60 -0
  108. package/dist/profile/index.js +1 -1
  109. package/dist/provider/ElevasisServiceContext.js +1 -1
  110. package/dist/provider/index.css +38 -0
  111. package/dist/provider/index.d.ts +786 -1249
  112. package/dist/provider/index.js +11 -10
  113. package/dist/provider/published.css +38 -0
  114. package/dist/provider/published.d.ts +783 -1246
  115. package/dist/provider/published.js +8 -7
  116. package/dist/router/context.js +1 -1
  117. package/dist/router/index.js +1 -1
  118. package/dist/sse/index.js +1 -1
  119. package/dist/supabase/index.d.ts +117 -0
  120. package/dist/supabase/index.js +1 -1
  121. package/dist/test-utils/index.d.ts +16 -9
  122. package/dist/test-utils/index.js +40 -33
  123. package/dist/test-utils/setup-integration.js +1 -1
  124. package/dist/test-utils/setup.js +1 -1
  125. package/dist/theme/index.js +3 -3
  126. package/dist/theme/presets/index.js +1 -1
  127. package/dist/typeform/index.js +1 -1
  128. package/dist/typeform/schemas.js +1 -1
  129. package/dist/types/index.d.ts +205 -35
  130. package/dist/utils/index.d.ts +65 -25
  131. package/dist/utils/index.js +2 -2
  132. package/dist/vite/index.js +1 -1
  133. package/dist/vite-plugin-knowledge/index.js +1 -1
  134. package/dist/zustand/index.js +1 -1
  135. package/package.json +39 -38
  136. package/src/provider/README.md +5 -5
  137. package/dist/chunk-542WPQU2.js +0 -413
  138. package/dist/chunk-6IXOKUBC.js +0 -347
  139. package/dist/chunk-CQZ3DNQY.js +0 -740
  140. package/dist/chunk-ECNNI3NT.js +0 -6
  141. package/dist/chunk-JDNEWB5F.js +0 -10
  142. package/dist/chunk-MVFCLZSK.js +0 -4337
  143. package/dist/chunk-OAVTMITG.js +0 -13
  144. package/dist/chunk-TVRQ6AQI.js +0 -476
@@ -1,13 +0,0 @@
1
- import { ElevasisFeaturesProvider } from './chunk-6IXOKUBC.js';
2
- import { jsx } from 'react/jsx-runtime';
3
-
4
- function createTestFeaturesProvider({
5
- organizationModel,
6
- features = []
7
- } = {}) {
8
- return function TestFeaturesProvider({ children }) {
9
- return /* @__PURE__ */ jsx(ElevasisFeaturesProvider, { features, organizationModel, children });
10
- };
11
- }
12
-
13
- export { createTestFeaturesProvider };
@@ -1,476 +0,0 @@
1
- import { DisplayMetadataSchema, ModelIdSchema, DescriptionSchema, LEAD_GEN_STAGE_CATALOG } from './chunk-CQZ3DNQY.js';
2
- import { z } from 'zod';
3
-
4
- var ProspectingLifecycleStageSchema = DisplayMetadataSchema.extend({
5
- id: ModelIdSchema,
6
- order: z.number().min(0)
7
- });
8
- var RecordColumnConfigSchema = z.object({
9
- key: ModelIdSchema,
10
- label: z.string().trim().min(1).max(120),
11
- path: z.string().trim().min(1).max(500),
12
- width: z.union([z.number().positive(), z.string().trim().min(1).max(100)]).optional(),
13
- renderType: z.enum(["text", "badge", "datetime", "count", "json"]).optional(),
14
- badgeColor: z.string().trim().min(1).max(40).optional()
15
- });
16
- var RecordColumnsConfigSchema = z.object({
17
- company: z.array(RecordColumnConfigSchema).optional(),
18
- contact: z.array(RecordColumnConfigSchema).optional()
19
- }).refine((columns) => Boolean(columns.company?.length || columns.contact?.length), {
20
- message: "recordColumns must include at least one entity column set"
21
- });
22
- var CredentialRequirementSchema = z.object({
23
- key: ModelIdSchema,
24
- provider: ModelIdSchema,
25
- credentialType: z.enum(["api-key", "api-key-secret", "oauth", "webhook-secret"]),
26
- label: z.string().trim().min(1).max(120),
27
- required: z.boolean(),
28
- selectionMode: z.enum(["single", "multiple"]).optional(),
29
- inputPath: z.string().trim().min(1).max(500),
30
- verifyOnRun: z.boolean().optional()
31
- });
32
- var ProspectingBuildTemplateStepSchema = DisplayMetadataSchema.extend({
33
- id: ModelIdSchema,
34
- primaryEntity: z.enum(["company", "contact"]),
35
- outputs: z.array(z.enum(["company", "contact", "export"])).min(1),
36
- stageKey: ModelIdSchema,
37
- recordEntity: z.enum(["company", "contact"]).optional(),
38
- recordsStageKey: ModelIdSchema.optional(),
39
- recordSourceStageKey: ModelIdSchema.optional(),
40
- dependsOn: z.array(ModelIdSchema).optional(),
41
- dependencyMode: z.literal("per-record-eligibility"),
42
- capabilityKey: ModelIdSchema,
43
- defaultBatchSize: z.number().int().positive(),
44
- maxBatchSize: z.number().int().positive(),
45
- recordColumns: RecordColumnsConfigSchema.optional(),
46
- credentialRequirements: z.array(CredentialRequirementSchema).optional()
47
- }).refine((step) => step.defaultBatchSize <= step.maxBatchSize, {
48
- message: "defaultBatchSize must be less than or equal to maxBatchSize",
49
- path: ["defaultBatchSize"]
50
- });
51
- var ProspectingBuildTemplateSchema = DisplayMetadataSchema.extend({
52
- id: ModelIdSchema,
53
- steps: z.array(ProspectingBuildTemplateStepSchema).min(1)
54
- });
55
- var DTC_RECORD_COLUMNS = {
56
- populated: {
57
- company: [
58
- { key: "name", label: "Company", path: "company.name" },
59
- { key: "domain", label: "Domain", path: "company.domain" },
60
- { key: "employee-count", label: "Employees", path: "company.numEmployees", renderType: "count" },
61
- { key: "apollo-industry", label: "Apollo industry", path: "company.category" },
62
- { key: "location", label: "Location", path: "company.locationState" }
63
- ]
64
- },
65
- crawled: {
66
- company: [
67
- { key: "name", label: "Company", path: "company.name" },
68
- { key: "domain", label: "Domain", path: "company.domain" },
69
- { key: "page-count", label: "Pages", path: "company.enrichmentData.websiteCrawl.pageCount", renderType: "count" },
70
- { key: "crawl-status", label: "Crawl status", path: "processingState.crawled.status", renderType: "badge" }
71
- ]
72
- },
73
- extracted: {
74
- company: [
75
- { key: "name", label: "Company", path: "company.name" },
76
- { key: "domain", label: "Domain", path: "company.domain" },
77
- { key: "description", label: "Description", path: "company.enrichmentData.websiteCrawl.companyDescription" },
78
- { key: "services", label: "Services", path: "company.enrichmentData.websiteCrawl.services", renderType: "json" },
79
- { key: "automation-gaps", label: "Automation gaps", path: "company.enrichmentData.websiteCrawl.automationGaps", renderType: "json" },
80
- { key: "contact-count", label: "Contacts", path: "company.enrichmentData.websiteCrawl.emailCount", renderType: "count" }
81
- ]
82
- },
83
- qualified: {
84
- company: [
85
- { key: "name", label: "Company", path: "company.name" },
86
- { key: "domain", label: "Domain", path: "company.domain" },
87
- { key: "score", label: "Score", path: "company.qualificationScore", renderType: "badge", badgeColor: "green" },
88
- { key: "signals", label: "Signals", path: "company.qualificationSignals", renderType: "json" },
89
- { key: "disqualified-reason", label: "Disqualified reason", path: "processingState.qualified.data.disqualifiedReason" }
90
- ]
91
- },
92
- decisionMakers: {
93
- contact: [
94
- { key: "name", label: "Name", path: "contact.name" },
95
- { key: "title", label: "Title", path: "contact.title" },
96
- { key: "email", label: "Email", path: "contact.email" },
97
- { key: "linkedin", label: "LinkedIn", path: "contact.linkedinUrl" },
98
- { key: "priority-score", label: "Priority", path: "contact.enrichmentData.apollo.priorityScore", renderType: "badge" }
99
- ]
100
- },
101
- uploaded: {
102
- company: [
103
- { key: "name", label: "Company", path: "company.name" },
104
- { key: "domain", label: "Domain", path: "company.domain" },
105
- { key: "contacts", label: "Contacts", path: "company.enrichmentData.approvedLeadListExport.contacts", renderType: "json" },
106
- { key: "score", label: "Score", path: "company.qualificationScore", renderType: "badge", badgeColor: "green" },
107
- { key: "approval", label: "Approval", path: "company.enrichmentData.approvedLeadListExport.approvalStatus", renderType: "badge" }
108
- ]
109
- }
110
- };
111
- z.object({
112
- id: ModelIdSchema,
113
- label: z.string(),
114
- description: z.string(),
115
- resourceId: ModelIdSchema
116
- });
117
- var CAPABILITY_REGISTRY = [
118
- {
119
- id: "lead-gen.company.source",
120
- label: "Source companies",
121
- description: "Import source companies from a list provider.",
122
- resourceId: "lgn-import-workflow"
123
- },
124
- {
125
- id: "lead-gen.company.apollo-import",
126
- label: "Import from Apollo",
127
- description: "Pull companies and seed contact data from an Apollo search or list.",
128
- resourceId: "lgn-01c-apollo-import-workflow"
129
- },
130
- {
131
- id: "lead-gen.contact.discover",
132
- label: "Discover contact emails",
133
- description: "Find email addresses for contacts at qualified companies.",
134
- resourceId: "lgn-04-email-discovery-workflow"
135
- },
136
- {
137
- id: "lead-gen.contact.verify-email",
138
- label: "Verify emails",
139
- description: "Check email deliverability before outreach.",
140
- resourceId: "lgn-05-email-verification-workflow"
141
- },
142
- {
143
- id: "lead-gen.company.apify-crawl",
144
- label: "Crawl websites",
145
- description: "Crawl company websites via Apify and store raw page markdown in enrichmentData.websiteCrawl.pages for downstream LLM analysis.",
146
- resourceId: "lgn-02a-apify-website-crawl-workflow"
147
- },
148
- {
149
- id: "lead-gen.company.website-extract",
150
- label: "Extract website signals",
151
- description: "Scrape and analyze company websites for qualification signals.",
152
- resourceId: "lgn-02-website-extract-workflow"
153
- },
154
- {
155
- id: "lead-gen.company.qualify",
156
- label: "Qualify companies",
157
- description: "Score and filter companies against the ICP rubric.",
158
- resourceId: "lgn-03-company-qualification-workflow"
159
- },
160
- {
161
- id: "lead-gen.company.dtc-subscription-qualify",
162
- label: "Qualify DTC subscription fit",
163
- description: "Classify subscription potential and consumable-product fit for DTC brands.",
164
- resourceId: "lgn-03b-dtc-subscription-score-workflow"
165
- },
166
- {
167
- id: "lead-gen.contact.apollo-decision-maker-enrich",
168
- label: "Enrich decision-makers",
169
- description: "Find and enrich qualified contacts at qualified companies via Apollo.",
170
- resourceId: "lgn-04b-apollo-decision-maker-enrich-workflow"
171
- },
172
- {
173
- id: "lead-gen.contact.personalize",
174
- label: "Personalize outreach",
175
- description: "Generate personalized opening lines for each contact.",
176
- resourceId: "ist-personalization-workflow"
177
- },
178
- {
179
- id: "lead-gen.review.outreach-ready",
180
- label: "Upload to outreach",
181
- description: "Upload approved contacts to the outreach sequence after QC review.",
182
- resourceId: "ist-upload-contacts-workflow"
183
- },
184
- {
185
- id: "lead-gen.export.list",
186
- label: "Export lead list",
187
- description: "Export approved leads as a downloadable lead list.",
188
- resourceId: "lgn-06-export-list-workflow"
189
- },
190
- {
191
- id: "lead-gen.company.cleanup",
192
- label: "Clean up companies",
193
- description: "Remove disqualified or duplicate companies from the list.",
194
- resourceId: "lgn-company-cleanup-workflow"
195
- }
196
- ];
197
- var PROSPECTING_STEPS = {
198
- localServices: {
199
- sourceCompanies: {
200
- id: "source-companies",
201
- label: "Companies found",
202
- primaryEntity: "company",
203
- outputs: ["company"],
204
- stageKey: "populated",
205
- dependencyMode: "per-record-eligibility",
206
- capabilityKey: "lead-gen.company.source",
207
- defaultBatchSize: 100,
208
- maxBatchSize: 250
209
- },
210
- analyzeWebsites: {
211
- id: "analyze-websites",
212
- label: "Websites analyzed",
213
- primaryEntity: "company",
214
- outputs: ["company"],
215
- stageKey: "extracted",
216
- dependsOn: ["source-companies"],
217
- dependencyMode: "per-record-eligibility",
218
- capabilityKey: "lead-gen.company.website-extract",
219
- defaultBatchSize: 50,
220
- maxBatchSize: 100
221
- },
222
- qualifyCompanies: {
223
- id: "qualify-companies",
224
- label: "Companies qualified",
225
- primaryEntity: "company",
226
- outputs: ["company"],
227
- stageKey: "qualified",
228
- dependsOn: ["analyze-websites"],
229
- dependencyMode: "per-record-eligibility",
230
- capabilityKey: "lead-gen.company.qualify",
231
- defaultBatchSize: 100,
232
- maxBatchSize: 250
233
- },
234
- findContacts: {
235
- id: "find-contacts",
236
- label: "Decision-makers found",
237
- primaryEntity: "contact",
238
- outputs: ["contact"],
239
- stageKey: "discovered",
240
- dependsOn: ["qualify-companies"],
241
- dependencyMode: "per-record-eligibility",
242
- capabilityKey: "lead-gen.contact.discover",
243
- defaultBatchSize: 50,
244
- maxBatchSize: 100
245
- },
246
- verifyEmails: {
247
- id: "verify-emails",
248
- label: "Emails verified",
249
- primaryEntity: "contact",
250
- outputs: ["contact"],
251
- stageKey: "verified",
252
- dependsOn: ["find-contacts"],
253
- dependencyMode: "per-record-eligibility",
254
- capabilityKey: "lead-gen.contact.verify-email",
255
- defaultBatchSize: 100,
256
- maxBatchSize: 500
257
- },
258
- personalize: {
259
- id: "personalize",
260
- label: "Personalize",
261
- primaryEntity: "contact",
262
- outputs: ["contact"],
263
- stageKey: "personalized",
264
- dependsOn: ["verify-emails"],
265
- dependencyMode: "per-record-eligibility",
266
- capabilityKey: "lead-gen.contact.personalize",
267
- defaultBatchSize: 25,
268
- maxBatchSize: 100
269
- },
270
- review: {
271
- id: "review",
272
- label: "Reviewed and exported",
273
- primaryEntity: "contact",
274
- outputs: ["export"],
275
- stageKey: "uploaded",
276
- dependsOn: ["personalize"],
277
- dependencyMode: "per-record-eligibility",
278
- capabilityKey: "lead-gen.review.outreach-ready",
279
- defaultBatchSize: 25,
280
- maxBatchSize: 100
281
- }
282
- },
283
- dtcApolloClickup: {
284
- importApolloSearch: {
285
- id: "import-apollo-search",
286
- label: "Companies found",
287
- description: "Pull companies and seed contact data from a predefined Apollo search or list.",
288
- primaryEntity: "company",
289
- outputs: ["company", "contact"],
290
- stageKey: "populated",
291
- dependencyMode: "per-record-eligibility",
292
- capabilityKey: "lead-gen.company.apollo-import",
293
- defaultBatchSize: 250,
294
- maxBatchSize: 1e3,
295
- recordColumns: DTC_RECORD_COLUMNS.populated,
296
- credentialRequirements: [
297
- {
298
- key: "apollo",
299
- provider: "apollo",
300
- credentialType: "api-key-secret",
301
- label: "Apollo API key",
302
- required: true,
303
- selectionMode: "single",
304
- inputPath: "credential"
305
- }
306
- ]
307
- },
308
- apifyCrawl: {
309
- id: "apify-crawl",
310
- label: "Websites crawled",
311
- description: "Crawl company websites via Apify and store raw page markdown in enrichmentData.websiteCrawl.pages for downstream LLM analysis. Overwrites the synthetic seed Apollo Import wrote with real page content.",
312
- primaryEntity: "company",
313
- outputs: ["company"],
314
- stageKey: "crawled",
315
- dependsOn: ["import-apollo-search"],
316
- dependencyMode: "per-record-eligibility",
317
- capabilityKey: "lead-gen.company.apify-crawl",
318
- defaultBatchSize: 50,
319
- maxBatchSize: 100,
320
- recordColumns: DTC_RECORD_COLUMNS.crawled,
321
- credentialRequirements: [
322
- {
323
- key: "apify",
324
- provider: "apify",
325
- credentialType: "api-key-secret",
326
- label: "Apify API token",
327
- required: true,
328
- selectionMode: "single",
329
- inputPath: "credential",
330
- verifyOnRun: true
331
- }
332
- ]
333
- },
334
- analyzeWebsites: {
335
- id: "analyze-websites",
336
- label: "Websites analyzed",
337
- description: "Extract subscription, product, retention, and tech-stack signals from each brand website.",
338
- primaryEntity: "company",
339
- outputs: ["company"],
340
- stageKey: "extracted",
341
- dependsOn: ["apify-crawl"],
342
- dependencyMode: "per-record-eligibility",
343
- capabilityKey: "lead-gen.company.website-extract",
344
- defaultBatchSize: 50,
345
- maxBatchSize: 100,
346
- recordColumns: DTC_RECORD_COLUMNS.extracted
347
- },
348
- scoreDtcFit: {
349
- id: "score-dtc-fit",
350
- label: "Companies qualified",
351
- description: "Classify subscription potential, consumable-product fit, retention maturity, and disqualifiers.",
352
- primaryEntity: "company",
353
- outputs: ["company"],
354
- stageKey: "qualified",
355
- dependsOn: ["analyze-websites"],
356
- dependencyMode: "per-record-eligibility",
357
- capabilityKey: "lead-gen.company.dtc-subscription-qualify",
358
- defaultBatchSize: 100,
359
- maxBatchSize: 250,
360
- recordColumns: DTC_RECORD_COLUMNS.qualified
361
- },
362
- enrichDecisionMakers: {
363
- id: "enrich-decision-makers",
364
- label: "Decision-makers found",
365
- description: "Use Apollo to find qualified contacts at qualified companies - founders, retention leads, lifecycle leads, and marketing owners.",
366
- primaryEntity: "company",
367
- outputs: ["contact"],
368
- stageKey: "decision-makers-enriched",
369
- recordEntity: "contact",
370
- dependsOn: ["score-dtc-fit"],
371
- dependencyMode: "per-record-eligibility",
372
- capabilityKey: "lead-gen.contact.apollo-decision-maker-enrich",
373
- defaultBatchSize: 100,
374
- maxBatchSize: 250,
375
- recordColumns: DTC_RECORD_COLUMNS.decisionMakers,
376
- credentialRequirements: [
377
- {
378
- key: "apollo",
379
- provider: "apollo",
380
- credentialType: "api-key-secret",
381
- label: "Apollo API key",
382
- required: true,
383
- selectionMode: "single",
384
- inputPath: "credential"
385
- }
386
- ]
387
- },
388
- reviewAndExport: {
389
- id: "review-and-export",
390
- label: "Reviewed and exported",
391
- description: "Operator QC approves or rejects qualified companies, then approved records are exported as a lead list with unverified emails.",
392
- primaryEntity: "company",
393
- outputs: ["export"],
394
- stageKey: "uploaded",
395
- recordsStageKey: "uploaded",
396
- recordSourceStageKey: "qualified",
397
- dependsOn: ["enrich-decision-makers"],
398
- dependencyMode: "per-record-eligibility",
399
- capabilityKey: "lead-gen.export.list",
400
- defaultBatchSize: 100,
401
- maxBatchSize: 250,
402
- recordColumns: DTC_RECORD_COLUMNS.uploaded,
403
- credentialRequirements: [
404
- {
405
- key: "clickup",
406
- provider: "clickup",
407
- credentialType: "api-key-secret",
408
- label: "ClickUp API token",
409
- required: true,
410
- selectionMode: "single",
411
- inputPath: "clickupCredential",
412
- verifyOnRun: true
413
- }
414
- ]
415
- }
416
- }
417
- };
418
- var OrganizationModelProspectingSchema = z.object({
419
- listEntityId: ModelIdSchema,
420
- companyEntityId: ModelIdSchema,
421
- contactEntityId: ModelIdSchema,
422
- description: DescriptionSchema.optional(),
423
- companyStages: z.array(ProspectingLifecycleStageSchema).min(1),
424
- contactStages: z.array(ProspectingLifecycleStageSchema).min(1),
425
- defaultBuildTemplateId: ModelIdSchema,
426
- buildTemplates: z.array(ProspectingBuildTemplateSchema).min(1)
427
- });
428
- function toProspectingLifecycleStage(stage) {
429
- return {
430
- id: stage.key,
431
- label: stage.label,
432
- order: stage.order
433
- };
434
- }
435
- function leadGenStagesForEntity(entity) {
436
- return Object.values(LEAD_GEN_STAGE_CATALOG).filter((stage) => stage.entity === entity || stage.additionalEntities?.includes(entity)).sort((a, b) => a.order - b.order).map(toProspectingLifecycleStage);
437
- }
438
- var DEFAULT_ORGANIZATION_MODEL_PROSPECTING = {
439
- listEntityId: "leadgen.list",
440
- companyEntityId: "leadgen.company",
441
- contactEntityId: "leadgen.contact",
442
- companyStages: leadGenStagesForEntity("company"),
443
- contactStages: leadGenStagesForEntity("contact"),
444
- defaultBuildTemplateId: "local-services",
445
- buildTemplates: [
446
- {
447
- id: "local-services",
448
- label: "Local Services Prospecting",
449
- description: "Curated local-services list build using company sourcing, website analysis, qualification, contact discovery, verification, personalization, and review.",
450
- steps: [
451
- PROSPECTING_STEPS.localServices.sourceCompanies,
452
- PROSPECTING_STEPS.localServices.analyzeWebsites,
453
- PROSPECTING_STEPS.localServices.qualifyCompanies,
454
- PROSPECTING_STEPS.localServices.findContacts,
455
- PROSPECTING_STEPS.localServices.verifyEmails,
456
- PROSPECTING_STEPS.localServices.personalize,
457
- PROSPECTING_STEPS.localServices.review
458
- ]
459
- },
460
- {
461
- id: "dtc-subscription-apollo-clickup",
462
- label: "DTC Subscription Apollo Export",
463
- description: "Prospecting pipeline for DTC subscription or subscription-ready brands where Apollo is the source and contact-enrichment layer, Elevasis handles company research and fit scoring, and approved leads export as an approved lead list.",
464
- steps: [
465
- PROSPECTING_STEPS.dtcApolloClickup.importApolloSearch,
466
- PROSPECTING_STEPS.dtcApolloClickup.apifyCrawl,
467
- PROSPECTING_STEPS.dtcApolloClickup.analyzeWebsites,
468
- PROSPECTING_STEPS.dtcApolloClickup.scoreDtcFit,
469
- PROSPECTING_STEPS.dtcApolloClickup.enrichDecisionMakers,
470
- PROSPECTING_STEPS.dtcApolloClickup.reviewAndExport
471
- ]
472
- }
473
- ]
474
- };
475
-
476
- export { CAPABILITY_REGISTRY, DEFAULT_ORGANIZATION_MODEL_PROSPECTING, OrganizationModelProspectingSchema, PROSPECTING_STEPS };