// Industry benchmark data
// In a production system, this would come from a database or external API
export interface BenchmarkData {
average_roi: number;
average_payback_months: number;
adoption_rate: number;
success_rate: number;
confidence_factor: number;
typical_use_cases: string[];
}
const industryBenchmarks: Record<string, Record<string, BenchmarkData>> = {
financial_services: {
customer_service_automation: {
average_roi: 250,
average_payback_months: 14,
adoption_rate: 0.75,
success_rate: 0.85,
confidence_factor: 1.1,
typical_use_cases: ['Account inquiries', 'Transaction disputes', 'Loan applications']
},
fraud_detection: {
average_roi: 400,
average_payback_months: 10,
adoption_rate: 0.90,
success_rate: 0.92,
confidence_factor: 1.2,
typical_use_cases: ['Transaction monitoring', 'Account takeover', 'Application fraud']
},
document_processing: {
average_roi: 180,
average_payback_months: 16,
adoption_rate: 0.65,
success_rate: 0.78,
confidence_factor: 0.95,
typical_use_cases: ['KYC documents', 'Loan documents', 'Compliance reports']
}
},
healthcare: {
document_processing: {
average_roi: 220,
average_payback_months: 18,
adoption_rate: 0.60,
success_rate: 0.75,
confidence_factor: 0.9,
typical_use_cases: ['Medical records', 'Insurance claims', 'Prior authorizations']
},
predictive_maintenance: {
average_roi: 180,
average_payback_months: 20,
adoption_rate: 0.45,
success_rate: 0.70,
confidence_factor: 0.85,
typical_use_cases: ['Medical equipment', 'HVAC systems', 'Power systems']
},
data_analytics: {
average_roi: 200,
average_payback_months: 15,
adoption_rate: 0.70,
success_rate: 0.80,
confidence_factor: 1.0,
typical_use_cases: ['Patient outcomes', 'Resource utilization', 'Cost analysis']
}
},
retail: {
customer_service_automation: {
average_roi: 200,
average_payback_months: 12,
adoption_rate: 0.80,
success_rate: 0.88,
confidence_factor: 1.05,
typical_use_cases: ['Order status', 'Returns processing', 'Product inquiries']
},
inventory_optimization: {
average_roi: 150,
average_payback_months: 16,
adoption_rate: 0.70,
success_rate: 0.82,
confidence_factor: 1.0,
typical_use_cases: ['Demand forecasting', 'Stock replenishment', 'Warehouse optimization']
},
process_automation: {
average_roi: 175,
average_payback_months: 14,
adoption_rate: 0.65,
success_rate: 0.80,
confidence_factor: 0.95,
typical_use_cases: ['Order processing', 'Pricing updates', 'Vendor management']
}
},
manufacturing: {
predictive_maintenance: {
average_roi: 300,
average_payback_months: 12,
adoption_rate: 0.75,
success_rate: 0.85,
confidence_factor: 1.15,
typical_use_cases: ['Equipment monitoring', 'Quality control', 'Downtime prevention']
},
inventory_optimization: {
average_roi: 200,
average_payback_months: 14,
adoption_rate: 0.70,
success_rate: 0.83,
confidence_factor: 1.05,
typical_use_cases: ['Supply chain', 'Raw materials', 'Finished goods']
},
process_automation: {
average_roi: 250,
average_payback_months: 15,
adoption_rate: 0.80,
success_rate: 0.87,
confidence_factor: 1.1,
typical_use_cases: ['Production planning', 'Quality inspection', 'Logistics']
}
}
};
// Default benchmarks for unknown combinations
const defaultBenchmark: BenchmarkData = {
average_roi: 150,
average_payback_months: 18,
adoption_rate: 0.60,
success_rate: 0.75,
confidence_factor: 0.9,
typical_use_cases: ['General process improvement']
};
export async function getBenchmarkData(
industry: string,
projectType: string
): Promise<BenchmarkData> {
// In a real implementation, this might fetch from a database or API
// For now, return from static data
const industryData = industryBenchmarks[industry];
if (!industryData) {
return defaultBenchmark;
}
const benchmark = industryData[projectType];
return benchmark || defaultBenchmark;
}
export function getIndustryComparison(
actualMetrics: { roi: number; payback_months: number },
industry: string,
projectType: string
): {
performance_vs_benchmark: string;
roi_percentile: number;
payback_percentile: number;
} {
const benchmark = industryBenchmarks[industry]?.[projectType] || defaultBenchmark;
// Calculate percentiles (simplified - in reality would use distribution data)
const roiRatio = actualMetrics.roi / benchmark.average_roi;
const paybackRatio = benchmark.average_payback_months / actualMetrics.payback_months;
const roiPercentile = Math.min(99, Math.max(1, 50 + (roiRatio - 1) * 50));
const paybackPercentile = Math.min(99, Math.max(1, 50 + (paybackRatio - 1) * 50));
let performance = 'average';
if (roiPercentile > 75 && paybackPercentile > 75) {
performance = 'excellent';
} else if (roiPercentile > 60 || paybackPercentile > 60) {
performance = 'above average';
} else if (roiPercentile < 40 && paybackPercentile < 40) {
performance = 'below average';
}
return {
performance_vs_benchmark: performance,
roi_percentile: Math.round(roiPercentile),
payback_percentile: Math.round(paybackPercentile)
};
}