@elevasis/core 0.17.0 → 0.19.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.
- package/dist/index.d.ts +82 -1
- package/dist/index.js +291 -171
- package/dist/knowledge/index.d.ts +43 -0
- package/dist/organization-model/index.d.ts +82 -1
- package/dist/organization-model/index.js +291 -171
- package/dist/test-utils/index.d.ts +41 -12
- package/dist/test-utils/index.js +291 -171
- package/package.json +2 -1
- package/src/_gen/__tests__/__snapshots__/contracts.md.snap +78 -65
- package/src/auth/multi-tenancy/organizations/__tests__/api-schemas.test.ts +194 -0
- package/src/auth/multi-tenancy/organizations/api-schemas.ts +136 -128
- package/src/business/acquisition/api-schemas.test.ts +100 -2
- package/src/business/acquisition/api-schemas.ts +81 -43
- package/src/business/acquisition/build-templates.test.ts +212 -0
- package/src/business/acquisition/types.ts +21 -38
- package/src/execution/engine/index.ts +436 -434
- package/src/execution/engine/tools/integration/server/adapters/google-calendar/google-calendar-adapter.ts +428 -0
- package/src/execution/engine/tools/integration/server/adapters/google-calendar/index.ts +2 -0
- package/src/execution/engine/tools/lead-service-types.ts +51 -9
- package/src/execution/engine/tools/platform/acquisition/company-tools.ts +7 -6
- package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +6 -5
- package/src/execution/engine/tools/platform/acquisition/types.ts +20 -9
- package/src/execution/engine/tools/registry.ts +700 -698
- package/src/execution/engine/tools/tool-maps.ts +10 -0
- package/src/execution/external/__tests__/api-schemas.test.ts +127 -0
- package/src/integrations/oauth/__tests__/provider-registry.test.ts +7 -6
- package/src/integrations/oauth/provider-registry.ts +74 -61
- package/src/integrations/oauth/server/credentials.ts +43 -39
- package/src/knowledge/__tests__/queries.test.ts +89 -0
- package/src/organization-model/__tests__/icons.test.ts +61 -0
- package/src/organization-model/__tests__/knowledge.test.ts +118 -1
- package/src/organization-model/__tests__/prospecting-ssot.test.ts +94 -0
- package/src/organization-model/defaults.ts +8 -0
- package/src/organization-model/domains/knowledge.ts +9 -0
- package/src/organization-model/domains/prospecting.ts +272 -226
- package/src/organization-model/domains/sales.ts +32 -25
- package/src/organization-model/icons.ts +3 -0
- package/src/organization-model/types.ts +9 -1
- package/src/platform/constants/versions.ts +1 -1
- package/src/platform/utils/__tests__/validation.test.ts +1084 -1083
- package/src/platform/utils/validation.ts +425 -425
- package/src/reference/_generated/contracts.md +78 -65
- package/src/server.ts +6 -0
- package/src/supabase/database.types.ts +6 -12
package/dist/test-utils/index.js
CHANGED
|
@@ -19418,6 +19418,7 @@ function makeTask(overrides = {}) {
|
|
|
19418
19418
|
}
|
|
19419
19419
|
var ORGANIZATION_MODEL_ICON_TOKENS = [
|
|
19420
19420
|
"nav.dashboard",
|
|
19421
|
+
"nav.calendar",
|
|
19421
19422
|
"nav.sales",
|
|
19422
19423
|
"nav.crm",
|
|
19423
19424
|
"nav.lead-gen",
|
|
@@ -19432,6 +19433,7 @@ var ORGANIZATION_MODEL_ICON_TOKENS = [
|
|
|
19432
19433
|
"knowledge.strategy",
|
|
19433
19434
|
"knowledge.reference",
|
|
19434
19435
|
"feature.dashboard",
|
|
19436
|
+
"feature.calendar",
|
|
19435
19437
|
"feature.sales",
|
|
19436
19438
|
"feature.crm",
|
|
19437
19439
|
"feature.finance",
|
|
@@ -19455,6 +19457,7 @@ var ORGANIZATION_MODEL_ICON_TOKENS = [
|
|
|
19455
19457
|
"integration.google-sheets",
|
|
19456
19458
|
"integration.attio",
|
|
19457
19459
|
"surface.dashboard",
|
|
19460
|
+
"surface.calendar",
|
|
19458
19461
|
"surface.overview",
|
|
19459
19462
|
"surface.command-view",
|
|
19460
19463
|
"surface.command-queue",
|
|
@@ -19635,6 +19638,89 @@ var DEFAULT_ORGANIZATION_MODEL_SALES = {
|
|
|
19635
19638
|
}
|
|
19636
19639
|
]
|
|
19637
19640
|
};
|
|
19641
|
+
var LEAD_GEN_STAGE_CATALOG = {
|
|
19642
|
+
// Prospecting — company population
|
|
19643
|
+
scraped: {
|
|
19644
|
+
key: "scraped",
|
|
19645
|
+
label: "Scraped",
|
|
19646
|
+
description: "Company was scraped from a source directory (Apify actor run).",
|
|
19647
|
+
order: 1,
|
|
19648
|
+
entity: "company"
|
|
19649
|
+
},
|
|
19650
|
+
populated: {
|
|
19651
|
+
key: "populated",
|
|
19652
|
+
label: "Companies found",
|
|
19653
|
+
description: "Companies have been found and added to the lead-gen list.",
|
|
19654
|
+
order: 2,
|
|
19655
|
+
entity: "company"
|
|
19656
|
+
},
|
|
19657
|
+
extracted: {
|
|
19658
|
+
key: "extracted",
|
|
19659
|
+
label: "Websites analyzed",
|
|
19660
|
+
description: "Company websites have been analyzed for business signals.",
|
|
19661
|
+
order: 3,
|
|
19662
|
+
entity: "company"
|
|
19663
|
+
},
|
|
19664
|
+
enriched: {
|
|
19665
|
+
key: "enriched",
|
|
19666
|
+
label: "Enriched",
|
|
19667
|
+
description: "Company or contact enriched with third-party data (e.g. Tomba, Anymailfinder).",
|
|
19668
|
+
order: 4,
|
|
19669
|
+
entity: "company"
|
|
19670
|
+
},
|
|
19671
|
+
"decision-makers-enriched": {
|
|
19672
|
+
key: "decision-makers-enriched",
|
|
19673
|
+
label: "Decision-makers found",
|
|
19674
|
+
description: "Decision-maker contacts discovered and attached to a qualified company.",
|
|
19675
|
+
order: 6,
|
|
19676
|
+
entity: "company"
|
|
19677
|
+
},
|
|
19678
|
+
// Prospecting — contact discovery
|
|
19679
|
+
discovered: {
|
|
19680
|
+
key: "discovered",
|
|
19681
|
+
label: "Decision-makers found",
|
|
19682
|
+
description: "Decision-maker contact details have been found.",
|
|
19683
|
+
order: 5,
|
|
19684
|
+
entity: "contact"
|
|
19685
|
+
},
|
|
19686
|
+
verified: {
|
|
19687
|
+
key: "verified",
|
|
19688
|
+
label: "Emails verified",
|
|
19689
|
+
description: "Contact email addresses have been checked for deliverability.",
|
|
19690
|
+
order: 7,
|
|
19691
|
+
entity: "contact"
|
|
19692
|
+
},
|
|
19693
|
+
// Qualification
|
|
19694
|
+
qualified: {
|
|
19695
|
+
key: "qualified",
|
|
19696
|
+
label: "Companies qualified",
|
|
19697
|
+
description: "Companies have been scored against the qualification criteria.",
|
|
19698
|
+
order: 8,
|
|
19699
|
+
entity: "company"
|
|
19700
|
+
},
|
|
19701
|
+
// Outreach
|
|
19702
|
+
personalized: {
|
|
19703
|
+
key: "personalized",
|
|
19704
|
+
label: "Personalized",
|
|
19705
|
+
description: "Outreach message personalized for the contact (Instantly personalization workflow).",
|
|
19706
|
+
order: 9,
|
|
19707
|
+
entity: "contact"
|
|
19708
|
+
},
|
|
19709
|
+
uploaded: {
|
|
19710
|
+
key: "uploaded",
|
|
19711
|
+
label: "Reviewed and exported",
|
|
19712
|
+
description: "Approved records have been reviewed and exported for handoff.",
|
|
19713
|
+
order: 10,
|
|
19714
|
+
entity: "contact"
|
|
19715
|
+
},
|
|
19716
|
+
interested: {
|
|
19717
|
+
key: "interested",
|
|
19718
|
+
label: "Interested",
|
|
19719
|
+
description: "Contact replied with a positive signal (Instantly reply-handler transition).",
|
|
19720
|
+
order: 11,
|
|
19721
|
+
entity: "contact"
|
|
19722
|
+
}
|
|
19723
|
+
};
|
|
19638
19724
|
var ProjectsDomainStateSchema = DisplayMetadataSchema.extend({
|
|
19639
19725
|
id: ModelIdSchema,
|
|
19640
19726
|
order: z.number().int().min(0)
|
|
@@ -19715,6 +19801,172 @@ var ProspectingBuildTemplateSchema = DisplayMetadataSchema.extend({
|
|
|
19715
19801
|
id: ModelIdSchema,
|
|
19716
19802
|
steps: z.array(ProspectingBuildTemplateStepSchema).min(1)
|
|
19717
19803
|
});
|
|
19804
|
+
var PROSPECTING_STEPS = {
|
|
19805
|
+
localServices: {
|
|
19806
|
+
sourceCompanies: {
|
|
19807
|
+
id: "source-companies",
|
|
19808
|
+
label: "Companies found",
|
|
19809
|
+
primaryEntity: "company",
|
|
19810
|
+
outputs: ["company"],
|
|
19811
|
+
stageKey: "populated",
|
|
19812
|
+
dependencyMode: "per-record-eligibility",
|
|
19813
|
+
capabilityKey: "lead-gen.company.source",
|
|
19814
|
+
defaultBatchSize: 100,
|
|
19815
|
+
maxBatchSize: 250
|
|
19816
|
+
},
|
|
19817
|
+
analyzeWebsites: {
|
|
19818
|
+
id: "analyze-websites",
|
|
19819
|
+
label: "Websites analyzed",
|
|
19820
|
+
primaryEntity: "company",
|
|
19821
|
+
outputs: ["company"],
|
|
19822
|
+
stageKey: "extracted",
|
|
19823
|
+
dependsOn: ["source-companies"],
|
|
19824
|
+
dependencyMode: "per-record-eligibility",
|
|
19825
|
+
capabilityKey: "lead-gen.company.website-extract",
|
|
19826
|
+
defaultBatchSize: 50,
|
|
19827
|
+
maxBatchSize: 100
|
|
19828
|
+
},
|
|
19829
|
+
qualifyCompanies: {
|
|
19830
|
+
id: "qualify-companies",
|
|
19831
|
+
label: "Companies qualified",
|
|
19832
|
+
primaryEntity: "company",
|
|
19833
|
+
outputs: ["company"],
|
|
19834
|
+
stageKey: "qualified",
|
|
19835
|
+
dependsOn: ["analyze-websites"],
|
|
19836
|
+
dependencyMode: "per-record-eligibility",
|
|
19837
|
+
capabilityKey: "lead-gen.company.qualify",
|
|
19838
|
+
defaultBatchSize: 100,
|
|
19839
|
+
maxBatchSize: 250
|
|
19840
|
+
},
|
|
19841
|
+
findContacts: {
|
|
19842
|
+
id: "find-contacts",
|
|
19843
|
+
label: "Decision-makers found",
|
|
19844
|
+
primaryEntity: "contact",
|
|
19845
|
+
outputs: ["contact"],
|
|
19846
|
+
stageKey: "discovered",
|
|
19847
|
+
dependsOn: ["qualify-companies"],
|
|
19848
|
+
dependencyMode: "per-record-eligibility",
|
|
19849
|
+
capabilityKey: "lead-gen.contact.discover",
|
|
19850
|
+
defaultBatchSize: 50,
|
|
19851
|
+
maxBatchSize: 100
|
|
19852
|
+
},
|
|
19853
|
+
verifyEmails: {
|
|
19854
|
+
id: "verify-emails",
|
|
19855
|
+
label: "Emails verified",
|
|
19856
|
+
primaryEntity: "contact",
|
|
19857
|
+
outputs: ["contact"],
|
|
19858
|
+
stageKey: "verified",
|
|
19859
|
+
dependsOn: ["find-contacts"],
|
|
19860
|
+
dependencyMode: "per-record-eligibility",
|
|
19861
|
+
capabilityKey: "lead-gen.contact.verify-email",
|
|
19862
|
+
defaultBatchSize: 100,
|
|
19863
|
+
maxBatchSize: 500
|
|
19864
|
+
},
|
|
19865
|
+
personalize: {
|
|
19866
|
+
id: "personalize",
|
|
19867
|
+
label: "Personalize",
|
|
19868
|
+
primaryEntity: "contact",
|
|
19869
|
+
outputs: ["contact"],
|
|
19870
|
+
stageKey: "personalized",
|
|
19871
|
+
dependsOn: ["verify-emails"],
|
|
19872
|
+
dependencyMode: "per-record-eligibility",
|
|
19873
|
+
capabilityKey: "lead-gen.contact.personalize",
|
|
19874
|
+
defaultBatchSize: 25,
|
|
19875
|
+
maxBatchSize: 100
|
|
19876
|
+
},
|
|
19877
|
+
review: {
|
|
19878
|
+
id: "review",
|
|
19879
|
+
label: "Reviewed and exported",
|
|
19880
|
+
primaryEntity: "contact",
|
|
19881
|
+
outputs: ["export"],
|
|
19882
|
+
stageKey: "uploaded",
|
|
19883
|
+
dependsOn: ["personalize"],
|
|
19884
|
+
dependencyMode: "per-record-eligibility",
|
|
19885
|
+
capabilityKey: "lead-gen.review.outreach-ready",
|
|
19886
|
+
defaultBatchSize: 25,
|
|
19887
|
+
maxBatchSize: 100
|
|
19888
|
+
}
|
|
19889
|
+
},
|
|
19890
|
+
dtcApolloClickup: {
|
|
19891
|
+
importApolloSearch: {
|
|
19892
|
+
id: "import-apollo-search",
|
|
19893
|
+
label: "Companies found",
|
|
19894
|
+
description: "Pull companies and seed contact data from a predefined Apollo search or list.",
|
|
19895
|
+
primaryEntity: "company",
|
|
19896
|
+
outputs: ["company", "contact"],
|
|
19897
|
+
stageKey: "populated",
|
|
19898
|
+
dependencyMode: "per-record-eligibility",
|
|
19899
|
+
capabilityKey: "lead-gen.company.apollo-import",
|
|
19900
|
+
defaultBatchSize: 250,
|
|
19901
|
+
maxBatchSize: 1e3
|
|
19902
|
+
},
|
|
19903
|
+
analyzeWebsites: {
|
|
19904
|
+
id: "analyze-websites",
|
|
19905
|
+
label: "Websites analyzed",
|
|
19906
|
+
description: "Extract subscription, product, retention, and tech-stack signals from each brand website.",
|
|
19907
|
+
primaryEntity: "company",
|
|
19908
|
+
outputs: ["company"],
|
|
19909
|
+
stageKey: "extracted",
|
|
19910
|
+
dependsOn: ["import-apollo-search"],
|
|
19911
|
+
dependencyMode: "per-record-eligibility",
|
|
19912
|
+
capabilityKey: "lead-gen.company.website-extract",
|
|
19913
|
+
defaultBatchSize: 50,
|
|
19914
|
+
maxBatchSize: 100
|
|
19915
|
+
},
|
|
19916
|
+
scoreDtcFit: {
|
|
19917
|
+
id: "score-dtc-fit",
|
|
19918
|
+
label: "Companies qualified",
|
|
19919
|
+
description: "Classify subscription potential, consumable-product fit, retention maturity, and disqualifiers.",
|
|
19920
|
+
primaryEntity: "company",
|
|
19921
|
+
outputs: ["company"],
|
|
19922
|
+
stageKey: "qualified",
|
|
19923
|
+
dependsOn: ["analyze-websites"],
|
|
19924
|
+
dependencyMode: "per-record-eligibility",
|
|
19925
|
+
capabilityKey: "lead-gen.company.dtc-subscription-qualify",
|
|
19926
|
+
defaultBatchSize: 100,
|
|
19927
|
+
maxBatchSize: 250
|
|
19928
|
+
},
|
|
19929
|
+
enrichDecisionMakers: {
|
|
19930
|
+
id: "enrich-decision-makers",
|
|
19931
|
+
label: "Decision-makers found",
|
|
19932
|
+
description: "Use Apollo to find qualified contacts at qualified companies - founders, retention leads, lifecycle leads, and marketing owners.",
|
|
19933
|
+
primaryEntity: "company",
|
|
19934
|
+
outputs: ["contact"],
|
|
19935
|
+
stageKey: "decision-makers-enriched",
|
|
19936
|
+
dependsOn: ["score-dtc-fit"],
|
|
19937
|
+
dependencyMode: "per-record-eligibility",
|
|
19938
|
+
capabilityKey: "lead-gen.contact.apollo-decision-maker-enrich",
|
|
19939
|
+
defaultBatchSize: 100,
|
|
19940
|
+
maxBatchSize: 250
|
|
19941
|
+
},
|
|
19942
|
+
verifyEmails: {
|
|
19943
|
+
id: "verify-emails",
|
|
19944
|
+
label: "Emails verified",
|
|
19945
|
+
description: "Verify deliverability before the QC and handoff step.",
|
|
19946
|
+
primaryEntity: "contact",
|
|
19947
|
+
outputs: ["contact"],
|
|
19948
|
+
stageKey: "verified",
|
|
19949
|
+
dependsOn: ["enrich-decision-makers"],
|
|
19950
|
+
dependencyMode: "per-record-eligibility",
|
|
19951
|
+
capabilityKey: "lead-gen.contact.verify-email",
|
|
19952
|
+
defaultBatchSize: 250,
|
|
19953
|
+
maxBatchSize: 500
|
|
19954
|
+
},
|
|
19955
|
+
reviewAndExport: {
|
|
19956
|
+
id: "review-and-export",
|
|
19957
|
+
label: "Reviewed and exported",
|
|
19958
|
+
description: "Operator QC approves or rejects leads, then approved records are exported as a lead list.",
|
|
19959
|
+
primaryEntity: "company",
|
|
19960
|
+
outputs: ["export"],
|
|
19961
|
+
stageKey: "uploaded",
|
|
19962
|
+
dependsOn: ["verify-emails"],
|
|
19963
|
+
dependencyMode: "per-record-eligibility",
|
|
19964
|
+
capabilityKey: "lead-gen.export.list",
|
|
19965
|
+
defaultBatchSize: 100,
|
|
19966
|
+
maxBatchSize: 250
|
|
19967
|
+
}
|
|
19968
|
+
}
|
|
19969
|
+
};
|
|
19718
19970
|
var OrganizationModelProspectingSchema = z.object({
|
|
19719
19971
|
listEntityId: ModelIdSchema,
|
|
19720
19972
|
companyEntityId: ModelIdSchema,
|
|
@@ -19725,21 +19977,22 @@ var OrganizationModelProspectingSchema = z.object({
|
|
|
19725
19977
|
defaultBuildTemplateId: ModelIdSchema,
|
|
19726
19978
|
buildTemplates: z.array(ProspectingBuildTemplateSchema).min(1)
|
|
19727
19979
|
});
|
|
19980
|
+
function toProspectingLifecycleStage(stage) {
|
|
19981
|
+
return {
|
|
19982
|
+
id: stage.key,
|
|
19983
|
+
label: stage.label,
|
|
19984
|
+
order: stage.order
|
|
19985
|
+
};
|
|
19986
|
+
}
|
|
19987
|
+
function leadGenStagesForEntity(entity) {
|
|
19988
|
+
return Object.values(LEAD_GEN_STAGE_CATALOG).filter((stage) => stage.entity === entity).sort((a3, b2) => a3.order - b2.order).map(toProspectingLifecycleStage);
|
|
19989
|
+
}
|
|
19728
19990
|
var DEFAULT_ORGANIZATION_MODEL_PROSPECTING = {
|
|
19729
19991
|
listEntityId: "leadgen.list",
|
|
19730
19992
|
companyEntityId: "leadgen.company",
|
|
19731
19993
|
contactEntityId: "leadgen.contact",
|
|
19732
|
-
companyStages:
|
|
19733
|
-
|
|
19734
|
-
{ id: "extracted", label: "Extracted", order: 2 },
|
|
19735
|
-
{ id: "qualified", label: "Qualified", order: 3 }
|
|
19736
|
-
],
|
|
19737
|
-
contactStages: [
|
|
19738
|
-
{ id: "discovered", label: "Discovered", order: 1 },
|
|
19739
|
-
{ id: "verified", label: "Verified", order: 2 },
|
|
19740
|
-
{ id: "personalized", label: "Personalized", order: 3 },
|
|
19741
|
-
{ id: "uploaded", label: "Uploaded", order: 4 }
|
|
19742
|
-
],
|
|
19994
|
+
companyStages: leadGenStagesForEntity("company"),
|
|
19995
|
+
contactStages: leadGenStagesForEntity("contact"),
|
|
19743
19996
|
defaultBuildTemplateId: "local-services",
|
|
19744
19997
|
buildTemplates: [
|
|
19745
19998
|
{
|
|
@@ -19747,89 +20000,13 @@ var DEFAULT_ORGANIZATION_MODEL_PROSPECTING = {
|
|
|
19747
20000
|
label: "Local Services Prospecting",
|
|
19748
20001
|
description: "Curated local-services list build using company sourcing, website analysis, qualification, contact discovery, verification, personalization, and review.",
|
|
19749
20002
|
steps: [
|
|
19750
|
-
|
|
19751
|
-
|
|
19752
|
-
|
|
19753
|
-
|
|
19754
|
-
|
|
19755
|
-
|
|
19756
|
-
|
|
19757
|
-
capabilityKey: "lead-gen.company.source",
|
|
19758
|
-
defaultBatchSize: 100,
|
|
19759
|
-
maxBatchSize: 250
|
|
19760
|
-
},
|
|
19761
|
-
{
|
|
19762
|
-
id: "analyze-websites",
|
|
19763
|
-
label: "Analyze websites",
|
|
19764
|
-
primaryEntity: "company",
|
|
19765
|
-
outputs: ["company"],
|
|
19766
|
-
stageKey: "extracted",
|
|
19767
|
-
dependsOn: ["source-companies"],
|
|
19768
|
-
dependencyMode: "per-record-eligibility",
|
|
19769
|
-
capabilityKey: "lead-gen.company.website-extract",
|
|
19770
|
-
defaultBatchSize: 50,
|
|
19771
|
-
maxBatchSize: 100
|
|
19772
|
-
},
|
|
19773
|
-
{
|
|
19774
|
-
id: "qualify-companies",
|
|
19775
|
-
label: "Qualify companies",
|
|
19776
|
-
primaryEntity: "company",
|
|
19777
|
-
outputs: ["company"],
|
|
19778
|
-
stageKey: "qualified",
|
|
19779
|
-
dependsOn: ["analyze-websites"],
|
|
19780
|
-
dependencyMode: "per-record-eligibility",
|
|
19781
|
-
capabilityKey: "lead-gen.company.qualify",
|
|
19782
|
-
defaultBatchSize: 100,
|
|
19783
|
-
maxBatchSize: 250
|
|
19784
|
-
},
|
|
19785
|
-
{
|
|
19786
|
-
id: "find-contacts",
|
|
19787
|
-
label: "Find contacts",
|
|
19788
|
-
primaryEntity: "contact",
|
|
19789
|
-
outputs: ["contact"],
|
|
19790
|
-
stageKey: "discovered",
|
|
19791
|
-
dependsOn: ["qualify-companies"],
|
|
19792
|
-
dependencyMode: "per-record-eligibility",
|
|
19793
|
-
capabilityKey: "lead-gen.contact.discover",
|
|
19794
|
-
defaultBatchSize: 50,
|
|
19795
|
-
maxBatchSize: 100
|
|
19796
|
-
},
|
|
19797
|
-
{
|
|
19798
|
-
id: "verify-emails",
|
|
19799
|
-
label: "Verify emails",
|
|
19800
|
-
primaryEntity: "contact",
|
|
19801
|
-
outputs: ["contact"],
|
|
19802
|
-
stageKey: "verified",
|
|
19803
|
-
dependsOn: ["find-contacts"],
|
|
19804
|
-
dependencyMode: "per-record-eligibility",
|
|
19805
|
-
capabilityKey: "lead-gen.contact.verify-email",
|
|
19806
|
-
defaultBatchSize: 100,
|
|
19807
|
-
maxBatchSize: 500
|
|
19808
|
-
},
|
|
19809
|
-
{
|
|
19810
|
-
id: "personalize",
|
|
19811
|
-
label: "Personalize",
|
|
19812
|
-
primaryEntity: "contact",
|
|
19813
|
-
outputs: ["contact"],
|
|
19814
|
-
stageKey: "personalized",
|
|
19815
|
-
dependsOn: ["verify-emails"],
|
|
19816
|
-
dependencyMode: "per-record-eligibility",
|
|
19817
|
-
capabilityKey: "lead-gen.contact.personalize",
|
|
19818
|
-
defaultBatchSize: 25,
|
|
19819
|
-
maxBatchSize: 100
|
|
19820
|
-
},
|
|
19821
|
-
{
|
|
19822
|
-
id: "review",
|
|
19823
|
-
label: "Review",
|
|
19824
|
-
primaryEntity: "contact",
|
|
19825
|
-
outputs: ["export"],
|
|
19826
|
-
stageKey: "uploaded",
|
|
19827
|
-
dependsOn: ["personalize"],
|
|
19828
|
-
dependencyMode: "per-record-eligibility",
|
|
19829
|
-
capabilityKey: "lead-gen.review.outreach-ready",
|
|
19830
|
-
defaultBatchSize: 25,
|
|
19831
|
-
maxBatchSize: 100
|
|
19832
|
-
}
|
|
20003
|
+
PROSPECTING_STEPS.localServices.sourceCompanies,
|
|
20004
|
+
PROSPECTING_STEPS.localServices.analyzeWebsites,
|
|
20005
|
+
PROSPECTING_STEPS.localServices.qualifyCompanies,
|
|
20006
|
+
PROSPECTING_STEPS.localServices.findContacts,
|
|
20007
|
+
PROSPECTING_STEPS.localServices.verifyEmails,
|
|
20008
|
+
PROSPECTING_STEPS.localServices.personalize,
|
|
20009
|
+
PROSPECTING_STEPS.localServices.review
|
|
19833
20010
|
]
|
|
19834
20011
|
},
|
|
19835
20012
|
{
|
|
@@ -19837,83 +20014,12 @@ var DEFAULT_ORGANIZATION_MODEL_PROSPECTING = {
|
|
|
19837
20014
|
label: "DTC Subscription Apollo Export",
|
|
19838
20015
|
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.",
|
|
19839
20016
|
steps: [
|
|
19840
|
-
|
|
19841
|
-
|
|
19842
|
-
|
|
19843
|
-
|
|
19844
|
-
|
|
19845
|
-
|
|
19846
|
-
stageKey: "populated",
|
|
19847
|
-
dependencyMode: "per-record-eligibility",
|
|
19848
|
-
capabilityKey: "lead-gen.company.apollo-import",
|
|
19849
|
-
defaultBatchSize: 250,
|
|
19850
|
-
maxBatchSize: 1e3
|
|
19851
|
-
},
|
|
19852
|
-
{
|
|
19853
|
-
id: "analyze-websites",
|
|
19854
|
-
label: "Analyze websites",
|
|
19855
|
-
description: "Extract subscription, product, retention, and tech-stack signals from each brand website.",
|
|
19856
|
-
primaryEntity: "company",
|
|
19857
|
-
outputs: ["company"],
|
|
19858
|
-
stageKey: "extracted",
|
|
19859
|
-
dependsOn: ["import-apollo-search"],
|
|
19860
|
-
dependencyMode: "per-record-eligibility",
|
|
19861
|
-
capabilityKey: "lead-gen.company.website-extract",
|
|
19862
|
-
defaultBatchSize: 50,
|
|
19863
|
-
maxBatchSize: 100
|
|
19864
|
-
},
|
|
19865
|
-
{
|
|
19866
|
-
id: "score-dtc-fit",
|
|
19867
|
-
label: "Score DTC fit",
|
|
19868
|
-
description: "Classify subscription potential, consumable-product fit, retention maturity, and disqualifiers.",
|
|
19869
|
-
primaryEntity: "company",
|
|
19870
|
-
outputs: ["company"],
|
|
19871
|
-
stageKey: "qualified",
|
|
19872
|
-
dependsOn: ["analyze-websites"],
|
|
19873
|
-
dependencyMode: "per-record-eligibility",
|
|
19874
|
-
capabilityKey: "lead-gen.company.dtc-subscription-qualify",
|
|
19875
|
-
defaultBatchSize: 100,
|
|
19876
|
-
maxBatchSize: 250
|
|
19877
|
-
},
|
|
19878
|
-
{
|
|
19879
|
-
id: "enrich-decision-makers",
|
|
19880
|
-
label: "Enrich decision-makers",
|
|
19881
|
-
description: "Use Apollo to find qualified contacts such as founders, retention leads, lifecycle leads, and marketing owners.",
|
|
19882
|
-
primaryEntity: "contact",
|
|
19883
|
-
outputs: ["contact"],
|
|
19884
|
-
stageKey: "discovered",
|
|
19885
|
-
dependsOn: ["score-dtc-fit"],
|
|
19886
|
-
dependencyMode: "per-record-eligibility",
|
|
19887
|
-
capabilityKey: "lead-gen.contact.apollo-decision-maker-enrich",
|
|
19888
|
-
defaultBatchSize: 100,
|
|
19889
|
-
maxBatchSize: 250
|
|
19890
|
-
},
|
|
19891
|
-
{
|
|
19892
|
-
id: "verify-emails",
|
|
19893
|
-
label: "Verify emails",
|
|
19894
|
-
description: "Verify deliverability before the QC and handoff step.",
|
|
19895
|
-
primaryEntity: "contact",
|
|
19896
|
-
outputs: ["contact"],
|
|
19897
|
-
stageKey: "verified",
|
|
19898
|
-
dependsOn: ["enrich-decision-makers"],
|
|
19899
|
-
dependencyMode: "per-record-eligibility",
|
|
19900
|
-
capabilityKey: "lead-gen.contact.verify-email",
|
|
19901
|
-
defaultBatchSize: 250,
|
|
19902
|
-
maxBatchSize: 500
|
|
19903
|
-
},
|
|
19904
|
-
{
|
|
19905
|
-
id: "review-and-export",
|
|
19906
|
-
label: "Review and export",
|
|
19907
|
-
description: "Operator QC approves or rejects leads, then approved records are exported as a lead list.",
|
|
19908
|
-
primaryEntity: "company",
|
|
19909
|
-
outputs: ["export"],
|
|
19910
|
-
stageKey: "uploaded",
|
|
19911
|
-
dependsOn: ["verify-emails"],
|
|
19912
|
-
dependencyMode: "per-record-eligibility",
|
|
19913
|
-
capabilityKey: "lead-gen.export.list",
|
|
19914
|
-
defaultBatchSize: 100,
|
|
19915
|
-
maxBatchSize: 250
|
|
19916
|
-
}
|
|
20017
|
+
PROSPECTING_STEPS.dtcApolloClickup.importApolloSearch,
|
|
20018
|
+
PROSPECTING_STEPS.dtcApolloClickup.analyzeWebsites,
|
|
20019
|
+
PROSPECTING_STEPS.dtcApolloClickup.scoreDtcFit,
|
|
20020
|
+
PROSPECTING_STEPS.dtcApolloClickup.enrichDecisionMakers,
|
|
20021
|
+
PROSPECTING_STEPS.dtcApolloClickup.verifyEmails,
|
|
20022
|
+
PROSPECTING_STEPS.dtcApolloClickup.reviewAndExport
|
|
19917
20023
|
]
|
|
19918
20024
|
}
|
|
19919
20025
|
]
|
|
@@ -20342,6 +20448,8 @@ var DEFAULT_ORGANIZATION_MODEL_STATUSES = {
|
|
|
20342
20448
|
var KnowledgeLinkSchema = z.object({
|
|
20343
20449
|
nodeId: NodeIdStringSchema
|
|
20344
20450
|
});
|
|
20451
|
+
var KnowledgeSkillBindingSchema = z.string().trim().min(1).max(120);
|
|
20452
|
+
var KnowledgeDomainBindingSchema = z.string().trim().min(1).max(80);
|
|
20345
20453
|
var OrgKnowledgeKindSchema = z.enum(["playbook", "strategy", "reference"]);
|
|
20346
20454
|
var OrgKnowledgeNodeSchema = z.object({
|
|
20347
20455
|
id: ModelIdSchema,
|
|
@@ -20356,6 +20464,10 @@ var OrgKnowledgeNodeSchema = z.object({
|
|
|
20356
20464
|
* Each link emits a `governs` edge: knowledge-node -> target node.
|
|
20357
20465
|
*/
|
|
20358
20466
|
links: z.array(KnowledgeLinkSchema).default([]),
|
|
20467
|
+
/** Operator skill or command bindings relevant to this node. */
|
|
20468
|
+
skills: z.array(KnowledgeSkillBindingSchema).optional(),
|
|
20469
|
+
/** Domain key used to derive fast graph->skill registries. */
|
|
20470
|
+
domain: KnowledgeDomainBindingSchema.optional(),
|
|
20359
20471
|
/** Identifiers of the roles or members who own this knowledge node. */
|
|
20360
20472
|
ownerIds: z.array(ModelIdSchema).default([]),
|
|
20361
20473
|
/** ISO date string (YYYY-MM-DD or full ISO 8601) of last meaningful update. */
|
|
@@ -20606,6 +20718,14 @@ var DEFAULT_ORGANIZATION_MODEL = {
|
|
|
20606
20718
|
enabled: true,
|
|
20607
20719
|
uiPosition: "sidebar-primary"
|
|
20608
20720
|
},
|
|
20721
|
+
{
|
|
20722
|
+
id: "monitoring.calendar",
|
|
20723
|
+
label: "Calendar",
|
|
20724
|
+
description: "Google Calendar events and agenda views",
|
|
20725
|
+
enabled: true,
|
|
20726
|
+
path: "/monitoring/calendar",
|
|
20727
|
+
icon: "feature.calendar"
|
|
20728
|
+
},
|
|
20609
20729
|
{
|
|
20610
20730
|
id: "monitoring.activity-log",
|
|
20611
20731
|
label: "Activity Log",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elevasis/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Minimal shared constants across Elevasis monorepo",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
"@anthropic-ai/sdk": "^0.62.0",
|
|
49
49
|
"yaml": "^2.8.1",
|
|
50
50
|
"@google/genai": "^1.30.0",
|
|
51
|
+
"@googleapis/calendar": "^14.0.0",
|
|
51
52
|
"@googleapis/gmail": "^15.0.0",
|
|
52
53
|
"@googleapis/sheets": "^12.0.0",
|
|
53
54
|
"@sentry/node": "^8.55.0",
|