Ansoff Matrix Calculator

📊 Ansoff Matrix Growth Strategy Calculator

1. Dashboard (Strategy Output)
2. Data Configuration (Inputs)

User Input: Products: New | Markets: New

Please define your growth approach in the **Data Configuration (Inputs)** tab and click 'Identify Strategy'.

Visual Matrix Overview

The identified strategy is highlighted below:

Products
Existing New
Markets Existing Market Penetration Product Development
New Market Development Diversification

Example: A software company selling its existing word processor is 'Existing Product'. Creating a new spreadsheet application is 'New Product'.

Example: Selling to current subscribers is 'Existing Market'. Launching in a new country is 'New Market'.

Error: Tool failed to load. Please check element IDs.

'; return; } // --- STRATEGY DATA --- const STRATEGY_DATA = { 'ExistingExisting': { name: 'Market Penetration', risk: 'Low Risk', riskClass: 'risk-low', definition: 'Focus on increasing market share within existing markets using existing products. Key strategies include competitive pricing, deeper distribution, and increased promotion.', cellId: 'cell-EE' }, 'NewExisting': { name: 'Product Development', risk: 'Medium Risk', riskClass: 'risk-medium', definition: 'Introduce new products or modified products to existing markets. This requires investing in R&D and leveraging current customer relationships.', cellId: 'cell-NE' }, 'ExistingNew': { name: 'Market Development', risk: 'Medium Risk', riskClass: 'risk-medium', definition: 'Take existing products into new markets. This could mean targeting new segments, entering new territories, or exploring international expansion.', cellId: 'cell-EN' }, 'NewNew': { name: 'Diversification', risk: 'High Risk', riskClass: 'risk-high', definition: 'Introduce new products into new, unfamiliar markets. This is the riskiest strategy, demanding significant investment and little existing expertise (no synergy).', cellId: 'cell-NN' } }; // --- TAB NAVIGATION LOGIC (Standard implementation) --- const tabs = ['dashboard', 'config']; let currentTabIndex = 0; function updateNavButtons() { prevBtn.disabled = currentTabIndex === 0; nextBtn.disabled = currentTabIndex === tabs.length - 1; prevBtn.style.opacity = prevBtn.disabled ? '0.5' : '1'; nextBtn.style.opacity = nextBtn.disabled ? '0.5' : '1'; } window.switchTab = function(tabName) { const activeTab = document.querySelector('.tab-button.active'); const activeContent = document.querySelector('.tab-content.active'); const nextTabBtn = document.getElementById('tab-btn-' + tabName); const nextTabContent = document.getElementById('tab-content-' + tabName); if (!nextTabBtn || !nextTabContent) return; if (activeTab) activeTab.classList.remove('active'); if (activeContent) activeContent.classList.remove('active'); nextTabBtn.classList.add('active'); nextTabContent.classList.add('active'); currentTabIndex = tabs.indexOf(tabName); updateNavButtons(); }; window.navigateTabs = function(direction) { const newIndex = currentTabIndex + direction; if (newIndex >= 0 && newIndex < tabs.length) { switchTab(tabs[newIndex]); } }; // --- MAIN CALCULATION AND RENDERING --- window.identifyStrategyAndSwitchToDashboard = function() { const productStatus = productSelect.value; const marketStatus = marketSelect.value; if (productStatus === 'none' || marketStatus === 'none') { alert("Please select both a Product Status and a Market Status to identify the strategy."); return; } const strategyKey = productStatus + marketStatus; const strategy = STRATEGY_DATA[strategyKey]; // 1. Update Strategy Card strategyName.textContent = strategy.name.toUpperCase(); strategyDefinition.textContent = strategy.definition; strategyCard.setAttribute('data-strategy', strategy.name); // Used for CSS styling strategyCard.className = 'strategy-card'; // Reset classes riskLevel.textContent = strategy.risk; riskLevel.className = 'risk-level ' + strategy.riskClass; // 2. Update Input Summary summaryProduct.textContent = productStatus; summaryMarket.textContent = marketStatus; // 3. Update Visual Matrix // Remove highlight from all cells Object.values(matrixCells).forEach(cell => cell.classList.remove('highlight-strategy')); // Apply highlight to the identified cell matrixCells[strategyKey].classList.add('highlight-strategy'); // 4. Display results and switch tab initialMessage.style.display = 'none'; strategyCard.style.display = 'block'; switchTab('dashboard'); }; // II. C. PDF Download Functionality window.downloadPDF = function() { // III. B. Website Integrity: Use the print media query CSS to hide surrounding elements. window.print(); }; // Initial setup updateNavButtons(); switchTab('config'); // Start on the configuration tab to force selection });
Scroll to Top