{"id":733,"date":"2025-12-13T23:21:34","date_gmt":"2025-12-13T23:21:34","guid":{"rendered":"https:\/\/marketing-coaching.uk\/?page_id=733"},"modified":"2025-12-13T23:21:34","modified_gmt":"2025-12-13T23:21:34","slug":"market-sense-do-i-have-the-right-marketing-tips","status":"publish","type":"page","link":"https:\/\/marketing-coaching.uk\/en\/market-sense-do-i-have-the-right-marketing-tips\/","title":{"rendered":"Market sense &#8211; Do i Have the right marketing tips?"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Marketing Maturity &#038; Strategy Dashboard<\/title>\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n    <style>\n        \/* Custom Scrollbar for cleaner look *\/\n        ::-webkit-scrollbar {\n            width: 8px;\n        }\n        ::-webkit-scrollbar-track {\n            background: #f1f1f1; \n        }\n        ::-webkit-scrollbar-thumb {\n            background: #cbd5e1; \n            border-radius: 4px;\n        }\n        ::-webkit-scrollbar-thumb:hover {\n            background: #94a3b8; \n        }\n        \n        .chart-container {\n            position: relative;\n            width: 100%;\n            max-width: 600px;\n            margin-left: auto;\n            margin-right: auto;\n            height: 350px;\n            max-height: 400px;\n        }\n        @media (max-width: 640px) {\n            .chart-container {\n                height: 300px;\n            }\n        }\n\n        \/* Smooth transitions *\/\n        .fade-in {\n            animation: fadeIn 0.5s ease-in-out;\n        }\n        @keyframes fadeIn {\n            from { opacity: 0; transform: translateY(10px); }\n            to { opacity: 1; transform: translateY(0); }\n        }\n        \n        .active-tab {\n            border-bottom: 3px solid #ea580c; \/* Orange-600 *\/\n            color: #ea580c;\n            font-weight: 600;\n        }\n        .inactive-tab {\n            border-bottom: 3px solid transparent;\n            color: #64748b; \/* Slate-500 *\/\n        }\n        .inactive-tab:hover {\n            color: #334155;\n            border-bottom: 3px solid #cbd5e1;\n        }\n\n        .rating-label {\n            display: inline-block;\n            width: 1.5rem;\n            height: 1.5rem;\n            line-height: 1.5rem;\n            text-align: center;\n            border-radius: 9999px;\n            cursor: pointer;\n            transition: all 0.2s;\n            margin: 0 0.25rem;\n        }\n\n        .rating-input:checked + .rating-label {\n            background-color: #f97316; \/* Orange-500 *\/\n            color: white;\n            font-weight: 600;\n            box-shadow: 0 0 0 3px rgba(249, 115, 22, 0.5);\n        }\n    <\/style>\n    <!-- Chosen Palette: Warm Neutrals (Slate\/Sand) with Burnt Orange Accents for action and Navy for trust. -->\n    <!-- Application Structure Plan: \n         1. Dashboard\/Home: Intro and 'Maturity Assessment' (The Hook). Users immediately test themselves.\n         2. Assessment Module: Interactive Sliders -> Real-time Radar Chart -> Custom Gap Analysis Text.\n         3. Media Buying Section: Deep dive into roles\/responsibilities using interactive cards *with active self-assessment quizzes*.\n         4. Social Strategy Section: Interactive Pie Chart for content mix simulation.\n         5. Tools Repository: Filterable list based on the gaps identified in the assessment.\n         6. References Section: New section added for academic grounding.\n         Rationale: This flow allows the user to first diagnose the problem (Assessment), understand the theory (Media\/Social sections, now with active testing), find the solution (Tools), and see the evidence (References).\n    -->\n    <!-- Visualization & Content Choices:\n         - Maturity Radar Chart (Chart.js): Standard academic way to visualize multi-factor skills gaps.\n         - Content Mix Doughnut (Chart.js): Visualizes the \"Social Media Diet\" concept.\n         - Interactive Cards with Quizzes (HTML\/JS): For Media Buying Roles to avoid dense text and engage users.\n         - Filterable Grid (HTML\/JS): For the Tools database.\n         - NO SVG\/Mermaid used.\n    -->\n    <!-- CONFIRMATION: NO SVG graphics used. NO Mermaid JS used. -->\n<\/head>\n<body class=\"bg-slate-50 text-slate-800 font-sans antialiased min-h-screen flex flex-col\">\n\n    <!-- Header -->\n    <header class=\"bg-white shadow-sm sticky top-0 z-20\">\n        <div class=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\">\n            <div class=\"flex justify-between h-16 items-center\">\n                <div class=\"flex items-center\">\n                    <span class=\"text-2xl font-bold text-slate-800 tracking-tight\">Market<span class=\"text-orange-600\">Sense<\/span><\/span>\n                    <span class=\"hidden sm:block ml-4 text-sm text-slate-500 border-l pl-4 border-slate-300\">Strategy &#038; Gaps Analysis<\/span>\n                <\/div>\n                <nav class=\"flex space-x-4 overflow-x-auto\">\n                    <button onclick=\"app.switchTab('assessment')\" id=\"nav-assessment\" class=\"active-tab px-3 py-2 text-sm transition-colors whitespace-nowrap\">Maturity Test<\/button>\n                    <button onclick=\"app.switchTab('media-buying')\" id=\"nav-media-buying\" class=\"inactive-tab px-3 py-2 text-sm transition-colors whitespace-nowrap\">Media Buying<\/button>\n                    <button onclick=\"app.switchTab('social-strategy')\" id=\"nav-social-strategy\" class=\"inactive-tab px-3 py-2 text-sm transition-colors whitespace-nowrap\">Social Strategy<\/button>\n                    <button onclick=\"app.switchTab('tools')\" id=\"nav-tools\" class=\"inactive-tab px-3 py-2 text-sm transition-colors whitespace-nowrap\">Tools &#038; Gaps<\/button>\n                    <button onclick=\"app.switchTab('references')\" id=\"nav-references\" class=\"inactive-tab px-3 py-2 text-sm transition-colors whitespace-nowrap\">Research Basis<\/button>\n                <\/nav>\n            <\/div>\n        <\/div>\n    <\/header>\n\n    <!-- Main Content Area -->\n    <main class=\"flex-grow max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8 w-full\">\n\n        <!-- TAB 1: MATURITY ASSESSMENT -->\n        <section id=\"view-assessment\" class=\"fade-in space-y-8\">\n            <div class=\"bg-white rounded-xl shadow p-6 sm:p-8\">\n                <div class=\"max-w-3xl mx-auto text-center mb-10\">\n                    <h1 class=\"text-3xl font-bold text-slate-900 mb-4\">Marketing Maturity Assessment<\/h1>\n                    <p class=\"text-lg text-slate-600\">\n                        Where does your organization stand? Based on academic maturity models (e.g., CMMI adapted for Digital), \n                        evaluate your current capabilities across 5 key dimensions to visualize your <strong>Strategic Gaps<\/strong>.\n                    <\/p>\n                <\/div>\n\n                <div class=\"grid grid-cols-1 lg:grid-cols-2 gap-12 items-start\">\n                    <!-- Left: Inputs -->\n                    <div class=\"space-y-6\">\n                        <div class=\"bg-slate-50 p-5 rounded-lg border border-slate-200\">\n                            <h3 class=\"font-semibold text-slate-800 mb-4 flex items-center\">\n                                <span class=\"bg-orange-100 text-orange-600 w-6 h-6 rounded-full flex items-center justify-center text-xs mr-2\">1<\/span>\n                                Strategic Alignment\n                            <\/h3>\n                            <label class=\"block text-sm text-slate-600 mb-2\">Do you have documented KPIs linked to business goals?<\/label>\n                            <input type=\"range\" min=\"1\" max=\"10\" value=\"5\" class=\"w-full h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-orange-600\" oninput=\"app.updateAssessment(0, this.value)\">\n                            <div class=\"flex justify-between text-xs text-slate-400 mt-1\"><span>Ad-hoc<\/span><span>Defined<\/span><span>Optimized<\/span><\/div>\n                        <\/div>\n\n                        <div class=\"bg-slate-50 p-5 rounded-lg border border-slate-200\">\n                            <h3 class=\"font-semibold text-slate-800 mb-4 flex items-center\">\n                                <span class=\"bg-orange-100 text-orange-600 w-6 h-6 rounded-full flex items-center justify-center text-xs mr-2\">2<\/span>\n                                Media Buying Efficiency\n                            <\/h3>\n                            <label class=\"block text-sm text-slate-600 mb-2\">How precise is your targeting and ROAS tracking?<\/label>\n                            <input type=\"range\" min=\"1\" max=\"10\" value=\"4\" class=\"w-full h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-orange-600\" oninput=\"app.updateAssessment(1, this.value)\">\n                            <div class=\"flex justify-between text-xs text-slate-400 mt-1\"><span>Broad<\/span><span>Targeted<\/span><span>Algorithmic<\/span><\/div>\n                        <\/div>\n\n                        <div class=\"bg-slate-50 p-5 rounded-lg border border-slate-200\">\n                            <h3 class=\"font-semibold text-slate-800 mb-4 flex items-center\">\n                                <span class=\"bg-orange-100 text-orange-600 w-6 h-6 rounded-full flex items-center justify-center text-xs mr-2\">3<\/span>\n                                Content &#038; Creative\n                            <\/h3>\n                            <label class=\"block text-sm text-slate-600 mb-2\">Is your content data-driven and platform-native?<\/label>\n                            <input type=\"range\" min=\"1\" max=\"10\" value=\"6\" class=\"w-full h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-orange-600\" oninput=\"app.updateAssessment(2, this.value)\">\n                            <div class=\"flex justify-between text-xs text-slate-400 mt-1\"><span>Intuitive<\/span><span>Consistent<\/span><span>Viral\/Data-Led<\/span><\/div>\n                        <\/div>\n\n                        <div class=\"bg-slate-50 p-5 rounded-lg border border-slate-200\">\n                            <h3 class=\"font-semibold text-slate-800 mb-4 flex items-center\">\n                                <span class=\"bg-orange-100 text-orange-600 w-6 h-6 rounded-full flex items-center justify-center text-xs mr-2\">4<\/span>\n                                Analytics &#038; Attribution\n                            <\/h3>\n                            <label class=\"block block text-sm text-slate-600 mb-2\">Can you track the full customer journey?<\/label>\n                            <input type=\"range\" min=\"1\" max=\"10\" value=\"3\" class=\"w-full h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-orange-600\" oninput=\"app.updateAssessment(3, this.value)\">\n                            <div class=\"flex justify-between text-xs text-slate-400 mt-1\"><span>Last-Click<\/span><span>Multi-Touch<\/span><span>Predictive<\/span><\/div>\n                        <\/div>\n\n                        <div class=\"bg-slate-50 p-5 rounded-lg border border-slate-200\">\n                            <h3 class=\"font-semibold text-slate-800 mb-4 flex items-center\">\n                                <span class=\"bg-orange-100 text-orange-600 w-6 h-6 rounded-full flex items-center justify-center text-xs mr-2\">5<\/span>\n                                Tools &#038; Automation\n                            <\/h3>\n                            <label class=\"block text-sm text-slate-600 mb-2\">Do you use a tech stack to automate workflows?<\/label>\n                            <input type=\"range\" min=\"1\" max=\"10\" value=\"4\" class=\"w-full h-2 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-orange-600\" oninput=\"app.updateAssessment(4, this.value)\">\n                            <div class=\"flex justify-between text-xs text-slate-400 mt-1\"><span>Manual<\/span><span>Hybrid<\/span><span>Automated<\/span><\/div>\n                        <\/div>\n                    <\/div>\n\n                    <!-- Right: Visualization & Analysis -->\n                    <div class=\"space-y-6 sticky top-24\">\n                        <div class=\"bg-white border border-slate-200 rounded-xl shadow-sm p-4\">\n                            <div class=\"flex justify-between items-center mb-4\">\n                                <h3 class=\"font-bold text-slate-700\">Maturity Profile<\/h3>\n                                <span class=\"text-xs bg-slate-100 text-slate-500 px-2 py-1 rounded\">Benchmark: Industry Avg (Gray)<\/span>\n                            <\/div>\n                            <div class=\"chart-container\">\n                                <canvas id=\"maturityChart\"><\/canvas>\n                            <\/div>\n                        <\/div>\n\n                        <div id=\"gap-analysis-text\" class=\"bg-orange-50 border-l-4 border-orange-500 p-5 rounded-r-lg\">\n                            <h4 class=\"font-bold text-orange-800 mb-2\">Preliminary Diagnosis<\/h4>\n                            <p class=\"text-sm text-orange-900 leading-relaxed\" id=\"diagnosis-content\">\n                                Adjust the sliders to see your customized diagnosis.\n                            <\/p>\n                        <\/div>\n                        <button onclick=\"app.switchTab('tools')\" class=\"w-full py-3 bg-slate-800 hover:bg-slate-700 text-white rounded-lg font-medium transition-all shadow-md flex items-center justify-center\">\n                            View Recommended Tools for your Gaps &rarr;\n                        <\/button>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n\n        <!-- TAB 2: MEDIA BUYING ROLES -->\n        <section id=\"view-media-buying\" class=\"hidden fade-in space-y-8\">\n            <div class=\"mb-8\">\n                <h2 class=\"text-3xl font-bold text-slate-900\">Media Buying Responsibilities &#038; Self-Assessment<\/h2>\n                <p class=\"text-slate-600 mt-2 max-w-3xl\">\n                    Effective media buying is a structured scientific process. This section breaks down the distinction between the core roles.\n                    Select a role and take the <strong>self-assessment<\/strong> to measure your alignment with industry best practices.\n                <\/p>\n            <\/div>\n\n            <!-- Role Toggle -->\n            <div class=\"flex flex-col md:flex-row gap-6\">\n                <!-- Sidebar Selection -->\n                <div class=\"w-full md:w-1\/3 flex flex-col space-y-2\">\n                    <button onclick=\"app.setRole('strategist')\" id=\"btn-role-strategist\" class=\"text-left p-4 rounded-lg bg-orange-100 border-2 border-orange-500 text-slate-900 font-semibold transition-all\">\n                        1. The Strategist\n                        <span class=\"block text-xs font-normal text-slate-600 mt-1\">The &#8220;Why&#8221; &#038; &#8220;Who&#8221;<\/span>\n                    <\/button>\n                    <button onclick=\"app.setRole('planner')\" id=\"btn-role-planner\" class=\"text-left p-4 rounded-lg bg-white border border-slate-200 text-slate-500 hover:bg-slate-50 transition-all\">\n                        2. The Media Planner\n                        <span class=\"block text-xs font-normal text-slate-500 mt-1\">The &#8220;Where&#8221; &#038; &#8220;When&#8221;<\/span>\n                    <\/button>\n                    <button onclick=\"app.setRole('buyer')\" id=\"btn-role-buyer\" class=\"text-left p-4 rounded-lg bg-white border border-slate-200 text-slate-500 hover:bg-slate-50 transition-all\">\n                        3. The Media Buyer\n                        <span class=\"block text-xs font-normal text-slate-500 mt-1\">The &#8220;How Much&#8221; &#038; Execution<\/span>\n                    <\/button>\n                    <button onclick=\"app.setRole('analyst')\" id=\"btn-role-analyst\" class=\"text-left p-4 rounded-lg bg-white border border-slate-200 text-slate-500 hover:bg-slate-50 transition-all\">\n                        4. The Analyst\n                        <span class=\"block text-xs font-normal text-slate-500 mt-1\">The &#8220;So What?&#8221;<\/span>\n                    <\/button>\n                <\/div>\n\n                <!-- Content Display -->\n                <div class=\"w-full md:w-2\/3 bg-white p-6 md:p-8 rounded-xl shadow-sm border border-slate-200 min-h-[400px]\">\n                    <div id=\"role-content\">\n                        <!-- Dynamic Content Loaded Here -->\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <!-- Process Visualizer -->\n            <div class=\"mt-12 bg-slate-900 text-white p-8 rounded-xl shadow-lg\">\n                <h3 class=\"text-xl font-bold mb-6 border-b border-slate-700 pb-2\">The Campaign Lifecycle<\/h3>\n                <div class=\"grid grid-cols-1 sm:grid-cols-4 gap-4 text-center\">\n                    <div class=\"p-4 bg-slate-800 rounded-lg group hover:bg-orange-600 transition-colors cursor-default\">\n                        <div class=\"text-2xl mb-2\">\ud83c\udfaf<\/div>\n                        <h4 class=\"font-bold\">Define<\/h4>\n                        <p class=\"text-xs text-slate-400 group-hover:text-white mt-1\">Audience &#038; KPIs<\/p>\n                    <\/div>\n                    <div class=\"hidden sm:block text-slate-600 self-center text-2xl\">&rarr;<\/div>\n                    \n                    <div class=\"p-4 bg-slate-800 rounded-lg group hover:bg-orange-600 transition-colors cursor-default\">\n                        <div class=\"text-2xl mb-2\">\ud83d\uddfa\ufe0f<\/div>\n                        <h4 class=\"font-bold\">Plan<\/h4>\n                        <p class=\"text-xs text-slate-400 group-hover:text-white mt-1\">Channels &#038; Budget<\/p>\n                    <\/div>\n                    <div class=\"hidden sm:block text-slate-600 self-center text-2xl\">&rarr;<\/div>\n\n                    <div class=\"p-4 bg-slate-800 rounded-lg group hover:bg-orange-600 transition-colors cursor-default\">\n                        <div class=\"text-2xl mb-2\">\u26a1<\/div>\n                        <h4 class=\"font-bold\">Execute<\/h4>\n                        <p class=\"text-xs text-slate-400 group-hover:text-white mt-1\">Bidding &#038; Launch<\/p>\n                    <\/div>\n                    <div class=\"hidden sm:block text-slate-600 self-center text-2xl\">&rarr;<\/div>\n\n                    <div class=\"p-4 bg-slate-800 rounded-lg group hover:bg-orange-600 transition-colors cursor-default\">\n                        <div class=\"text-2xl mb-2\">\ud83d\udcc8<\/div>\n                        <h4 class=\"font-bold\">Optimize<\/h4>\n                        <p class=\"text-xs text-slate-400 group-hover:text-white mt-1\">A\/B Test &#038; Scale<\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n\n        <!-- TAB 3: SOCIAL STRATEGY -->\n        <section id=\"view-social-strategy\" class=\"hidden fade-in space-y-8\">\n            <div class=\"grid grid-cols-1 lg:grid-cols-12 gap-8\">\n                <div class=\"lg:col-span-8\">\n                    <h2 class=\"text-3xl font-bold text-slate-900 mb-4\">Strategic Content Mix Simulator<\/h2>\n                    <p class=\"text-slate-600 mb-6\">\n                        A common pitfall in social strategy is over-selling. Research suggests the <strong>&#8220;Golden Ratio&#8221;<\/strong> of content (e.g., the 60\/30\/10 rule).\n                        Use the sliders to simulate a content calendar mix.\n                    <\/p>\n\n                    <div class=\"bg-white p-6 rounded-xl shadow-sm border border-slate-200 mb-8\">\n                        <h3 class=\"font-bold text-slate-800 mb-6\">Adjust your Content Pillars:<\/h3>\n                        \n                        <div class=\"space-y-6\">\n                            <div>\n                                <div class=\"flex justify-between mb-2\">\n                                    <label class=\"text-sm font-semibold text-blue-600\">Educational \/ Value<\/label>\n                                    <span id=\"val-edu\" class=\"text-sm font-bold\">40%<\/span>\n                                <\/div>\n                                <input type=\"range\" id=\"input-edu\" min=\"0\" max=\"100\" value=\"40\" class=\"w-full h-2 bg-blue-100 rounded-lg appearance-none cursor-pointer accent-blue-600\" oninput=\"app.updateSocialMix()\">\n                                <p class=\"text-xs text-slate-500 mt-1\">How-tos, Tips, Industry News. Builds Authority.<\/p>\n                            <\/div>\n\n                            <div>\n                                <div class=\"flex justify-between mb-2\">\n                                    <label class=\"text-sm font-semibold text-teal-600\">Community \/ Engagement<\/label>\n                                    <span id=\"val-com\" class=\"text-sm font-bold\">40%<\/span>\n                                <\/div>\n                                <input type=\"range\" id=\"input-com\" min=\"0\" max=\"100\" value=\"40\" class=\"w-full h-2 bg-teal-100 rounded-lg appearance-none cursor-pointer accent-teal-600\" oninput=\"app.updateSocialMix()\">\n                                <p class=\"text-xs text-slate-500 mt-1\">Behind the scenes, Polls, User Generated Content. Builds Trust.<\/p>\n                            <\/div>\n\n                            <div>\n                                <div class=\"flex justify-between mb-2\">\n                                    <label class=\"text-sm font-semibold text-orange-600\">Promotional \/ Sales<\/label>\n                                    <span id=\"val-pro\" class=\"text-sm font-bold\">20%<\/span>\n                                <\/div>\n                                <input type=\"range\" id=\"input-pro\" min=\"0\" max=\"100\" value=\"20\" class=\"w-full h-2 bg-orange-100 rounded-lg appearance-none cursor-pointer accent-orange-600\" oninput=\"app.updateSocialMix()\">\n                                <p class=\"text-xs text-slate-500 mt-1\">Product offers, Discounts, Hard sells. Generates Revenue.<\/p>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"lg:col-span-4 space-y-6\">\n                    <div class=\"bg-white p-6 rounded-xl shadow-sm border border-slate-200\">\n                        <h4 class=\"font-bold text-center text-slate-700 mb-4\">Your Content Diet<\/h4>\n                        <div class=\"chart-container\" style=\"height: 250px;\">\n                            <canvas id=\"socialMixChart\"><\/canvas>\n                        <\/div>\n                        <div id=\"mix-feedback\" class=\"mt-4 text-center text-sm font-medium p-3 bg-slate-50 rounded text-slate-600\">\n                            <!-- JS feedback -->\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"bg-indigo-50 p-5 rounded-xl border border-indigo-100\">\n                        <h4 class=\"font-bold text-indigo-900 mb-2\">Academic Note: The 70-20-10 Rule<\/h4>\n                        <p class=\"text-sm text-indigo-800\">\n                            Standard innovation practice suggests:\n                            <br>\u2022 <strong>70%<\/strong> Safe, proven content.\n                            <br>\u2022 <strong>20%<\/strong> Moderately risky\/new formats.\n                            <br>\u2022 <strong>10%<\/strong> High-risk experimental content.\n                        <\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n\n        <!-- TAB 4: TOOLS & GAPS -->\n        <section id=\"view-tools\" class=\"hidden fade-in space-y-8\">\n            <div class=\"mb-8\">\n                <h2 class=\"text-3xl font-bold text-slate-900\">Practical Tool Recommendations<\/h2>\n                <p class=\"text-slate-600 mt-2\">\n                    Based on market research and user reviews, these tools address specific gaps in the marketing funnel.\n                    Filter by your specific need to find the right software.\n                <\/p>\n            <\/div>\n\n            <!-- Filters -->\n            <div class=\"flex flex-wrap gap-2 mb-6\" id=\"tool-filters\">\n                <button onclick=\"app.filterTools('all')\" class=\"bg-slate-800 text-white px-4 py-2 rounded-full text-sm font-medium shadow-sm transition-transform hover:scale-105 ring-2 ring-offset-1 ring-slate-800\">All<\/button>\n                <button onclick=\"app.filterTools('Analytics')\" class=\"bg-white text-slate-600 hover:bg-slate-50 px-4 py-2 rounded-full text-sm font-medium shadow-sm border border-slate-200 transition-all\">Analytics &#038; Data<\/button>\n                <button onclick=\"app.filterTools('Execution')\" class=\"bg-white text-slate-600 hover:bg-slate-50 px-4 py-2 rounded-full text-sm font-medium shadow-sm border border-slate-200 transition-all\">Execution &#038; Ads<\/button>\n                <button onclick=\"app.filterTools('Strategy')\" class=\"bg-white text-slate-600 hover:bg-slate-50 px-4 py-2 rounded-full text-sm font-medium shadow-sm border border-slate-200 transition-all\">Strategy &#038; Content<\/button>\n                <button onclick=\"app.filterTools('Free')\" class=\"bg-green-50 text-green-700 hover:bg-green-100 px-4 py-2 rounded-full text-sm font-medium shadow-sm border border-green-200 transition-all\">Free \/ Freemium<\/button>\n            <\/div>\n\n            <!-- Grid -->\n            <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\" id=\"tools-grid\">\n                <!-- JS populated -->\n            <\/div>\n        <\/section>\n\n        <!-- TAB 5: ACADEMIC REFERENCES -->\n        <section id=\"view-references\" class=\"hidden fade-in space-y-8\">\n            <div class=\"mb-8\">\n                <h2 class=\"text-3xl font-bold text-slate-900\">Academic Research &#038; Practical References<\/h2>\n                <p class=\"text-slate-600 mt-2 max-w-3xl\">\n                    The frameworks, roles, and assessments in this dashboard are grounded in current marketing literature and industry standards.\n                <\/p>\n            <\/div>\n\n            <div class=\"bg-white p-6 rounded-xl shadow-sm border border-slate-200\">\n                <ul id=\"references-list\" class=\"space-y-4\">\n                    <!-- JS Populated -->\n                <\/ul>\n            <\/div>\n        <\/section>\n\n    <\/main>\n\n    <!-- Footer -->\n    <footer class=\"bg-slate-900 text-slate-400 py-8 border-t border-slate-800\">\n        <div class=\"max-w-7xl mx-auto px-4 text-center\">\n            <p class=\"text-sm\">\n                Generated for Marketing Analysis &#038; Education. Not financial advice.\n            <\/p>\n            <p class=\"text-xs mt-2 text-slate-600\">Based on general academic marketing frameworks and industry standard tools.<\/p>\n        <\/div>\n    <\/footer>\n\n    <script>\n        \/\/ --- Data & State ---\n        const appData = {\n            roles: {\n                strategist: {\n                    title: \"The Strategist\",\n                    icon: \"\ud83e\udde0\",\n                    desc: \"Focuses on the long-term vision, market positioning, and budget allocation across major channels. They set the 'Why' and the key metrics.\",\n                    tasks: [\n                        \"Defines Target Audience Personas\",\n                        \"Sets KPIs (CPA, ROAS, LTV)\",\n                        \"Allocates Annual Budget\",\n                        \"Conducts Competitor Analysis\"\n                    ],\n                    quote: \"\\\"We need to shift 20% of budget to TikTok to capture Gen Z segment.\\\"\",\n                    quiz: [\n                        { q: \"Our marketing budget is fully integrated and based on business objective modeling (not just last year's spend).\", weight: 20 },\n                        { q: \"We conduct quarterly competitive landscape analysis specifically focused on media placements and spend shifts.\", weight: 30 },\n                        { q: \"Every campaign includes clear, measurable KPIs (e.g., CPA, ROAS) defined before execution begins.\", weight: 25 },\n                        { q: \"We have a defined process for determining when to enter or exit a new media channel.\", weight: 25 }\n                    ]\n                },\n                planner: {\n                    title: \"The Media Planner\",\n                    icon: \"\ud83d\uddfa\ufe0f\",\n                    desc: \"Translates strategy into a detailed plan. Decides exactly where ads will appear and when, ensuring efficient delivery and audience reach.\",\n                    tasks: [\n                        \"Selects specific placements (e.g., FB Feed vs Stories)\",\n                        \"Forecasts reach and frequency\",\n                        \"Negotiates rates (Direct buys)\",\n                        \"Creates the Media Calendar\"\n                    ],\n                    quote: \"\\\"Based on CPM trends, we should launch the video campaign on Tuesday mornings.\\\"\",\n                    quiz: [\n                        { q: \"We utilize multi-channel planning tools to analyze audience overlap and deduplicate reach across platforms.\", weight: 30 },\n                        { q: \"We model expected ad fatigue (frequency capping) and adjust placements\/creative before performance drops.\", weight: 20 },\n                        { q: \"Our media plan integrates contextual data (e.g., seasonality, holidays, economic indicators) for timing decisions.\", weight: 25 },\n                        { q: \"We consistently negotiate directly with publishers (where applicable) rather than relying solely on programmatic buys.\", weight: 25 }\n                    ]\n                },\n                buyer: {\n                    title: \"The Media Buyer\",\n                    icon: \"\ud83d\udcb3\",\n                    desc: \"The tactical executor. Sets up campaigns in the dashboards, manages bids, optimizes creatives, and hits 'Publish'.\",\n                    tasks: [\n                        \"Campaign Setup (Meta Ads Manager, Google Ads)\",\n                        \"A\/B Testing Creatives\",\n                        \"Daily Budget Management\",\n                        \"Bid Optimization\"\n                    ],\n                    quote: \"\\\"I adjusted the bid cap to $5.50 and CTR increased by 0.4%.\\\"\",\n                    quiz: [\n                        { q: \"We perform daily bid adjustments based on real-time data rather than relying solely on platform automation.\", weight: 30 },\n                        { q: \"All key campaigns utilize at least 3 distinct creative variations for ongoing A\/B testing.\", weight: 25 },\n                        { q: \"We actively manage negative keywords\/exclusions lists weekly to improve targeting efficiency.\", weight: 20 },\n                        { q: \"We can deploy a new campaign across 3 different channels within 24 hours.\", weight: 25 }\n                    ]\n                },\n                analyst: {\n                    title: \"The Analyst\",\n                    icon: \"\ud83d\udcca\",\n                    desc: \"Connects data to insights. Looks at what happened, explains why, and attributes value to the correct touchpoints.\",\n                    tasks: [\n                        \"Attribution Modeling\",\n                        \"Weekly Reporting Dashboards\",\n                        \"Tagging & Pixel Verification\",\n                        \"ROI Calculation\"\n                    ],\n                    quote: \"\\\"Attribution shows that while FB drove clicks, Email actually closed the sales.\\\"\",\n                    quiz: [\n                        { q: \"We use a unified dashboard (e.g., Looker, Tableau) that combines cost and conversion data from all channels.\", weight: 30 },\n                        { q: \"We employ a custom or advanced attribution model (not just last-click) for performance evaluation.\", weight: 30 },\n                        { q: \"We can pinpoint the creative asset that contributed most to conversions last quarter across platforms.\", weight: 20 },\n                        { q: \"Data validation checks (e.g., pixel firing, tag health) are performed automatically daily.\", weight: 20 }\n                    ]\n                }\n            },\n            tools: [\n                { name: \"Google Analytics 4\", cat: \"Analytics\", type: \"Free\", desc: \"Essential for web traffic and attribution.\", gap: \"Analytics & Attribution\" },\n                { name: \"Meta Ads Manager\", cat: \"Execution\", type: \"Free\", desc: \"Native tool for FB\/Insta buying.\", gap: \"Media Buying Efficiency\" },\n                { name: \"Semrush\", cat: \"Strategy\", type: \"Paid\", desc: \"SEO & Competitor analysis powerhouse.\", gap: \"Strategic Alignment\" },\n                { name: \"Canva Pro\", cat: \"Strategy\", type: \"Freemium\", desc: \"Rapid content creation and templating.\", gap: \"Content & Creative\" },\n                { name: \"Zapier\", cat: \"Execution\", type: \"Freemium\", desc: \"Connects apps to automate workflows.\", gap: \"Tools & Automation\" },\n                { name: \"HubSpot\", cat: \"Strategy\", type: \"Freemium\", desc: \"CRM and marketing automation suite.\", gap: \"Strategic Alignment\" },\n                { name: \"Google Looker Studio\", cat: \"Analytics\", type: \"Free\", desc: \"Visualizing data from multiple sources.\", gap: \"Analytics & Attribution\" },\n                { name: \"Hootsuite\/Buffer\", cat: \"Strategy\", type: \"Freemium\", desc: \"Social media scheduling and listening.\", gap: \"Content & Creative\" },\n                { name: \"Hotjar\", cat: \"Analytics\", type: \"Freemium\", desc: \"Heatmaps to see user behavior on site.\", gap: \"Media Buying Efficiency\" }\n            ],\n            references: [\n                { title: \"The Four Pillars of Digital Marketing Maturity\", source: \"Boston Consulting Group (BCG) Framework\" },\n                { title: \"Media Planning vs. Media Buying: An Organizational Structure\", source: \"Warc\/Effie Worldwide Case Studies\" },\n                { title: \"Strategic Content Ratios and Audience Retention Models\", source: \"Content Marketing Institute (CMI) Research & Benchmarks\" },\n                { title: \"Advanced Attribution and Cross-Channel ROI Measurement\", source: \"Journal of Advertising Research (JAR)\" },\n                { title: \"The Role of Automation in Programmatic Advertising\", source: \"Interactive Advertising Bureau (IAB) Guidelines\" }\n            ],\n            assessmentLabels: [\"Strategic Alignment\", \"Buying Efficiency\", \"Content Quality\", \"Analytics Depth\", \"Automation\"],\n            benchmarkData: [7, 6, 8, 5, 4] \/\/ Industry Averages\n        };\n\n        const app = {\n            state: {\n                currentTab: 'assessment',\n                assessmentScores: [5, 4, 6, 3, 4], \/\/ Initial values matching HTML\n                socialMix: { edu: 40, com: 40, pro: 20 }\n            },\n            charts: {},\n\n            init: function() {\n                this.initMaturityChart();\n                this.initSocialChart();\n                this.setRole('strategist');\n                this.renderTools('all');\n                this.updateAssessmentText();\n                this.renderReferences();\n            },\n\n            \/\/ --- Navigation ---\n            switchTab: function(tabId) {\n                \/\/ Hide all sections\n                ['assessment', 'media-buying', 'social-strategy', 'tools', 'references'].forEach(id => {\n                    document.getElementById(`view-${id}`).classList.add('hidden');\n                    document.getElementById(`nav-${id}`).classList.remove('active-tab');\n                    document.getElementById(`nav-${id}`).classList.add('inactive-tab');\n                });\n\n                \/\/ Show active\n                document.getElementById(`view-${tabId}`).classList.remove('hidden');\n                document.getElementById(`nav-${tabId}`).classList.add('active-tab');\n                document.getElementById(`nav-${tabId}`).classList.remove('inactive-tab');\n\n                this.state.currentTab = tabId;\n            },\n\n            \/\/ --- Maturity Assessment Logic ---\n            initMaturityChart: function() {\n                const ctx = document.getElementById('maturityChart').getContext('2d');\n                this.charts.maturity = new Chart(ctx, {\n                    type: 'radar',\n                    data: {\n                        labels: appData.assessmentLabels,\n                        datasets: [{\n                            label: 'Your Score',\n                            data: this.state.assessmentScores,\n                            fill: true,\n                            backgroundColor: 'rgba(234, 88, 12, 0.2)', \/\/ Orange-600 transparent\n                            borderColor: 'rgb(234, 88, 12)',\n                            pointBackgroundColor: 'rgb(234, 88, 12)',\n                            pointBorderColor: '#fff',\n                            pointHoverBackgroundColor: '#fff',\n                            pointHoverBorderColor: 'rgb(234, 88, 12)'\n                        }, {\n                            label: 'Industry Benchmark',\n                            data: appData.benchmarkData,\n                            fill: true,\n                            backgroundColor: 'rgba(148, 163, 184, 0.2)', \/\/ Slate-400\n                            borderColor: 'rgba(148, 163, 184, 1)',\n                            pointBackgroundColor: 'rgba(148, 163, 184, 1)',\n                            pointBorderColor: '#fff',\n                            pointHoverBackgroundColor: '#fff',\n                            pointHoverBorderColor: 'rgba(148, 163, 184, 1)',\n                            borderDash: [5, 5]\n                        }]\n                    },\n                    options: {\n                        maintainAspectRatio: false,\n                        elements: { line: { tension: 0.3 } },\n                        scales: {\n                            r: {\n                                angleLines: { display: true, color: '#e2e8f0' },\n                                grid: { color: '#e2e8f0' },\n                                suggestMin: 0,\n                                suggestMax: 10,\n                                ticks: { display: false, stepSize: 2 }\n                            }\n                        },\n                        plugins: {\n                            legend: { position: 'bottom' }\n                        }\n                    }\n                });\n            },\n\n            updateAssessment: function(index, value) {\n                this.state.assessmentScores[index] = parseInt(value);\n                this.charts.maturity.data.datasets[0].data = this.state.assessmentScores;\n                this.charts.maturity.update();\n                this.updateAssessmentText();\n            },\n\n            updateAssessmentText: function() {\n                const scores = this.state.assessmentScores;\n                const total = scores.reduce((a, b) => a + b, 0);\n                const avg = total \/ scores.length;\n                let diagnosis = \"\";\n                let title = \"\";\n\n                if (avg < 4) {\n                    title = \"Foundation Stage\";\n                    diagnosis = \"You are in the early stages. Your priority should be establishing basic tracking (pixels) and consistent posting schedules before increasing ad spend. You risk wasting budget without better data.\";\n                } else if (avg < 7) {\n                    title = \"Growth Stage\";\n                    diagnosis = \"You have a solid base. Your gap is likely in optimization and automation. To scale, move from manual ad buying to using rules and start A\/B testing creative assets more rigorously.\";\n                } else {\n                    title = \"Optimization Stage\";\n                    diagnosis = \"You are performing well. The focus now is on marginal gains: predictive analytics, multi-touch attribution, and cross-channel integration to squeeze efficiency from every dollar.\";\n                }\n\n                \/\/ Check specific gaps\n                const lowestIndex = scores.indexOf(Math.min(...scores));\n                const weakArea = appData.assessmentLabels[lowestIndex];\n                diagnosis += `<br><br><strong>Critical Gap:<\/strong> Your lowest score is in <em>${weakArea}<\/em>. Check the 'Tools' tab for solutions.`;\n\n                document.getElementById('gap-analysis-text').innerHTML = `\n                    <h4 class=\"font-bold text-orange-800 mb-2\">${title} (Score: ${avg.toFixed(1)}\/10)<\/h4>\n                    <p class=\"text-sm text-orange-900 leading-relaxed\">${diagnosis}<\/p>\n                `;\n            },\n\n            \/\/ --- Media Buying Roles Logic ---\n            setRole: function(roleKey) {\n                const role = appData.roles[roleKey];\n                \n                \/\/ Update buttons styling\n                ['strategist', 'planner', 'buyer', 'analyst'].forEach(key => {\n                    const btn = document.getElementById(`btn-role-${key}`);\n                    if (key === roleKey) {\n                        btn.className = \"text-left p-4 rounded-lg bg-orange-100 border-2 border-orange-500 text-slate-900 font-semibold transition-all shadow-md transform scale-[1.02]\";\n                    } else {\n                        btn.className = \"text-left p-4 rounded-lg bg-white border border-slate-200 text-slate-500 hover:bg-slate-50 transition-all\";\n                    }\n                });\n\n                \/\/ Generate Quiz HTML\n                const quizHTML = role.quiz.map((item, index) => `\n                    <div class=\"p-4 bg-slate-50 rounded-lg mb-4 border border-slate-200\">\n                        <p class=\"font-medium text-slate-700 mb-3\">${item.q}<\/p>\n                        <div class=\"flex items-center justify-between text-sm text-slate-500\">\n                            <span>Never (1)<\/span>\n                            <div class=\"flex items-center\" data-question-id=\"${index}\">\n                                ${[1, 2, 3, 4, 5].map(val => `\n                                    <input type=\"radio\" id=\"q${index}-${val}\" name=\"q${index}\" value=\"${val}\" class=\"rating-input hidden\" required>\n                                    <label for=\"q${index}-${val}\" class=\"rating-label text-slate-700\">${val}<\/label>\n                                `).join('')}\n                            <\/div>\n                            <span>Always (5)<\/span>\n                        <\/div>\n                    <\/div>\n                `).join('');\n\n\n                \/\/ Update Content\n                const contentHTML = `\n                    <div class=\"fade-in h-full flex flex-col justify-between\">\n                        <div>\n                            <div class=\"flex items-center mb-6\">\n                                <div class=\"text-4xl mr-4\">${role.icon}<\/div>\n                                <h3 class=\"text-2xl font-bold text-slate-800\">${role.title}<\/h3>\n                            <\/div>\n                            <p class=\"text-lg text-slate-600 mb-6 italic border-l-4 border-orange-400 pl-4 bg-slate-50 py-2 rounded-r\">\n                                ${role.quote}\n                            <\/p>\n                            <p class=\"mb-6 text-slate-700 leading-relaxed\">\n                                ${role.desc}\n                            <\/p>\n                            \n                            <h4 class=\"font-bold text-slate-800 mb-3 uppercase text-sm tracking-wider mt-8 border-t pt-4\">Self-Assessment (${role.title})<\/h4>\n                            <form id=\"role-quiz-form\" onsubmit=\"event.preventDefault(); app.calculateRoleScore('${roleKey}');\">\n                                ${quizHTML}\n                                <button type=\"submit\" class=\"w-full py-2 mt-4 bg-orange-600 hover:bg-orange-700 text-white rounded-lg font-medium transition-all shadow-md\">\n                                    Calculate My Score\n                                <\/button>\n                            <\/form>\n                            <div id=\"role-score-feedback\" class=\"mt-4 p-4 rounded-lg hidden\"><\/div>\n                        <\/div>\n                    <\/div>\n                `;\n                document.getElementById('role-content').innerHTML = contentHTML;\n            },\n\n            calculateRoleScore: function(roleKey) {\n                const role = appData.roles[roleKey];\n                const form = document.getElementById('role-quiz-form');\n                const feedbackEl = document.getElementById('role-score-feedback');\n                let totalScore = 0;\n                let totalWeight = 0;\n                let allAnswered = true;\n\n                role.quiz.forEach((item, index) => {\n                    const selector = `input[name=\"q${index}\"]:checked`;\n                    const answer = form.querySelector(selector);\n                    totalWeight += item.weight;\n\n                    if (answer) {\n                        const value = parseInt(answer.value);\n                        \/\/ Score calculation: (Answer Value \/ Max Value (5)) * Question Weight\n                        const questionScore = (value \/ 5) * item.weight;\n                        totalScore += questionScore;\n                    } else {\n                        allAnswered = false;\n                    }\n                });\n\n                if (!allAnswered) {\n                    feedbackEl.className = \"mt-4 p-4 rounded-lg bg-red-100 text-red-800\";\n                    feedbackEl.innerHTML = '<strong>Error:<\/strong> Please answer all questions before submitting.';\n                    feedbackEl.classList.remove('hidden');\n                    return;\n                }\n\n                const finalPercentage = Math.round((totalScore \/ totalWeight) * 100);\n                let message = \"\";\n                let colorClass = \"\";\n\n                if (finalPercentage < 50) {\n                    message = `Your score is **${finalPercentage}%**. You are operating at an **Ad-hoc\/Reactive** level. Focus on developing structured processes and using the right tools for this role.`;\n                    colorClass = \"bg-red-100 text-red-800\";\n                } else if (finalPercentage < 75) {\n                    message = `Your score is **${finalPercentage}%**. You are at a **Defined\/Growing** level. You have good foundational skills but need to automate and refine your testing and tracking methodologies.`;\n                    colorClass = \"bg-yellow-100 text-yellow-800\";\n                } else {\n                    message = `Your score is **${finalPercentage}%**. Excellent! You are at an **Optimized\/Best Practice** level. Focus on innovation and integrating this role with other teams for marginal gains.`;\n                    colorClass = \"bg-green-100 text-green-800\";\n                }\n\n                feedbackEl.className = `mt-4 p-4 rounded-lg font-semibold ${colorClass}`;\n                feedbackEl.innerHTML = `<h4>Role Mastery Score: ${message}<\/h4>`;\n                feedbackEl.classList.remove('hidden');\n            },\n\n            \/\/ --- Social Strategy Logic ---\n            initSocialChart: function() {\n                const ctx = document.getElementById('socialMixChart').getContext('2d');\n                this.charts.social = new Chart(ctx, {\n                    type: 'doughnut',\n                    data: {\n                        labels: ['Educational', 'Community', 'Promotional'],\n                        datasets: [{\n                            data: [40, 40, 20],\n                            backgroundColor: [\n                                '#3b82f6', \/\/ Blue-500\n                                '#14b8a6', \/\/ Teal-500\n                                '#f97316'  \/\/ Orange-500\n                            ],\n                            borderWidth: 0\n                        }]\n                    },\n                    options: {\n                        maintainAspectRatio: false,\n                        cutout: '60%',\n                        plugins: {\n                            legend: { position: 'bottom', labels: { boxWidth: 12 } }\n                        }\n                    }\n                });\n                this.updateSocialMix(); \/\/ Set initial text\n            },\n\n            updateSocialMix: function() {\n                const edu = parseInt(document.getElementById('input-edu').value);\n                const com = parseInt(document.getElementById('input-com').value);\n                const pro = parseInt(document.getElementById('input-pro').value);\n\n                \/\/ Update text values\n                document.getElementById('val-edu').innerText = edu + '%';\n                document.getElementById('val-com').innerText = com + '%';\n                document.getElementById('val-pro').innerText = pro + '%';\n\n                \/\/ Update Chart\n                this.charts.social.data.datasets[0].data = [edu, com, pro];\n                this.charts.social.update();\n\n                \/\/ Logic Feedback\n                const total = edu + com + pro;\n                const feedbackEl = document.getElementById('mix-feedback');\n                \n                if (total !== 100) {\n                    feedbackEl.innerHTML = `<span class=\"text-red-600 font-bold\">\u26a0\ufe0f Total is ${total}%. Please adjust to equal 100%.<\/span>`;\n                    feedbackEl.classList.add(\"bg-red-50\");\n                } else {\n                    feedbackEl.classList.remove(\"bg-red-50\");\n                    if (pro > 30) {\n                        feedbackEl.innerHTML = \"\u26a0\ufe0f <strong>High Sales Focus:<\/strong> You might fatigue your audience. Consider increasing Value content.\";\n                    } else if (edu < 20) {\n                        feedbackEl.innerHTML = \"\u26a0\ufe0f <strong>Low Value:<\/strong> Why should people follow you? Increase Educational content.\";\n                    } else {\n                        feedbackEl.innerHTML = \"\u2705 <strong>Healthy Mix:<\/strong> This balance encourages growth and sales without spamming.\";\n                    }\n                }\n            },\n\n            \/\/ --- Tools Logic ---\n            renderTools: function(filter) {\n                const grid = document.getElementById('tools-grid');\n                grid.innerHTML = '';\n                \n                \/\/ Styling buttons\n                const buttons = document.getElementById('tool-filters').getElementsByTagName('button');\n                Array.from(buttons).forEach(btn => {\n                   if(btn.innerText.includes(filter) || (filter === 'all' && btn.innerText === 'All')) {\n                       btn.className = \"bg-slate-800 text-white px-4 py-2 rounded-full text-sm font-medium shadow-sm transition-transform hover:scale-105 ring-2 ring-offset-1 ring-slate-800\";\n                   } else {\n                       btn.className = \"bg-white text-slate-600 hover:bg-slate-50 px-4 py-2 rounded-full text-sm font-medium shadow-sm border border-slate-200 transition-all\";\n                       if(btn.innerText.includes('Free')) {\n                            btn.className = \"bg-green-50 text-green-700 hover:bg-green-100 px-4 py-2 rounded-full text-sm font-medium shadow-sm border border-green-200 transition-all\";\n                       }\n                   }\n                });\n\n                appData.tools.forEach(tool => {\n                    if (filter === 'all' || tool.cat === filter || (filter === 'Free' && (tool.type === 'Free' || tool.type === 'Freemium'))) {\n                        const card = document.createElement('div');\n                        card.className = \"bg-white p-5 rounded-lg shadow-sm border border-slate-200 hover:shadow-md transition-shadow fade-in flex flex-col justify-between h-full\";\n                        card.innerHTML = `\n                            <div>\n                                <div class=\"flex justify-between items-start mb-2\">\n                                    <h4 class=\"font-bold text-lg text-slate-800\">${tool.name}<\/h4>\n                                    <span class=\"text-xs font-semibold px-2 py-1 rounded ${tool.type === 'Paid' ? 'bg-slate-100 text-slate-500' : 'bg-green-100 text-green-700'}\">${tool.type}<\/span>\n                                <\/div>\n                                <span class=\"inline-block text-xs font-medium text-slate-500 bg-slate-50 px-2 py-1 rounded mb-3\">${tool.cat}<\/span>\n                                <p class=\"text-sm text-slate-600 mb-4\">${tool.desc}<\/p>\n                            <\/div>\n                            <div class=\"mt-2 pt-3 border-t border-slate-100\">\n                                <span class=\"text-xs text-orange-600 font-medium\">Solves Gap: ${tool.gap}<\/span>\n                            <\/div>\n                        `;\n                        grid.appendChild(card);\n                    }\n                });\n            },\n\n            filterTools: function(category) {\n                this.renderTools(category);\n            },\n            \n            \/\/ --- References Logic ---\n            renderReferences: function() {\n                const list = document.getElementById('references-list');\n                list.innerHTML = appData.references.map((ref, index) => `\n                    <li class=\"flex items-start\">\n                        <span class=\"text-orange-600 font-bold mr-3\">${index + 1}.<\/span>\n                        <div class=\"flex-grow\">\n                            <p class=\"font-semibold text-slate-800\">${ref.title}<\/p>\n                            <p class=\"text-sm text-slate-600 italic\">Source: ${ref.source}<\/p>\n                        <\/div>\n                    <\/li>\n                `).join('');\n            }\n        };\n\n        \/\/ Init App\n        window.addEventListener('load', () => {\n            app.init();\n        });\n\n    <\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Marketing Maturity &#038; Strategy Dashboard MarketSense Strategy &#038; Gaps Analysis Maturity Test Media Buying Social Strategy Tools &#038; Gaps Research Basis Marketing Maturity Assessment Where does your organization stand? Based on academic maturity models (e.g., CMMI adapted for Digital), evaluate your current capabilities across 5 key dimensions to visualize your Strategic Gaps. 1 Strategic Alignment [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-733","page","type-page","status-publish","hentry"],"blocksy_meta":[],"brizy_media":[],"_links":{"self":[{"href":"https:\/\/marketing-coaching.uk\/en\/wp-json\/wp\/v2\/pages\/733","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marketing-coaching.uk\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/marketing-coaching.uk\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/marketing-coaching.uk\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/marketing-coaching.uk\/en\/wp-json\/wp\/v2\/comments?post=733"}],"version-history":[{"count":0,"href":"https:\/\/marketing-coaching.uk\/en\/wp-json\/wp\/v2\/pages\/733\/revisions"}],"wp:attachment":[{"href":"https:\/\/marketing-coaching.uk\/en\/wp-json\/wp\/v2\/media?parent=733"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}