lean-claudient-core 0.1.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/.reports/detailed-analysis_2026-06-20_01ed326b.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_08d39381.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_0a331144.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_0d54ffef.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_14bfa31c.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_211feac4.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_22381bc2.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_29b4ea0a.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_2df0ad14.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_343ec84c.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_3a01030d.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_3b4c99ec.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_3d368827.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_53544d3d.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_5721164a.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_57caf5e7.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_624302f5.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_62456384.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_636a52f1.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_63d1ad41.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_7451ccd7.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_74da4e9a.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_83a90083.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_867fbdd9.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_974c3299.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_a04639a2.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_a8e23d6d.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_aa9150f0.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_acbeee08.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_c4ffa0e2.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_c5f7684b.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_c963b1fa.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_d4bde41f.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_d6eb2497.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_ea6f7f58.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_ebf4e060.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_ec4313a9.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_fc65d18e.html +200 -0
- package/.reports/executive-summary_2026-06-20_00406d50.html +109 -0
- package/.reports/executive-summary_2026-06-20_0bb202d3.html +109 -0
- package/.reports/executive-summary_2026-06-20_0bcd7481.html +109 -0
- package/.reports/executive-summary_2026-06-20_11506445.html +109 -0
- package/.reports/executive-summary_2026-06-20_13616cda.html +109 -0
- package/.reports/executive-summary_2026-06-20_19d41c2f.html +109 -0
- package/.reports/executive-summary_2026-06-20_1b0d6e96.html +109 -0
- package/.reports/executive-summary_2026-06-20_1e38670b.html +109 -0
- package/.reports/executive-summary_2026-06-20_1f32f793.html +109 -0
- package/.reports/executive-summary_2026-06-20_1f40f7d3.html +109 -0
- package/.reports/executive-summary_2026-06-20_25a40a7e.html +109 -0
- package/.reports/executive-summary_2026-06-20_26d11818.html +109 -0
- package/.reports/executive-summary_2026-06-20_26ed4593.html +109 -0
- package/.reports/executive-summary_2026-06-20_291b90a8.html +109 -0
- package/.reports/executive-summary_2026-06-20_2957a848.html +109 -0
- package/.reports/executive-summary_2026-06-20_2a04eb77.html +109 -0
- package/.reports/executive-summary_2026-06-20_2fa701f9.html +109 -0
- package/.reports/executive-summary_2026-06-20_327af8f5.html +109 -0
- package/.reports/executive-summary_2026-06-20_3418c729.html +109 -0
- package/.reports/executive-summary_2026-06-20_3571763d.html +109 -0
- package/.reports/executive-summary_2026-06-20_36225353.html +109 -0
- package/.reports/executive-summary_2026-06-20_3b2de891.html +109 -0
- package/.reports/executive-summary_2026-06-20_45b980c2.html +109 -0
- package/.reports/executive-summary_2026-06-20_46fcbf17.html +109 -0
- package/.reports/executive-summary_2026-06-20_48c8fa5e.html +109 -0
- package/.reports/executive-summary_2026-06-20_4ba55c43.html +109 -0
- package/.reports/executive-summary_2026-06-20_4f4498e6.html +109 -0
- package/.reports/executive-summary_2026-06-20_54c33bf0.html +109 -0
- package/.reports/executive-summary_2026-06-20_54cc7077.html +109 -0
- package/.reports/executive-summary_2026-06-20_5a12912e.html +109 -0
- package/.reports/executive-summary_2026-06-20_636fac87.html +109 -0
- package/.reports/executive-summary_2026-06-20_6587faaf.html +109 -0
- package/.reports/executive-summary_2026-06-20_6adbdd03.html +109 -0
- package/.reports/executive-summary_2026-06-20_6bf344ec.html +109 -0
- package/.reports/executive-summary_2026-06-20_7142aeed.html +109 -0
- package/.reports/executive-summary_2026-06-20_72bc0ceb.html +109 -0
- package/.reports/executive-summary_2026-06-20_775752ac.html +109 -0
- package/.reports/executive-summary_2026-06-20_7a9c3223.html +109 -0
- package/.reports/executive-summary_2026-06-20_808e6376.html +109 -0
- package/.reports/executive-summary_2026-06-20_8de9142d.html +109 -0
- package/.reports/executive-summary_2026-06-20_91981fbe.html +109 -0
- package/.reports/executive-summary_2026-06-20_93191c8c.html +109 -0
- package/.reports/executive-summary_2026-06-20_9be48a87.html +109 -0
- package/.reports/executive-summary_2026-06-20_9c127198.html +109 -0
- package/.reports/executive-summary_2026-06-20_9ee303ac.html +109 -0
- package/.reports/executive-summary_2026-06-20_9ee52709.html +109 -0
- package/.reports/executive-summary_2026-06-20_a0fa27de.html +109 -0
- package/.reports/executive-summary_2026-06-20_a1813e47.html +109 -0
- package/.reports/executive-summary_2026-06-20_a974edc1.html +109 -0
- package/.reports/executive-summary_2026-06-20_aa711737.html +109 -0
- package/.reports/executive-summary_2026-06-20_aa752246.html +109 -0
- package/.reports/executive-summary_2026-06-20_ac6f0927.html +109 -0
- package/.reports/executive-summary_2026-06-20_b231b143.html +109 -0
- package/.reports/executive-summary_2026-06-20_b570a2bd.html +109 -0
- package/.reports/executive-summary_2026-06-20_b6fbf650.html +109 -0
- package/.reports/executive-summary_2026-06-20_b9f8ddf3.html +109 -0
- package/.reports/executive-summary_2026-06-20_bf95cc63.html +109 -0
- package/.reports/executive-summary_2026-06-20_c0d0aefe.html +109 -0
- package/.reports/executive-summary_2026-06-20_c1933c36.html +109 -0
- package/.reports/executive-summary_2026-06-20_c99bba8a.html +109 -0
- package/.reports/executive-summary_2026-06-20_cc3846ac.html +109 -0
- package/.reports/executive-summary_2026-06-20_d485993c.html +109 -0
- package/.reports/executive-summary_2026-06-20_d56f75f7.html +109 -0
- package/.reports/executive-summary_2026-06-20_d57660cc.html +109 -0
- package/.reports/executive-summary_2026-06-20_dc036f62.html +109 -0
- package/.reports/executive-summary_2026-06-20_df783f47.html +109 -0
- package/.reports/executive-summary_2026-06-20_e2191adb.html +109 -0
- package/.reports/executive-summary_2026-06-20_e9f1d504.html +109 -0
- package/.reports/executive-summary_2026-06-20_ea82f5e1.html +109 -0
- package/.reports/executive-summary_2026-06-20_ec3e70cb.html +109 -0
- package/.reports/executive-summary_2026-06-20_ee6cf902.html +109 -0
- package/.reports/executive-summary_2026-06-20_f6cb657c.html +109 -0
- package/.reports/executive-summary_2026-06-20_f8c60046.html +109 -0
- package/.reports/executive-summary_2026-06-20_fa184840.html +109 -0
- package/.reports/executive-summary_2026-06-20_fc88bcb4.html +109 -0
- package/.reports/executive-summary_2026-06-20_ffa79c4e.html +109 -0
- package/README.md +53 -0
- package/dist/automation/actionApprover.d.ts +89 -0
- package/dist/automation/actionApprover.d.ts.map +1 -0
- package/dist/automation/actionApprover.js +264 -0
- package/dist/automation/actionApprover.js.map +1 -0
- package/dist/automation/actionExecutor.d.ts +125 -0
- package/dist/automation/actionExecutor.d.ts.map +1 -0
- package/dist/automation/actionExecutor.js +304 -0
- package/dist/automation/actionExecutor.js.map +1 -0
- package/dist/automation/alertRules.d.ts +55 -0
- package/dist/automation/alertRules.d.ts.map +1 -0
- package/dist/automation/alertRules.js +70 -0
- package/dist/automation/alertRules.js.map +1 -0
- package/dist/automation/alertSystem.d.ts +109 -0
- package/dist/automation/alertSystem.d.ts.map +1 -0
- package/dist/automation/alertSystem.js +303 -0
- package/dist/automation/alertSystem.js.map +1 -0
- package/dist/automation/competitorResponse.d.ts +119 -0
- package/dist/automation/competitorResponse.d.ts.map +1 -0
- package/dist/automation/competitorResponse.js +343 -0
- package/dist/automation/competitorResponse.js.map +1 -0
- package/dist/automation/composioClient.d.ts +107 -0
- package/dist/automation/composioClient.d.ts.map +1 -0
- package/dist/automation/composioClient.js +286 -0
- package/dist/automation/composioClient.js.map +1 -0
- package/dist/automation/crmExport.d.ts +116 -0
- package/dist/automation/crmExport.d.ts.map +1 -0
- package/dist/automation/crmExport.js +282 -0
- package/dist/automation/crmExport.js.map +1 -0
- package/dist/automation/crmIntegration.d.ts +83 -0
- package/dist/automation/crmIntegration.d.ts.map +1 -0
- package/dist/automation/crmIntegration.js +207 -0
- package/dist/automation/crmIntegration.js.map +1 -0
- package/dist/automation/gmailIntegration.d.ts +73 -0
- package/dist/automation/gmailIntegration.d.ts.map +1 -0
- package/dist/automation/gmailIntegration.js +184 -0
- package/dist/automation/gmailIntegration.js.map +1 -0
- package/dist/automation/index.d.ts +17 -0
- package/dist/automation/index.d.ts.map +1 -0
- package/dist/automation/index.js +17 -0
- package/dist/automation/index.js.map +1 -0
- package/dist/automation/jiraIntegration.d.ts +103 -0
- package/dist/automation/jiraIntegration.d.ts.map +1 -0
- package/dist/automation/jiraIntegration.js +222 -0
- package/dist/automation/jiraIntegration.js.map +1 -0
- package/dist/automation/jobQueue.d.ts +98 -0
- package/dist/automation/jobQueue.d.ts.map +1 -0
- package/dist/automation/jobQueue.js +207 -0
- package/dist/automation/jobQueue.js.map +1 -0
- package/dist/automation/leadQualification.d.ts +60 -0
- package/dist/automation/leadQualification.d.ts.map +1 -0
- package/dist/automation/leadQualification.js +204 -0
- package/dist/automation/leadQualification.js.map +1 -0
- package/dist/automation/qualificationRules.d.ts +100 -0
- package/dist/automation/qualificationRules.d.ts.map +1 -0
- package/dist/automation/qualificationRules.js +202 -0
- package/dist/automation/qualificationRules.js.map +1 -0
- package/dist/automation/responseTemplates.d.ts +64 -0
- package/dist/automation/responseTemplates.d.ts.map +1 -0
- package/dist/automation/responseTemplates.js +374 -0
- package/dist/automation/responseTemplates.js.map +1 -0
- package/dist/automation/scheduler.d.ts +85 -0
- package/dist/automation/scheduler.d.ts.map +1 -0
- package/dist/automation/scheduler.js +194 -0
- package/dist/automation/scheduler.js.map +1 -0
- package/dist/automation/types.d.ts +223 -0
- package/dist/automation/types.d.ts.map +1 -0
- package/dist/automation/types.js +32 -0
- package/dist/automation/types.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +575 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/compression/caveman.d.ts +14 -0
- package/dist/compression/caveman.d.ts.map +1 -0
- package/dist/compression/caveman.js +188 -0
- package/dist/compression/caveman.js.map +1 -0
- package/dist/compression/caveman.test.d.ts +2 -0
- package/dist/compression/caveman.test.d.ts.map +1 -0
- package/dist/compression/caveman.test.js.map +1 -0
- package/dist/config/configManager.d.ts +6 -0
- package/dist/config/configManager.d.ts.map +1 -0
- package/dist/config/configManager.js +62 -0
- package/dist/config/configManager.js.map +1 -0
- package/dist/config/schema.d.ts +95 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +19 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/context/autoCompact.d.ts +19 -0
- package/dist/context/autoCompact.d.ts.map +1 -0
- package/dist/context/autoCompact.js +101 -0
- package/dist/context/autoCompact.js.map +1 -0
- package/dist/context/readDedup.d.ts +21 -0
- package/dist/context/readDedup.d.ts.map +1 -0
- package/dist/context/readDedup.js +55 -0
- package/dist/context/readDedup.js.map +1 -0
- package/dist/context/toolBudgets.d.ts +15 -0
- package/dist/context/toolBudgets.d.ts.map +1 -0
- package/dist/context/toolBudgets.js +35 -0
- package/dist/context/toolBudgets.js.map +1 -0
- package/dist/core/auditLogger.d.ts +30 -0
- package/dist/core/auditLogger.d.ts.map +1 -0
- package/dist/core/auditLogger.js +51 -0
- package/dist/core/auditLogger.js.map +1 -0
- package/dist/core/stateManager.d.ts +10 -0
- package/dist/core/stateManager.d.ts.map +1 -0
- package/dist/core/stateManager.js +59 -0
- package/dist/core/stateManager.js.map +1 -0
- package/dist/database/feedbackSchema.d.ts +80 -0
- package/dist/database/feedbackSchema.d.ts.map +1 -0
- package/dist/database/feedbackSchema.js +94 -0
- package/dist/database/feedbackSchema.js.map +1 -0
- package/dist/database/leadsSchema.d.ts +99 -0
- package/dist/database/leadsSchema.d.ts.map +1 -0
- package/dist/database/leadsSchema.js +136 -0
- package/dist/database/leadsSchema.js.map +1 -0
- package/dist/intelligence/competitorScoring.d.ts +25 -0
- package/dist/intelligence/competitorScoring.d.ts.map +1 -0
- package/dist/intelligence/competitorScoring.js +181 -0
- package/dist/intelligence/competitorScoring.js.map +1 -0
- package/dist/intelligence/competitorTracker.d.ts +36 -0
- package/dist/intelligence/competitorTracker.d.ts.map +1 -0
- package/dist/intelligence/competitorTracker.js +286 -0
- package/dist/intelligence/competitorTracker.js.map +1 -0
- package/dist/intelligence/competitorTypes.d.ts +93 -0
- package/dist/intelligence/competitorTypes.d.ts.map +1 -0
- package/dist/intelligence/competitorTypes.js +6 -0
- package/dist/intelligence/competitorTypes.js.map +1 -0
- package/dist/intelligence/competitors.json +76 -0
- package/dist/intelligence/feedbackLoop.d.ts +118 -0
- package/dist/intelligence/feedbackLoop.d.ts.map +1 -0
- package/dist/intelligence/feedbackLoop.js +368 -0
- package/dist/intelligence/feedbackLoop.js.map +1 -0
- package/dist/intelligence/gitHubTracker.d.ts +14 -0
- package/dist/intelligence/gitHubTracker.d.ts.map +1 -0
- package/dist/intelligence/gitHubTracker.js +153 -0
- package/dist/intelligence/gitHubTracker.js.map +1 -0
- package/dist/intelligence/hackerNewsScanner.d.ts +21 -0
- package/dist/intelligence/hackerNewsScanner.d.ts.map +1 -0
- package/dist/intelligence/hackerNewsScanner.js +88 -0
- package/dist/intelligence/hackerNewsScanner.js.map +1 -0
- package/dist/intelligence/hiringSignals.d.ts +16 -0
- package/dist/intelligence/hiringSignals.d.ts.map +1 -0
- package/dist/intelligence/hiringSignals.js +132 -0
- package/dist/intelligence/hiringSignals.js.map +1 -0
- package/dist/intelligence/index.d.ts +9 -0
- package/dist/intelligence/index.d.ts.map +1 -0
- package/dist/intelligence/index.js +9 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/intelligence/leadEnrichment.d.ts +59 -0
- package/dist/intelligence/leadEnrichment.d.ts.map +1 -0
- package/dist/intelligence/leadEnrichment.js +209 -0
- package/dist/intelligence/leadEnrichment.js.map +1 -0
- package/dist/intelligence/leadEnrichmentTypes.d.ts +49 -0
- package/dist/intelligence/leadEnrichmentTypes.d.ts.map +1 -0
- package/dist/intelligence/leadEnrichmentTypes.js +7 -0
- package/dist/intelligence/leadEnrichmentTypes.js.map +1 -0
- package/dist/intelligence/marketScanner.d.ts +18 -0
- package/dist/intelligence/marketScanner.d.ts.map +1 -0
- package/dist/intelligence/marketScanner.js +225 -0
- package/dist/intelligence/marketScanner.js.map +1 -0
- package/dist/intelligence/polymarketScanner.d.ts +20 -0
- package/dist/intelligence/polymarketScanner.d.ts.map +1 -0
- package/dist/intelligence/polymarketScanner.js +88 -0
- package/dist/intelligence/polymarketScanner.js.map +1 -0
- package/dist/intelligence/redditScanner.d.ts +22 -0
- package/dist/intelligence/redditScanner.d.ts.map +1 -0
- package/dist/intelligence/redditScanner.js +89 -0
- package/dist/intelligence/redditScanner.js.map +1 -0
- package/dist/intelligence/signalAggregator.d.ts +10 -0
- package/dist/intelligence/signalAggregator.d.ts.map +1 -0
- package/dist/intelligence/signalAggregator.js +64 -0
- package/dist/intelligence/signalAggregator.js.map +1 -0
- package/dist/intelligence/trendAnalysis.d.ts +13 -0
- package/dist/intelligence/trendAnalysis.d.ts.map +1 -0
- package/dist/intelligence/trendAnalysis.js +106 -0
- package/dist/intelligence/trendAnalysis.js.map +1 -0
- package/dist/intelligence/twitterScanner.d.ts +22 -0
- package/dist/intelligence/twitterScanner.d.ts.map +1 -0
- package/dist/intelligence/twitterScanner.js +63 -0
- package/dist/intelligence/twitterScanner.js.map +1 -0
- package/dist/intelligence/types.d.ts +566 -0
- package/dist/intelligence/types.d.ts.map +1 -0
- package/dist/intelligence/types.js +87 -0
- package/dist/intelligence/types.js.map +1 -0
- package/dist/intelligence/userComplaints.d.ts +15 -0
- package/dist/intelligence/userComplaints.d.ts.map +1 -0
- package/dist/intelligence/userComplaints.js +193 -0
- package/dist/intelligence/userComplaints.js.map +1 -0
- package/dist/metrics/businessMetrics.d.ts +41 -0
- package/dist/metrics/businessMetrics.d.ts.map +1 -0
- package/dist/metrics/businessMetrics.js +120 -0
- package/dist/metrics/businessMetrics.js.map +1 -0
- package/dist/metrics/businessMetrics.test.d.ts +2 -0
- package/dist/metrics/businessMetrics.test.d.ts.map +1 -0
- package/dist/metrics/businessMetrics.test.js.map +1 -0
- package/dist/metrics/businessMetricsAgg.d.ts +85 -0
- package/dist/metrics/businessMetricsAgg.d.ts.map +1 -0
- package/dist/metrics/businessMetricsAgg.js +406 -0
- package/dist/metrics/businessMetricsAgg.js.map +1 -0
- package/dist/metrics/competitorMetrics.d.ts +57 -0
- package/dist/metrics/competitorMetrics.d.ts.map +1 -0
- package/dist/metrics/competitorMetrics.js +94 -0
- package/dist/metrics/competitorMetrics.js.map +1 -0
- package/dist/metrics/dashboardGenerator.d.ts +16 -0
- package/dist/metrics/dashboardGenerator.d.ts.map +1 -0
- package/dist/metrics/dashboardGenerator.js +313 -0
- package/dist/metrics/dashboardGenerator.js.map +1 -0
- package/dist/metrics/dashboardHTML.d.ts +18 -0
- package/dist/metrics/dashboardHTML.d.ts.map +1 -0
- package/dist/metrics/dashboardHTML.js +613 -0
- package/dist/metrics/dashboardHTML.js.map +1 -0
- package/dist/metrics/grafanaExport.d.ts +53 -0
- package/dist/metrics/grafanaExport.d.ts.map +1 -0
- package/dist/metrics/grafanaExport.js +277 -0
- package/dist/metrics/grafanaExport.js.map +1 -0
- package/dist/metrics/index.d.ts +17 -0
- package/dist/metrics/index.d.ts.map +1 -0
- package/dist/metrics/index.js +17 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/metrics/leadsMetrics.d.ts +48 -0
- package/dist/metrics/leadsMetrics.d.ts.map +1 -0
- package/dist/metrics/leadsMetrics.js +82 -0
- package/dist/metrics/leadsMetrics.js.map +1 -0
- package/dist/metrics/leadsMetrics.test.d.ts +2 -0
- package/dist/metrics/leadsMetrics.test.d.ts.map +1 -0
- package/dist/metrics/leadsMetrics.test.js.map +1 -0
- package/dist/metrics/metricsTypes.d.ts +114 -0
- package/dist/metrics/metricsTypes.d.ts.map +1 -0
- package/dist/metrics/metricsTypes.js +7 -0
- package/dist/metrics/metricsTypes.js.map +1 -0
- package/dist/metrics/revenueProjection.d.ts +44 -0
- package/dist/metrics/revenueProjection.d.ts.map +1 -0
- package/dist/metrics/revenueProjection.js +239 -0
- package/dist/metrics/revenueProjection.js.map +1 -0
- package/dist/metrics/revenueTypes.d.ts +62 -0
- package/dist/metrics/revenueTypes.d.ts.map +1 -0
- package/dist/metrics/revenueTypes.js +7 -0
- package/dist/metrics/revenueTypes.js.map +1 -0
- package/dist/metrics/roiCalculator.d.ts +39 -0
- package/dist/metrics/roiCalculator.d.ts.map +1 -0
- package/dist/metrics/roiCalculator.js +128 -0
- package/dist/metrics/roiCalculator.js.map +1 -0
- package/dist/metrics/roiCalculator.test.d.ts +2 -0
- package/dist/metrics/roiCalculator.test.d.ts.map +1 -0
- package/dist/metrics/roiCalculator.test.js.map +1 -0
- package/dist/metrics/trendMetrics.d.ts +51 -0
- package/dist/metrics/trendMetrics.d.ts.map +1 -0
- package/dist/metrics/trendMetrics.js +116 -0
- package/dist/metrics/trendMetrics.js.map +1 -0
- package/dist/modes/conservativeCTOMode.d.ts +32 -0
- package/dist/modes/conservativeCTOMode.d.ts.map +1 -0
- package/dist/modes/conservativeCTOMode.js +98 -0
- package/dist/modes/conservativeCTOMode.js.map +1 -0
- package/dist/modes/index.d.ts +3 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +3 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/seniorDeveloperMode.d.ts +17 -0
- package/dist/modes/seniorDeveloperMode.d.ts.map +1 -0
- package/dist/modes/seniorDeveloperMode.js +77 -0
- package/dist/modes/seniorDeveloperMode.js.map +1 -0
- package/dist/recovery/contextRecovery.d.ts +28 -0
- package/dist/recovery/contextRecovery.d.ts.map +1 -0
- package/dist/recovery/contextRecovery.js +113 -0
- package/dist/recovery/contextRecovery.js.map +1 -0
- package/dist/repair/errorDiagnostics.d.ts +28 -0
- package/dist/repair/errorDiagnostics.d.ts.map +1 -0
- package/dist/repair/errorDiagnostics.js +158 -0
- package/dist/repair/errorDiagnostics.js.map +1 -0
- package/dist/repair/skillCapture.d.ts +22 -0
- package/dist/repair/skillCapture.d.ts.map +1 -0
- package/dist/repair/skillCapture.js +119 -0
- package/dist/repair/skillCapture.js.map +1 -0
- package/dist/reporting/reportGenerator.d.ts +117 -0
- package/dist/reporting/reportGenerator.d.ts.map +1 -0
- package/dist/reporting/reportGenerator.js +613 -0
- package/dist/reporting/reportGenerator.js.map +1 -0
- package/dist/reporting/templates.d.ts +68 -0
- package/dist/reporting/templates.d.ts.map +1 -0
- package/dist/reporting/templates.js +629 -0
- package/dist/reporting/templates.js.map +1 -0
- package/dist/security/owaspScanner.d.ts +74 -0
- package/dist/security/owaspScanner.d.ts.map +1 -0
- package/dist/security/owaspScanner.js +309 -0
- package/dist/security/owaspScanner.js.map +1 -0
- package/dist/security/piiRedaction.d.ts +67 -0
- package/dist/security/piiRedaction.d.ts.map +1 -0
- package/dist/security/piiRedaction.js +189 -0
- package/dist/security/piiRedaction.js.map +1 -0
- package/dist/security/secretsDetection.d.ts +47 -0
- package/dist/security/secretsDetection.d.ts.map +1 -0
- package/dist/security/secretsDetection.js +272 -0
- package/dist/security/secretsDetection.js.map +1 -0
- package/dist/subagents/builder.d.ts +33 -0
- package/dist/subagents/builder.d.ts.map +1 -0
- package/dist/subagents/builder.js +158 -0
- package/dist/subagents/builder.js.map +1 -0
- package/dist/subagents/investigator.d.ts +31 -0
- package/dist/subagents/investigator.d.ts.map +1 -0
- package/dist/subagents/investigator.js +166 -0
- package/dist/subagents/investigator.js.map +1 -0
- package/dist/subagents/orchestrator.d.ts +48 -0
- package/dist/subagents/orchestrator.d.ts.map +1 -0
- package/dist/subagents/orchestrator.js +151 -0
- package/dist/subagents/orchestrator.js.map +1 -0
- package/dist/subagents/reviewer.d.ts +31 -0
- package/dist/subagents/reviewer.d.ts.map +1 -0
- package/dist/subagents/reviewer.js +154 -0
- package/dist/subagents/reviewer.js.map +1 -0
- package/dist/telemetry/tokenCounter.d.ts +21 -0
- package/dist/telemetry/tokenCounter.d.ts.map +1 -0
- package/dist/telemetry/tokenCounter.js +49 -0
- package/dist/telemetry/tokenCounter.js.map +1 -0
- package/package.json +61 -0
- package/src/automation/actionApprover.ts +342 -0
- package/src/automation/actionExecutor.ts +399 -0
- package/src/automation/alertRules.ts +113 -0
- package/src/automation/alertSystem.ts +402 -0
- package/src/automation/competitorResponse.ts +511 -0
- package/src/automation/composioClient.ts +360 -0
- package/src/automation/crmExport.ts +407 -0
- package/src/automation/crmIntegration.ts +268 -0
- package/src/automation/gmailIntegration.ts +244 -0
- package/src/automation/index.ts +17 -0
- package/src/automation/jiraIntegration.ts +310 -0
- package/src/automation/jobQueue.ts +278 -0
- package/src/automation/leadQualification.ts +270 -0
- package/src/automation/qualificationRules.ts +304 -0
- package/src/automation/responseTemplates.ts +419 -0
- package/src/automation/scheduler.ts +254 -0
- package/src/automation/types.ts +270 -0
- package/src/cli/index.ts +646 -0
- package/src/compression/caveman.ts +257 -0
- package/src/config/configManager.ts +63 -0
- package/src/config/schema.ts +27 -0
- package/src/context/autoCompact.ts +123 -0
- package/src/context/readDedup.ts +84 -0
- package/src/context/toolBudgets.ts +43 -0
- package/src/core/auditLogger.ts +69 -0
- package/src/core/stateManager.ts +73 -0
- package/src/database/feedbackSchema.ts +168 -0
- package/src/database/leadsSchema.ts +205 -0
- package/src/intelligence/competitorScoring.ts +292 -0
- package/src/intelligence/competitorTracker.ts +362 -0
- package/src/intelligence/competitorTypes.ts +100 -0
- package/src/intelligence/competitors.json +76 -0
- package/src/intelligence/feedbackLoop.ts +538 -0
- package/src/intelligence/gitHubTracker.ts +204 -0
- package/src/intelligence/hackerNewsScanner.ts +121 -0
- package/src/intelligence/hiringSignals.ts +162 -0
- package/src/intelligence/index.ts +9 -0
- package/src/intelligence/leadEnrichment.ts +275 -0
- package/src/intelligence/leadEnrichmentTypes.ts +54 -0
- package/src/intelligence/marketScanner.ts +285 -0
- package/src/intelligence/polymarketScanner.ts +120 -0
- package/src/intelligence/redditScanner.ts +122 -0
- package/src/intelligence/signalAggregator.ts +94 -0
- package/src/intelligence/trendAnalysis.ts +140 -0
- package/src/intelligence/twitterScanner.ts +94 -0
- package/src/intelligence/types.ts +130 -0
- package/src/intelligence/userComplaints.ts +236 -0
- package/src/metrics/businessMetrics.ts +186 -0
- package/src/metrics/businessMetricsAgg.ts +554 -0
- package/src/metrics/competitorMetrics.ts +175 -0
- package/src/metrics/dashboardGenerator.ts +335 -0
- package/src/metrics/dashboardHTML.ts +637 -0
- package/src/metrics/grafanaExport.ts +347 -0
- package/src/metrics/index.ts +17 -0
- package/src/metrics/leadsMetrics.ts +145 -0
- package/src/metrics/metricsTypes.ts +129 -0
- package/src/metrics/revenueProjection.ts +319 -0
- package/src/metrics/revenueTypes.ts +67 -0
- package/src/metrics/roiCalculator.ts +199 -0
- package/src/metrics/trendMetrics.ts +190 -0
- package/src/modes/conservativeCTOMode.ts +124 -0
- package/src/modes/index.ts +6 -0
- package/src/modes/seniorDeveloperMode.ts +94 -0
- package/src/recovery/contextRecovery.ts +141 -0
- package/src/repair/errorDiagnostics.ts +198 -0
- package/src/repair/skillCapture.ts +157 -0
- package/src/reporting/reportGenerator.ts +802 -0
- package/src/reporting/templates.ts +677 -0
- package/src/security/owaspScanner.ts +390 -0
- package/src/security/phase8Hardening.ts +536 -0
- package/src/security/piiRedaction.ts +215 -0
- package/src/security/secretsDetection.js +271 -0
- package/src/security/secretsDetection.ts +318 -0
- package/src/subagents/builder.ts +277 -0
- package/src/subagents/investigator.ts +224 -0
- package/src/subagents/orchestrator.ts +212 -0
- package/src/subagents/reviewer.ts +215 -0
- package/src/telemetry/tokenCounter.ts +81 -0
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Qualification Rules Engine
|
|
3
|
+
* Stage definitions, rule evaluators, and transition handlers for lead qualification
|
|
4
|
+
* Composable, testable rule system
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export type QualificationStage = 'cold' | 'warm' | 'hot' | 'sales-ready';
|
|
8
|
+
|
|
9
|
+
export interface EnrichedLead {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
email: string;
|
|
13
|
+
company?: string;
|
|
14
|
+
signalCount: number;
|
|
15
|
+
signals?: Array<{ type: string; strength: number }>;
|
|
16
|
+
competitorThreat: number; // 0-100
|
|
17
|
+
quality: number; // 0-100
|
|
18
|
+
enrichedAt?: string;
|
|
19
|
+
lastEnrichedAt?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface RevenueProjection {
|
|
23
|
+
leadId: string;
|
|
24
|
+
projectedRevenue: number;
|
|
25
|
+
confidence: number; // 0-1
|
|
26
|
+
arpu?: number;
|
|
27
|
+
churnRisk?: number;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface QualificationResult {
|
|
31
|
+
leadId: string;
|
|
32
|
+
stage: QualificationStage;
|
|
33
|
+
confidence: number; // 0-1
|
|
34
|
+
nextAction?: string;
|
|
35
|
+
signals: string[];
|
|
36
|
+
blockers?: string[];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface StageTransition {
|
|
40
|
+
leadId: string;
|
|
41
|
+
fromStage: QualificationStage;
|
|
42
|
+
toStage: QualificationStage;
|
|
43
|
+
timestamp: string;
|
|
44
|
+
reason: string;
|
|
45
|
+
composioActionsQueued?: string[];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Stage Definitions with metadata and rules
|
|
50
|
+
*/
|
|
51
|
+
export const stageDefinitions: Record<QualificationStage, {
|
|
52
|
+
label: string;
|
|
53
|
+
description: string;
|
|
54
|
+
minQuality?: number;
|
|
55
|
+
minSignals?: number;
|
|
56
|
+
minRevenue?: number;
|
|
57
|
+
maxCompetitorThreat?: number;
|
|
58
|
+
}> = {
|
|
59
|
+
cold: {
|
|
60
|
+
label: 'Cold',
|
|
61
|
+
description: 'New lead, no enrichment yet',
|
|
62
|
+
},
|
|
63
|
+
warm: {
|
|
64
|
+
label: 'Warm',
|
|
65
|
+
description: 'Market signals matched, low threat',
|
|
66
|
+
minSignals: 2,
|
|
67
|
+
minQuality: 40,
|
|
68
|
+
maxCompetitorThreat: 49,
|
|
69
|
+
},
|
|
70
|
+
hot: {
|
|
71
|
+
label: 'Hot',
|
|
72
|
+
description: 'Strong signals, active competitor threat',
|
|
73
|
+
minSignals: 3,
|
|
74
|
+
minQuality: 70,
|
|
75
|
+
},
|
|
76
|
+
'sales-ready': {
|
|
77
|
+
label: 'Sales-Ready',
|
|
78
|
+
description: 'Fully qualified, revenue validated',
|
|
79
|
+
minSignals: 3,
|
|
80
|
+
minQuality: 70,
|
|
81
|
+
minRevenue: 10000,
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Cold Stage Rule: New lead, no enrichment yet
|
|
87
|
+
*/
|
|
88
|
+
export function isColdLead(lead: EnrichedLead): boolean {
|
|
89
|
+
// Lead with no signals or enrichment older than 24h
|
|
90
|
+
if (lead.signalCount === 0) return true;
|
|
91
|
+
|
|
92
|
+
if (lead.lastEnrichedAt) {
|
|
93
|
+
const enrichedAt = new Date(lead.lastEnrichedAt).getTime();
|
|
94
|
+
const now = Date.now();
|
|
95
|
+
const oneDayMs = 24 * 60 * 60 * 1000;
|
|
96
|
+
return (now - enrichedAt) > oneDayMs;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Warm Stage Rule: 2+ signals, low threat, quality >= 40
|
|
104
|
+
*/
|
|
105
|
+
export function isWarmLead(lead: EnrichedLead): boolean {
|
|
106
|
+
return (
|
|
107
|
+
lead.signalCount >= 2 &&
|
|
108
|
+
lead.competitorThreat < 50 &&
|
|
109
|
+
lead.quality >= 40
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Hot Stage Rule: 3+ signals, quality >= 70, threat >= 50
|
|
115
|
+
*/
|
|
116
|
+
export function isHotLead(lead: EnrichedLead): boolean {
|
|
117
|
+
return (
|
|
118
|
+
lead.signalCount >= 3 &&
|
|
119
|
+
lead.quality >= 70 &&
|
|
120
|
+
lead.competitorThreat >= 50
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Sales-Ready Stage Rule: All hot criteria + revenue >= $10k + no blockers
|
|
126
|
+
*/
|
|
127
|
+
export function isSalesReady(
|
|
128
|
+
lead: EnrichedLead,
|
|
129
|
+
projection?: RevenueProjection,
|
|
130
|
+
blockers?: string[]
|
|
131
|
+
): boolean {
|
|
132
|
+
const hasBlockers = blockers && blockers.length > 0;
|
|
133
|
+
const meetsRevenue = projection ? projection.projectedRevenue >= 10000 : false;
|
|
134
|
+
|
|
135
|
+
return (
|
|
136
|
+
isHotLead(lead) &&
|
|
137
|
+
meetsRevenue &&
|
|
138
|
+
!hasBlockers
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Evaluate all rules and determine stage
|
|
144
|
+
*/
|
|
145
|
+
export function evaluateStage(
|
|
146
|
+
lead: EnrichedLead,
|
|
147
|
+
projection?: RevenueProjection,
|
|
148
|
+
blockers?: string[]
|
|
149
|
+
): QualificationStage {
|
|
150
|
+
// Check in order of specificity (most specific first)
|
|
151
|
+
if (isSalesReady(lead, projection, blockers)) return 'sales-ready';
|
|
152
|
+
if (isHotLead(lead)) return 'hot';
|
|
153
|
+
if (isWarmLead(lead)) return 'warm';
|
|
154
|
+
return 'cold';
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Calculate confidence score for qualification
|
|
159
|
+
*/
|
|
160
|
+
export function calculateConfidence(lead: EnrichedLead, stage: QualificationStage): number {
|
|
161
|
+
let confidence = 0.5; // baseline
|
|
162
|
+
|
|
163
|
+
switch (stage) {
|
|
164
|
+
case 'cold':
|
|
165
|
+
confidence = 0.3;
|
|
166
|
+
break;
|
|
167
|
+
case 'warm':
|
|
168
|
+
// Increase with signal count and quality
|
|
169
|
+
confidence = 0.4 + (lead.signalCount * 0.05) + (lead.quality / 500);
|
|
170
|
+
confidence = Math.min(confidence, 0.75);
|
|
171
|
+
break;
|
|
172
|
+
case 'hot':
|
|
173
|
+
// Increase with signals and threat signal
|
|
174
|
+
confidence = 0.65 + (lead.signalCount * 0.05) + (lead.competitorThreat / 500);
|
|
175
|
+
confidence = Math.min(confidence, 0.95);
|
|
176
|
+
break;
|
|
177
|
+
case 'sales-ready':
|
|
178
|
+
confidence = 0.9 + (lead.quality / 1000);
|
|
179
|
+
confidence = Math.min(confidence, 1.0);
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return Math.max(0, Math.min(1, confidence));
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Determine next action for a qualified lead
|
|
188
|
+
*/
|
|
189
|
+
export function getNextAction(stage: QualificationStage): string {
|
|
190
|
+
switch (stage) {
|
|
191
|
+
case 'cold':
|
|
192
|
+
return 'await-enrichment';
|
|
193
|
+
case 'warm':
|
|
194
|
+
return 'flag-for-review';
|
|
195
|
+
case 'hot':
|
|
196
|
+
return 'draft-email-and-jira';
|
|
197
|
+
case 'sales-ready':
|
|
198
|
+
return 'push-to-crm';
|
|
199
|
+
default:
|
|
200
|
+
return 'unknown';
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Get Composio actions to queue on stage transition
|
|
206
|
+
*/
|
|
207
|
+
export function getComposioActionsForTransition(
|
|
208
|
+
fromStage: QualificationStage,
|
|
209
|
+
toStage: QualificationStage,
|
|
210
|
+
lead: EnrichedLead
|
|
211
|
+
): string[] {
|
|
212
|
+
const actions: string[] = [];
|
|
213
|
+
|
|
214
|
+
if (toStage === 'hot') {
|
|
215
|
+
actions.push('composio:draft-sales-email');
|
|
216
|
+
actions.push('composio:create-jira-issue');
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
if (toStage === 'sales-ready') {
|
|
220
|
+
actions.push('composio:push-to-salesforce');
|
|
221
|
+
actions.push('composio:push-to-hubspot');
|
|
222
|
+
actions.push('composio:send-notification');
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
return actions;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Identify blockers that prevent qualification
|
|
230
|
+
*/
|
|
231
|
+
export function identifyBlockers(
|
|
232
|
+
lead: EnrichedLead,
|
|
233
|
+
projection?: RevenueProjection
|
|
234
|
+
): string[] {
|
|
235
|
+
const blockers: string[] = [];
|
|
236
|
+
|
|
237
|
+
if (lead.quality < 40) {
|
|
238
|
+
blockers.push('quality-below-threshold');
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
if (projection && projection.projectedRevenue < 10000) {
|
|
242
|
+
blockers.push('revenue-below-minimum');
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
if (lead.competitorThreat > 80) {
|
|
246
|
+
blockers.push('competitor-threat-critical');
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
if (!lead.signals || lead.signals.length === 0) {
|
|
250
|
+
blockers.push('insufficient-signals');
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return blockers;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Validate stage transition is allowed
|
|
258
|
+
*/
|
|
259
|
+
export function isValidTransition(
|
|
260
|
+
fromStage: QualificationStage,
|
|
261
|
+
toStage: QualificationStage
|
|
262
|
+
): boolean {
|
|
263
|
+
const stageOrder: Record<QualificationStage, number> = {
|
|
264
|
+
'cold': 0,
|
|
265
|
+
'warm': 1,
|
|
266
|
+
'hot': 2,
|
|
267
|
+
'sales-ready': 3,
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
// Allow forward transitions and demotions (with approval)
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Get human-readable reason for stage transition
|
|
276
|
+
*/
|
|
277
|
+
export function getTransitionReason(
|
|
278
|
+
lead: EnrichedLead,
|
|
279
|
+
fromStage: QualificationStage,
|
|
280
|
+
toStage: QualificationStage,
|
|
281
|
+
projection?: RevenueProjection
|
|
282
|
+
): string {
|
|
283
|
+
const parts: string[] = [];
|
|
284
|
+
|
|
285
|
+
if (toStage === 'warm') {
|
|
286
|
+
parts.push(`${lead.signalCount} signals detected`);
|
|
287
|
+
parts.push(`competitor threat ${lead.competitorThreat}%`);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
if (toStage === 'hot') {
|
|
291
|
+
parts.push(`strong signals (${lead.signalCount})`);
|
|
292
|
+
parts.push(`high quality (${lead.quality}/100)`);
|
|
293
|
+
parts.push(`competitor threat ${lead.competitorThreat}%`);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
if (toStage === 'sales-ready') {
|
|
297
|
+
parts.push(`all hot criteria met`);
|
|
298
|
+
if (projection) {
|
|
299
|
+
parts.push(`revenue projection $${projection.projectedRevenue}`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
return parts.join(', ') || `transition from ${fromStage} to ${toStage}`;
|
|
304
|
+
}
|
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response Templates
|
|
3
|
+
* Email and Jira templates for competitive responses
|
|
4
|
+
* Phase 8C Task 11
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Email template data
|
|
9
|
+
*/
|
|
10
|
+
export interface EmailTemplate {
|
|
11
|
+
name: string;
|
|
12
|
+
subject: string;
|
|
13
|
+
bodyTemplate: string;
|
|
14
|
+
cta: string;
|
|
15
|
+
priority: 'urgent' | 'high' | 'normal';
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Jira template data
|
|
20
|
+
*/
|
|
21
|
+
export interface JiraTemplate {
|
|
22
|
+
name: string;
|
|
23
|
+
titleTemplate: string;
|
|
24
|
+
descriptionTemplate: string;
|
|
25
|
+
storyPoints: number;
|
|
26
|
+
labels: string[];
|
|
27
|
+
priority: 'Highest' | 'High' | 'Medium' | 'Low';
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Email templates for different threat levels and scenarios
|
|
32
|
+
*/
|
|
33
|
+
export const emailTemplates: Record<string, EmailTemplate> = {
|
|
34
|
+
critical_threat: {
|
|
35
|
+
name: 'Critical Competitor Threat',
|
|
36
|
+
subject: 'URGENT: Critical Competitor Threat - {{competitorName}} Response Required',
|
|
37
|
+
bodyTemplate: `
|
|
38
|
+
Dear Sales Leadership,
|
|
39
|
+
|
|
40
|
+
We have identified a CRITICAL threat from {{competitorName}} that requires immediate action.
|
|
41
|
+
|
|
42
|
+
THREAT OVERVIEW:
|
|
43
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
44
|
+
• Competitor: {{competitorName}}
|
|
45
|
+
• Threat Level: CRITICAL (Score: {{threatScore}}/100)
|
|
46
|
+
• Affected Accounts: {{affectedLeadCount}}
|
|
47
|
+
• Key Account IDs: {{topLeadIds}}
|
|
48
|
+
• Detection Date: {{detectionDate}}
|
|
49
|
+
|
|
50
|
+
COMPETITIVE THREAT ANALYSIS:
|
|
51
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
52
|
+
1. Market Position: {{competitorStrengths}}
|
|
53
|
+
2. Key Vulnerabilities: {{competitorWeaknesses}}
|
|
54
|
+
3. Our Advantage: {{ourDifferentiation}}
|
|
55
|
+
|
|
56
|
+
IMMEDIATE ACTION ITEMS (Next 24 Hours):
|
|
57
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
58
|
+
□ Executive briefing on threat
|
|
59
|
+
□ Review customer risk assessment
|
|
60
|
+
□ Prepare customer retention calls
|
|
61
|
+
□ Activate crisis communication plan
|
|
62
|
+
□ Review pricing/packaging response
|
|
63
|
+
|
|
64
|
+
ESCALATION: {{escalationPath}}
|
|
65
|
+
|
|
66
|
+
This requires immediate leadership attention and coordinated customer engagement.
|
|
67
|
+
Expected response time: 4-6 hours.
|
|
68
|
+
|
|
69
|
+
Best regards,
|
|
70
|
+
Competitive Intelligence Team
|
|
71
|
+
`,
|
|
72
|
+
cta: 'Schedule immediate response call',
|
|
73
|
+
priority: 'urgent',
|
|
74
|
+
},
|
|
75
|
+
|
|
76
|
+
high_threat: {
|
|
77
|
+
name: 'High Competitor Threat',
|
|
78
|
+
subject: 'Competitor Update: {{competitorName}} Gaining Traction',
|
|
79
|
+
bodyTemplate: `
|
|
80
|
+
Dear Sales Team,
|
|
81
|
+
|
|
82
|
+
We've detected a HIGH priority competitive threat from {{competitorName}} in your pipeline.
|
|
83
|
+
|
|
84
|
+
THREAT SUMMARY:
|
|
85
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
86
|
+
Competitor: {{competitorName}}
|
|
87
|
+
Threat Level: HIGH
|
|
88
|
+
Affected Accounts: {{affectedLeadCount}}
|
|
89
|
+
Key Accounts: {{topLeadIds}}
|
|
90
|
+
|
|
91
|
+
WHAT CHANGED:
|
|
92
|
+
• {{competitorStrengths}}
|
|
93
|
+
• Market momentum indicators show increased activity
|
|
94
|
+
|
|
95
|
+
OUR RESPONSE STRATEGY:
|
|
96
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
97
|
+
1. Differentiation: {{ourDifferentiation}}
|
|
98
|
+
2. Unique Value Props:
|
|
99
|
+
• {{uniqueValue1}}
|
|
100
|
+
• {{uniqueValue2}}
|
|
101
|
+
• {{uniqueValue3}}
|
|
102
|
+
|
|
103
|
+
RECOMMENDED SALES ACTIONS:
|
|
104
|
+
□ Prepare competitive comparison deck
|
|
105
|
+
□ Schedule account review meetings
|
|
106
|
+
□ Document customer pain points we solve better
|
|
107
|
+
□ Create response talking points
|
|
108
|
+
|
|
109
|
+
Timeline: Handle within 48-72 hours
|
|
110
|
+
`,
|
|
111
|
+
cta: 'Review competitive positioning',
|
|
112
|
+
priority: 'high',
|
|
113
|
+
},
|
|
114
|
+
|
|
115
|
+
medium_threat: {
|
|
116
|
+
name: 'Medium Competitor Threat',
|
|
117
|
+
subject: 'Market Update: {{competitorName}} Activity Detected',
|
|
118
|
+
bodyTemplate: `
|
|
119
|
+
Dear Team,
|
|
120
|
+
|
|
121
|
+
We have identified MEDIUM priority competitive activity from {{competitorName}}.
|
|
122
|
+
|
|
123
|
+
OVERVIEW:
|
|
124
|
+
• Competitor: {{competitorName}}
|
|
125
|
+
• Affected Accounts: {{affectedLeadCount}}
|
|
126
|
+
• Threat Level: MEDIUM
|
|
127
|
+
|
|
128
|
+
KEY INSIGHTS:
|
|
129
|
+
{{competitorInsights}}
|
|
130
|
+
|
|
131
|
+
OUR POSITIONING:
|
|
132
|
+
{{ourPositioning}}
|
|
133
|
+
|
|
134
|
+
RECOMMENDED FOLLOW-UP:
|
|
135
|
+
• Monitor {{competitorName}} announcements
|
|
136
|
+
• Document customer feedback
|
|
137
|
+
• Prepare messaging for relevant accounts
|
|
138
|
+
|
|
139
|
+
No immediate action required, but stay alert.
|
|
140
|
+
`,
|
|
141
|
+
cta: 'Review market intelligence',
|
|
142
|
+
priority: 'normal',
|
|
143
|
+
},
|
|
144
|
+
|
|
145
|
+
lost_deal: {
|
|
146
|
+
name: 'Lost Deal to Competitor',
|
|
147
|
+
subject: 'Deal Loss Analysis: {{competitorName}} - {{accountName}}',
|
|
148
|
+
bodyTemplate: `
|
|
149
|
+
Dear Sales Leadership,
|
|
150
|
+
|
|
151
|
+
We have recorded a lost deal to {{competitorName}} at {{accountName}}.
|
|
152
|
+
|
|
153
|
+
DEAL ANALYSIS:
|
|
154
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
155
|
+
Account: {{accountName}}
|
|
156
|
+
Expected Revenue: {{projectedRevenue}}
|
|
157
|
+
Competitor: {{competitorName}}
|
|
158
|
+
Loss Reason: {{lossReason}}
|
|
159
|
+
Customer Feedback: {{customerFeedback}}
|
|
160
|
+
|
|
161
|
+
ROOT CAUSE ANALYSIS:
|
|
162
|
+
• {{rootCause1}}
|
|
163
|
+
• {{rootCause2}}
|
|
164
|
+
• {{rootCause3}}
|
|
165
|
+
|
|
166
|
+
RECOMMENDED PRODUCT/MARKETING RESPONSE:
|
|
167
|
+
□ Feature gap analysis
|
|
168
|
+
□ Pricing strategy review
|
|
169
|
+
□ Customer testimonial collection
|
|
170
|
+
□ Win-back opportunity assessment
|
|
171
|
+
|
|
172
|
+
This information is being fed into our competitive strategy.
|
|
173
|
+
`,
|
|
174
|
+
cta: 'Schedule loss review meeting',
|
|
175
|
+
priority: 'high',
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Jira templates for different threat levels
|
|
181
|
+
*/
|
|
182
|
+
export const jiraTemplates: Record<string, JiraTemplate> = {
|
|
183
|
+
critical_epic: {
|
|
184
|
+
name: 'Critical Competitor Response Epic',
|
|
185
|
+
titleTemplate: 'CRITICAL: Counter {{competitorName}} Threat ({{threatScore}})',
|
|
186
|
+
descriptionTemplate: `
|
|
187
|
+
h1. Critical Competitive Response Epic
|
|
188
|
+
|
|
189
|
+
h2. Overview
|
|
190
|
+
{{competitorName}} (Threat Level: {{threatLevel}}) is gaining traction and poses a critical threat to our market position.
|
|
191
|
+
|
|
192
|
+
h2. Market Impact
|
|
193
|
+
* Market Share Risk: {{marketRiskAssessment}}
|
|
194
|
+
* Affected Customer Base: {{affectedLeadCount}} accounts
|
|
195
|
+
* Revenue at Risk: {{revenueAtRisk}}
|
|
196
|
+
* Customer Churn Risk: {{churnRisk}}
|
|
197
|
+
|
|
198
|
+
h2. Competitor Analysis
|
|
199
|
+
h3. Key Strengths
|
|
200
|
+
* {{competitorStrength1}}
|
|
201
|
+
* {{competitorStrength2}}
|
|
202
|
+
* {{competitorStrength3}}
|
|
203
|
+
|
|
204
|
+
h3. Key Weaknesses
|
|
205
|
+
* {{competitorWeakness1}}
|
|
206
|
+
* {{competitorWeakness2}}
|
|
207
|
+
|
|
208
|
+
h3. Our Differentiation
|
|
209
|
+
* {{ourAdvantage1}}
|
|
210
|
+
* {{ourAdvantage2}}
|
|
211
|
+
* {{ourAdvantage3}}
|
|
212
|
+
|
|
213
|
+
h2. Feature Gaps to Address
|
|
214
|
+
* {{featureGap1}} - *{{priority1}}*
|
|
215
|
+
* {{featureGap2}} - *{{priority2}}*
|
|
216
|
+
* {{featureGap3}} - *{{priority3}}*
|
|
217
|
+
|
|
218
|
+
h2. Action Items
|
|
219
|
+
h3. Product Team
|
|
220
|
+
* [ ] Complete feature gap analysis
|
|
221
|
+
* [ ] Prioritize roadmap items
|
|
222
|
+
* [ ] Assess implementation effort
|
|
223
|
+
* [ ] Create customer-facing roadmap
|
|
224
|
+
|
|
225
|
+
h3. Marketing/Sales
|
|
226
|
+
* [ ] Create competitive comparison guide
|
|
227
|
+
* [ ] Prepare sales enablement materials
|
|
228
|
+
* [ ] Brief customer success team
|
|
229
|
+
* [ ] Plan win-back campaigns
|
|
230
|
+
|
|
231
|
+
h3. Leadership
|
|
232
|
+
* [ ] Strategic positioning review
|
|
233
|
+
* [ ] Pricing strategy reassessment
|
|
234
|
+
* [ ] Partnership opportunities evaluation
|
|
235
|
+
|
|
236
|
+
h2. Success Criteria
|
|
237
|
+
* [ ] Competitive threat reduced to HIGH or below
|
|
238
|
+
* [ ] Customer retention rate >95%
|
|
239
|
+
* [ ] Win rate improvement documented
|
|
240
|
+
* [ ] Roadmap response planned
|
|
241
|
+
|
|
242
|
+
h2. Timeline
|
|
243
|
+
CRITICAL: Complete strategic assessment within 1 week
|
|
244
|
+
|
|
245
|
+
h2. Labels
|
|
246
|
+
competitor-response, urgent, {{competitorName|lowercase}}
|
|
247
|
+
|
|
248
|
+
h2. Epic Link
|
|
249
|
+
Link to quarterly product roadmap
|
|
250
|
+
|
|
251
|
+
h2. Priority
|
|
252
|
+
Highest
|
|
253
|
+
`,
|
|
254
|
+
storyPoints: 21,
|
|
255
|
+
labels: ['competitor-response', 'urgent', 'critical'],
|
|
256
|
+
priority: 'Highest',
|
|
257
|
+
},
|
|
258
|
+
|
|
259
|
+
high_epic: {
|
|
260
|
+
name: 'High Priority Competitive Response',
|
|
261
|
+
titleTemplate: 'Counter {{competitorName}} High Threat ({{threatScore}})',
|
|
262
|
+
descriptionTemplate: `
|
|
263
|
+
h1. Competitive Response Epic
|
|
264
|
+
|
|
265
|
+
h2. Overview
|
|
266
|
+
{{competitorName}} (Threat Level: {{threatLevel}}) is gaining market traction.
|
|
267
|
+
|
|
268
|
+
h2. Competitive Threat
|
|
269
|
+
* Threat Score: {{threatScore}}/100
|
|
270
|
+
* Affected Accounts: {{affectedLeadCount}}
|
|
271
|
+
* Key Vulnerabilities: {{competitorWeaknesses}}
|
|
272
|
+
|
|
273
|
+
h2. Our Competitive Advantages
|
|
274
|
+
{{ourDifferentiation}}
|
|
275
|
+
|
|
276
|
+
h2. Product Response Roadmap
|
|
277
|
+
h3. Priority Features
|
|
278
|
+
* {{feature1}} - {{effort}}
|
|
279
|
+
* {{feature2}} - {{effort}}
|
|
280
|
+
|
|
281
|
+
h3. Messaging Updates
|
|
282
|
+
* [ ] Update competitive positioning
|
|
283
|
+
* [ ] Create customer comparison guide
|
|
284
|
+
* [ ] Prepare sales training
|
|
285
|
+
|
|
286
|
+
h2. Success Metrics
|
|
287
|
+
* Win rate against {{competitorName}}: Target >60%
|
|
288
|
+
* Customer satisfaction maintained >4.5/5
|
|
289
|
+
* Market share maintained
|
|
290
|
+
|
|
291
|
+
h2. Timeline
|
|
292
|
+
1-2 weeks for strategic response planning
|
|
293
|
+
|
|
294
|
+
h2. Labels
|
|
295
|
+
competitor-response, {{competitorName|lowercase}}
|
|
296
|
+
|
|
297
|
+
h2. Priority
|
|
298
|
+
High
|
|
299
|
+
`,
|
|
300
|
+
storyPoints: 13,
|
|
301
|
+
labels: ['competitor-response', 'standard'],
|
|
302
|
+
priority: 'High',
|
|
303
|
+
},
|
|
304
|
+
|
|
305
|
+
medium_epic: {
|
|
306
|
+
name: 'Medium Priority Competitive Monitoring',
|
|
307
|
+
titleTemplate: 'Monitor {{competitorName}} Medium Threat ({{threatScore}})',
|
|
308
|
+
descriptionTemplate: `
|
|
309
|
+
h1. Competitive Monitoring Epic
|
|
310
|
+
|
|
311
|
+
h2. Overview
|
|
312
|
+
{{competitorName}} shows MEDIUM competitive threat indicators.
|
|
313
|
+
|
|
314
|
+
h2. Details
|
|
315
|
+
* Threat Score: {{threatScore}}/100
|
|
316
|
+
* Affected Accounts: {{affectedLeadCount}}
|
|
317
|
+
* Key Signals: {{signals}}
|
|
318
|
+
|
|
319
|
+
h2. Monitoring Tasks
|
|
320
|
+
* [ ] Track {{competitorName}} announcements
|
|
321
|
+
* [ ] Monitor customer feedback
|
|
322
|
+
* [ ] Assess feature roadmap impact
|
|
323
|
+
* [ ] Prepare contingency plans
|
|
324
|
+
|
|
325
|
+
h2. Timeline
|
|
326
|
+
Ongoing monitoring with quarterly reviews
|
|
327
|
+
|
|
328
|
+
h2. Labels
|
|
329
|
+
competitor-response, monitoring
|
|
330
|
+
|
|
331
|
+
h2. Priority
|
|
332
|
+
Medium
|
|
333
|
+
`,
|
|
334
|
+
storyPoints: 5,
|
|
335
|
+
labels: ['competitor-response', 'monitoring'],
|
|
336
|
+
priority: 'Medium',
|
|
337
|
+
},
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Template renderer
|
|
342
|
+
*/
|
|
343
|
+
export function renderTemplate(
|
|
344
|
+
template: string,
|
|
345
|
+
variables: Record<string, any>
|
|
346
|
+
): string {
|
|
347
|
+
let result = template;
|
|
348
|
+
|
|
349
|
+
Object.entries(variables).forEach(([key, value]) => {
|
|
350
|
+
const regex = new RegExp(`{{${key}(?:\\|[^}]+)?}}`, 'g');
|
|
351
|
+
result = result.replace(regex, String(value || ''));
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
return result;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Get email template by threat level
|
|
359
|
+
*/
|
|
360
|
+
export function getEmailTemplate(
|
|
361
|
+
threatLevel: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW',
|
|
362
|
+
scenario: 'new_threat' | 'escalation' | 'lost_deal' = 'new_threat'
|
|
363
|
+
): EmailTemplate {
|
|
364
|
+
if (threatLevel === 'CRITICAL') {
|
|
365
|
+
return emailTemplates.critical_threat;
|
|
366
|
+
} else if (threatLevel === 'HIGH') {
|
|
367
|
+
return emailTemplates.high_threat;
|
|
368
|
+
} else if (scenario === 'lost_deal') {
|
|
369
|
+
return emailTemplates.lost_deal;
|
|
370
|
+
} else {
|
|
371
|
+
return emailTemplates.medium_threat;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Get Jira template by threat level
|
|
377
|
+
*/
|
|
378
|
+
export function getJiraTemplate(
|
|
379
|
+
threatLevel: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW'
|
|
380
|
+
): JiraTemplate {
|
|
381
|
+
if (threatLevel === 'CRITICAL') {
|
|
382
|
+
return jiraTemplates.critical_epic;
|
|
383
|
+
} else if (threatLevel === 'HIGH') {
|
|
384
|
+
return jiraTemplates.high_epic;
|
|
385
|
+
} else {
|
|
386
|
+
return jiraTemplates.medium_epic;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Format email for sending
|
|
392
|
+
*/
|
|
393
|
+
export function formatEmailForSending(
|
|
394
|
+
templateKey: string,
|
|
395
|
+
variables: Record<string, any>
|
|
396
|
+
): { subject: string; body: string; cta: string } {
|
|
397
|
+
const template = emailTemplates[templateKey] || emailTemplates.medium_threat;
|
|
398
|
+
return {
|
|
399
|
+
subject: renderTemplate(template.subject, variables),
|
|
400
|
+
body: renderTemplate(template.bodyTemplate, variables),
|
|
401
|
+
cta: template.cta,
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Format Jira epic for creation
|
|
407
|
+
*/
|
|
408
|
+
export function formatJiraForCreation(
|
|
409
|
+
templateKey: string,
|
|
410
|
+
variables: Record<string, any>
|
|
411
|
+
): { title: string; description: string; storyPoints: number; labels: string[] } {
|
|
412
|
+
const template = jiraTemplates[templateKey] || jiraTemplates.medium_epic;
|
|
413
|
+
return {
|
|
414
|
+
title: renderTemplate(template.titleTemplate, variables),
|
|
415
|
+
description: renderTemplate(template.descriptionTemplate, variables),
|
|
416
|
+
storyPoints: template.storyPoints,
|
|
417
|
+
labels: template.labels,
|
|
418
|
+
};
|
|
419
|
+
}
|