My AI Planning Assistant FastTrack™ Strategic Planning System

FastTrack™ Strategic Planning System

Build your strategic plan step by step

Use Best-Practices Planning and Execution to Achieve Your Vision

The FastTrack™ Strategic Planning System guides you through the steps to develop a strategic vision, set goals and strategies, and execute well. Take every step or pick your path: The key is to create your vision, chart your course, and make ongoing progress.

Getting Started

To lead your organization to a better future, you need more than goals—you need a compelling vision of great success and powerful strategies to make it real.

But vision and strategy aren’t enough on their own. The real challenge is follow-through.

That’s where the FastTrack™ Strategic Planning System comes in. It recognizes that planning is not an event—it’s an ongoing process. An agile planning system developed based on 35+ years of real-world experience working with organizations to create and implement strategy, FastTrack™ gives you the structure, tools, and rhythm to bridge the gap between strategy and execution—so you can stay focused, aligned, and consistently make progress.

From Vision to Reality—One Step at a Time

If you work through all the steps in the FastTrack™ Strategic Planning System, you will:

  • Set the time span and strategy areas that your plan will address
  • Conduct a business assessment and an environmental scan
  • Consider your business model and the basis on which you will compete
  • Learn from stakeholders and assess the competition
  • Put it all together in a comprehensive SWOT analysis
  • Use your SWOT to develop an inspiring vision of great future success
  • Identify the gaps between today and your vision
  • Develop strategic goals and strategies to close the gaps
  • Establish your objectives and Key Performance Indicators
  • Develop 12-month action steps to assure that you get down the road
  • Create your program to drive implementation and measure your progress

Tools That Keep You Moving Forward

FastTrack™ is more than a planning model—it’s a discipline for driving results. It equips you with:

  • Practical tools like KPIs, a dashboard, and monthly, quarterly, and annual processes for assessment, adjustment, and re-planning
  • Built-in accountability to help you and your team stay engaged, on track, and aligned
  • A step-by-step system that simplifies the complex and makes strategy part of your everyday leadership

For Leaders Who Want to Leverage Strategy for Great Success

Whether you're a business, nonprofit, association, or government entity, FastTrack™ helps you set a great vision, execute consistently, and achieve what matters most for great success.

How it works:

  • Use the navigation buttons above to explore the FastTrack™ system step-by-step—or jump into the sections in whatever order makes sense. Every element is designed to contribute to creating and executing a strategic business plan that will help you live your vision of great success.
  • As you progress through the planning steps, you will see your plan outlined in the sidebar to the left.
  • Be sure you use the buttons on the upper left to save, export, and print your plan. You can also reload a plan you have saved and restart the process.
  • For knowledge, ideas, editing help, examples, options, best practices, and more, click the floating button on the lower left to get help from Kai, our AI planning assistant.

Let’s begin.



Back to Top ↑

Prepare to Plan

Initial Information

Enter information about your organization and the plan you are creating.

The planning period is the time span which your plan will address. It's generally better for your plan to cover four or five years or even longer to encourage development of strategies that will drive big change rather than incremental improvement.

The plan name is automatically generated based on the Organization Name and Planning Period.
Back to Top ↑

Strategy Areas Selection

Your strategy for attaining your Vision should address the four Balanced Scorecard perspectives: Financial, Customer, Internal Processes, and People/Organizational Capacity. These perspectives are often called Strategy Areas or Pillars.

Each template below adapts the Balanced Scorecard perspectives to different organization types. Choose a template that best fits your organization type. Then you can customize the Strategy Area names to match your organization's specific needs.

Business Template

Strategy Areas:
  • Financial
  • Organizational/People
  • Customers/Marketing
  • Operations, Processes, and Procedures

Non-Profit Template

Strategy Areas:
  • Revenue to Drive the Vision
  • A Robust Team, Supported and Engaged
  • Visible, Growing Impact
  • Meeting Community Needs

Healthcare Template

Strategy Areas:
  • Financial Sustainability
  • Healthcare Team Excellence
  • Patient Care & Experience
  • Clinical Operations

Education Template

Strategy Areas:
  • Sustainable Resources
  • Faculty & Staff Excellence
  • Student Success
  • Academic Innovation
Back to Top ↑

Business Assessment

Rate your business on key aspects to identify areas to build on or needing attention to inform your strategic planning.

How to use your ratings:

  • Good areas represent your strengths - build on these in your strategy
  • So-So areas need improvement - consider enhancements in your planning
  • Not Good areas are critical weaknesses - prioritize these for remediation

Assessment Summary

Good

0

    So-So

    0

      Not Good

      0
        Back to Top ↑

        Business Model

        Describe the core of how your organization creates, delivers, and captures value. What is your revenue model? Who are your customers and beneficiaries?

        Basis for Competition

        Explain your organization's unique value proposition and competitive advantage. What sets you apart in your market or sector?

        Environment Scan

        Identify key trends and forecasts in each category that are important to the future of your organization.

        Beyond web searches and consulting experts, a great tool for identifying trends and forecasts is AI. Use one of the leading AI models (such as ChatGPT 4.0, Gemini 2.0 Flash,or Claude 3.7 Sonnet) or interact with Kai right on this page

        Consider identify trends and forecasts for both defensive purposes (e.g., threats to mitigate) and offensive purposes (e.g., opportunities to leverage).

        You can tag important factors as Opportunities or Threats to include in your SWOT analysis.

        Back to Top ↑

        Stakeholder Input

        Consider gathering input from key stakeholders when creating your strategic plan.

        Key stakeholder groups include:

        • Employees
        • Clients
        • Board members
        • Partners and Suppliers
        • Investors and Donors (for non-profits)

        Stakeholder insights can:

        • Provide a reality-based overview of your organization's current state
        • Uncover potential blind spots
        • Identify key priorities for action
        • Help shape strategic options and opportunities

        Use surveys, focus groups, or interviews to gather insights about:

        • Organizational strengths and weaknesses
        • Opportunities for improvement
        • Potential threats
        • Future vision and goals

        Here are suggested survey questions:

        1. What do you think the organization's greatest strengths are?
        2. What do you think the organization's greatest weaknesses are?
        3. What do you see as important opportunities for the organization to be more effective or efficient; provide better products, services and/or programs; innovate; be in a better financial position, or otherwise be more successful over the next five years?
        4. What do you see as the greatest threats to the organization's financial integrity, products/services/programs, and overall success over the next five years?
        5. What do you think are the most important things for the organizations to begin doing now for greater success in the future?
        6. Envision the organization five years from now. What do you think are the most important things for the organization to achieve by then?
        Back to Top ↑

        Competitive Analysis

        Analyze your key competitors to understand your competitive positioning. You can analyze up to five key competitors or competitor types.

        For each competitor, evaluate their characteristics and identify their advantages and vulnerabilities relative to your organization.

        You can use the insights you gain about the competition and how you measure up to craft strategies designed to differentiate your organization, defend its position, and/or foster growth.

        💡 Competition exists in all sectors - businesses compete for customers, non-profits compete for donors and attention, and government agencies compete for resources and talent.

        Competitor 1

        Back to Top ↑

        SWOT Analysis

        The Strengths, Weaknesses, Opportunities, and Threats (SWOT) Analysis is a critical tool in strategic planning. It's the basis for creating strategies that will move you down the road to your vision.

        Enter the most important factors that will shape your strategic decisions.

        Strengths & Weaknesses are internal to your organization.

        - Use insights from your Business Assessment and Stakeholder Input to identify them.

        Opportunities & Threats are external factors that impact your organization.

        - Use insights from the Environmental Scan and Competitive Analysis to identify them.

        Note that the buttons below allow you to add the items in your Business Assessment to the listing of Strengths and Weaknesses and the items you tagged in your Environmental Scan to the listing of Opportunities and Threats.

        When you have completed your lists f SWOT items, you can rearrange then to prioritize them by importance for planning purposes. The strategies you will develop should build on your main strengths, remedy or mitigate important weaknesses, capitalize on big opportunities, and defend against significant threats.

        This will add your "Good" rated items as Strengths and your "So-So" and "Not Good" rated items as Weaknesses.
        This will add your tagged environment factors as Opportunities or Threats.

        Strengths

        Ranking of Importance

          Weaknesses

          Ranking of Importance

            Opportunities

            Ranking of Importance

              Threats

              Ranking of Importance

                Back to Top ↑

                Create Your Plan

                Mission & Values

                Your mission statement (sometimes called a purpose statement) defines your organization's purpose and how you serve your stakeholders today. The role of the mission statement is to focus and inspire the organization.

                A good mission statement is clear, concise, outcome-oriented, and timeless. It should address what you do, who you serve, and the value you provide. (Note: While it is essential to know your organization's mission, having a well-crafted mission statement is not necessary for creating your strategic plan.)

                Mission Statement Guidance

                Consider these questions to help you define your organization's mission:

                1. Purpose: What do we do? What is our core activity?
                2. Customer/Audience: Who do we serve? Who benefits from our work?
                3. Value: What value do we provide? What need do we fulfill? What problem do we solve?
                4. Approach: How do we do it? What are our core competencies?

                A good mission statement often follows this format: To [action verb] for [target audience] by [means] to [achieve this outcome].

                Examples of Effective Mission Statements

                Core values are the enduring principles that guide how your organization behaves and makes decisions. These are values you’ll never compromise, even under pressure.

                • What behaviors reflect your organization at its best?
                • What’s truly non-negotiable for your team?
                • What values are essential to achieving your mission?

                List up to 7 core values and define how each is lived out in behavior:

                Examples of Organizational Core Values
                Back to Top ↑

                Vision

                Your strategic plan should be aimed at bringing your vision of future success to life. Your vision statement describes what your organization aspires to become and achieve in the future.

                A compelling vision statement is aspirational, inspiring, clear, memorable, and aligned with your values. It should paint a picture of the future you want to create. Write it from the perspective of the future—how you want the organization’s success described.

                Examples of Effective Vision Statements

                Create and Test Draft Vision Statements

                Here are questions to prompt thinking about how the organization would appear and would be doing if it were extraordinarily successful in achieving its mission over the planning period (the duration of this plan). With your answers in hand, then you will be ready to draft and evaluate compelling visions of great success to find the vision that's just right.

                Use your answers to the questions above to draft up to five possible vision statements. Then rate these draft vision statements using the VisionLens™ Vision Evaluator below. When you find the vision statement that's just right, click the "Use This Vision" button below it and it will appear in the Vision Statement box above.

                Hint: You and/or team members can draft multiple vision statements to test. Kai can help you process your responses to the vision creation questions into several draft vision statements. Look for gems, commonalities, and areas of agreement among the statements. Mash up the statements to create a great vision statement.

                VisionLens™ Vision Evaluator

                Assess your vision's power and feasibility across three key dimensions. For each criterion, enter a score within the specified range and document your reasoning.

                Total possible points:

                • Vision Power (45 points) – Evaluates future orientation, transformative potential, and stakeholder appeal
                • Strategic Feasibility (30 points) – Assesses change management, strategic gap, and resource availability
                • Implementation Readiness (25 points) – Measures organizational readiness and realism of the timeline

                Draft Vision Being Evaluated:

                Vision Power (45 points)
                Section Total: 0/45
                Future Orientation
                How compelling and inspiring is this vision for the future of the organization? To what extent does it clearly articulate a desirable and forward-looking future that motivates action?
                Score range: 0-15 points
                Score must be between 0 and 15.
                Transformative Potential
                To what extent does this vision represent meaningful, significant change for the organization and its stakeholders, challenge the status quo and drive a big, desirable transformation?
                Score range: 0-15 points
                Score must be between 0 and 15.
                Stakeholder Appeal
                How compelling is this vision to key stakeholders (e.g., employees, customers, investors, donors)? How well will it resonate with and motivate those who are critical to its success?
                Score range: 0-15 points
                Score must be between 0 and 15.
                Strategic Feasibility (30 points)
                Section Total: 0/30
                Change Management
                To what extent does the organization demonstrate the ability to adapt to and manage significant change?
                Score range: 0-10 points
                Score must be between 0 and 10.
                Strategic Gap
                How easy will it be to close the gap between the organization's current state and the envisioned future state?
                Score range: 0-10 points
                Score must be between 0 and 10.
                Resource Availability
                How well do current and attainable resources and capabilities align with what achieving the vision will require?
                Score range: 0-10 points
                Score must be between 0 and 10.
                Implementation Readiness (25 points)
                Section Total: 0/25
                Organizational Readiness
                How prepared is the organization to pursue this vision in terms of culture, leadership, immediate resources, and operational systems?
                Score range: 0-15 points
                Score must be between 0 and 15.
                Realism of the Timeline
                How realistic is it to expect achievement of the vision or a substantial part of it within the plan timeframe?
                Score range: 0-10 points
                Score must be between 0 and 10.
                Total Score: 0/100
                Back to Top ↑

                Strategic Gaps & Remedies

                Strategic Goals by Strategy Area

                Setting Strategic Goals by Strategy Area

                For each of your strategy areas, define 1-3 strategic goals that will move your organization toward your vision of great success. These goals should address the gaps between your current state and desired future.

                Effective strategic goals:

                • Are aligned with your vision and values
                • Address critical gaps identified in your SWOT analysis
                • Provide clear direction for strategy development
                • Are ambitious but achievable within your planning period

                Example: For a Financial strategy area, a goal might be: "Achieve financial sustainability through diversified revenue streams by the end of the planning period."

                Set your goals! The following process will help you draft, rate, and adopt strategic goals for each strategy area.

                Strategic Goals

                No goals have been adopted yet.

                Strategies by Strategy Area

                Developing Strategies by Area

                For each strategy area, develop specific strategies that will help you achieve your strategic goals. Effective strategies are major planned actions that will move your organization from its current state toward your vision of success.

                Winning strategies should meet these benchmarks:

                1. Contribution: They contribute directly to vision achievement
                2. Intentionality: They focus the organization on a clear plan of action
                3. Importance: They address significant organizational needs
                4. Impact: They achieve meaningful results
                5. Challenge: They push the organization to perform better
                6. Specificity: They are well articulated and easily understood
                7. Time: They fit within an appropriate time frame
                8. Measurability: Their results can be monitored and assessed
                9. Realism: They can be achieved within your time frame
                10. Limitation: They focus resources on high-impact activities

                Remember: "Go wide, go narrow, then decide." First brainstorm many options, then filter them down to the most powerful strategies. It's better to have one or a few strategies for each strategy area than to be trying to pursue many strategies.

                Develop your strategies! The following process will help you draft, rate, and adopt strategies for each strategy area.

                Strategies

                No strategies have been adopted yet.

                Objectives

                Information to come.

                Back to Top ↑

                Key Performance Indicators

                Information to come.

                Back to Top ↑

                12-Month Action Steps

                Information to come.

                Back to Top ↑

                Implement Your Plan

                Implementation Plan

                Information to come.

                Back to Top ↑

                Implementation Dashboard

                Information to come.

                Back to Top ↑

                Monthly Check-In

                Information to come.

                Back to Top ↑

                Quarterly Progress Assessment

                Information to come.

                Back to Top ↑

                Annual Assessment and Replanning

                Information to come.

                Back to Top ↑

                Kai, our AI planning assistant, is here to help. Click the floating button below to ask Kai for knowledge, ideas, editing help, examples, options, best practices, and more. To restart the conversation with Kai, click the 🔄 icon.

                Your Plan

                Organization Name: Not set
                Organization Type: Not set
                Planning Period: Not set
                Plan Name: Not set
                Strategy Areas: Not set
                Business Assessment: Not set
                Environment Scan: Not set
                Competitive Analysis: Not set
                SWOT Analysis: Not set
                Mission: Not set
                Values:
                Vision: Not set
                Strategic Gaps & Remedies: Not set
                Strategic Goals by Strategy Area: Not set
                Strategies by Strategy Area: Not set
                Objectives: Not set
                Key Performance Indicators: Not set
                12-Month Action Steps: Not set
                tag function fixGapsHeadingDirectly() { console.log("Running targeted gaps heading fix"); // Target the element by ID first const gapsContainer = document.getElementById('progress-gaps'); if (!gapsContainer || !gapsContainer.parentElement) { console.log("Couldn't find gaps container by ID"); return; } // Get the parent element which should have the proper structure const parentElement = gapsContainer.parentElement; // Simply insert the heading text at the beginning if it's not already there if (!parentElement.innerHTML.includes("Strategic Gaps & Remedies:")) { // Create a heading element const headingSpan = document.createElement('span'); headingSpan.innerHTML = 'Strategic Gaps & Remedies: '; // Insert at beginning of the parent element parentElement.insertBefore(headingSpan, parentElement.firstChild); console.log("Added gaps heading directly to parent element"); } } // Call this function after a delay setTimeout(fixGapsHeadingDirectly, 1500); // Add this at the very end of your JavaScript function fixStrategicGapsDisplay() { console.log("Fixing Strategic Gaps display"); // First, check if we need to add the heading when gaps exist const elements = document.querySelectorAll('.progress-item'); let foundGaps = false; elements.forEach(el => { // Look for the element that has the gap content if (el.textContent.includes('Gap 1:') && el.textContent.includes('Chasm') && !el.textContent.includes('Strategic Gaps & Remedies:')) { // Create a proper heading with padding const heading = document.createElement('strong'); heading.textContent = 'Strategic Gaps & Remedies:'; heading.style.paddingLeft = '10px'; heading.style.marginRight = '5px'; // Insert at the top of this element el.insertBefore(heading, el.firstChild); // Add a space after the heading el.insertBefore(document.createTextNode(' '), heading.nextSibling); console.log("Added Strategic Gaps & Remedies heading for gap content"); foundGaps = true; } }); // Second, fix padding when the "Not set" message appears if (!foundGaps) { const gapsDiv = document.getElementById('progress-gaps'); if (gapsDiv && !gapsDiv.innerHTML.includes('Strategic Gaps & Remedies:')) { // Add the heading with proper padding const originalContent = gapsDiv.innerHTML; gapsDiv.innerHTML = 'Strategic Gaps & Remedies: ' + (originalContent === 'Not set' ? originalContent : 'Not set'); console.log("Added Strategic Gaps & Remedies heading for 'Not set' message"); } } } // Call this after everything else is loaded window.addEventListener('load', function() { // Give everything time to render setTimeout(fixStrategicGapsDisplay, 1000); }); // Add this right before the final tag // Function to add the heading when adding gaps/remedies // Add this to fix the display of Strategic Gaps heading when adding gaps function addStrategicGapsHeadingOnUpdate() { const gapsUpdateInterval = setInterval(function() { const progressGapsDiv = document.getElementById("progress-gaps"); if (!progressGapsDiv) return; // Check if this contains gap content but no heading if (progressGapsDiv.textContent.includes('Gap ') && !progressGapsDiv.textContent.includes('Strategic Gaps & Remedies:')) { // Get the parent element (progress-item) const parentItem = progressGapsDiv.closest('.progress-item'); if (!parentItem) return; // Create new content with heading but preserve the gap content const gapContent = progressGapsDiv.innerHTML; parentItem.innerHTML = 'Strategic Gaps & Remedies: ' + gapContent; } }, 1000); // Check every second // Store interval ID in window object so we can clear it if needed window.gapsHeadingInterval = gapsUpdateInterval; } // Call this function when the document is ready document.addEventListener('DOMContentLoaded', function() { addStrategicGapsHeadingOnUpdate(); }); function enhancedClearMissionVisionValues() { // Clear mission/vision fields const missionInput = document.getElementById('missionStatement'); if (missionInput) missionInput.value = ''; const visionInput = document.getElementById('visionStatement'); if (visionInput) visionInput.value = ''; // Clear core values - remove all but the first entry const valuesContainer = document.getElementById('core-values-list'); if (valuesContainer) { // First, clear the inputs in the first value entry const firstValueInput = document.getElementById('core-value-1'); const firstDefInput = document.getElementById('core-definition-1'); if (firstValueInput) firstValueInput.value = ''; if (firstDefInput) firstDefInput.value = ''; // Then remove all other value entries Array.from(valuesContainer.querySelectorAll('.gap-entry')).forEach((entry, index) => { if (index > 0) entry.remove(); }); } // Reset values counter window.coreValueCount = 1; // Clear sidebar values const sidebarMission = document.getElementById('sidebarMission'); const sidebarVision = document.getElementById('sidebarVision'); const sidebarValues = document.getElementById('sidebarValues'); if (sidebarMission) sidebarMission.textContent = 'Not set'; if (sidebarVision) sidebarVision.textContent = 'Not set'; if (sidebarValues) { sidebarValues.innerHTML = '
              • Not set
              • '; } // Ensure the mission/vision is cleared in planData if (planData.missionVision) { planData.missionVision = { mission: '', vision: '', coreValues: [], evaluation: {} }; } } // Fix for the "fixStrategicGapsHeading is not defined" error function fixStrategicGapsHeading() { // Get the gaps container in the sidebar const gapsElement = document.getElementById('progress-gaps'); if (!gapsElement) return; // Get the parent element (which should be the progress-item) const parentItem = gapsElement.closest('.progress-item'); if (!parentItem) return; // Extract the actual gap content, ignoring any headings let contentOnly = parentItem.innerHTML; // Remove all instances of the heading and any residual tags contentOnly = contentOnly.replace(/Strategic Gaps & Remedies:<\/strong>/g, ''); contentOnly = contentOnly.replace(/Strategic Gaps & Remedies:/g, ''); contentOnly = contentOnly.replace(/<\/?strong>/g, ''); contentOnly = contentOnly.trim(); // Check if we have real gap content const hasGapContent = contentOnly.includes('Gap 1:') || contentOnly.includes('gap-1:') || contentOnly.includes('Remedy:'); // Create a totally fresh parent element const newParent = document.createElement('div'); newParent.className = 'progress-item'; // Create the heading const heading = document.createElement('strong'); heading.textContent = 'Strategic Gaps & Remedies:'; // Add the content const contentNode = document.createTextNode(' ' + (hasGapContent ? contentOnly : 'Not set')); // Build the element newParent.appendChild(heading); newParent.appendChild(contentNode); // Replace the old element with the new one parentItem.parentNode.replaceChild(newParent, parentItem); } // Add this new function to your code function rebuildStrategicGapsElement() { console.log("Completely rebuilding Strategic Gaps element"); // First find the progress-gaps element by ID const progressGaps = document.getElementById('progress-gaps'); if (!progressGaps) { console.log("Could not find progress-gaps element"); return; } // Get parent item const parentItem = progressGaps.closest('.progress-item'); if (!parentItem) { console.log("Could not find parent item"); return; } // Remove the parent element completely from the DOM const parentContainer = parentItem.parentNode; parentContainer.removeChild(parentItem); // Create a completely new element const newItem = document.createElement('div'); newItem.className = 'progress-item'; // Create the heading element const heading = document.createElement('strong'); heading.textContent = 'Strategic Gaps & Remedies:'; // Create content element with ID const newContent = document.createElement('div'); newContent.id = 'progress-gaps'; // Extract the gap data from planData instead of parsing HTML if (planData && planData.strategicGaps && planData.strategicGaps.items) { let hasContent = false; let contentHTML = ''; Object.entries(planData.strategicGaps.items).forEach(([index, data]) => { if (data.gap || data.remedy) { hasContent = true; const isTagged = planData.strategicGaps.tags && planData.strategicGaps.tags[index]; const tagInfo = isTagged ? " (Tagged for Strategy)" : ""; contentHTML += `
                `; if (data.gap) { contentHTML += `
                Gap ${index}: ${data.gap}
                `; } if (data.remedy) { contentHTML += `
                Remedy: ${data.remedy}${tagInfo}
                `; } contentHTML += `
                `; } }); if (hasContent) { newContent.innerHTML = contentHTML; } else { newContent.textContent = 'Not set'; } } else { newContent.textContent = 'Not set'; } // Add elements to DOM newItem.appendChild(heading); newItem.appendChild(document.createTextNode(' ')); newItem.appendChild(newContent); // Add the new item to the container parentContainer.appendChild(newItem); console.log("Strategic Gaps element rebuild complete"); } function ensureSingleGapsHeading() { // Find all progress-item elements const progressItems = document.querySelectorAll('.progress-item'); // Look for the one containing the gaps element for (const item of progressItems) { if (item.querySelector('#progress-gaps') || item.textContent.includes('Strategic Gaps & Remedies:')) { // Found the gaps item - completely rebuild it // Store the content to preserve it const gapsElement = item.querySelector('#progress-gaps'); let contentHTML = 'Not set'; if (gapsElement && gapsElement.innerHTML && !gapsElement.innerHTML.includes('Not set') && (gapsElement.innerHTML.includes('Gap') || gapsElement.innerHTML.includes('Remedy'))) { contentHTML = gapsElement.innerHTML; } // Clear the item completely item.innerHTML = ''; // Add a single, clean heading const heading = document.createElement('strong'); heading.textContent = 'Strategic Gaps & Remedies:'; item.appendChild(heading); item.appendChild(document.createTextNode(' ')); // Create a new content div const newContent = document.createElement('div'); newContent.id = 'progress-gaps'; newContent.innerHTML = contentHTML; item.appendChild(newContent); console.log("Fixed gaps heading - ensured single instance"); return; // We found and fixed the item, so we're done } } } function setupGapsMonitoring() { // Create a MutationObserver to watch for changes to the DOM const observer = new MutationObserver(function(mutations) { for (const mutation of mutations) { // Check if any mutation affects the strategic gaps element if (mutation.target.id === 'progress-gaps' || mutation.target.closest('.progress-item')?.querySelector('#progress-gaps')) { // If the strategic gaps element has changed, ensure it has a single heading ensureSingleGapsHeading(); return; } } }); // Configure and start the observer const config = { childList: true, // Watch for changes to child elements subtree: true, // Watch the entire subtree characterData: true // Watch for text changes }; // Start observing the progress content area const progressContent = document.querySelector('.progress-content'); if (progressContent) { observer.observe(progressContent, config); console.log("Gaps monitoring started"); } } function fixDuplicateGapsHeadings() { // Direct approach to find and fix the strategic gaps heading const items = document.querySelectorAll('.progress-item'); for (const item of items) { // Check if this is the strategic gaps item if (item.textContent.includes('Strategic Gaps & Remedies:')) { // Count how many times the heading appears const headingCount = (item.textContent.match(/Strategic Gaps & Remedies:/g) || []).length; if (headingCount > 1) { console.log(`Found ${headingCount} duplicate headings - fixing now`); // Get the #progress-gaps element if it exists const gapsElement = item.querySelector('#progress-gaps'); let gapContent = ''; // Save any actual gap content if (gapsElement) { gapContent = gapsElement.innerHTML; } // Completely recreate the element with a single heading const parent = item.parentNode; const newItem = document.createElement('div'); newItem.className = 'progress-item'; // Create a clean heading const heading = document.createElement('strong'); heading.textContent = 'Strategic Gaps & Remedies:'; newItem.appendChild(heading); newItem.appendChild(document.createTextNode(' ')); // Add content if we have it, otherwise "Not set" const newGapsElement = document.createElement('div'); newGapsElement.id = 'progress-gaps'; if (gapContent && (gapContent.includes('Gap') || gapContent.includes('Remedy') || gapContent.includes('gap'))) { newGapsElement.innerHTML = gapContent; } else { newGapsElement.textContent = 'Not set'; } newItem.appendChild(newGapsElement); // Replace the old item with our new one parent.replaceChild(newItem, item); console.log("Fixed duplicate headings"); } } } } // Add this as a standalone function at the end of your JavaScript section function clearMissionValuesVision() { // Simply find and modify these three specific elements const missionItem = document.querySelector('.progress-item:has(#sidebarMission)'); if (missionItem) { missionItem.innerHTML = 'Mission: Not set'; } const valuesItem = document.querySelector('.progress-item:has(#sidebarValues)'); if (valuesItem) { valuesItem.innerHTML = 'Values:
                • Not set
                '; } const visionItem = document.querySelector('.progress-item:has(#sidebarVision)'); if (visionItem) { visionItem.innerHTML = 'Vision: Not set'; } } function forceClearAllSidebar() { // Get the progress content container const progressContent = document.querySelector('.progress-content'); if (!progressContent) return; // Create brand new progress items for each section progressContent.innerHTML = `

                Your Plan

                Organization Name: Not set
                Organization Type: Not set
                Planning Period: Not set
                Plan Name: Not set
                Strategy Areas: Not set
                Business Assessment: Not set
                Environment Scan: Not set
                Competitive Analysis: Not set
                SWOT Analysis: Not set
                Mission: Not set
                Values:
                • Not set
                Vision: Not set
                Strategic Gaps & Remedies: Not set
                Strategic Goals by Strategy Area: Not set
                Strategies by Strategy Area: Not set
                Objectives: Not set
                Key Performance Indicators: Not set
                12-Month Action Steps: Not set
                `; } function directlyClearMissionValuesVision() { try { // Get all mission/vision/values items in the sidebar const items = document.querySelectorAll('.progress-item'); items.forEach(item => { const text = item.textContent || ''; // Mission item if (text.includes('Mission:') && !text.includes('Not set')) { item.innerHTML = 'Mission: Not set'; } // Values item if (text.includes('Values:') && !text.includes('Not set')) { item.innerHTML = 'Values:
                • Not set
                '; } // Vision item if (text.includes('Vision:') && !text.includes('Not set')) { item.innerHTML = 'Vision: Not set'; } }); return true; } catch (e) { console.error('Error in directlyClearMissionValuesVision:', e); return false; } } // Function to ensure mission/vision/values are completely cleared function forceResetMissionVisionValues() { console.log("Force resetting mission/vision/values"); // Get the sidebar elements const missionElement = document.getElementById('sidebarMission'); const visionElement = document.getElementById('sidebarVision'); const valuesElement = document.getElementById('sidebarValues'); // Reset them directly if (missionElement) missionElement.textContent = "Not set"; if (visionElement) visionElement.textContent = "Not set"; if (valuesElement) { valuesElement.innerHTML = "
              • Not set
              • "; } // Also find the parent elements and reset them completely const progressItems = document.querySelectorAll('.progress-item'); progressItems.forEach(item => { if (item.textContent.includes('Mission:')) { item.innerHTML = 'Mission: Not set'; } if (item.textContent.includes('Vision:')) { item.innerHTML = 'Vision: Not set'; } if (item.textContent.includes('Values:')) { item.innerHTML = 'Values:
                • Not set
                '; } }); // Make sure planData is reset if (planData && planData.missionVision) { planData.missionVision = { mission: "", vision: "", coreValues: [], evaluation: {} }; } } // Function to ensure mission/vision/values are completely cleared function forceResetMissionVisionValues() { console.log("Force resetting mission/vision/values"); // Get the sidebar elements const missionElement = document.getElementById('sidebarMission'); const visionElement = document.getElementById('sidebarVision'); const valuesElement = document.getElementById('sidebarValues'); // Reset them directly if (missionElement) missionElement.textContent = "Not set"; if (visionElement) visionElement.textContent = "Not set"; if (valuesElement) { valuesElement.innerHTML = "
              • Not set
              • "; } // Also find the parent elements and reset them completely const progressItems = document.querySelectorAll('.progress-item'); progressItems.forEach(item => { if (item.textContent.includes('Mission:')) { item.innerHTML = 'Mission: Not set'; } if (item.textContent.includes('Vision:')) { item.innerHTML = 'Vision: Not set'; } if (item.textContent.includes('Values:')) { item.innerHTML = 'Values:
                • Not set
                '; } }); // Make sure planData is reset if (planData && planData.missionVision) { planData.missionVision = { mission: "", vision: "", coreValues: [], evaluation: {} }; } } function removeSpuriousText() { // Run this function on a timer to clean up any spurious text const unwantedPatterns = [ /Strategic Gaps & Remedies:(?:Strategic Gaps & Remedies:)*.+?(?=<\/body>| tag function forceClearEverything() { console.log("Running comprehensive clear plan operation"); try { // 1. First confirm action if (!confirm('Are you sure you want to clear the form? This will remove all entered information.')) { return false; } // 2. Reset planData completely window.planData = { basicInfo: {}, template: { selected: null, customNames: {} }, environmentScan: {}, assessmentRatings: {}, competitiveAnalysis: [], swotAnalysis: { strengths: [], weaknesses: [], opportunities: [], threats: [] }, swotText: { strengths: "", weaknesses: "", opportunities: "", threats: "" }, missionVision: { mission: "", vision: "", evaluation: {}, coreValues: [] }, strategicGaps: { items: {}, tags: {} }, strategicGoals: {}, strategies: {} }; // 3. Reset form elements document.querySelectorAll('input[type="text"], select, textarea').forEach(el => { el.value = ''; }); // 4. Clear template selections document.querySelectorAll('.template-card').forEach(card => { card.classList.remove('selected'); }); // 5. Remove strategy area editor const strategyEditor = document.getElementById('strategyAreaEditor'); if (strategyEditor) strategyEditor.remove(); // 6. Clear strategic goals and strategies const strategicGoalsContainer = document.getElementById("strategic-goals-container"); if (strategicGoalsContainer) strategicGoalsContainer.innerHTML = ''; const strategiesContainer = document.getElementById("strategies-container"); if (strategiesContainer) strategiesContainer.innerHTML = ''; const adoptedGoalsList = document.getElementById("adopted-goals-list"); if (adoptedGoalsList) { adoptedGoalsList.innerHTML = '
                No goals have been adopted yet.
                '; } const adoptedStrategiesList = document.getElementById("adopted-strategies-list"); if (adoptedStrategiesList) { adoptedStrategiesList.innerHTML = '
                No strategies have been adopted yet.
                '; } // 7. Reset business assessment document.querySelectorAll('.rating-group button').forEach(button => { button.classList.remove('selected'); }); document.getElementById('goodCount').textContent = '0'; document.getElementById('goodList').innerHTML = ''; document.getElementById('sosoCount').textContent = '0'; document.getElementById('sosoList').innerHTML = ''; document.getElementById('notgoodCount').textContent = '0'; document.getElementById('notgoodList').innerHTML = ''; // 8. Reset SWOT ["strengths", "weaknesses", "opportunities", "threats"].forEach(type => { const textarea = document.getElementById(`swot-${type}`); if (textarea) textarea.value = ""; const list = document.getElementById(`swot-${type}-list`); if (list) list.innerHTML = ""; }); // 9. Reset global counters window.strategicGoalCount = 1; window.strategyCount = 1; window.coreValueCount = 1; window.strategicGapCount = 1; window.visibleCompetitors = 1; // 10. Reset all progress sidebar items const progressContent = document.querySelector('.progress-content'); if (progressContent) { progressContent.innerHTML = `

                Your Plan

                Organization Name: Not set
                Organization Type: Not set
                Planning Period: Not set
                Plan Name: Not set
                Strategy Areas: Not set
                Business Assessment: Not set
                Environment Scan: Not set
                Competitive Analysis: Not set
                SWOT Analysis: Not set
                Mission: Not set
                Values:
                • Not set
                Vision: Not set
                Strategic Gaps & Remedies: Not set
                Strategic Goals by Strategy Area: Not set
                Strategies by Strategy Area: Not set
                Objectives: Not set
                Key Performance Indicators: Not set
                12-Month Action Steps: Not set
                `; } // 11. Reset strategic gaps const gapsContainer = document.getElementById('strategic-gaps-list'); if (gapsContainer) { // Keep the first entry but clear it const firstGapTextarea = document.getElementById('strategic-gap-1'); const firstRemedyTextarea = document.getElementById('remedy-1'); if (firstGapTextarea) firstGapTextarea.value = ''; if (firstRemedyTextarea) firstRemedyTextarea.value = ''; // Hide tag message const taggedMsg = document.getElementById('tagged-message-1'); if (taggedMsg) taggedMsg.style.display = 'none'; // Remove all other entries Array.from(gapsContainer.querySelectorAll('.gap-entry')).forEach((entry, index) => { if (index > 0) entry.remove(); }); } // 12. Regenerate initial areas if needed if (typeof generateInitialGoalAreas === 'function') { setTimeout(generateInitialGoalAreas, 100); } if (typeof generateInitialStrategyAreas === 'function') { setTimeout(generateInitialStrategyAreas, 200); } // 13. Reset competitive analysis for (let i = 1; i <= 5; i++) { // Hide competitors 2-5 if (i > 1) { const compBlock = document.getElementById(`competitor-analysis-${i}`); if (compBlock) compBlock.style.display = 'none'; } // Clear all inputs and selects const nameInput = document.getElementById(`competitorName${i}`); if (nameInput) nameInput.value = ''; ['marketShare', 'innovation', 'growth', 'customerPerception', 'priceQuality', 'competitiveImpact'].forEach(field => { const select = document.getElementById(`${field}${i}`); if (select) select.value = ''; }); ['competitorStrengths', 'competitorWeaknesses', 'yourStrengths', 'yourWeaknesses', 'competitorNotes'].forEach(field => { const textarea = document.getElementById(`${field}${i}`); if (textarea) textarea.value = ''; }); } console.log("Comprehensive plan clearing succeeded"); alert("Plan has been cleared successfully."); return true; } catch (error) { console.error("Error in forceClearEverything:", error); alert("There was an error clearing the plan. Please try again."); return false; } } // Connect to your Clear Plan button document.addEventListener('DOMContentLoaded', function() { // Get the Clear Plan button(s) const clearButtons = document.querySelectorAll('.btn').forEach(btn => { if (btn.textContent.includes('Clear Plan')) { // Remove any existing event listeners and onclick attributes const newBtn = btn.cloneNode(true); newBtn.removeAttribute('onclick'); btn.parentNode.replaceChild(newBtn, btn); // Add our new event listener newBtn.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); forceClearEverything(); }); console.log("Connected forceClearEverything to Clear Plan button"); } }); }); // Add this to your code as a separate script tag at the end of your HTML file