import React, { useState } from 'react';
const AIBusinessROICalculator = () => {
// State for managing the active tab
const [activeTab, setActiveTab] = useState('sales');
// State for input values
const [inputs, setInputs] = useState({
// Department-specific timeframes
sales: {
taskName: 'Lead qualification & follow-up',
currentHours: 10,
withAIHours: 4,
timesPerWeek: 5
},
marketing: {
taskName: 'Content creation & distribution',
currentHours: 12,
withAIHours: 5,
timesPerWeek: 3
},
customerSuccess: {
taskName: 'Customer query resolution',
currentHours: 8,
withAIHours: 3,
timesPerWeek: 10
},
cro: {
taskName: 'Pipeline analysis & forecasting',
currentHours: 14,
withAIHours: 5,
timesPerWeek: 2
},
enablement: {
taskName: 'Training material creation',
currentHours: 16,
withAIHours: 7,
timesPerWeek: 2
},
businessDevelopment: {
taskName: 'Prospect research & outreach',
currentHours: 9,
withAIHours: 3,
timesPerWeek: 8
},
// Common financial inputs
employeeHourlyCost: 50,
employeeCount: 5,
aiMonthlyCost: 80,
implementationHours: 20,
monthsToCalculate: 12,
// Quality/outcome impacts
qualityMultiplier: 1.2, // Represents a 20% improvement in quality/outcomes
});
// Handler for input changes
const handleInputChange = (e, section) => {
const { name, value } = e.target;
if (section) {
setInputs({
...inputs,
[section]: {
...inputs[section],
[name]: parseFloat(value) || 0
}
});
} else {
setInputs({
...inputs,
[name]: parseFloat(value) || 0
});
}
};
// Calculate results
const calculateResults = () => {
const department = inputs[activeTab];
// Time calculations
const currentWeeklyHours = department.currentHours * department.timesPerWeek;
const withAIWeeklyHours = department.withAIHours * department.timesPerWeek;
const hoursReducedPerWeek = currentWeeklyHours - withAIWeeklyHours;
const hoursReducedPerTeamWeek = hoursReducedPerWeek * inputs.employeeCount;
const hoursReducedTotal = hoursReducedPerTeamWeek * 4.33 * inputs.monthsToCalculate; // 4.33 weeks per month avg
// Financial impact
const hourlyValueSaved = hoursReducedTotal * inputs.employeeHourlyCost;
// Quality impact
const qualityAdjustedValue = hourlyValueSaved * inputs.qualityMultiplier;
// Cost of AI
const aiSubscriptionCost = inputs.aiMonthlyCost * inputs.monthsToCalculate;
const implementationCost = inputs.implementationHours * inputs.employeeHourlyCost;
const totalAICost = aiSubscriptionCost + implementationCost;
// ROI calculations
const netReturn = qualityAdjustedValue - totalAICost;
const roi = (netReturn / totalAICost) * 100;
// Payback period (in months)
const monthlySavings = (qualityAdjustedValue / inputs.monthsToCalculate);
const paybackPeriod = totalAICost / monthlySavings;
// Productivity increase
const productivityIncrease = ((currentWeeklyHours - withAIWeeklyHours) / currentWeeklyHours) * 100;
// Outcomes
const additionalCapacity = hoursReducedTotal / inputs.employeeCount;
const fteEquivalent = additionalCapacity / (40 * 4.33 * inputs.monthsToCalculate);
return {
currentWeeklyHours,
withAIWeeklyHours,
hoursReducedPerWeek,
hoursReducedPerTeamWeek,
hoursReducedTotal,
hourlyValueSaved,
qualityAdjustedValue,
aiSubscriptionCost,
implementationCost,
totalAICost,
netReturn,
roi,
paybackPeriod,
productivityIncrease,
additionalCapacity,
fteEquivalent
};
};
const results = calculateResults();
// Department tabs
const departments = [
{ id: 'sales', label: 'Sales', icon: '💼' },
{ id: 'marketing', label: 'Marketing', icon: '📣' },
{ id: 'customerSuccess', label: 'Customer Success', icon: '🤝' },
{ id: 'cro', label: 'CRO Office', icon: '📈' },
{ id: 'enablement', label: 'Enablement', icon: '🎓' },
{ id: 'businessDevelopment', label: 'Business Dev', icon: '🔍' },
];
return (
AI Business Value Calculator
Measure the impact of AI tools on your go-to-market operations
{/* Department selection tabs */}
{departments.map((dept) => (
))}
{/* Input Section */}
{departments.find(d => d.id === activeTab)?.icon}
{departments.find(d => d.id === activeTab)?.label} Task Analysis
{/* Results Section */}
Key Business Outcomes
{results.roi.toFixed(0)}%
Over {inputs.monthsToCalculate} months
Net Value
Total savings minus costs
${results.netReturn.toLocaleString(undefined, {maximumFractionDigits: 0})}
Break-even in {results.paybackPeriod.toFixed(1)} months
Time Reclaimed
Additional capacity gained
{results.hoursReducedTotal.toLocaleString(undefined, {maximumFractionDigits: 0})} hours
Equivalent to {results.fteEquivalent.toFixed(1)} FTE
Productivity Gain
Efficiency improvement
{results.productivityIncrease.toFixed(0)}%
{inputs[activeTab].timesPerWeek * inputs.employeeCount} tasks weekly
Detailed Analysis
Time Impact
Current Weekly Hours
{results.currentWeeklyHours} hrs/person
With AI Weekly Hours
{results.withAIWeeklyHours} hrs/person
Hours Saved Per Team Member
{(results.hoursReducedTotal / inputs.employeeCount).toFixed(0)} hrs/year
Team Hours Saved
{results.hoursReducedTotal.toFixed(0)} hrs/year
Financial Impact
Value of Time Saved
${results.hourlyValueSaved.toLocaleString(undefined, {maximumFractionDigits: 0})}
Quality-Adjusted Value
${results.qualityAdjustedValue.toLocaleString(undefined, {maximumFractionDigits: 0})}
Total AI Investment
${results.totalAICost.toLocaleString(undefined, {maximumFractionDigits: 0})}
Monthly Net Benefit
${(results.netReturn / inputs.monthsToCalculate).toLocaleString(undefined, {maximumFractionDigits: 0})}
Strategic Insights
Based on your inputs for {inputs[activeTab].taskName} in {departments.find(d => d.id === activeTab)?.label}:
-
Your team can reallocate {results.hoursReducedPerTeamWeek.toFixed(1)} hours every week to higher-value activities
-
Each team member saves {(results.hoursReducedPerWeek).toFixed(1)} hours weekly, improving work-life balance and reducing burnout
-
The AI investment pays for itself in {results.paybackPeriod.toFixed(1)} months with a {results.roi.toFixed(0)}% ROI
-
With the quality multiplier of {inputs.qualityMultiplier.toFixed(1)}x, you're also improving work outcomes and customer satisfaction
{/* Before & After Comparison */}
Before & After AI Implementation
{/* Before AI Column */}
Before AI
Weekly Hours per Person
{results.currentWeeklyHours.toFixed(1)}
Tasks Completed Weekly
{inputs[activeTab].timesPerWeek}
Time per Task
{inputs[activeTab].currentHours.toFixed(1)} hrs
Yearly Team Hours
{(results.currentWeeklyHours * inputs.employeeCount * 52).toFixed(0)}
Yearly Cost
${(results.currentWeeklyHours * inputs.employeeCount * 52 * inputs.employeeHourlyCost).toLocaleString()}
{/* After AI Column */}
After AI
Weekly Hours per Person
{results.withAIWeeklyHours.toFixed(1)}
Tasks Completed Weekly
{inputs[activeTab].timesPerWeek}
Time per Task
{inputs[activeTab].withAIHours.toFixed(1)} hrs
Yearly Team Hours
{(results.withAIWeeklyHours * inputs.employeeCount * 52).toFixed(0)}
Yearly Cost
${(results.withAIWeeklyHours * inputs.employeeCount * 52 * inputs.employeeHourlyCost + inputs.aiMonthlyCost * 12).toLocaleString()}
Annual Value Created:
${results.netReturn.toLocaleString(undefined, {maximumFractionDigits: 0})}
);
};
export default AIBusinessROICalculator;