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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/empirical/report.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/empirical/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ROI Calculator
|
|
3
|
+
*
|
|
4
|
+
* Calculate engineering effort vs expected revenue gain
|
|
5
|
+
* for performance improvements.
|
|
6
|
+
*
|
|
7
|
+
* Key questions answered:
|
|
8
|
+
* - Is this performance fix worth the engineering investment?
|
|
9
|
+
* - What's the break-even point?
|
|
10
|
+
* - Which improvements have the best ROI?
|
|
11
|
+
*
|
|
12
|
+
* @author Kanmi Obasa <i@kanmiobasa.com>
|
|
13
|
+
*/
|
|
14
|
+
import type { SessionData } from './datadog-session-query.js';
|
|
15
|
+
import type { OpportunityReport } from './opportunity-calculator.js';
|
|
16
|
+
export interface EngineeringCost {
|
|
17
|
+
/** Hours of engineering effort */
|
|
18
|
+
engineeringHours: number;
|
|
19
|
+
/** Hourly rate (loaded cost) */
|
|
20
|
+
hourlyRate: number;
|
|
21
|
+
/** Additional infrastructure costs */
|
|
22
|
+
infrastructureCost: number;
|
|
23
|
+
/** Opportunity cost (what else could be built) */
|
|
24
|
+
opportunityCostMultiplier: number;
|
|
25
|
+
}
|
|
26
|
+
export interface PerformanceImprovement {
|
|
27
|
+
/** Metric being improved */
|
|
28
|
+
metric: 'lcp' | 'inp' | 'cls' | 'fcp' | 'ttfb';
|
|
29
|
+
/** Current value (e.g., p75 LCP in ms) */
|
|
30
|
+
currentValue: number;
|
|
31
|
+
/** Target value after improvement */
|
|
32
|
+
targetValue: number;
|
|
33
|
+
/** Description of the improvement */
|
|
34
|
+
description: string;
|
|
35
|
+
}
|
|
36
|
+
export interface ROIAnalysis {
|
|
37
|
+
improvement: PerformanceImprovement;
|
|
38
|
+
cost: EngineeringCost;
|
|
39
|
+
benefit: {
|
|
40
|
+
/** Estimated monthly revenue increase */
|
|
41
|
+
monthlyRevenue: number;
|
|
42
|
+
/** Estimated annual revenue increase */
|
|
43
|
+
annualRevenue: number;
|
|
44
|
+
/** Sessions affected per month */
|
|
45
|
+
sessionsAffected: number;
|
|
46
|
+
/** Expected CVR lift */
|
|
47
|
+
expectedCvrLift: number;
|
|
48
|
+
};
|
|
49
|
+
roi: {
|
|
50
|
+
/** Total cost of implementation */
|
|
51
|
+
totalCost: number;
|
|
52
|
+
/** Net present value (12 month) */
|
|
53
|
+
npv12Month: number;
|
|
54
|
+
/** Break-even in days */
|
|
55
|
+
breakEvenDays: number | null;
|
|
56
|
+
/** ROI percentage (12 month) */
|
|
57
|
+
roiPercent: number;
|
|
58
|
+
/** Is it worth doing? */
|
|
59
|
+
recommendation: 'strong_yes' | 'yes' | 'marginal' | 'no';
|
|
60
|
+
/** Explanation */
|
|
61
|
+
rationale: string;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export interface ROIComparison {
|
|
65
|
+
analyses: ROIAnalysis[];
|
|
66
|
+
ranked: ROIAnalysis[];
|
|
67
|
+
bestBet: ROIAnalysis | null;
|
|
68
|
+
summary: string;
|
|
69
|
+
}
|
|
70
|
+
export declare const DEFAULT_COSTS: EngineeringCost;
|
|
71
|
+
export declare const IMPROVEMENT_TEMPLATES: Record<string, Partial<EngineeringCost>>;
|
|
72
|
+
/**
|
|
73
|
+
* Estimate CVR lift from performance improvement.
|
|
74
|
+
* Uses empirical data when available, falls back to industry benchmarks.
|
|
75
|
+
*/
|
|
76
|
+
export declare function estimateCvrLift(improvement: PerformanceImprovement, sessions: SessionData[]): number;
|
|
77
|
+
/**
|
|
78
|
+
* Calculate ROI for a single improvement.
|
|
79
|
+
*/
|
|
80
|
+
export declare function calculateROI(improvement: PerformanceImprovement, sessions: SessionData[], cost: EngineeringCost, config?: {
|
|
81
|
+
monthlySessionsMultiplier?: number;
|
|
82
|
+
averageOrderValue?: number;
|
|
83
|
+
discountRate?: number;
|
|
84
|
+
}): ROIAnalysis;
|
|
85
|
+
/**
|
|
86
|
+
* Compare multiple improvement opportunities.
|
|
87
|
+
*/
|
|
88
|
+
export declare function compareROI(improvements: PerformanceImprovement[], sessions: SessionData[], costs: EngineeringCost[], config?: {
|
|
89
|
+
monthlySessionsMultiplier?: number;
|
|
90
|
+
averageOrderValue?: number;
|
|
91
|
+
}): ROIComparison;
|
|
92
|
+
/**
|
|
93
|
+
* Quick ROI estimate from opportunity report.
|
|
94
|
+
*/
|
|
95
|
+
export declare function estimateROIFromOpportunity(opportunity: OpportunityReport, cost?: EngineeringCost): ROIAnalysis;
|
|
96
|
+
/**
|
|
97
|
+
* Generate markdown report for ROI analysis.
|
|
98
|
+
*/
|
|
99
|
+
export declare function generateROIMarkdown(analysis: ROIAnalysis): string;
|
|
100
|
+
/**
|
|
101
|
+
* Generate comparison markdown.
|
|
102
|
+
*/
|
|
103
|
+
export declare function generateROIComparisonMarkdown(comparison: ROIComparison): string;
|
|
104
|
+
//# sourceMappingURL=roi-calculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roi-calculator.d.ts","sourceRoot":"","sources":["../../src/empirical/roi-calculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ROI Calculator
|
|
3
|
+
*
|
|
4
|
+
* Calculate engineering effort vs expected revenue gain
|
|
5
|
+
* for performance improvements.
|
|
6
|
+
*
|
|
7
|
+
* Key questions answered:
|
|
8
|
+
* - Is this performance fix worth the engineering investment?
|
|
9
|
+
* - What's the break-even point?
|
|
10
|
+
* - Which improvements have the best ROI?
|
|
11
|
+
*
|
|
12
|
+
* @author Kanmi Obasa <i@kanmiobasa.com>
|
|
13
|
+
*/
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// DEFAULT COSTS
|
|
16
|
+
// =============================================================================
|
|
17
|
+
export const DEFAULT_COSTS = {
|
|
18
|
+
engineeringHours: 40, // 1 week
|
|
19
|
+
hourlyRate: 150, // $150/hour loaded cost
|
|
20
|
+
infrastructureCost: 0,
|
|
21
|
+
opportunityCostMultiplier: 1.5,
|
|
22
|
+
};
|
|
23
|
+
export const IMPROVEMENT_TEMPLATES = {
|
|
24
|
+
image_optimization: { engineeringHours: 16 },
|
|
25
|
+
cdn_setup: { engineeringHours: 24, infrastructureCost: 500 },
|
|
26
|
+
code_splitting: { engineeringHours: 40 },
|
|
27
|
+
server_upgrade: { engineeringHours: 8, infrastructureCost: 2000 },
|
|
28
|
+
lazy_loading: { engineeringHours: 16 },
|
|
29
|
+
caching_layer: { engineeringHours: 32, infrastructureCost: 200 },
|
|
30
|
+
database_optimization: { engineeringHours: 40 },
|
|
31
|
+
third_party_audit: { engineeringHours: 24 },
|
|
32
|
+
};
|
|
33
|
+
// =============================================================================
|
|
34
|
+
// ROI CALCULATION
|
|
35
|
+
// =============================================================================
|
|
36
|
+
/**
|
|
37
|
+
* Estimate CVR lift from performance improvement.
|
|
38
|
+
* Uses empirical data when available, falls back to industry benchmarks.
|
|
39
|
+
*/
|
|
40
|
+
export function estimateCvrLift(improvement, sessions) {
|
|
41
|
+
// Filter sessions with this metric
|
|
42
|
+
const relevantSessions = sessions.filter((s) => {
|
|
43
|
+
switch (improvement.metric) {
|
|
44
|
+
case 'lcp':
|
|
45
|
+
return s.lcp_ms !== null;
|
|
46
|
+
case 'inp':
|
|
47
|
+
return s.inp_ms !== null;
|
|
48
|
+
case 'cls':
|
|
49
|
+
return s.cls !== null;
|
|
50
|
+
case 'fcp':
|
|
51
|
+
return s.fcp_ms !== null;
|
|
52
|
+
case 'ttfb':
|
|
53
|
+
return s.ttfb_ms !== null;
|
|
54
|
+
default:
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
if (relevantSessions.length < 100) {
|
|
59
|
+
// Not enough data, use industry benchmarks
|
|
60
|
+
return estimateCvrLiftFromBenchmarks(improvement);
|
|
61
|
+
}
|
|
62
|
+
// Empirical estimation based on current data
|
|
63
|
+
const getValue = (s) => {
|
|
64
|
+
switch (improvement.metric) {
|
|
65
|
+
case 'lcp':
|
|
66
|
+
return s.lcp_ms;
|
|
67
|
+
case 'inp':
|
|
68
|
+
return s.inp_ms;
|
|
69
|
+
case 'cls':
|
|
70
|
+
return s.cls;
|
|
71
|
+
case 'fcp':
|
|
72
|
+
return s.fcp_ms;
|
|
73
|
+
case 'ttfb':
|
|
74
|
+
return s.ttfb_ms;
|
|
75
|
+
default:
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
// Sessions currently in the "to be improved" range
|
|
80
|
+
const affectedSessions = relevantSessions.filter((s) => {
|
|
81
|
+
const value = getValue(s);
|
|
82
|
+
return value !== null && value > improvement.targetValue && value <= improvement.currentValue;
|
|
83
|
+
});
|
|
84
|
+
// Sessions already at target level
|
|
85
|
+
const targetSessions = relevantSessions.filter((s) => {
|
|
86
|
+
const value = getValue(s);
|
|
87
|
+
return value !== null && value <= improvement.targetValue;
|
|
88
|
+
});
|
|
89
|
+
if (affectedSessions.length < 50 || targetSessions.length < 50) {
|
|
90
|
+
return estimateCvrLiftFromBenchmarks(improvement);
|
|
91
|
+
}
|
|
92
|
+
// Calculate actual CVR difference
|
|
93
|
+
const affectedCvr = affectedSessions.filter((s) => s.has_purchase).length / affectedSessions.length;
|
|
94
|
+
const targetCvr = targetSessions.filter((s) => s.has_purchase).length / targetSessions.length;
|
|
95
|
+
// Expected lift if affected sessions move to target performance
|
|
96
|
+
const absoluteLift = targetCvr - affectedCvr;
|
|
97
|
+
// Apply a discount factor (we won't capture 100% of the theoretical lift)
|
|
98
|
+
return absoluteLift * 0.7;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Industry benchmark-based CVR lift estimation.
|
|
102
|
+
*/
|
|
103
|
+
function estimateCvrLiftFromBenchmarks(improvement) {
|
|
104
|
+
const delta = improvement.currentValue - improvement.targetValue;
|
|
105
|
+
switch (improvement.metric) {
|
|
106
|
+
case 'lcp':
|
|
107
|
+
// ~0.3% CVR per 100ms improvement
|
|
108
|
+
return (delta / 100) * 0.003;
|
|
109
|
+
case 'inp':
|
|
110
|
+
// ~0.2% CVR per 50ms improvement
|
|
111
|
+
return (delta / 50) * 0.002;
|
|
112
|
+
case 'cls':
|
|
113
|
+
// ~0.5% CVR per 0.1 CLS improvement
|
|
114
|
+
return (delta / 0.1) * 0.005;
|
|
115
|
+
case 'fcp':
|
|
116
|
+
// ~0.2% CVR per 100ms improvement
|
|
117
|
+
return (delta / 100) * 0.002;
|
|
118
|
+
case 'ttfb':
|
|
119
|
+
// ~0.15% CVR per 100ms improvement
|
|
120
|
+
return (delta / 100) * 0.0015;
|
|
121
|
+
default:
|
|
122
|
+
return 0;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Calculate ROI for a single improvement.
|
|
127
|
+
*/
|
|
128
|
+
export function calculateROI(improvement, sessions, cost, config = {}) {
|
|
129
|
+
const monthlyMultiplier = config.monthlySessionsMultiplier || 2; // Assume data is ~2 weeks
|
|
130
|
+
const aov = config.averageOrderValue || calculateAOV(sessions);
|
|
131
|
+
const discountRate = config.discountRate || 0.1; // 10% annual discount rate
|
|
132
|
+
// Calculate costs
|
|
133
|
+
const laborCost = cost.engineeringHours * cost.hourlyRate;
|
|
134
|
+
const totalCost = (laborCost + cost.infrastructureCost) * cost.opportunityCostMultiplier;
|
|
135
|
+
// Calculate benefit
|
|
136
|
+
const getValue = (s) => {
|
|
137
|
+
switch (improvement.metric) {
|
|
138
|
+
case 'lcp':
|
|
139
|
+
return s.lcp_ms;
|
|
140
|
+
case 'inp':
|
|
141
|
+
return s.inp_ms;
|
|
142
|
+
case 'cls':
|
|
143
|
+
return s.cls;
|
|
144
|
+
case 'fcp':
|
|
145
|
+
return s.fcp_ms;
|
|
146
|
+
case 'ttfb':
|
|
147
|
+
return s.ttfb_ms;
|
|
148
|
+
default:
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
// Count sessions that would be affected
|
|
153
|
+
const affectedSessions = sessions.filter((s) => {
|
|
154
|
+
const value = getValue(s);
|
|
155
|
+
return value !== null && value > improvement.targetValue;
|
|
156
|
+
});
|
|
157
|
+
const sessionsAffectedMonthly = affectedSessions.length * monthlyMultiplier;
|
|
158
|
+
const expectedCvrLift = estimateCvrLift(improvement, sessions);
|
|
159
|
+
// Calculate revenue
|
|
160
|
+
const additionalConversions = sessionsAffectedMonthly * expectedCvrLift;
|
|
161
|
+
const monthlyRevenue = additionalConversions * aov;
|
|
162
|
+
const annualRevenue = monthlyRevenue * 12;
|
|
163
|
+
// Calculate NPV (12 month)
|
|
164
|
+
const monthlyDiscountRate = discountRate / 12;
|
|
165
|
+
let npv12Month = -totalCost;
|
|
166
|
+
for (let month = 1; month <= 12; month++) {
|
|
167
|
+
npv12Month += monthlyRevenue / Math.pow(1 + monthlyDiscountRate, month);
|
|
168
|
+
}
|
|
169
|
+
// Break-even
|
|
170
|
+
const breakEvenDays = monthlyRevenue > 0 ? Math.ceil((totalCost / monthlyRevenue) * 30) : null;
|
|
171
|
+
// ROI percentage
|
|
172
|
+
const roiPercent = totalCost > 0 ? ((annualRevenue - totalCost) / totalCost) * 100 : 0;
|
|
173
|
+
// Recommendation
|
|
174
|
+
let recommendation;
|
|
175
|
+
let rationale;
|
|
176
|
+
if (roiPercent >= 300 && breakEvenDays !== null && breakEvenDays <= 30) {
|
|
177
|
+
recommendation = 'strong_yes';
|
|
178
|
+
rationale = `Excellent ROI of ${roiPercent.toFixed(0)}% with ${breakEvenDays} day payback`;
|
|
179
|
+
}
|
|
180
|
+
else if (roiPercent >= 100 && breakEvenDays !== null && breakEvenDays <= 90) {
|
|
181
|
+
recommendation = 'yes';
|
|
182
|
+
rationale = `Good ROI of ${roiPercent.toFixed(0)}% with ${breakEvenDays} day payback`;
|
|
183
|
+
}
|
|
184
|
+
else if (roiPercent >= 50) {
|
|
185
|
+
recommendation = 'marginal';
|
|
186
|
+
rationale = `Marginal ROI of ${roiPercent.toFixed(0)}% - consider prioritizing higher-impact work`;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
recommendation = 'no';
|
|
190
|
+
rationale = `Low ROI of ${roiPercent.toFixed(0)}% - not recommended without additional benefits`;
|
|
191
|
+
}
|
|
192
|
+
return {
|
|
193
|
+
improvement,
|
|
194
|
+
cost,
|
|
195
|
+
benefit: {
|
|
196
|
+
monthlyRevenue,
|
|
197
|
+
annualRevenue,
|
|
198
|
+
sessionsAffected: sessionsAffectedMonthly,
|
|
199
|
+
expectedCvrLift,
|
|
200
|
+
},
|
|
201
|
+
roi: {
|
|
202
|
+
totalCost,
|
|
203
|
+
npv12Month,
|
|
204
|
+
breakEvenDays,
|
|
205
|
+
roiPercent,
|
|
206
|
+
recommendation,
|
|
207
|
+
rationale,
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Compare multiple improvement opportunities.
|
|
213
|
+
*/
|
|
214
|
+
export function compareROI(improvements, sessions, costs, config = {}) {
|
|
215
|
+
const analyses = [];
|
|
216
|
+
for (let i = 0; i < improvements.length; i++) {
|
|
217
|
+
const analysis = calculateROI(improvements[i], sessions, costs[i] || DEFAULT_COSTS, config);
|
|
218
|
+
analyses.push(analysis);
|
|
219
|
+
}
|
|
220
|
+
// Rank by ROI
|
|
221
|
+
const ranked = [...analyses].sort((a, b) => b.roi.roiPercent - a.roi.roiPercent);
|
|
222
|
+
// Best bet
|
|
223
|
+
const bestBet = ranked.find((a) => a.roi.recommendation === 'strong_yes' || a.roi.recommendation === 'yes') || null;
|
|
224
|
+
// Summary
|
|
225
|
+
const strongYes = analyses.filter((a) => a.roi.recommendation === 'strong_yes');
|
|
226
|
+
const yes = analyses.filter((a) => a.roi.recommendation === 'yes');
|
|
227
|
+
const no = analyses.filter((a) => a.roi.recommendation === 'no');
|
|
228
|
+
let summary = `${analyses.length} improvements analyzed: `;
|
|
229
|
+
if (strongYes.length > 0) {
|
|
230
|
+
summary += `${strongYes.length} strongly recommended, `;
|
|
231
|
+
}
|
|
232
|
+
if (yes.length > 0) {
|
|
233
|
+
summary += `${yes.length} recommended, `;
|
|
234
|
+
}
|
|
235
|
+
if (no.length > 0) {
|
|
236
|
+
summary += `${no.length} not recommended`;
|
|
237
|
+
}
|
|
238
|
+
return { analyses, ranked, bestBet, summary };
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Quick ROI estimate from opportunity report.
|
|
242
|
+
*/
|
|
243
|
+
export function estimateROIFromOpportunity(opportunity, cost = DEFAULT_COSTS) {
|
|
244
|
+
// Use the first scenario (usually the recommended target)
|
|
245
|
+
const scenario = opportunity.scenarios[0];
|
|
246
|
+
const improvement = {
|
|
247
|
+
metric: opportunity.metric,
|
|
248
|
+
currentValue: scenario?.target_ms ? scenario.target_ms * 1.5 : 0, // Approximate current
|
|
249
|
+
targetValue: scenario?.target_ms || opportunity.recommendation.target_ms,
|
|
250
|
+
description: opportunity.recommendation.summary,
|
|
251
|
+
};
|
|
252
|
+
// Total cost
|
|
253
|
+
const laborCost = cost.engineeringHours * cost.hourlyRate;
|
|
254
|
+
const totalCost = (laborCost + cost.infrastructureCost) * cost.opportunityCostMultiplier;
|
|
255
|
+
// Use opportunity's calculated revenue from recommendation
|
|
256
|
+
const monthlyRevenue = opportunity.recommendation.monthly_opportunity;
|
|
257
|
+
const annualRevenue = monthlyRevenue * 12;
|
|
258
|
+
// NPV
|
|
259
|
+
const discountRate = 0.1;
|
|
260
|
+
const monthlyDiscountRate = discountRate / 12;
|
|
261
|
+
let npv12Month = -totalCost;
|
|
262
|
+
for (let month = 1; month <= 12; month++) {
|
|
263
|
+
npv12Month += monthlyRevenue / Math.pow(1 + monthlyDiscountRate, month);
|
|
264
|
+
}
|
|
265
|
+
const breakEvenDays = monthlyRevenue > 0 ? Math.ceil((totalCost / monthlyRevenue) * 30) : null;
|
|
266
|
+
const roiPercent = totalCost > 0 ? ((annualRevenue - totalCost) / totalCost) * 100 : 0;
|
|
267
|
+
let recommendation;
|
|
268
|
+
let rationale;
|
|
269
|
+
if (roiPercent >= 300 && breakEvenDays !== null && breakEvenDays <= 30) {
|
|
270
|
+
recommendation = 'strong_yes';
|
|
271
|
+
rationale = `Excellent ROI of ${roiPercent.toFixed(0)}% with ${breakEvenDays} day payback`;
|
|
272
|
+
}
|
|
273
|
+
else if (roiPercent >= 100 && breakEvenDays !== null && breakEvenDays <= 90) {
|
|
274
|
+
recommendation = 'yes';
|
|
275
|
+
rationale = `Good ROI of ${roiPercent.toFixed(0)}% with ${breakEvenDays} day payback`;
|
|
276
|
+
}
|
|
277
|
+
else if (roiPercent >= 50) {
|
|
278
|
+
recommendation = 'marginal';
|
|
279
|
+
rationale = `Marginal ROI of ${roiPercent.toFixed(0)}% - consider prioritizing higher-impact work`;
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
recommendation = 'no';
|
|
283
|
+
rationale = `Low ROI of ${roiPercent.toFixed(0)}% - not recommended without additional benefits`;
|
|
284
|
+
}
|
|
285
|
+
return {
|
|
286
|
+
improvement,
|
|
287
|
+
cost,
|
|
288
|
+
benefit: {
|
|
289
|
+
monthlyRevenue,
|
|
290
|
+
annualRevenue,
|
|
291
|
+
sessionsAffected: scenario?.slow_sessions || 0,
|
|
292
|
+
expectedCvrLift: scenario?.cvr_delta || 0,
|
|
293
|
+
},
|
|
294
|
+
roi: {
|
|
295
|
+
totalCost,
|
|
296
|
+
npv12Month,
|
|
297
|
+
breakEvenDays,
|
|
298
|
+
roiPercent,
|
|
299
|
+
recommendation,
|
|
300
|
+
rationale,
|
|
301
|
+
},
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
// =============================================================================
|
|
305
|
+
// REPORT GENERATION
|
|
306
|
+
// =============================================================================
|
|
307
|
+
/**
|
|
308
|
+
* Generate markdown report for ROI analysis.
|
|
309
|
+
*/
|
|
310
|
+
export function generateROIMarkdown(analysis) {
|
|
311
|
+
const lines = [];
|
|
312
|
+
lines.push('## ROI Analysis');
|
|
313
|
+
lines.push('');
|
|
314
|
+
lines.push(`### ${analysis.improvement.description}`);
|
|
315
|
+
lines.push('');
|
|
316
|
+
lines.push(`**${analysis.improvement.metric.toUpperCase()}**: ${analysis.improvement.currentValue} → ${analysis.improvement.targetValue}`);
|
|
317
|
+
lines.push('');
|
|
318
|
+
// Cost breakdown
|
|
319
|
+
lines.push('### Cost');
|
|
320
|
+
lines.push('');
|
|
321
|
+
lines.push(`| Item | Amount |`);
|
|
322
|
+
lines.push(`|------|--------|`);
|
|
323
|
+
lines.push(`| Engineering Hours | ${analysis.cost.engineeringHours}h |`);
|
|
324
|
+
lines.push(`| Labor Cost | $${(analysis.cost.engineeringHours * analysis.cost.hourlyRate).toLocaleString()} |`);
|
|
325
|
+
lines.push(`| Infrastructure | $${analysis.cost.infrastructureCost.toLocaleString()} |`);
|
|
326
|
+
lines.push(`| **Total Cost** | **$${analysis.roi.totalCost.toLocaleString()}** |`);
|
|
327
|
+
lines.push('');
|
|
328
|
+
// Benefit
|
|
329
|
+
lines.push('### Expected Benefit');
|
|
330
|
+
lines.push('');
|
|
331
|
+
lines.push(`| Metric | Value |`);
|
|
332
|
+
lines.push(`|--------|-------|`);
|
|
333
|
+
lines.push(`| Sessions Affected | ${analysis.benefit.sessionsAffected.toLocaleString()}/month |`);
|
|
334
|
+
lines.push(`| Expected CVR Lift | ${(analysis.benefit.expectedCvrLift * 100).toFixed(2)}% |`);
|
|
335
|
+
lines.push(`| Monthly Revenue | $${analysis.benefit.monthlyRevenue.toLocaleString()} |`);
|
|
336
|
+
lines.push(`| Annual Revenue | $${analysis.benefit.annualRevenue.toLocaleString()} |`);
|
|
337
|
+
lines.push('');
|
|
338
|
+
// ROI
|
|
339
|
+
lines.push('### ROI Summary');
|
|
340
|
+
lines.push('');
|
|
341
|
+
const recommendationEmoji = analysis.roi.recommendation === 'strong_yes'
|
|
342
|
+
? '🚀'
|
|
343
|
+
: analysis.roi.recommendation === 'yes'
|
|
344
|
+
? '✅'
|
|
345
|
+
: analysis.roi.recommendation === 'marginal'
|
|
346
|
+
? '⚠️'
|
|
347
|
+
: '❌';
|
|
348
|
+
lines.push(`| Metric | Value |`);
|
|
349
|
+
lines.push(`|--------|-------|`);
|
|
350
|
+
lines.push(`| 12-Month ROI | ${analysis.roi.roiPercent.toFixed(0)}% |`);
|
|
351
|
+
lines.push(`| NPV (12 month) | $${analysis.roi.npv12Month.toLocaleString()} |`);
|
|
352
|
+
lines.push(`| Break-even | ${analysis.roi.breakEvenDays ? `${analysis.roi.breakEvenDays} days` : 'N/A'} |`);
|
|
353
|
+
lines.push(`| Recommendation | ${recommendationEmoji} ${analysis.roi.recommendation.replace('_', ' ').toUpperCase()} |`);
|
|
354
|
+
lines.push('');
|
|
355
|
+
lines.push(`**Rationale**: ${analysis.roi.rationale}`);
|
|
356
|
+
lines.push('');
|
|
357
|
+
return lines.join('\n');
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Generate comparison markdown.
|
|
361
|
+
*/
|
|
362
|
+
export function generateROIComparisonMarkdown(comparison) {
|
|
363
|
+
const lines = [];
|
|
364
|
+
lines.push('## ROI Comparison');
|
|
365
|
+
lines.push('');
|
|
366
|
+
lines.push(comparison.summary);
|
|
367
|
+
lines.push('');
|
|
368
|
+
lines.push('### Ranked Opportunities');
|
|
369
|
+
lines.push('');
|
|
370
|
+
lines.push('| Improvement | Cost | Monthly Rev | ROI | Rec |');
|
|
371
|
+
lines.push('|-------------|------|-------------|-----|-----|');
|
|
372
|
+
for (const analysis of comparison.ranked) {
|
|
373
|
+
const emoji = analysis.roi.recommendation === 'strong_yes'
|
|
374
|
+
? '🚀'
|
|
375
|
+
: analysis.roi.recommendation === 'yes'
|
|
376
|
+
? '✅'
|
|
377
|
+
: analysis.roi.recommendation === 'marginal'
|
|
378
|
+
? '⚠️'
|
|
379
|
+
: '❌';
|
|
380
|
+
lines.push(`| ${analysis.improvement.description.slice(0, 30)} | $${analysis.roi.totalCost.toLocaleString()} | $${analysis.benefit.monthlyRevenue.toLocaleString()} | ${analysis.roi.roiPercent.toFixed(0)}% | ${emoji} |`);
|
|
381
|
+
}
|
|
382
|
+
lines.push('');
|
|
383
|
+
if (comparison.bestBet) {
|
|
384
|
+
lines.push('### Best Bet');
|
|
385
|
+
lines.push('');
|
|
386
|
+
lines.push(`**${comparison.bestBet.improvement.description}**`);
|
|
387
|
+
lines.push('');
|
|
388
|
+
lines.push(comparison.bestBet.roi.rationale);
|
|
389
|
+
lines.push('');
|
|
390
|
+
}
|
|
391
|
+
return lines.join('\n');
|
|
392
|
+
}
|
|
393
|
+
// =============================================================================
|
|
394
|
+
// HELPERS
|
|
395
|
+
// =============================================================================
|
|
396
|
+
function calculateAOV(sessions) {
|
|
397
|
+
const purchaseSessions = sessions.filter((s) => s.has_purchase && s.purchase_value > 0);
|
|
398
|
+
if (purchaseSessions.length === 0)
|
|
399
|
+
return 100; // Default $100
|
|
400
|
+
const totalRevenue = purchaseSessions.reduce((sum, s) => sum + s.purchase_value, 0);
|
|
401
|
+
return totalRevenue / purchaseSessions.length;
|
|
402
|
+
}
|
|
403
|
+
//# sourceMappingURL=roi-calculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roi-calculator.js","sourceRoot":"","sources":["../../src/empirical/roi-calculator.ts"],"names":[],"mappings":"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"}
|