kanmi-perf-revenue 1.0.0 → 1.2.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/README.md +347 -173
- package/dist/empirical/ab-testing.d.ts +83 -0
- package/dist/empirical/ab-testing.d.ts.map +1 -0
- package/dist/empirical/ab-testing.js +281 -0
- package/dist/empirical/ab-testing.js.map +1 -0
- package/dist/empirical/alerting.d.ts +85 -0
- package/dist/empirical/alerting.d.ts.map +1 -0
- package/dist/empirical/alerting.js +358 -0
- package/dist/empirical/alerting.js.map +1 -0
- package/dist/empirical/attribution.d.ts +80 -0
- package/dist/empirical/attribution.d.ts.map +1 -0
- package/dist/empirical/attribution.js +305 -0
- package/dist/empirical/attribution.js.map +1 -0
- package/dist/empirical/cohort.d.ts +75 -0
- package/dist/empirical/cohort.d.ts.map +1 -0
- package/dist/empirical/cohort.js +305 -0
- package/dist/empirical/cohort.js.map +1 -0
- package/dist/empirical/conversion-curve.d.ts +7 -10
- package/dist/empirical/conversion-curve.d.ts.map +1 -1
- package/dist/empirical/conversion-curve.js +37 -4
- package/dist/empirical/conversion-curve.js.map +1 -1
- package/dist/empirical/correlation.d.ts +91 -0
- package/dist/empirical/correlation.d.ts.map +1 -0
- package/dist/empirical/correlation.js +461 -0
- package/dist/empirical/correlation.js.map +1 -0
- package/dist/empirical/data-import.d.ts +22 -0
- package/dist/empirical/data-import.d.ts.map +1 -1
- package/dist/empirical/data-import.js +44 -0
- package/dist/empirical/data-import.js.map +1 -1
- package/dist/empirical/datadog-product-analytics.d.ts +192 -0
- package/dist/empirical/datadog-product-analytics.d.ts.map +1 -0
- package/dist/empirical/datadog-product-analytics.js +632 -0
- package/dist/empirical/datadog-product-analytics.js.map +1 -0
- package/dist/empirical/datadog-session-query.d.ts +32 -0
- package/dist/empirical/datadog-session-query.d.ts.map +1 -1
- package/dist/empirical/datadog-session-query.js +238 -17
- package/dist/empirical/datadog-session-query.js.map +1 -1
- package/dist/empirical/engagement-analysis.d.ts +112 -0
- package/dist/empirical/engagement-analysis.d.ts.map +1 -0
- package/dist/empirical/engagement-analysis.js +354 -0
- package/dist/empirical/engagement-analysis.js.map +1 -0
- package/dist/empirical/export.d.ts +75 -0
- package/dist/empirical/export.d.ts.map +1 -0
- package/dist/empirical/export.js +392 -0
- package/dist/empirical/export.js.map +1 -0
- package/dist/empirical/forecasting.d.ts +80 -0
- package/dist/empirical/forecasting.d.ts.map +1 -0
- package/dist/empirical/forecasting.js +287 -0
- package/dist/empirical/forecasting.js.map +1 -0
- package/dist/empirical/funnel.d.ts +66 -0
- package/dist/empirical/funnel.d.ts.map +1 -0
- package/dist/empirical/funnel.js +293 -0
- package/dist/empirical/funnel.js.map +1 -0
- package/dist/empirical/history.d.ts +198 -0
- package/dist/empirical/history.d.ts.map +1 -0
- package/dist/empirical/history.js +396 -0
- package/dist/empirical/history.js.map +1 -0
- package/dist/empirical/index.d.ts +41 -16
- package/dist/empirical/index.d.ts.map +1 -1
- package/dist/empirical/index.js +96 -13
- package/dist/empirical/index.js.map +1 -1
- package/dist/empirical/interactions.d.ts +89 -0
- package/dist/empirical/interactions.d.ts.map +1 -0
- package/dist/empirical/interactions.js +346 -0
- package/dist/empirical/interactions.js.map +1 -0
- package/dist/empirical/opportunity-calculator.d.ts +6 -18
- package/dist/empirical/opportunity-calculator.d.ts.map +1 -1
- package/dist/empirical/opportunity-calculator.js +19 -1
- package/dist/empirical/opportunity-calculator.js.map +1 -1
- package/dist/empirical/report.d.ts +3 -11
- package/dist/empirical/report.d.ts.map +1 -1
- package/dist/empirical/report.js +11 -7
- package/dist/empirical/report.js.map +1 -1
- package/dist/empirical/roi-calculator.d.ts +104 -0
- package/dist/empirical/roi-calculator.d.ts.map +1 -0
- package/dist/empirical/roi-calculator.js +403 -0
- package/dist/empirical/roi-calculator.js.map +1 -0
- package/dist/empirical/seasonality.d.ts +80 -0
- package/dist/empirical/seasonality.d.ts.map +1 -0
- package/dist/empirical/seasonality.js +340 -0
- package/dist/empirical/seasonality.js.map +1 -0
- package/dist/empirical/segmentation.d.ts +135 -0
- package/dist/empirical/segmentation.d.ts.map +1 -0
- package/dist/empirical/segmentation.js +379 -0
- package/dist/empirical/segmentation.js.map +1 -0
- package/dist/empirical/statistics.d.ts +118 -0
- package/dist/empirical/statistics.d.ts.map +1 -0
- package/dist/empirical/statistics.js +344 -0
- package/dist/empirical/statistics.js.map +1 -0
- package/dist/empirical/sweet-spot.d.ts +81 -0
- package/dist/empirical/sweet-spot.d.ts.map +1 -0
- package/dist/empirical/sweet-spot.js +198 -0
- package/dist/empirical/sweet-spot.js.map +1 -0
- package/package.json +2 -2
|
@@ -15,38 +15,30 @@
|
|
|
15
15
|
* const result = await analyzeWithDatadog({
|
|
16
16
|
* apiKey: 'xxx',
|
|
17
17
|
* appKey: 'xxx',
|
|
18
|
-
* startDate: '
|
|
19
|
-
* endDate: '
|
|
18
|
+
* startDate: '2025-01-01',
|
|
19
|
+
* endDate: '2025-01-14',
|
|
20
20
|
* });
|
|
21
21
|
*
|
|
22
22
|
* // With mock data (for testing)
|
|
23
23
|
* const result = analyzeWithMockData({
|
|
24
24
|
* sessionCount: 50000,
|
|
25
|
-
* startDate: '
|
|
26
|
-
* endDate: '
|
|
25
|
+
* startDate: '2025-01-01',
|
|
26
|
+
* endDate: '2025-01-14',
|
|
27
27
|
* });
|
|
28
28
|
*
|
|
29
29
|
* @author Kanmi Obasa <i@kanmiobasa.com>
|
|
30
30
|
*/
|
|
31
31
|
import { type DatadogQueryConfig } from './datadog-session-query.js';
|
|
32
|
-
import { type ConversionCurve } from './conversion-curve.js';
|
|
32
|
+
import { type ConversionCurve, type PerformanceMetric } from './conversion-curve.js';
|
|
33
33
|
import { type OpportunityReport } from './opportunity-calculator.js';
|
|
34
34
|
export interface AnalysisResult {
|
|
35
35
|
/** Empirical conversion curves */
|
|
36
|
-
curves:
|
|
37
|
-
lcp: ConversionCurve;
|
|
38
|
-
inp: ConversionCurve;
|
|
39
|
-
cls: ConversionCurve;
|
|
40
|
-
};
|
|
36
|
+
curves: Record<PerformanceMetric, ConversionCurve>;
|
|
41
37
|
/** Revenue opportunity analysis */
|
|
42
|
-
opportunities:
|
|
43
|
-
lcp: OpportunityReport;
|
|
44
|
-
inp: OpportunityReport;
|
|
45
|
-
cls: OpportunityReport;
|
|
46
|
-
};
|
|
38
|
+
opportunities: Record<PerformanceMetric, OpportunityReport>;
|
|
47
39
|
/** The single highest-impact opportunity */
|
|
48
40
|
topOpportunity: {
|
|
49
|
-
metric:
|
|
41
|
+
metric: PerformanceMetric;
|
|
50
42
|
monthlyRevenue: number;
|
|
51
43
|
summary: string;
|
|
52
44
|
} | null;
|
|
@@ -101,9 +93,42 @@ export type { SessionData, DatadogQueryConfig, QueryResult } from './datadog-ses
|
|
|
101
93
|
export type { ConversionCurve, ConversionBucket, CurveBuilderConfig } from './conversion-curve.js';
|
|
102
94
|
export type { OpportunityReport, OpportunityScenario, OpportunityConfig } from './opportunity-calculator.js';
|
|
103
95
|
export type { ReportConfig, FullReport } from './report.js';
|
|
96
|
+
export type { HistoricalEntry, PeriodComparison } from './history.js';
|
|
97
|
+
export type { EngagementBucket, EngagementCurve, EngagementOpportunity, EngagementReport, EngagementConfig, } from './engagement-analysis.js';
|
|
98
|
+
export type { SegmentStats, SegmentComparison, SegmentationReport, EventStats, SegmentType, } from './segmentation.js';
|
|
99
|
+
export type { ConfidenceInterval, ProportionTest, SampleSizeRecommendation, EffectSize, } from './statistics.js';
|
|
100
|
+
export type { CorrelationResult, CorrelationMatrix, MetricImportance, CorrelationReport, } from './correlation.js';
|
|
101
|
+
export type { MetricName, MetricThresholds, InteractionCell, MetricInteraction, InteractionReport, } from './interactions.js';
|
|
102
|
+
export type { HourlyPattern, DayOfWeekPattern, WeeklyTrend, SeasonalityReport, SeasonalInsight, } from './seasonality.js';
|
|
103
|
+
export type { FunnelStage, FunnelStageStats, FunnelStep, FunnelReport, } from './funnel.js';
|
|
104
|
+
export type { EngineeringCost, PerformanceImprovement, ROIAnalysis, ROIComparison, } from './roi-calculator.js';
|
|
105
|
+
export type { ImprovementScenario, ForecastPeriod, RevenueForecast, MultiForecast, } from './forecasting.js';
|
|
106
|
+
export type { CohortType, PerformanceCohort, TimeCohort, CohortAnalysis, } from './cohort.js';
|
|
107
|
+
export type { ABTestVariant, ABTestComparison, ABTestReport, } from './ab-testing.js';
|
|
108
|
+
export type { AttributionModel, TouchpointStats, UserJourney, AttributionReport, } from './attribution.js';
|
|
109
|
+
export type { AlertSeverity, AlertType, AlertThreshold, Alert, AlertConfig, AlertReport, } from './alerting.js';
|
|
110
|
+
export type { ExportOptions, SlackBlock, SlackMessage, EmailTemplate, } from './export.js';
|
|
104
111
|
export { queryDatadogSessions, generateMockSessions } from './datadog-session-query.js';
|
|
112
|
+
export type { ConversionEvent } from './datadog-session-query.js';
|
|
105
113
|
export { buildConversionCurve, buildAllCurves, buildSegmentedCurves } from './conversion-curve.js';
|
|
106
114
|
export { calculateOpportunity, calculateAllOpportunities, getTopOpportunity } from './opportunity-calculator.js';
|
|
107
115
|
export { generateReport } from './report.js';
|
|
108
116
|
export { importFromFile, importFromCsv, importFromJson } from './data-import.js';
|
|
117
|
+
export { HistoryManager, generateComparisonReport } from './history.js';
|
|
118
|
+
export { buildEngagementCurve, buildAllEngagementCurves, calculateEngagementOpportunity, generateEngagementReport, generateEngagementMarkdownReport, } from './engagement-analysis.js';
|
|
119
|
+
export { analyzeBySegment, compareSegments, analyzeEvents, generateSegmentationReport, generateSegmentationMarkdown, } from './segmentation.js';
|
|
120
|
+
export { calculateConfidenceInterval, calculateDifferenceCI, twoProportionZTest, calculateEffectSize, calculateRequiredSampleSize, isSampleSufficient, bonferroniCorrection, benjaminiHochbergCorrection, } from './statistics.js';
|
|
121
|
+
export { pointBiserialCorrelation, pearsonCorrelation, calculateMetricConversionCorrelation, calculateMetricCorrelationMatrix, calculateMetricImportance, generateCorrelationReport, generateCorrelationMarkdown, } from './correlation.js';
|
|
122
|
+
export { analyzeMetricInteraction, analyzeAllInteractions, generateInteractionMarkdown, } from './interactions.js';
|
|
123
|
+
export { analyzeHourlyPatterns, analyzeDayOfWeekPatterns, analyzeWeeklyTrends, analyzeSeasonality, generateSeasonalityMarkdown, } from './seasonality.js';
|
|
124
|
+
export { inferFunnelStage, inferDeepestStage, analyzeFunnel, generateFunnelMarkdown, } from './funnel.js';
|
|
125
|
+
export { DEFAULT_COSTS, IMPROVEMENT_TEMPLATES, estimateCvrLift, calculateROI, compareROI, estimateROIFromOpportunity, generateROIMarkdown, generateROIComparisonMarkdown, } from './roi-calculator.js';
|
|
126
|
+
export { forecastRevenue, forecastMultipleImprovements, generateForecastMarkdown, generateMultiForecastMarkdown, } from './forecasting.js';
|
|
127
|
+
export { analyzePerformanceCohorts, analyzeTimeCohorts, generateCohortMarkdown, } from './cohort.js';
|
|
128
|
+
export { analyzeABTest, createPerformanceExperiment, generateABTestMarkdown, } from './ab-testing.js';
|
|
129
|
+
export { buildUserJourneys, calculateAttribution, analyzePerformanceInfluence, generateAttributionReport, generateAttributionMarkdown, } from './attribution.js';
|
|
130
|
+
export { DEFAULT_THRESHOLDS, DEFAULT_ALERT_CONFIG, checkThresholds, detectRegressions, detectAnomalies, detectOpportunities, generateAlertReport, generateAlertMarkdown, } from './alerting.js';
|
|
131
|
+
export { exportToJson, exportOpportunitiesToCsv, exportCurvesToCsv, exportToSlack, exportAlertsToSlack, exportToEmail, exportToWebhook, exportAlertWebhook, } from './export.js';
|
|
132
|
+
export type { ProductAnalyticsConfig, FrustrationSignals, EnhancedSessionData, UserAction, SessionError, FunnelStep as ProductAnalyticsFunnelStep, FunnelResult as ProductAnalyticsFunnelResult, FunnelStepResult, CohortDefinition, RetentionResult, RetentionPeriod, JourneyNode, UserJourneyMap, } from './datadog-product-analytics.js';
|
|
133
|
+
export { queryEnhancedSessions, queryFunnel, analyzeFunnelPerformanceImpact, queryCohortRetention, buildUserJourneyMap, analyzeFrustrationImpact, generateProductAnalyticsMarkdown, } from './datadog-product-analytics.js';
|
|
109
134
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/empirical/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAGL,KAAK,kBAAkB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/empirical/index.ts"],"names":[],"mappings":"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"}
|
package/dist/empirical/index.js
CHANGED
|
@@ -15,15 +15,15 @@
|
|
|
15
15
|
* const result = await analyzeWithDatadog({
|
|
16
16
|
* apiKey: 'xxx',
|
|
17
17
|
* appKey: 'xxx',
|
|
18
|
-
* startDate: '
|
|
19
|
-
* endDate: '
|
|
18
|
+
* startDate: '2025-01-01',
|
|
19
|
+
* endDate: '2025-01-14',
|
|
20
20
|
* });
|
|
21
21
|
*
|
|
22
22
|
* // With mock data (for testing)
|
|
23
23
|
* const result = analyzeWithMockData({
|
|
24
24
|
* sessionCount: 50000,
|
|
25
|
-
* startDate: '
|
|
26
|
-
* endDate: '
|
|
25
|
+
* startDate: '2025-01-01',
|
|
26
|
+
* endDate: '2025-01-14',
|
|
27
27
|
* });
|
|
28
28
|
*
|
|
29
29
|
* @author Kanmi Obasa <i@kanmiobasa.com>
|
|
@@ -33,6 +33,7 @@ import { buildAllCurves } from './conversion-curve.js';
|
|
|
33
33
|
import { calculateAllOpportunities, getTopOpportunity, } from './opportunity-calculator.js';
|
|
34
34
|
import { generateReport } from './report.js';
|
|
35
35
|
import { importFromFile } from './data-import.js';
|
|
36
|
+
import { HistoryManager, generateComparisonReport } from './history.js';
|
|
36
37
|
// =============================================================================
|
|
37
38
|
// MAIN ANALYSIS FUNCTIONS
|
|
38
39
|
// =============================================================================
|
|
@@ -128,9 +129,39 @@ export async function main() {
|
|
|
128
129
|
printHelp();
|
|
129
130
|
return;
|
|
130
131
|
}
|
|
132
|
+
const history = new HistoryManager();
|
|
133
|
+
// Check for history commands
|
|
134
|
+
if (args.includes('--history')) {
|
|
135
|
+
const entries = history.getAll();
|
|
136
|
+
if (entries.length === 0) {
|
|
137
|
+
console.log('No historical entries. Run an analysis with --save to start tracking.');
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
console.log('# Analysis History\n');
|
|
141
|
+
for (const entry of entries.slice(-10)) {
|
|
142
|
+
const tags = entry.tags?.length ? ` [${entry.tags.join(', ')}]` : '';
|
|
143
|
+
console.log(`${entry.id} ${entry.period.start} to ${entry.period.end} CVR: ${(entry.metrics.overallCvr * 100).toFixed(2)}%${tags}`);
|
|
144
|
+
}
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (args.includes('--trend')) {
|
|
148
|
+
const metric = (getArg(args, '--metric') || 'lcp');
|
|
149
|
+
const trend = history.getTrend(metric);
|
|
150
|
+
console.log(`# ${metric.toUpperCase()} Trend\n`);
|
|
151
|
+
console.log(`Trend: ${trend.trend}\n`);
|
|
152
|
+
console.log('| Date | Good CVR | Overall CVR |');
|
|
153
|
+
console.log('|------|----------|-------------|');
|
|
154
|
+
for (const e of trend.entries) {
|
|
155
|
+
console.log(`| ${e.date} | ${(e.goodCvr * 100).toFixed(2)}% | ${(e.overallCvr * 100).toFixed(2)}% |`);
|
|
156
|
+
}
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
131
159
|
// Check for file import mode
|
|
132
160
|
const filePath = getArg(args, '--file');
|
|
133
161
|
const clientName = getArg(args, '--client');
|
|
162
|
+
const shouldSave = args.includes('--save');
|
|
163
|
+
const saveTag = getArg(args, '--tag');
|
|
164
|
+
const compareToBaseline = args.includes('--compare');
|
|
134
165
|
if (filePath) {
|
|
135
166
|
console.log(`Importing data from ${filePath}...\n`);
|
|
136
167
|
try {
|
|
@@ -142,6 +173,21 @@ export async function main() {
|
|
|
142
173
|
});
|
|
143
174
|
console.log(result.report);
|
|
144
175
|
printSummary(result);
|
|
176
|
+
// Save to history if requested
|
|
177
|
+
if (shouldSave) {
|
|
178
|
+
const entry = history.save(result, { tags: saveTag ? [saveTag] : undefined });
|
|
179
|
+
console.log(`\nSaved to history: ${entry.id}`);
|
|
180
|
+
}
|
|
181
|
+
// Compare to baseline if requested
|
|
182
|
+
if (compareToBaseline) {
|
|
183
|
+
const comparison = history.compareToBaseline(result);
|
|
184
|
+
if (comparison) {
|
|
185
|
+
console.log('\n' + generateComparisonReport(comparison));
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
console.log('\nNo baseline found. Run with --save --tag baseline first.');
|
|
189
|
+
}
|
|
190
|
+
}
|
|
145
191
|
return;
|
|
146
192
|
}
|
|
147
193
|
catch (error) {
|
|
@@ -155,13 +201,23 @@ export async function main() {
|
|
|
155
201
|
console.log('Running in demo mode with mock data...\n');
|
|
156
202
|
const result = analyzeWithMockData({
|
|
157
203
|
sessionCount: 50000,
|
|
158
|
-
startDate: '
|
|
159
|
-
endDate: '
|
|
204
|
+
startDate: '2025-01-01',
|
|
205
|
+
endDate: '2025-01-14',
|
|
160
206
|
clientName: clientName || 'Demo Company',
|
|
161
207
|
baseConversionRate: 0.03,
|
|
162
208
|
});
|
|
163
209
|
console.log(result.report);
|
|
164
210
|
printSummary(result);
|
|
211
|
+
if (shouldSave) {
|
|
212
|
+
const entry = history.save(result, { tags: saveTag ? [saveTag] : undefined });
|
|
213
|
+
console.log(`\nSaved to history: ${entry.id}`);
|
|
214
|
+
}
|
|
215
|
+
if (compareToBaseline) {
|
|
216
|
+
const comparison = history.compareToBaseline(result);
|
|
217
|
+
if (comparison) {
|
|
218
|
+
console.log('\n' + generateComparisonReport(comparison));
|
|
219
|
+
}
|
|
220
|
+
}
|
|
165
221
|
return;
|
|
166
222
|
}
|
|
167
223
|
// Check for Datadog credentials
|
|
@@ -201,7 +257,7 @@ function printHelp() {
|
|
|
201
257
|
Empirical Performance Revenue Engine
|
|
202
258
|
|
|
203
259
|
Usage:
|
|
204
|
-
|
|
260
|
+
kanmi-perf-revenue [options]
|
|
205
261
|
|
|
206
262
|
Data Sources (choose one):
|
|
207
263
|
--file PATH Import from CSV or JSON file (recommended)
|
|
@@ -214,15 +270,26 @@ Options:
|
|
|
214
270
|
--client NAME Client name for report header
|
|
215
271
|
--help, -h Show this help message
|
|
216
272
|
|
|
273
|
+
History & Tracking:
|
|
274
|
+
--save Save analysis to history
|
|
275
|
+
--tag TAG Tag the saved entry (e.g., "baseline", "post-fix")
|
|
276
|
+
--compare Compare current result to baseline
|
|
277
|
+
--history Show analysis history
|
|
278
|
+
--trend Show CVR trend over time
|
|
279
|
+
--metric METRIC Metric for trend (lcp, inp, cls). Default: lcp
|
|
280
|
+
|
|
217
281
|
Examples:
|
|
218
|
-
#
|
|
219
|
-
|
|
282
|
+
# Establish baseline
|
|
283
|
+
kanmi-perf-revenue --file week1.csv --save --tag baseline
|
|
284
|
+
|
|
285
|
+
# After performance fix, compare to baseline
|
|
286
|
+
kanmi-perf-revenue --file week2.csv --save --tag post-fix --compare
|
|
220
287
|
|
|
221
|
-
#
|
|
222
|
-
|
|
288
|
+
# View trend over time
|
|
289
|
+
kanmi-perf-revenue --trend --metric lcp
|
|
223
290
|
|
|
224
|
-
#
|
|
225
|
-
|
|
291
|
+
# View history
|
|
292
|
+
kanmi-perf-revenue --history
|
|
226
293
|
|
|
227
294
|
CSV/JSON Format:
|
|
228
295
|
Required columns: session_id, converted (or has_purchase)
|
|
@@ -260,6 +327,22 @@ export { buildConversionCurve, buildAllCurves, buildSegmentedCurves } from './co
|
|
|
260
327
|
export { calculateOpportunity, calculateAllOpportunities, getTopOpportunity } from './opportunity-calculator.js';
|
|
261
328
|
export { generateReport } from './report.js';
|
|
262
329
|
export { importFromFile, importFromCsv, importFromJson } from './data-import.js';
|
|
330
|
+
export { HistoryManager, generateComparisonReport } from './history.js';
|
|
331
|
+
export { buildEngagementCurve, buildAllEngagementCurves, calculateEngagementOpportunity, generateEngagementReport, generateEngagementMarkdownReport, } from './engagement-analysis.js';
|
|
332
|
+
export { analyzeBySegment, compareSegments, analyzeEvents, generateSegmentationReport, generateSegmentationMarkdown, } from './segmentation.js';
|
|
333
|
+
export { calculateConfidenceInterval, calculateDifferenceCI, twoProportionZTest, calculateEffectSize, calculateRequiredSampleSize, isSampleSufficient, bonferroniCorrection, benjaminiHochbergCorrection, } from './statistics.js';
|
|
334
|
+
export { pointBiserialCorrelation, pearsonCorrelation, calculateMetricConversionCorrelation, calculateMetricCorrelationMatrix, calculateMetricImportance, generateCorrelationReport, generateCorrelationMarkdown, } from './correlation.js';
|
|
335
|
+
export { analyzeMetricInteraction, analyzeAllInteractions, generateInteractionMarkdown, } from './interactions.js';
|
|
336
|
+
export { analyzeHourlyPatterns, analyzeDayOfWeekPatterns, analyzeWeeklyTrends, analyzeSeasonality, generateSeasonalityMarkdown, } from './seasonality.js';
|
|
337
|
+
export { inferFunnelStage, inferDeepestStage, analyzeFunnel, generateFunnelMarkdown, } from './funnel.js';
|
|
338
|
+
export { DEFAULT_COSTS, IMPROVEMENT_TEMPLATES, estimateCvrLift, calculateROI, compareROI, estimateROIFromOpportunity, generateROIMarkdown, generateROIComparisonMarkdown, } from './roi-calculator.js';
|
|
339
|
+
export { forecastRevenue, forecastMultipleImprovements, generateForecastMarkdown, generateMultiForecastMarkdown, } from './forecasting.js';
|
|
340
|
+
export { analyzePerformanceCohorts, analyzeTimeCohorts, generateCohortMarkdown, } from './cohort.js';
|
|
341
|
+
export { analyzeABTest, createPerformanceExperiment, generateABTestMarkdown, } from './ab-testing.js';
|
|
342
|
+
export { buildUserJourneys, calculateAttribution, analyzePerformanceInfluence, generateAttributionReport, generateAttributionMarkdown, } from './attribution.js';
|
|
343
|
+
export { DEFAULT_THRESHOLDS, DEFAULT_ALERT_CONFIG, checkThresholds, detectRegressions, detectAnomalies, detectOpportunities, generateAlertReport, generateAlertMarkdown, } from './alerting.js';
|
|
344
|
+
export { exportToJson, exportOpportunitiesToCsv, exportCurvesToCsv, exportToSlack, exportAlertsToSlack, exportToEmail, exportToWebhook, exportAlertWebhook, } from './export.js';
|
|
345
|
+
export { queryEnhancedSessions, queryFunnel, analyzeFunnelPerformanceImpact, queryCohortRetention, buildUserJourneyMap, analyzeFrustrationImpact, generateProductAnalyticsMarkdown, } from './datadog-product-analytics.js';
|
|
263
346
|
// Run if executed directly
|
|
264
347
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
265
348
|
main().catch(console.error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/empirical/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/empirical/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Metric Interaction Analysis
|
|
3
|
+
*
|
|
4
|
+
* Analyzes how combinations of performance metrics affect conversion rates.
|
|
5
|
+
* Goes beyond single-metric analysis to find interaction effects.
|
|
6
|
+
*
|
|
7
|
+
* Key insights:
|
|
8
|
+
* - Do users with both good LCP AND good INP convert better than expected?
|
|
9
|
+
* - Are there threshold combinations that matter?
|
|
10
|
+
* - Which metric pairs have synergistic effects?
|
|
11
|
+
*
|
|
12
|
+
* @author Kanmi Obasa <i@kanmiobasa.com>
|
|
13
|
+
*/
|
|
14
|
+
import type { SessionData } from './datadog-session-query.js';
|
|
15
|
+
export type MetricName = 'lcp' | 'inp' | 'cls' | 'fcp' | 'ttfb';
|
|
16
|
+
export interface MetricThresholds {
|
|
17
|
+
good: number;
|
|
18
|
+
poor: number;
|
|
19
|
+
}
|
|
20
|
+
export interface InteractionCell {
|
|
21
|
+
/** Metric A value bucket */
|
|
22
|
+
metricABucket: 'good' | 'needs_improvement' | 'poor';
|
|
23
|
+
/** Metric B value bucket */
|
|
24
|
+
metricBBucket: 'good' | 'needs_improvement' | 'poor';
|
|
25
|
+
/** Sessions in this cell */
|
|
26
|
+
sessions: number;
|
|
27
|
+
/** Conversions in this cell */
|
|
28
|
+
conversions: number;
|
|
29
|
+
/** Conversion rate */
|
|
30
|
+
cvr: number;
|
|
31
|
+
/** Expected CVR based on marginals (for interaction effect) */
|
|
32
|
+
expectedCvr: number;
|
|
33
|
+
/** Interaction effect: actual - expected */
|
|
34
|
+
interactionEffect: number;
|
|
35
|
+
/** Is this cell synergistic (better than expected)? */
|
|
36
|
+
synergistic: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface MetricInteraction {
|
|
39
|
+
/** First metric */
|
|
40
|
+
metricA: MetricName;
|
|
41
|
+
/** Second metric */
|
|
42
|
+
metricB: MetricName;
|
|
43
|
+
/** 3x3 grid of interaction cells */
|
|
44
|
+
grid: InteractionCell[][];
|
|
45
|
+
/** Overall interaction strength */
|
|
46
|
+
interactionStrength: number;
|
|
47
|
+
/** Key insights */
|
|
48
|
+
insights: string[];
|
|
49
|
+
/** Best performing combination */
|
|
50
|
+
bestCombination: {
|
|
51
|
+
metricA: 'good' | 'needs_improvement' | 'poor';
|
|
52
|
+
metricB: 'good' | 'needs_improvement' | 'poor';
|
|
53
|
+
cvr: number;
|
|
54
|
+
lift: number;
|
|
55
|
+
};
|
|
56
|
+
/** Worst performing combination */
|
|
57
|
+
worstCombination: {
|
|
58
|
+
metricA: 'good' | 'needs_improvement' | 'poor';
|
|
59
|
+
metricB: 'good' | 'needs_improvement' | 'poor';
|
|
60
|
+
cvr: number;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export interface InteractionReport {
|
|
64
|
+
/** All pairwise interactions */
|
|
65
|
+
interactions: MetricInteraction[];
|
|
66
|
+
/** Ranked by interaction strength */
|
|
67
|
+
rankedInteractions: Array<{
|
|
68
|
+
metricA: MetricName;
|
|
69
|
+
metricB: MetricName;
|
|
70
|
+
strength: number;
|
|
71
|
+
}>;
|
|
72
|
+
/** Key findings */
|
|
73
|
+
findings: string[];
|
|
74
|
+
/** Recommendations */
|
|
75
|
+
recommendations: string[];
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Analyze interaction between two metrics.
|
|
79
|
+
*/
|
|
80
|
+
export declare function analyzeMetricInteraction(sessions: SessionData[], metricA: MetricName, metricB: MetricName): MetricInteraction | null;
|
|
81
|
+
/**
|
|
82
|
+
* Analyze all pairwise metric interactions.
|
|
83
|
+
*/
|
|
84
|
+
export declare function analyzeAllInteractions(sessions: SessionData[]): InteractionReport;
|
|
85
|
+
/**
|
|
86
|
+
* Generate markdown report for interaction analysis.
|
|
87
|
+
*/
|
|
88
|
+
export declare function generateInteractionMarkdown(report: InteractionReport): string;
|
|
89
|
+
//# sourceMappingURL=interactions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../../src/empirical/interactions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAM9D,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,aAAa,EAAE,MAAM,GAAG,mBAAmB,GAAG,MAAM,CAAC;IACrD,4BAA4B;IAC5B,aAAa,EAAE,MAAM,GAAG,mBAAmB,GAAG,MAAM,CAAC;IACrD,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uDAAuD;IACvD,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,OAAO,EAAE,UAAU,CAAC;IACpB,oBAAoB;IACpB,OAAO,EAAE,UAAU,CAAC;IACpB,oCAAoC;IACpC,IAAI,EAAE,eAAe,EAAE,EAAE,CAAC;IAC1B,mCAAmC;IACnC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kCAAkC;IAClC,eAAe,EAAE;QACf,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,MAAM,CAAC;QAC/C,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,MAAM,CAAC;QAC/C,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,mCAAmC;IACnC,gBAAgB,EAAE;QAChB,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,MAAM,CAAC;QAC/C,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,MAAM,CAAC;QAC/C,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,qCAAqC;IACrC,kBAAkB,EAAE,KAAK,CAAC;QACxB,OAAO,EAAE,UAAU,CAAC;QACpB,OAAO,EAAE,UAAU,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,mBAAmB;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sBAAsB;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAmDD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,GAClB,iBAAiB,GAAG,IAAI,CA4K1B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAuFjF;AAMD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CA2E7E"}
|