| """ |
| Business Value Demonstration |
| ROI Calculator, Tier Pricing, Upgrade Paths |
| """ |
|
|
| from typing import Dict, List |
|
|
| class BusinessValueCalculator: |
| """Calculates business value and ROI for ARF tiers""" |
| |
| def __init__(self): |
| |
| self.benchmarks = { |
| "incident_cost": 100000, |
| "incident_reduction": { |
| "oss": 0.0, |
| "trial": 0.5, |
| "starter": 0.7, |
| "professional": 0.85, |
| "enterprise": 0.92 |
| }, |
| "time_savings_minutes": 15, |
| "decisions_per_day": 20, |
| "engineer_cost_hourly": 150, |
| "operating_days": 250, |
| "team_size": { |
| "oss": 1, |
| "starter": 5, |
| "professional": 15, |
| "enterprise": 50 |
| } |
| } |
| |
| |
| self.tier_pricing = { |
| "oss": 0, |
| "starter": 2000, |
| "professional": 5000, |
| "enterprise": 15000 |
| } |
| |
| |
| self.feature_comparison = { |
| "oss": { |
| "name": "OSS Edition", |
| "price": "$0", |
| "enforcement": "Advisory Only", |
| "mechanical_gates": "❌ None", |
| "approval_workflows": "❌ Manual", |
| "audit_trail": "❌ None", |
| "support": "Community", |
| "sla": "None", |
| "best_for": "Evaluation" |
| }, |
| "starter": { |
| "name": "Starter", |
| "price": "$2,000/mo", |
| "enforcement": "Mechanical Gates", |
| "mechanical_gates": "✅ 3 Gates", |
| "approval_workflows": "✅ Basic", |
| "audit_trail": "✅ 30 days", |
| "support": "Business Hours", |
| "sla": "99.5%", |
| "best_for": "Small Teams" |
| }, |
| "professional": { |
| "name": "Professional", |
| "price": "$5,000/mo", |
| "enforcement": "Advanced Gates", |
| "mechanical_gates": "✅ 5 Gates", |
| "approval_workflows": "✅ Advanced", |
| "audit_trail": "✅ 1 year", |
| "support": "24/7", |
| "sla": "99.9%", |
| "best_for": "Growing Companies" |
| }, |
| "enterprise": { |
| "name": "Enterprise", |
| "price": "$15,000/mo", |
| "enforcement": "Full Mechanical", |
| "mechanical_gates": "✅ 7 Gates", |
| "approval_workflows": "✅ Custom", |
| "audit_trail": "✅ Unlimited", |
| "support": "Dedicated", |
| "sla": "99.99%", |
| "best_for": "Enterprise Scale" |
| } |
| } |
| |
| def calculate_roi(self, current_tier: str, target_tier: str) -> Dict: |
| """Calculate ROI for upgrade""" |
| current_price = self.tier_pricing.get(current_tier, 0) |
| target_price = self.tier_pricing.get(target_tier, 0) |
| |
| |
| current_reduction = self.benchmarks["incident_reduction"].get(current_tier, 0) |
| target_reduction = self.benchmarks["incident_reduction"].get(target_tier, 0) |
| |
| incident_savings = self.benchmarks["incident_cost"] * (target_reduction - current_reduction) * 12 |
| |
| |
| team_size_current = self.benchmarks["team_size"].get(current_tier, 1) |
| team_size_target = self.benchmarks["team_size"].get(target_tier, 1) |
| |
| avg_team_size = (team_size_current + team_size_target) / 2 |
| |
| time_savings = ( |
| self.benchmarks["time_savings_minutes"] / 60 * |
| self.benchmarks["decisions_per_day"] * |
| self.benchmarks["operating_days"] * |
| self.benchmarks["engineer_cost_hourly"] * |
| avg_team_size |
| ) |
| |
| |
| annual_savings = incident_savings + time_savings |
| |
| |
| price_difference = target_price - current_price |
| annual_price_difference = price_difference * 12 |
| |
| if annual_savings > 0: |
| roi_months = (annual_price_difference / annual_savings) * 12 |
| else: |
| roi_months = 999 |
| |
| |
| if annual_savings > annual_price_difference: |
| payback_months = (annual_price_difference / annual_savings) * 12 |
| else: |
| payback_months = roi_months |
| |
| return { |
| "current_tier": current_tier.upper(), |
| "target_tier": target_tier.upper(), |
| "annual_savings": f"${annual_savings:,.0f}", |
| "incident_savings": f"${incident_savings:,.0f}", |
| "time_savings": f"${time_savings:,.0f}", |
| "monthly_investment": f"${price_difference:,.0f}", |
| "roi_months": f"{roi_months:.1f}", |
| "payback_months": f"{payback_months:.1f}", |
| "annual_roi": f"{(annual_savings / max(annual_price_difference, 1)) * 100:.0f}%" |
| } |
| |
| def get_tier_comparison(self) -> List[Dict]: |
| """Get tier comparison matrix""" |
| return [self.feature_comparison[tier] for tier in ["oss", "starter", "professional", "enterprise"]] |
| |
| def calculate_enterprise_value(self, company_size: int = 100, incidents_per_year: int = 5) -> Dict: |
| """Calculate enterprise-specific value""" |
| |
| incident_avoidance = incidents_per_year * self.benchmarks["incident_cost"] * self.benchmarks["incident_reduction"]["enterprise"] |
| |
| |
| productivity_savings = ( |
| company_size * |
| self.benchmarks["time_savings_minutes"] / 60 * |
| self.benchmarks["decisions_per_day"] * |
| self.benchmarks["operating_days"] * |
| self.benchmarks["engineer_cost_hourly"] |
| ) |
| |
| |
| compliance_value = 500000 |
| |
| total_value = incident_avoidance + productivity_savings + compliance_value |
| enterprise_cost = self.tier_pricing["enterprise"] * 12 |
| |
| return { |
| "company_size": company_size, |
| "incidents_prevented": incidents_per_year * self.benchmarks["incident_reduction"]["enterprise"], |
| "incident_avoidance": f"${incident_avoidance:,.0f}", |
| "productivity_savings": f"${productivity_savings:,.0f}", |
| "compliance_value": f"${compliance_value:,.0f}", |
| "total_annual_value": f"${total_value:,.0f}", |
| "enterprise_cost": f"${enterprise_cost:,.0f}", |
| "value_ratio": f"{total_value / enterprise_cost:.1f}x", |
| "monthly_roi": f"${(total_value - enterprise_cost) / 12:,.0f}" |
| } |
| |
| def generate_upgrade_path(self, current_tier: str) -> List[Dict]: |
| """Generate upgrade path from current tier""" |
| tiers = ["oss", "starter", "professional", "enterprise"] |
| |
| try: |
| current_index = tiers.index(current_tier) |
| except ValueError: |
| current_index = 0 |
| |
| path = [] |
| for i in range(current_index + 1, len(tiers)): |
| target_tier = tiers[i] |
| roi_data = self.calculate_roi(current_tier, target_tier) |
| |
| path.append({ |
| "from": self.feature_comparison[current_tier]["name"], |
| "to": self.feature_comparison[target_tier]["name"], |
| "price_increase": f"${self.tier_pricing[target_tier] - self.tier_pricing[current_tier]:,.0f}/mo", |
| "annual_savings": roi_data["annual_savings"], |
| "payback_period": roi_data["payback_months"] + " months", |
| "key_features": self._get_upgrade_features(current_tier, target_tier) |
| }) |
| |
| return path |
| |
| def _get_upgrade_features(self, from_tier: str, to_tier: str) -> List[str]: |
| """Get key features gained in upgrade""" |
| features = { |
| "oss→starter": [ |
| "Mechanical gates (3 gates)", |
| "Basic approval workflows", |
| "30-day audit trail", |
| "Business hours support" |
| ], |
| "starter→professional": [ |
| "Advanced gates (5 gates)", |
| "Custom approval workflows", |
| "1-year audit trail", |
| "24/7 support", |
| "99.9% SLA" |
| ], |
| "professional→enterprise": [ |
| "Full mechanical gates (7 gates)", |
| "Custom gate development", |
| "Unlimited audit trail", |
| "Dedicated support engineer", |
| "99.99% SLA", |
| "On-prem deployment", |
| "SOC 2 compliance automation" |
| ] |
| } |
| |
| key = f"{from_tier}→{to_tier}" |
| return features.get(key, ["Enhanced features and support"]) |