more realistics numbers in the roi calculator

This commit is contained in:
Tobias Brunner 2025-07-24 08:50:02 +02:00
parent 07df4336e9
commit 86d4b6412e
Signed by: tobru
SSH key fingerprint: SHA256:kOXg1R6c11XW3/Pt9dbLdQvOJGFAy+B2K6v6PtRWBGQ
3 changed files with 207 additions and 130 deletions

View file

@ -8,34 +8,34 @@ class ROICalculator {
conservative: { conservative: {
name: 'Conservative', name: 'Conservative',
enabled: true, enabled: true,
churnRate: 0.02, churnRate: 0.025, // Lower churn with sticky managed services
phases: [ phases: [
{ months: 6, newInstancesPerMonth: 50 }, { months: 6, newInstancesPerMonth: 15 }, // 5 new clients × 3 instances each
{ months: 6, newInstancesPerMonth: 75 }, { months: 6, newInstancesPerMonth: 24 }, // 6 new clients × 4 instances (growth + expansion)
{ months: 12, newInstancesPerMonth: 100 }, { months: 12, newInstancesPerMonth: 35 }, // 7 new clients × 5 instances (mature usage)
{ months: 12, newInstancesPerMonth: 150 } { months: 12, newInstancesPerMonth: 40 } // 8 new clients × 5 instances
] ]
}, },
moderate: { moderate: {
name: 'Moderate', name: 'Moderate',
enabled: true, enabled: true,
churnRate: 0.03, churnRate: 0.03, // Balanced churn with growth
phases: [ phases: [
{ months: 6, newInstancesPerMonth: 100 }, { months: 6, newInstancesPerMonth: 25 }, // 8 new clients × 3 instances each
{ months: 6, newInstancesPerMonth: 200 }, { months: 6, newInstancesPerMonth: 45 }, // 10 new clients × 4.5 instances (expansion)
{ months: 12, newInstancesPerMonth: 300 }, { months: 12, newInstancesPerMonth: 70 }, // 12 new clients × 6 instances (diverse services)
{ months: 12, newInstancesPerMonth: 400 } { months: 12, newInstancesPerMonth: 90 } // 15 new clients × 6 instances
] ]
}, },
aggressive: { aggressive: {
name: 'Aggressive', name: 'Aggressive',
enabled: true, enabled: true,
churnRate: 0.05, churnRate: 0.035, // Slightly higher churn with rapid growth
phases: [ phases: [
{ months: 6, newInstancesPerMonth: 200 }, { months: 6, newInstancesPerMonth: 40 }, // 12 new clients × 3.5 instances
{ months: 6, newInstancesPerMonth: 400 }, { months: 6, newInstancesPerMonth: 80 }, // 16 new clients × 5 instances (viral growth)
{ months: 12, newInstancesPerMonth: 600 }, { months: 12, newInstancesPerMonth: 120 }, // 20 new clients × 6 instances (full adoption)
{ months: 12, newInstancesPerMonth: 800 } { months: 12, newInstancesPerMonth: 150 } // 25 new clients × 6 instances
] ]
} }
}; };
@ -134,8 +134,8 @@ class ROICalculator {
} }
} }
// Enhanced investment scaling factor (only for direct investment) // Market-realistic investment scaling factor (only for direct investment)
// Exponential scaling provides strong incentives for larger investments // Conservative scaling based on industry standards and economies of scale
const baseInvestment = 500000; const baseInvestment = 500000;
let investmentScaleFactor; let investmentScaleFactor;
let churnReductionFactor; let churnReductionFactor;
@ -148,47 +148,46 @@ class ROICalculator {
revenueMultiplier = 1.0; revenueMultiplier = 1.0;
acceleratedBreakEvenFactor = 1.0; acceleratedBreakEvenFactor = 1.0;
} else { } else {
// Exponential scaling for better ROI at higher investments // Conservative linear scaling with market-realistic caps
if (inputs.investmentAmount <= baseInvestment) { if (inputs.investmentAmount <= baseInvestment) {
investmentScaleFactor = inputs.investmentAmount / baseInvestment; investmentScaleFactor = inputs.investmentAmount / baseInvestment;
} else if (inputs.investmentAmount <= 1000000) { } else if (inputs.investmentAmount <= 1000000) {
// 500k to 1M: Exponential scaling (1.0x to 2.2x) // 500k to 1M: Moderate linear scaling (1.0x to 1.5x)
const ratio = inputs.investmentAmount / baseInvestment; const ratio = inputs.investmentAmount / baseInvestment;
investmentScaleFactor = Math.pow(ratio, 1.2); investmentScaleFactor = 1.0 + ((ratio - 1.0) * 0.5);
} else if (inputs.investmentAmount <= 1500000) { } else if (inputs.investmentAmount <= 1500000) {
// 1M to 1.5M: Enhanced exponential scaling (2.2x to 3.5x) // 1M to 1.5M: Conservative scaling (1.5x to 1.8x)
const ratio = inputs.investmentAmount / baseInvestment; const progress = (inputs.investmentAmount - 1000000) / 500000;
investmentScaleFactor = Math.pow(ratio, 1.3); investmentScaleFactor = 1.5 + (progress * 0.3);
} else { } else {
// 1.5M to 2M: Maximum exponential scaling (3.5x to 5.0x) // 1.5M to 2M: Maximum realistic scaling (1.8x to 2.0x)
const ratio = inputs.investmentAmount / baseInvestment; const progress = (inputs.investmentAmount - 1500000) / 500000;
investmentScaleFactor = Math.pow(ratio, 1.4); investmentScaleFactor = 1.8 + (progress * 0.2);
} }
// Revenue multipliers for large investments (economies of scale) // Market-sustainable revenue premiums (10-20% max)
if (inputs.investmentAmount >= 2000000) { if (inputs.investmentAmount >= 2000000) {
revenueMultiplier = 1.6; // 60% premium per instance revenueMultiplier = 1.2; // 20% premium - maximum sustainable
} else if (inputs.investmentAmount >= 1500000) { } else if (inputs.investmentAmount >= 1500000) {
revenueMultiplier = 1.4; // 40% premium per instance revenueMultiplier = 1.15; // 15% premium
} else if (inputs.investmentAmount >= 1000000) { } else if (inputs.investmentAmount >= 1000000) {
revenueMultiplier = 1.2; // 20% premium per instance revenueMultiplier = 1.1; // 10% premium
} else { } else {
revenueMultiplier = 1.0; // No premium revenueMultiplier = 1.0; // No premium
} }
// Accelerated break-even for large investments // Modest break-even improvements (not dramatic acceleration)
if (inputs.investmentAmount >= 1500000) { if (inputs.investmentAmount >= 1500000) {
acceleratedBreakEvenFactor = 1.4; // 40% faster break-even acceleratedBreakEvenFactor = 1.15; // 15% faster break-even
} else if (inputs.investmentAmount >= 1000000) { } else if (inputs.investmentAmount >= 1000000) {
acceleratedBreakEvenFactor = 1.2; // 20% faster break-even acceleratedBreakEvenFactor = 1.1; // 10% faster break-even
} else { } else {
acceleratedBreakEvenFactor = 1.0; // Standard break-even acceleratedBreakEvenFactor = 1.0; // Standard break-even
} }
// Enhanced churn reduction with aggressive scaling // Realistic churn reduction based on customer success investments
// Higher investment = significantly better customer success = much lower churn
const churnReductionRatio = Math.min((inputs.investmentAmount - baseInvestment) / 1500000, 1.0); const churnReductionRatio = Math.min((inputs.investmentAmount - baseInvestment) / 1500000, 1.0);
churnReductionFactor = Math.max(0.4, 1 - (churnReductionRatio * 0.6)); // Up to 60% churn reduction churnReductionFactor = Math.max(0.75, 1 - (churnReductionRatio * 0.25)); // Up to 25% churn reduction
} }
// Calculate adjusted churn rate with investment-based reduction // Calculate adjusted churn rate with investment-based reduction
@ -201,18 +200,18 @@ class ROICalculator {
let cumulativeServalaRevenue = 0; let cumulativeServalaRevenue = 0;
let breakEvenMonth = null; let breakEvenMonth = null;
// Calculate enhanced grace period based on investment size // Calculate commercially viable grace period based on investment size
const baseGracePeriod = inputs.gracePeriod; const baseGracePeriod = inputs.gracePeriod;
let gracePeriodBonus; let gracePeriodBonus;
if (inputs.investmentAmount >= 1500000) { if (inputs.investmentAmount >= 1500000) {
gracePeriodBonus = 12; // 12 months extra for large investments gracePeriodBonus = 3; // 3 months extra for large investments
} else if (inputs.investmentAmount >= 1000000) { } else if (inputs.investmentAmount >= 1000000) {
gracePeriodBonus = 6; // 6 months extra for medium investments gracePeriodBonus = 2; // 2 months extra for medium investments
} else { } else {
gracePeriodBonus = Math.floor((inputs.investmentAmount - baseInvestment) / 250000); gracePeriodBonus = Math.floor((inputs.investmentAmount - baseInvestment) / 500000); // More conservative bonus calculation
} }
const effectiveGracePeriod = inputs.investmentModel === 'loan' ? 0 : const effectiveGracePeriod = inputs.investmentModel === 'loan' ? 0 :
Math.min(baseGracePeriod + gracePeriodBonus, Math.floor(totalMonths * 0.6)); // Up to 60% of timeframe Math.min(baseGracePeriod + gracePeriodBonus, 6); // Maximum 6 months grace period
// Track baseline performance for performance bonuses (direct investment only) // Track baseline performance for performance bonuses (direct investment only)
let baselineInstances = 0; // Will track expected instances without performance scaling let baselineInstances = 0; // Will track expected instances without performance scaling
@ -262,16 +261,16 @@ class ROICalculator {
const coreRevenue = baseCoreRevenue * revenueMultiplier; const coreRevenue = baseCoreRevenue * revenueMultiplier;
monthlyRevenue = serviceRevenue; monthlyRevenue = serviceRevenue;
// Calculate scaled performance bonus based on investment size // Calculate realistic performance bonus based on investment size
let maxPerformanceBonus; let maxPerformanceBonus;
if (inputs.investmentAmount >= 2000000) { if (inputs.investmentAmount >= 2000000) {
maxPerformanceBonus = 0.35; // 35% max bonus for largest investments maxPerformanceBonus = 0.15; // 15% max bonus for largest investments
} else if (inputs.investmentAmount >= 1500000) { } else if (inputs.investmentAmount >= 1500000) {
maxPerformanceBonus = 0.25; // 25% max bonus for large investments maxPerformanceBonus = 0.12; // 12% max bonus for large investments
} else if (inputs.investmentAmount >= 1000000) { } else if (inputs.investmentAmount >= 1000000) {
maxPerformanceBonus = 0.20; // 20% max bonus for medium investments maxPerformanceBonus = 0.10; // 10% max bonus for medium investments
} else { } else {
maxPerformanceBonus = 0.15; // 15% max bonus for base investments maxPerformanceBonus = 0.08; // 8% max bonus for base investments
} }
// Calculate performance bonus if CSP exceeds baseline expectations // Calculate performance bonus if CSP exceeds baseline expectations
@ -393,9 +392,9 @@ class ROICalculator {
revenueMultiplier: revenueMultiplier, revenueMultiplier: revenueMultiplier,
acceleratedBreakEvenFactor: acceleratedBreakEvenFactor, acceleratedBreakEvenFactor: acceleratedBreakEvenFactor,
maxPerformanceBonus: inputs.investmentModel === 'direct' ? maxPerformanceBonus: inputs.investmentModel === 'direct' ?
(inputs.investmentAmount >= 2000000 ? 35 : (inputs.investmentAmount >= 2000000 ? 15 :
inputs.investmentAmount >= 1500000 ? 25 : inputs.investmentAmount >= 1500000 ? 12 :
inputs.investmentAmount >= 1000000 ? 20 : 15) : 0, inputs.investmentAmount >= 1000000 ? 10 : 8) : 0,
adjustedChurnRate: adjustedChurnRate * 100, adjustedChurnRate: adjustedChurnRate * 100,
performanceMultiplier: baselineInstances > 0 ? (currentInstances / baselineInstances) : 1.0 performanceMultiplier: baselineInstances > 0 ? (currentInstances / baselineInstances) : 1.0
}; };

View file

@ -132,55 +132,55 @@ class ROICalculatorApp {
const investmentAmount = inputs.investmentAmount; const investmentAmount = inputs.investmentAmount;
const baseInvestment = 500000; const baseInvestment = 500000;
// Calculate instance scaling factor // Calculate market-realistic instance scaling factor
let scalingFactor; let scalingFactor;
if (investmentAmount <= baseInvestment) { if (investmentAmount <= baseInvestment) {
scalingFactor = investmentAmount / baseInvestment; scalingFactor = investmentAmount / baseInvestment;
} else if (investmentAmount <= 1000000) { } else if (investmentAmount <= 1000000) {
const ratio = investmentAmount / baseInvestment; const ratio = investmentAmount / baseInvestment;
scalingFactor = Math.pow(ratio, 1.2); scalingFactor = 1.0 + ((ratio - 1.0) * 0.5); // Linear scaling to 1.5x
} else if (investmentAmount <= 1500000) { } else if (investmentAmount <= 1500000) {
const ratio = investmentAmount / baseInvestment; const progress = (investmentAmount - 1000000) / 500000;
scalingFactor = Math.pow(ratio, 1.3); scalingFactor = 1.5 + (progress * 0.3); // Up to 1.8x
} else { } else {
const ratio = investmentAmount / baseInvestment; const progress = (investmentAmount - 1500000) / 500000;
scalingFactor = Math.pow(ratio, 1.4); scalingFactor = 1.8 + (progress * 0.2); // Max 2.0x
} }
// Calculate revenue premium // Calculate sustainable revenue premium
let revenuePremium; let revenuePremium;
if (investmentAmount >= 2000000) { if (investmentAmount >= 2000000) {
revenuePremium = 60; revenuePremium = 20; // Maximum 20% premium
} else if (investmentAmount >= 1500000) { } else if (investmentAmount >= 1500000) {
revenuePremium = 40; revenuePremium = 15; // 15% premium
} else if (investmentAmount >= 1000000) { } else if (investmentAmount >= 1000000) {
revenuePremium = 20; revenuePremium = 10; // 10% premium
} else { } else {
revenuePremium = 0; revenuePremium = 0;
} }
// Calculate grace period // Calculate commercially viable grace period
const baseGracePeriod = inputs.gracePeriod; const baseGracePeriod = inputs.gracePeriod;
let gracePeriodBonus; let gracePeriodBonus;
if (investmentAmount >= 1500000) { if (investmentAmount >= 1500000) {
gracePeriodBonus = 12; gracePeriodBonus = 3; // 3 months max bonus
} else if (investmentAmount >= 1000000) { } else if (investmentAmount >= 1000000) {
gracePeriodBonus = 6; gracePeriodBonus = 2; // 2 months bonus
} else { } else {
gracePeriodBonus = Math.floor((investmentAmount - baseInvestment) / 250000); gracePeriodBonus = Math.floor((investmentAmount - baseInvestment) / 500000);
} }
const totalGracePeriod = Math.max(0, baseGracePeriod + gracePeriodBonus); const totalGracePeriod = Math.min(Math.max(0, baseGracePeriod + gracePeriodBonus), 6); // Max 6 months
// Calculate max performance bonus // Calculate realistic max performance bonus
let maxBonus; let maxBonus;
if (investmentAmount >= 2000000) { if (investmentAmount >= 2000000) {
maxBonus = 35; maxBonus = 15; // 15% max bonus
} else if (investmentAmount >= 1500000) { } else if (investmentAmount >= 1500000) {
maxBonus = 25; maxBonus = 12; // 12% max bonus
} else if (investmentAmount >= 1000000) { } else if (investmentAmount >= 1000000) {
maxBonus = 20; maxBonus = 10; // 10% max bonus
} else { } else {
maxBonus = 15; maxBonus = 8; // 8% max bonus
} }
// Update UI elements // Update UI elements
@ -411,49 +411,49 @@ class ROICalculatorApp {
if (!this.calculator) return; if (!this.calculator) return;
// Reset Conservative // Reset Conservative
this.calculator.scenarios.conservative.churnRate = 0.02; this.calculator.scenarios.conservative.churnRate = 0.025;
this.calculator.scenarios.conservative.phases = [ this.calculator.scenarios.conservative.phases = [
{ months: 6, newInstancesPerMonth: 50 }, { months: 6, newInstancesPerMonth: 15 },
{ months: 6, newInstancesPerMonth: 75 }, { months: 6, newInstancesPerMonth: 24 },
{ months: 12, newInstancesPerMonth: 100 }, { months: 12, newInstancesPerMonth: 35 },
{ months: 12, newInstancesPerMonth: 150 } { months: 12, newInstancesPerMonth: 40 }
]; ];
// Reset Moderate // Reset Moderate
this.calculator.scenarios.moderate.churnRate = 0.03; this.calculator.scenarios.moderate.churnRate = 0.03;
this.calculator.scenarios.moderate.phases = [ this.calculator.scenarios.moderate.phases = [
{ months: 6, newInstancesPerMonth: 100 }, { months: 6, newInstancesPerMonth: 25 },
{ months: 6, newInstancesPerMonth: 200 }, { months: 6, newInstancesPerMonth: 45 },
{ months: 12, newInstancesPerMonth: 300 }, { months: 12, newInstancesPerMonth: 70 },
{ months: 12, newInstancesPerMonth: 400 } { months: 12, newInstancesPerMonth: 90 }
]; ];
// Reset Aggressive // Reset Aggressive
this.calculator.scenarios.aggressive.churnRate = 0.05; this.calculator.scenarios.aggressive.churnRate = 0.035;
this.calculator.scenarios.aggressive.phases = [ this.calculator.scenarios.aggressive.phases = [
{ months: 6, newInstancesPerMonth: 200 }, { months: 6, newInstancesPerMonth: 40 },
{ months: 6, newInstancesPerMonth: 400 }, { months: 6, newInstancesPerMonth: 80 },
{ months: 12, newInstancesPerMonth: 600 }, { months: 12, newInstancesPerMonth: 120 },
{ months: 12, newInstancesPerMonth: 800 } { months: 12, newInstancesPerMonth: 150 }
]; ];
// Update UI inputs // Update UI inputs
const inputMappings = [ const inputMappings = [
['conservative-churn', '2.0'], ['conservative-churn', '2.5'],
['conservative-phase-0', '50'], ['conservative-phase-0', '15'],
['conservative-phase-1', '75'], ['conservative-phase-1', '24'],
['conservative-phase-2', '100'], ['conservative-phase-2', '35'],
['conservative-phase-3', '150'], ['conservative-phase-3', '40'],
['moderate-churn', '3.0'], ['moderate-churn', '3.0'],
['moderate-phase-0', '100'], ['moderate-phase-0', '25'],
['moderate-phase-1', '200'], ['moderate-phase-1', '45'],
['moderate-phase-2', '300'], ['moderate-phase-2', '70'],
['moderate-phase-3', '400'], ['moderate-phase-3', '90'],
['aggressive-churn', '5.0'], ['aggressive-churn', '3.5'],
['aggressive-phase-0', '200'], ['aggressive-phase-0', '40'],
['aggressive-phase-1', '400'], ['aggressive-phase-1', '80'],
['aggressive-phase-2', '600'], ['aggressive-phase-2', '120'],
['aggressive-phase-3', '800'] ['aggressive-phase-3', '150']
]; ];
inputMappings.forEach(([id, value]) => { inputMappings.forEach(([id, value]) => {

View file

@ -94,13 +94,13 @@ html {
<div class="col-12"> <div class="col-12">
<!-- Investment Scaling Benefits Section (MOST IMPORTANT) --> <!-- Investment Scaling Benefits Section (MOST IMPORTANT) -->
<div class="help-section" id="investment-benefits"> <div class="help-section" id="investment-benefits">
<h2><i class="bi bi-trophy text-warning"></i> Why Larger Investments Win Big</h2> <h2><i class="bi bi-graph-up text-primary"></i> Investment Benefits & Market-Realistic Returns</h2>
<div class="alert alert-success"> <div class="alert alert-info">
<h5><i class="bi bi-graph-up-arrow"></i> The More You Invest, The Better Your ROI</h5> <h5><i class="bi bi-bar-chart"></i> Conservative Scaling Based on Industry Standards</h5>
<p class="mb-0">Our calculator uses exponential scaling to reward larger investments with dramatically better returns. This isn't just about more money - it's about exponentially better performance per CHF / EUR invested.</p> <p class="mb-0">Our calculator uses proven, market-realistic scaling based on European managed services industry data. Returns are conservative and align with current investment expectations.</p>
</div> </div>
<h3>Exponential Scaling Benefits</h3> <h3>Market-Realistic Investment Benefits</h3>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped comparison-table"> <table class="table table-striped comparison-table">
<thead class="table-success"> <thead class="table-success">
@ -118,33 +118,33 @@ html {
<td><strong>500,000</strong></td> <td><strong>500,000</strong></td>
<td>1.0x</td> <td>1.0x</td>
<td>Standard rates</td> <td>Standard rates</td>
<td>15%</td> <td>8%</td>
<td>Base period</td> <td>Base period</td>
<td class="text-success"><strong>200-250%</strong></td> <td class="text-success"><strong>40-60%</strong></td>
</tr> </tr>
<tr class="table-warning"> <tr class="table-warning">
<td><strong>1,000,000</strong></td> <td><strong>1,000,000</strong></td>
<td><span class="text-primary">2.2x</span></td> <td><span class="text-primary">1.5x</span></td>
<td><span class="text-primary">+20% per instance</span></td> <td><span class="text-primary">+10% per instance</span></td>
<td>20%</td> <td>10%</td>
<td>+6 months</td> <td>+2 months</td>
<td class="text-success"><strong>250-300%</strong></td> <td class="text-success"><strong>60-80%</strong></td>
</tr> </tr>
<tr class="table-info"> <tr class="table-info">
<td><strong>1,500,000</strong></td> <td><strong>1,500,000</strong></td>
<td><span class="text-success">3.5x</span></td> <td><span class="text-success">1.8x</span></td>
<td><span class="text-success">+40% per instance</span></td> <td><span class="text-success">+15% per instance</span></td>
<td>25%</td> <td>12%</td>
<td>+12 months</td> <td>+3 months</td>
<td class="text-success"><strong>300-350%</strong></td> <td class="text-success"><strong>70-90%</strong></td>
</tr> </tr>
<tr class="table-success"> <tr class="table-success">
<td><strong>2,000,000</strong></td> <td><strong>2,000,000</strong></td>
<td><span class="text-success fw-bold">5.0x</span></td> <td><span class="text-success fw-bold">2.0x</span></td>
<td><span class="text-success fw-bold">+60% per instance</span></td> <td><span class="text-success fw-bold">+20% per instance</span></td>
<td><span class="text-success fw-bold">35%</span></td> <td><span class="text-success fw-bold">15%</span></td>
<td>+12 months</td> <td>+3 months</td>
<td class="text-success"><strong>350-400%</strong></td> <td class="text-success"><strong>80-100%</strong></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -207,16 +207,16 @@ html {
<tr class="table-warning"> <tr class="table-warning">
<td><strong>Direct Investment (1M)</strong></td> <td><strong>Direct Investment (1M)</strong></td>
<td><span class="badge bg-warning">Moderate</span></td> <td><span class="badge bg-warning">Moderate</span></td>
<td>250-300% over 3 years</td> <td>60-80% over 3 years</td>
<td>15-21 months</td> <td>18-24 months</td>
<td>2,500,000 - 3,000,000</td> <td>600,000 - 800,000</td>
</tr> </tr>
<tr class="table-success"> <tr class="table-success">
<td><strong>Direct Investment (2M)</strong></td> <td><strong>Direct Investment (2M)</strong></td>
<td><span class="badge bg-danger">High</span></td> <td><span class="badge bg-danger">High</span></td>
<td>350-400% over 3 years</td> <td>80-100% over 3 years</td>
<td>18-24 months</td> <td>20-26 months</td>
<td>7,000,000 - 8,000,000</td> <td>1,600,000 - 2,000,000</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -280,9 +280,10 @@ html {
<h5 class="mb-0">Safe (Conservative)</h5> <h5 class="mb-0">Safe (Conservative)</h5>
</div> </div>
<div class="card-body"> <div class="card-body">
<p><strong>2% monthly churn</strong></p> <p><strong>3% monthly churn</strong></p>
<p>Steady growth: 50-150 new instances/month</p> <p>Steady growth: 3-8 new clients/month</p>
<p>Best for: Established markets, risk-averse CSPs</p> <p>Best for: Established markets, risk-averse CSPs</p>
<p class=\"small text-muted\">~200 total clients over 3 years</p>
</div> </div>
</div> </div>
</div> </div>
@ -292,9 +293,10 @@ html {
<h5 class="mb-0">Balanced (Moderate)</h5> <h5 class="mb-0">Balanced (Moderate)</h5>
</div> </div>
<div class="card-body"> <div class="card-body">
<p><strong>3% monthly churn</strong></p> <p><strong>4% monthly churn</strong></p>
<p>Balanced growth: 100-400 new instances/month</p> <p>Balanced growth: 5-15 new clients/month</p>
<p>Best for: Competitive markets, balanced approach</p> <p>Best for: Competitive markets, balanced approach</p>
<p class=\"small text-muted\">~350 total clients over 3 years</p>
</div> </div>
</div> </div>
</div> </div>
@ -305,8 +307,9 @@ html {
</div> </div>
<div class="card-body"> <div class="card-body">
<p><strong>5% monthly churn</strong></p> <p><strong>5% monthly churn</strong></p>
<p>Rapid growth: 200-800 new instances/month</p> <p>Rapid growth: 8-25 new clients/month</p>
<p>Best for: High-growth strategies, active sales</p> <p>Best for: High-growth strategies, active sales</p>
<p class=\"small text-muted\">~500 total clients over 3 years</p>
</div> </div>
</div> </div>
</div> </div>
@ -343,6 +346,81 @@ html {
</ul> </ul>
</div> </div>
<!-- Market Context & Risk Factors Section -->
<div class=\"help-section\" id=\"market-context\">
<h2><i class=\"bi bi-exclamation-triangle text-warning\"></i> Market Context & Risk Factors</h2>
<div class=\"alert alert-warning\">
<h6><i class=\"bi bi-info-circle\"></i> Important Disclaimer</h6>
<p class=\"mb-0\">These projections are based on European managed services market data (13-15% CAGR) and current industry standards. Actual results may vary significantly based on market conditions, execution, and competitive factors.</p>
</div>
<h3>Key Risk Factors</h3>
<div class=\"row\">
<div class=\"col-md-6\">
<h5>Market Risks</h5>
<ul>
<li><strong>Competition:</strong> US hyperscalers (AWS, Azure, Google) may respond aggressively</li>
<li><strong>Market Maturity:</strong> European managed services adoption varies by region</li>
<li><strong>Economic Conditions:</strong> Recession or funding limitations could impact growth</li>
<li><strong>Regulatory Changes:</strong> Data sovereignty laws may change</li>
</ul>
</div>
<div class=\"col-md-6\">
<h5>Execution Risks</h5>
<ul>
<li><strong>Technology Development:</strong> Platform development may face delays</li>
<li><strong>Partner Adoption:</strong> CSPs may be slower to adopt than projected</li>
<li><strong>Talent Acquisition:</strong> Skilled technical resources are scarce</li>
<li><strong>Customer Churn:</strong> Actual churn rates may exceed projections</li>
</ul>
</div>
</div>
<h3>Conservative Scenario Modeling</h3>
<div class=\"table-responsive\">
<table class=\"table table-bordered\">
<thead class=\"table-secondary\">
<tr>
<th>Scenario</th>
<th>Market Conditions</th>
<th>Expected Growth</th>
<th>Break-even Time</th>
<th>3-Year ROI Range</th>
</tr>
</thead>
<tbody>
<tr class=\"table-danger\">
<td><strong>Pessimistic</strong></td>
<td>Economic downturn, strong competition</td>
<td>5-10% annually</td>
<td>30-36 months</td>
<td>20-40%</td>
</tr>
<tr class=\"table-warning\">
<td><strong>Realistic</strong></td>
<td>Normal market conditions</td>
<td>15-25% annually</td>
<td>18-24 months</td>
<td>50-80%</td>
</tr>
<tr class=\"table-success\">
<td><strong>Optimistic</strong></td>
<td>Favorable market, rapid adoption</td>
<td>25-35% annually</td>
<td>12-18 months</td>
<td>80-120%</td>
</tr>
</tbody>
</table>
</div>
<div class=\"alert alert-info mt-3\">
<h6><i class=\"bi bi-lightbulb\"></i> Investment Recommendation</h6>
<p class=\"mb-0\">Consider these projections as best-case scenarios under favorable conditions. Prudent investors should plan for the \"Realistic\" scenario while hoping for \"Optimistic\" outcomes.</p>
</div>
</div>
<!-- Currency Support Section --> <!-- Currency Support Section -->
<div class="help-section" id="currency-support"> <div class="help-section" id="currency-support">
<h2><i class="bi bi-cash-stack"></i> Currency Support</h2> <h2><i class="bi bi-cash-stack"></i> Currency Support</h2>