{"id":624,"date":"2026-09-15T02:42:04","date_gmt":"2026-09-15T02:42:04","guid":{"rendered":"https:\/\/kalhonaho.online\/?page_id=624"},"modified":"2026-09-15T02:43:29","modified_gmt":"2026-09-15T02:43:29","slug":"pr","status":"publish","type":"page","link":"https:\/\/kalhonaho.online\/?page_id=624","title":{"rendered":"Pr"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"624\" class=\"elementor elementor-624\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b333e55 e-con e-atomic-element e-flexbox-base e-a3cf288 \" data-id=\"b333e55\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"b333e55\">\n    \t\t<div class=\"elementor-element elementor-element-6139730 elementor-widget elementor-widget-html\" data-id=\"6139730\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"UTF-8\" \/>\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\r\n<title>PGP 14 & 15 | Capstone Project 3<\/title>\r\n<meta name=\"description\" content=\"Digital Nest PGP 14 & 15 Capstone Project 3 student project management portal.\" \/>\r\n<style>\r\n:root{\r\n  --dn-blue:#0B4F9C;\r\n  --dn-blue-2:#1677D2;\r\n  --dn-orange:#F59E0B;\r\n  --dn-navy:#071D36;\r\n  --ink:#12263A;\r\n  --muted:#66788A;\r\n  --bg:#F4F7FB;\r\n  --card:#FFFFFF;\r\n  --line:#DDE6F0;\r\n  --soft-blue:#EAF3FF;\r\n  --soft-orange:#FFF6DF;\r\n  --green:#159957;\r\n  --red:#D9485F;\r\n  --purple:#6D4AFF;\r\n  --shadow:0 12px 32px rgba(7,29,54,.08);\r\n  --radius:18px;\r\n}\r\n*{box-sizing:border-box}\r\nhtml{scroll-behavior:smooth}\r\nbody{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg);line-height:1.45}\r\nbutton,input,select,textarea{font:inherit}\r\nbutton{cursor:pointer}\r\n.app{min-height:100vh}\r\n.topbar{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 22px}\r\n.brand{display:flex;align-items:center;gap:12px;font-weight:800;color:var(--dn-navy)}\r\n.brand-mark{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,var(--dn-blue),var(--dn-blue-2));color:white;display:grid;place-items:center;font-weight:900;box-shadow:0 6px 16px rgba(11,79,156,.25)}\r\n.brand small{display:block;color:var(--muted);font-weight:600;font-size:10px;letter-spacing:.08em;text-transform:uppercase}\r\n.top-actions{display:flex;gap:8px;align-items:center}\r\n.btn{border:1px solid var(--line);background:#fff;padding:9px 13px;border-radius:11px;font-weight:700;color:var(--ink);transition:.18s ease;display:inline-flex;align-items:center;gap:7px}\r\n.btn:hover{transform:translateY(-1px);box-shadow:0 6px 14px rgba(7,29,54,.08)}\r\n.btn.primary{background:var(--dn-blue);color:#fff;border-color:var(--dn-blue)}\r\n.btn.orange{background:var(--dn-orange);color:#111827;border-color:var(--dn-orange)}\r\n.btn.ghost{background:transparent}\r\n.btn.danger{color:var(--red);background:#FFF5F6}\r\n.layout{display:grid;grid-template-columns:255px 1fr;min-height:calc(100vh - 68px)}\r\n.sidebar{position:sticky;top:68px;height:calc(100vh - 68px);overflow:auto;background:var(--dn-navy);color:white;padding:18px 14px}\r\n.side-section{margin:9px 0 7px;padding:0 11px;color:#9FB4C9;font-size:10px;text-transform:uppercase;font-weight:800;letter-spacing:.12em}\r\n.nav-btn{width:100%;border:0;background:transparent;color:#DCE9F5;text-align:left;padding:11px 12px;border-radius:10px;margin:2px 0;font-weight:700;display:flex;align-items:center;gap:10px}\r\n.nav-btn:hover,.nav-btn.active{background:rgba(255,255,255,.11);color:#fff}\r\n.project-pill{margin:16px 7px 16px;padding:14px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.06);border-radius:14px}\r\n.project-pill .mini{color:#9FB4C9;font-size:11px}.project-pill strong{display:block;margin-top:4px}\r\n.main{padding:26px;max-width:1500px;width:100%;margin:0 auto}\r\n.hero{background:linear-gradient(120deg,var(--dn-navy),#0A3971 52%,var(--dn-blue));color:white;border-radius:24px;padding:30px;position:relative;overflow:hidden;box-shadow:var(--shadow)}\r\n.hero:after{content:\"\";position:absolute;width:420px;height:420px;border-radius:50%;right:-160px;top:-190px;background:rgba(245,158,11,.18)}\r\n.hero h1{margin:0 0 8px;font-size:clamp(27px,3.1vw,46px);letter-spacing:-.03em;position:relative;z-index:1}\r\n.hero p{margin:0;color:#D7E6F5;max-width:880px;position:relative;z-index:1}\r\n.hero-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;position:relative;z-index:1}\r\n.meta-chip{padding:7px 11px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.14);border-radius:999px;font-size:12px;font-weight:700}\r\n.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}\r\n.section{margin-top:20px}.section-head{display:flex;justify-content:space-between;gap:15px;align-items:flex-end;margin-bottom:12px}.section-head h2{margin:0;font-size:21px}.section-head p{margin:3px 0 0;color:var(--muted);font-size:13px}\r\n.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 5px 16px rgba(7,29,54,.035);padding:18px}\r\n.kpi{padding:18px}.kpi-top{display:flex;align-items:center;justify-content:space-between}.kpi-label{color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.kpi-value{font-size:30px;font-weight:900;margin-top:5px}.kpi-note{font-size:11px;color:var(--muted);margin-top:4px}\r\n.progress-wrap{margin-top:12px}.progress-label{display:flex;justify-content:space-between;font-size:12px;font-weight:800;margin-bottom:6px}.progress{height:9px;background:#E8EEF5;border-radius:999px;overflow:hidden}.progress > span{display:block;height:100%;background:linear-gradient(90deg,var(--dn-blue),var(--dn-blue-2));border-radius:999px;transition:.35s}\r\n.alert{padding:12px 14px;border-radius:12px;background:var(--soft-orange);border:1px solid #F8D98B;font-size:13px}.alert strong{color:#7A4A00}\r\n.timeline{display:grid;grid-template-columns:repeat(15,minmax(90px,1fr));gap:6px;overflow:auto;padding-bottom:4px}.day-chip{min-width:90px;border:1px solid var(--line);border-radius:13px;background:#fff;padding:10px;cursor:pointer}.day-chip.active{border-color:var(--dn-blue);background:var(--soft-blue)}.day-chip .date{font-weight:900}.day-chip .count{font-size:10px;color:var(--muted);margin-top:3px}\r\n.task-list{display:grid;gap:10px}.task{border:1px solid var(--line);border-radius:14px;padding:13px;background:#fff;display:grid;grid-template-columns:26px 1fr auto;gap:11px;align-items:start}.task.done{background:#F6FBF8;border-color:#CDEBDD}.task .check{margin-top:2px;width:19px;height:19px;accent-color:var(--dn-blue)}.task-title{font-weight:850}.task-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.tag{display:inline-flex;padding:4px 7px;border-radius:999px;font-size:10px;font-weight:800;background:#EEF3F8;color:#53687D}.tag.blue{background:var(--soft-blue);color:var(--dn-blue)}.tag.orange{background:var(--soft-orange);color:#7A4A00}.tag.green{background:#EAF8F0;color:#0D7440}.tag.purple{background:#F0EBFF;color:#5435C8}.task-actions{display:flex;gap:6px}.icon-btn{border:1px solid var(--line);background:#fff;width:34px;height:34px;border-radius:9px}\r\n.filterbar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.filterbar input,.filterbar select,.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px 11px;background:#fff;color:var(--ink);outline:none}.filterbar input:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--dn-blue);box-shadow:0 0 0 3px rgba(11,79,156,.09)}.filterbar .search{flex:1;min-width:240px}\r\n.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;font-size:13px}.table th,.table td{padding:11px 9px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.table th{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}\r\n.status{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:900}.status.todo{background:#EEF3F8;color:#5E7285}.status.progress{background:var(--soft-blue);color:var(--dn-blue)}.status.done{background:#EAF8F0;color:#0D7440}.status.blocked{background:#FFF0F2;color:#B22C42}\r\n.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.field.full{grid-column:1\/-1}.field textarea{min-height:100px;resize:vertical}\r\n.checkgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.checkitem{border:1px solid var(--line);border-radius:12px;padding:10px;display:flex;gap:9px;align-items:flex-start;font-size:12px;font-weight:700}.checkitem input{margin-top:2px;accent-color:var(--dn-blue)}\r\n.resource-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.resource{border:1px dashed #B8C7D6;border-radius:14px;padding:13px;background:#FBFCFE}.resource h4{margin:0 0 4px}.resource p{margin:0 0 9px;color:var(--muted);font-size:11px}\r\n.modal-backdrop{position:fixed;inset:0;background:rgba(5,18,31,.58);display:none;align-items:center;justify-content:center;padding:18px;z-index:100}.modal-backdrop.show{display:flex}.modal{width:min(900px,100%);max-height:88vh;overflow:auto;background:#fff;border-radius:20px;box-shadow:0 24px 60px rgba(0,0,0,.25);padding:22px}.modal-head{display:flex;justify-content:space-between;gap:15px;align-items:flex-start}.modal h3{margin:0;font-size:23px}.modal-close{border:0;background:#EEF3F8;border-radius:9px;width:35px;height:35px}.modal-body{margin-top:15px;color:#34495E;font-size:14px}.modal-body h4{color:var(--dn-navy);margin:18px 0 8px}.modal-body ul{margin:8px 0 8px 20px}.copybox{padding:13px;background:#F7F9FC;border:1px solid var(--line);border-radius:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;white-space:pre-wrap}\r\n.empty{padding:28px;text-align:center;color:var(--muted);border:1px dashed #C9D6E3;border-radius:14px;background:#FBFCFE}\r\n.toast{position:fixed;right:18px;bottom:18px;background:var(--dn-navy);color:#fff;padding:12px 14px;border-radius:11px;box-shadow:var(--shadow);display:none;z-index:200;font-size:13px;font-weight:750}.toast.show{display:block;animation:fadein .2s ease}@keyframes fadein{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}\r\n.footer-note{text-align:center;color:var(--muted);font-size:11px;padding:25px 0 10px}\r\n@media(max-width:1050px){.layout{grid-template-columns:1fr}.sidebar{position:fixed;left:-280px;top:68px;width:255px;z-index:60;transition:.25s}.sidebar.open{left:0}.main{padding:18px}.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.resource-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}\r\n@media(max-width:720px){.topbar{padding:0 12px}.brand div:last-child{display:none}.top-actions .optional{display:none}.grid-2,.grid-3,.form-grid,.checkgrid,.resource-grid{grid-template-columns:1fr}.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.hero{padding:22px}.hero h1{font-size:28px}.task{grid-template-columns:25px 1fr}.task-actions{grid-column:2}.main{padding:12px}}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"app\">\r\n  <header class=\"topbar\">\r\n    <div class=\"brand\">\r\n      <button class=\"btn ghost\" id=\"menuBtn\" aria-label=\"Open menu\">\u2630<\/button>\r\n      <div class=\"brand-mark\">DN<\/div>\r\n      <div><div>Digital Nest<\/div><small>PGP 14 & 15 \u00b7 Capstone 3<\/small><\/div>\r\n    <\/div>\r\n    <div class=\"top-actions\">\r\n      <button class=\"btn optional\" id=\"exportBtn\">Export<\/button>\r\n      <button class=\"btn optional\" id=\"importBtn\">Import<\/button>\r\n      <button class=\"btn danger\" id=\"resetBtn\">Reset<\/button>\r\n    <\/div>\r\n  <\/header>\r\n\r\n  <div class=\"layout\">\r\n    <aside class=\"sidebar\" id=\"sidebar\">\r\n      <div class=\"project-pill\"><div class=\"mini\">PROJECT WINDOW<\/div><strong>15 Sep \u2192 29 Sep 2026<\/strong><div class=\"mini\" style=\"margin-top:7px\">Meta Ads + CRO + Automation + CRM + Analytics<\/div><\/div>\r\n      <div class=\"side-section\">Workspace<\/div>\r\n      <button class=\"nav-btn active\" data-section=\"dashboard\">\u2302 Dashboard<\/button>\r\n      <button class=\"nav-btn\" data-section=\"brief\">\u25c8 Full Briefing<\/button>\r\n      <button class=\"nav-btn\" data-section=\"tasks\">\u2713 Task Tracker<\/button>\r\n      <button class=\"nav-btn\" data-section=\"learning\">\u25c9 Concepts<\/button>\r\n      <button class=\"nav-btn\" data-section=\"setup\">\u2699 Technical Setup<\/button>\r\n      <button class=\"nav-btn\" data-section=\"funnel\">\u2197 Funnel & CRO<\/button>\r\n      <button class=\"nav-btn\" data-section=\"meta\">\u25ce Meta Ads<\/button>\r\n      <button class=\"nav-btn\" data-section=\"tracking\">\u2301 Tracking & Analytics<\/button>\r\n      <button class=\"nav-btn\" data-section=\"automation\">\u21c4 Automation & CRM<\/button>\r\n      <button class=\"nav-btn\" data-section=\"optimisation\">\u21bb Optimisation<\/button>\r\n      <button class=\"nav-btn\" data-section=\"eod\">\u25a3 Daily EOD<\/button>\r\n      <button class=\"nav-btn\" data-section=\"submission\">\u2191 Submission<\/button>\r\n      <div class=\"side-section\">Templates<\/div>\r\n      <button class=\"nav-btn\" data-section=\"resources\">\u25a4 Resources<\/button>\r\n    <\/aside>\r\n\r\n    <main class=\"main\">\r\n      <section id=\"dashboard\" class=\"page-section\">\r\n        <div class=\"hero\">\r\n          <h1>Capstone Project 3<\/h1>\r\n          <p>Build a real-world acquisition system for your chosen brand \u2014 from competitor research and AI landing page to Meta Ads, tracking, lead routing, Zoho CRM, automation, optimisation and final presentation.<\/p>\r\n          <div class=\"hero-meta\"><span class=\"meta-chip\">PGP 14 + PGP 15<\/span><span class=\"meta-chip\">15\u201329 September 2026<\/span><span class=\"meta-chip\">Group Project<\/span><span class=\"meta-chip\">Domain: PGPDN.Online<\/span><\/div>\r\n        <\/div>\r\n\r\n        <div class=\"section\">\r\n          <div class=\"card\">\r\n            <div class=\"section-head\"><div><h2>1. Team & Brand Setup<\/h2><p>Complete this once before your technical build begins.<\/p><\/div><span class=\"status progress\">Student Setup<\/span><\/div>\r\n            <div class=\"form-grid\">\r\n              <div class=\"field\"><label>Group Name \/ Number<\/label><input id=\"teamName\" placeholder=\"Example: Team 03\" \/><\/div>\r\n              <div class=\"field\"><label>Brand Name<\/label><input id=\"brandName\" placeholder=\"Your chosen brand\" \/><\/div>\r\n              <div class=\"field\"><label>Team Members<\/label><input id=\"members\" placeholder=\"Name 1, Name 2, Name 3...\" \/><\/div>\r\n              <div class=\"field\"><label>Sales Owner \/ Team Member<\/label><input id=\"salesOwner\" placeholder=\"Who will handle lead follow-up?\" \/><\/div>\r\n              <div class=\"field\"><label>Subdomain<\/label><input id=\"subdomain\" placeholder=\"brandname.pgpdn.online\" \/><\/div>\r\n              <div class=\"field\"><label>Live Landing Page URL<\/label><input id=\"lpUrl\" placeholder=\"https:\/\/brandname.pgpdn.online\" \/><\/div>\r\n              <div class=\"field full\"><label>Project Goal<\/label><input id=\"projectGoal\" placeholder=\"Example: Generate 25 qualified leads for Brand X using a full-funnel Meta + CRO system.\" \/><\/div>\r\n            <\/div>\r\n            <div style=\"margin-top:12px\"><button class=\"btn primary\" id=\"saveTeam\">Save Team Details<\/button><\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"section\">\r\n          <div class=\"grid grid-4\" id=\"kpiGrid\"><\/div>\r\n        <\/div>\r\n\r\n        <div class=\"section\">\r\n          <div class=\"section-head\"><div><h2>Project Timeline<\/h2><p>Click a day to filter tasks. The timeline follows the recommended execution order.<\/p><\/div><\/div>\r\n          <div class=\"timeline\" id=\"timeline\"><\/div>\r\n        <\/div>\r\n\r\n        <div class=\"section grid grid-3\">\r\n          <div class=\"card\"><div class=\"section-head\"><div><h2>Today\u2019s Focus<\/h2><p id=\"todayFocusText\"><\/p><\/div><\/div><div id=\"todayTasks\"><\/div><\/div>\r\n          <div class=\"card\"><div class=\"section-head\"><div><h2>Blockers<\/h2><p>Capture anything stopping execution.<\/p><\/div><\/div><div id=\"blockerBox\"><\/div><\/div>\r\n          <div class=\"card\"><div class=\"section-head\"><div><h2>Submission Health<\/h2><p>What is still missing before final presentation?<\/p><\/div><\/div><div id=\"submissionHealth\"><\/div><\/div>\r\n        <\/div>\r\n      <\/section>\r\n\r\n      <section id=\"brief\" class=\"page-section\" style=\"display:none\">\r\n        <div class=\"section-head\"><div><h2>Full Project Briefing<\/h2><p>The master brief students should read before touching the build.<\/p><\/div><\/div>\r\n        <div class=\"grid grid-2\">\r\n          <div class=\"card\"><h3>Project Mission<\/h3><p>Take a pre-selected brand and build a working performance marketing system. Every important decision must have a business reason, evidence, implementation and measurement plan.<\/p><div class=\"alert\"><strong>Rule:<\/strong> Do not build isolated pieces. The landing page, tracking, Meta campaign, CRM, automation and optimisation plan must work as one connected funnel.<\/div><\/div>\r\n          <div class=\"card\"><h3>Environment<\/h3><ul><li>Shared parent domain: <strong>pgpdn.online<\/strong><\/li><li>Each group gets a brand-named subdomain inside Hostinger.<\/li><li>Jayanth provides Hostinger access.<\/li><li>Install WordPress on the group's subdomain.<\/li><li>Create a new project email, GTM, GA4, Microsoft Clarity and the required Meta assets.<\/li><\/ul><\/div>\r\n        <\/div>\r\n        <div class=\"section grid grid-3\">\r\n          <div class=\"card\"><h3>Build<\/h3><p>Competitor analysis \u2192 CRO audit \u2192 AI landing page \u2192 persuasion framework \u2192 forms\/chatbot\/popup\/WhatsApp \u2192 A\/B test plan.<\/p><\/div>\r\n          <div class=\"card\"><h3>Measure<\/h3><p>GTM \u2192 GA4 \u2192 Meta Pixel \u2192 buttons \u2192 form start \u2192 video \u2192 scroll \u2192 elements \u2192 thank-you lead event \u2192 Clarity.<\/p><\/div>\r\n          <div class=\"card\"><h3>Operate<\/h3><p>Funnel \u2192 media plan \u2192 campaign structure \u2192 buyer persona \u2192 creative \u2192 rules \u2192 dashboards \u2192 Zapier \u2192 Zoho CRM \u2192 lead scoring \u2192 optimisation.<\/p><\/div>\r\n        <\/div>\r\n        <div class=\"section card\"><h3>Definition of Done<\/h3><div class=\"checkgrid\" id=\"definitionChecklist\"><\/div><\/div>\r\n      <\/section>\r\n\r\n      <section id=\"tasks\" class=\"page-section\" style=\"display:none\">\r\n        <div class=\"section-head\"><div><h2>Task Tracker<\/h2><p>Mark tasks complete only after the required evidence is actually available.<\/p><\/div><button class=\"btn primary\" id=\"jumpEod\">Add EOD<\/button><\/div>\r\n        <div class=\"filterbar\"><input class=\"search\" id=\"taskSearch\" placeholder=\"Search task, concept, tool, output...\"\/><select id=\"dayFilter\"><option value=\"all\">All Days<\/option><\/select><select id=\"statusFilter\"><option value=\"all\">All Status<\/option><option value=\"todo\">To Do<\/option><option value=\"progress\">In Progress<\/option><option value=\"done\">Done<\/option><\/select><select id=\"categoryFilter\"><option value=\"all\">All Categories<\/option><\/select><\/div>\r\n        <div id=\"taskList\" class=\"task-list\"><\/div>\r\n      <\/section>\r\n\r\n      <section id=\"learning\" class=\"page-section\" style=\"display:none\">\r\n        <div class=\"section-head\"><div><h2>Concepts You Need To Use<\/h2><p>Open a card before you execute the task so you understand the why, not just the how.<\/p><\/div><\/div>\r\n        <div class=\"grid grid-3\" id=\"conceptGrid\"><\/div>\r\n      <\/section>\r\n\r\n      <section id=\"setup\" class=\"page-section\" style=\"display:none\">\r\n        <div class=\"section-head\"><div><h2>Technical Setup Checklist<\/h2><p>Everything required on the fresh brand subdomain.<\/p><\/div><\/div>\r\n        <div class=\"card\"><div class=\"checkgrid\" id=\"setupChecklist\"><\/div><\/div>\r\n      <\/section>\r\n\r\n      <section id=\"funnel\" class=\"page-section\" style=\"display:none\">\r\n        <div class=\"section-head\"><div><h2>Funnel & CRO<\/h2><p>Make the conversion path obvious before spending ad money.<\/p><\/div><\/div>\r\n        <div class=\"grid grid-2\">\r\n          <div class=\"card\"><h3>Funnel Blueprint<\/h3><div id=\"funnelStages\"><\/div><\/div>\r\n          <div class=\"card\"><h3>CRO Audit<\/h3><div class=\"checkgrid\" id=\"croChecklist\"><\/div><\/div>\r\n        <\/div>\r\n        <div class=\"section card\"><h3>Landing Page Copy Framework<\/h3><div class=\"grid grid-2\"><div><strong>Fogg Behaviour Model<\/strong><p>Motivation \u00d7 Ability \u00d7 Prompt. Ask: Is the visitor motivated enough? Is the desired action easy? Is the CTA prompt clear and timely?<\/p><\/div><div><strong>LIFT Model<\/strong><p>Value Proposition, Relevance, Clarity, Urgency, Anxiety and Distraction. Use both frameworks where useful instead of forcing one model.<\/p><\/div><\/div><\/div>\r\n      <\/section>\r\n\r\n      <section id=\"meta\" class=\"page-section\" style=\"display:none\">\r\n        <div class=\"section-head\"><div><h2>Meta Ads Execution<\/h2><p>Strategy first. Setup second. Launch only after measurement and CRM are test-ready.<\/p><\/div><\/div>\r\n        <div class=\"grid grid-2\"><div class=\"card\"><h3>Pre-Launch Gate<\/h3><div class=\"checkgrid\" id=\"metaPrecheck\"><\/div><\/div><div class=\"card\"><h3>Creative & Campaign<\/h3><div class=\"checkgrid\" id=\"metaChecklist\"><\/div><\/div><\/div>\r\n        <div class=\"section card\"><h3>Experiment Log<\/h3><div class=\"form-grid\"><div class=\"field\"><label>Hypothesis<\/label><input id=\"hypothesis\" placeholder=\"Example: A stronger price\/value hook will increase qualified lead rate.\" \/><\/div><div class=\"field\"><label>Primary KPI<\/label><input id=\"primaryKpi\" placeholder=\"CPL \/ CPQL \/ CVR \/ CTR \/ etc.\" \/><\/div><div class=\"field full\"><label>Why will this test work?<\/label><textarea id=\"hypothesisWhy\" placeholder=\"Business reason + audience insight + expected effect...\"><\/textarea><\/div><\/div><button class=\"btn primary\" style=\"margin-top:12px\" id=\"saveExperiment\">Save Experiment<\/button><div id=\"experimentLog\" style=\"margin-top:12px\"><\/div><\/div>\r\n      <\/section>\r\n\r\n      <section id=\"tracking\" class=\"page-section\" style=\"display:none\">\r\n        <div class=\"section-head\"><div><h2>Tracking & Analytics<\/h2><p>One event architecture across GTM, GA4, Meta and Clarity.<\/p><\/div><\/div>\r\n        <div class=\"card\"><div class=\"checkgrid\" id=\"trackingChecklist\"><\/div><\/div>\r\n        <div class=\"section grid grid-3\"><div class=\"card\"><h3>GA4 Events<\/h3><div id=\"gaEvents\"><\/div><\/div><div class=\"card\"><h3>GTM Organisation<\/h3><div id=\"gtmFolders\"><\/div><\/div><div class=\"card\"><h3>QA Protocol<\/h3><div id=\"qaProtocol\"><\/div><\/div><\/div>\r\n      <\/section>\r\n\r\n      <section id=\"automation\" class=\"page-section\" style=\"display:none\">\r\n        <div class=\"section-head\"><div><h2>Automation & CRM<\/h2><p>All lead sources should land in one operating system: Zoho CRM.<\/p><\/div><\/div>\r\n        <div class=\"grid grid-2\"><div class=\"card\"><h3>Zapier Workflows<\/h3><div class=\"checkgrid\" id=\"zapierChecklist\"><\/div><\/div><div class=\"card\"><h3>Zoho CRM Setup<\/h3><div class=\"checkgrid\" id=\"crmChecklist\"><\/div><\/div><\/div>\r\n        <div class=\"section card\"><h3>Lead Qualification Framework<\/h3><div class=\"form-grid\"><div class=\"field\"><label>Qualification Rule<\/label><textarea id=\"qualificationRule\" placeholder=\"Define what makes a lead qualified...\"\/><\/div><div class=\"field\"><label>Lead Score Logic<\/label><textarea id=\"scoreLogic\" placeholder=\"Example: +20 business owner, +15 high intent service, +10 WhatsApp request...\"><\/textarea><\/div><div class=\"field\"><label>Assignment Rule<\/label><textarea id=\"assignmentRule\" placeholder=\"How will new qualified leads be assigned to your sales owner\/team?\"><\/textarea><\/div><div class=\"field\"><label>Automated Welcome Email<\/label><textarea id=\"welcomeEmail\" placeholder=\"Write the email Zoho should send after the lead enters CRM.\"><\/textarea><\/div><\/div><button class=\"btn primary\" style=\"margin-top:12px\" id=\"saveCRMNotes\">Save Framework<\/button><\/div>\r\n      <\/section>\r\n\r\n      <section id=\"optimisation\" class=\"page-section\" style=\"display:none\">\r\n        <div class=\"section-head\"><div><h2>Optimization Engine<\/h2><p>Do not optimise because \u201cperformance is low.\u201d Identify the exact funnel leak first.<\/p><\/div><\/div>\r\n        <div class=\"grid grid-3\">\r\n          <div class=\"card\"><h3>Creative<\/h3><p>Hook, first 3 seconds, thumb-stop, message match, CTA, offer framing, creator fit.<\/p><\/div>\r\n          <div class=\"card\"><h3>Ad Set \/ Audience<\/h3><p>Audience quality, overlap, placement distribution, frequency, budget, delivery and fatigue.<\/p><\/div>\r\n          <div class=\"card\"><h3>Landing Page<\/h3><p>Load speed, message match, clarity, form friction, proof, anxiety, distraction, CTA visibility.<\/p><\/div>\r\n          <div class=\"card\"><h3>Lead Quality<\/h3><p>Source quality, qualification rate, sales acceptance, invalid leads, response time.<\/p><\/div>\r\n          <div class=\"card\"><h3>CRM<\/h3><p>Automation failures, duplicate records, owner assignment, follow-up SLAs, pipeline movement.<\/p><\/div>\r\n          <div class=\"card\"><h3>Business KPI<\/h3><p>CPL \u2192 Qualified Lead Rate \u2192 CPQL \u2192 Sales Conversion \u2192 Revenue\/ROAS where applicable.<\/p><\/div>\r\n        <\/div>\r\n        <div class=\"section card\"><h3>When This Goes Wrong, Check This First<\/h3><div class=\"table-wrap\"><table class=\"table\"><thead><tr><th>Signal<\/th><th>Likely problem<\/th><th>First action<\/th><\/tr><\/thead><tbody><tr><td>Low CTR<\/td><td>Creative \/ hook \/ audience fit<\/td><td>Review first 3 seconds, angle and audience-message fit.<\/td><\/tr><tr><td>Good CTR, low LP CVR<\/td><td>Landing page mismatch or friction<\/td><td>Check headline, offer, proof, CTA and form friction.<\/td><\/tr><tr><td>Good CVR, poor lead quality<\/td><td>Targeting \/ offer \/ qualification issue<\/td><td>Refine buyer persona, form questions and lead scoring.<\/td><\/tr><tr><td>Good leads, poor sales follow-up<\/td><td>CRM \/ owner \/ workflow issue<\/td><td>Audit Zapier, Zoho assignment and follow-up SLA.<\/td><\/tr><tr><td>Numbers differ across platforms<\/td><td>Tracking or attribution mismatch<\/td><td>QA event firing, duplicates, date range, UTMs and source logic.<\/td><\/tr><\/tbody><\/table><\/div><\/div>\r\n      <\/section>\r\n\r\n      <section id=\"eod\" class=\"page-section\" style=\"display:none\">\r\n        <div class=\"section-head\"><div><h2>Daily EOD Report<\/h2><p>Every group should close every working day with evidence, blockers and next actions.<\/p><\/div><\/div>\r\n        <div class=\"card\"><div class=\"form-grid\"><div class=\"field\"><label>Date<\/label><input type=\"date\" id=\"eodDate\" \/><\/div><div class=\"field\"><label>Day \/ Sprint<\/label><input id=\"eodDay\" placeholder=\"Day 1 \u00b7 Foundation\" \/><\/div><div class=\"field full\"><label>What did the group complete today?<\/label><textarea id=\"eodCompleted\" placeholder=\"Mention task IDs + actual deliverables\/links.\"><\/textarea><\/div><div class=\"field full\"><label>Evidence \/ URLs<\/label><textarea id=\"eodEvidence\" placeholder=\"LP URL, screenshot link, GTM preview evidence, sheet, CRM, campaign, etc.\"><\/textarea><\/div><div class=\"field\"><label>What is blocked?<\/label><textarea id=\"eodBlocked\" placeholder=\"Access, technical, creative, approval, data, dependency...\"><\/textarea><\/div><div class=\"field\"><label>Tomorrow's action plan<\/label><textarea id=\"eodNext\" placeholder=\"Top 3 next actions with owners.\"><\/textarea><\/div><\/div><button class=\"btn primary\" style=\"margin-top:12px\" id=\"saveEod\">Save EOD Report<\/button><\/div><div class=\"section\" id=\"eodHistory\"><\/div>\r\n      <\/section>\r\n\r\n      <section id=\"submission\" class=\"page-section\" style=\"display:none\">\r\n        <div class=\"section-head\"><div><h2>Final Submission<\/h2><p>Your presentation is the story of the system: problem \u2192 strategy \u2192 build \u2192 data \u2192 optimisation \u2192 outcome.<\/p><\/div><\/div>\r\n        <div class=\"grid grid-2\"><div class=\"card\"><h3>Required Deliverables<\/h3><div class=\"checkgrid\" id=\"submissionChecklist\"><\/div><\/div><div class=\"card\"><h3>Final Presentation Story<\/h3><ol><li>Brand + business objective<\/li><li>Competitor findings & CRO gaps<\/li><li>Buyer persona & offer<\/li><li>AI landing page + persuasion framework<\/li><li>Funnel + lead capture stack<\/li><li>Tracking architecture<\/li><li>Media plan + campaign structure<\/li><li>Creative \/ Reel ad<\/li><li>CRM + automation<\/li><li>Lead scoring & assignment<\/li><li>Live campaign results<\/li><li>Optimisation decisions & learnings<\/li><li>What you would do with more time\/budget<\/li><\/ol><\/div><\/div>\r\n        <div class=\"section card\"><h3>Submission Links<\/h3><div class=\"form-grid\"><div class=\"field\"><label>Final Presentation<\/label><input id=\"linkPresentation\" placeholder=\"Google Slides \/ Canva URL\" \/><\/div><div class=\"field\"><label>Landing Page<\/label><input id=\"linkLanding\" placeholder=\"URL\" \/><\/div><div class=\"field\"><label>Google Sheet Dashboard<\/label><input id=\"linkSheet\" placeholder=\"URL\" \/><\/div><div class=\"field\"><label>Zoho CRM<\/label><input id=\"linkZoho\" placeholder=\"URL \/ screenshot folder\" \/><\/div><div class=\"field\"><label>Meta Ad Account \/ Campaign<\/label><input id=\"linkMeta\" placeholder=\"URL \/ evidence\" \/><\/div><div class=\"field\"><label>Evidence Folder<\/label><input id=\"linkEvidence\" placeholder=\"Drive folder\" \/><\/div><\/div><button class=\"btn primary\" style=\"margin-top:12px\" id=\"saveLinks\">Save Submission Links<\/button><\/div>\r\n      <\/section>\r\n\r\n      <section id=\"resources\" class=\"page-section\" style=\"display:none\">\r\n        <div class=\"section-head\"><div><h2>Templates & Resources<\/h2><p>Replace these placeholders with the official templates shared by the trainer.<\/p><\/div><\/div>\r\n        <div class=\"resource-grid\" id=\"resourceGrid\"><\/div>\r\n      <\/section>\r\n\r\n      <div class=\"footer-note\">Digital Nest \u00b7 PGP 14 & 15 \u00b7 Capstone Project 3 \u00b7 Student execution portal \u00b7 Browser-saved progress<\/div>\r\n    <\/main>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"modal-backdrop\" id=\"modalBackdrop\"><div class=\"modal\"><div class=\"modal-head\"><div><div class=\"tag blue\" id=\"modalCategory\">Concept<\/div><h3 id=\"modalTitle\" style=\"margin-top:8px\"><\/h3><\/div><button class=\"modal-close\" id=\"modalClose\">\u2715<\/button><\/div><div class=\"modal-body\" id=\"modalBody\"><\/div><\/div><\/div>\r\n<div class=\"toast\" id=\"toast\"><\/div>\r\n<input type=\"file\" id=\"fileInput\" accept=\"application\/json\" style=\"display:none\" \/>\r\n\r\n<script>\r\nconst days = [\r\n  {d:1,date:'2026-09-15',title:'Foundation & Competitor Research'},\r\n  {d:2,date:'2026-09-16',title:'CRO Audit + Offer'},\r\n  {d:3,date:'2026-09-17',title:'AI Landing Page Build'},\r\n  {d:4,date:'2026-09-18',title:'Conversion Stack'},\r\n  {d:5,date:'2026-09-19',title:'A\/B Testing + Tracking Plan'},\r\n  {d:6,date:'2026-09-20',title:'GTM + GA4 + Meta Tracking'},\r\n  {d:7,date:'2026-09-21',title:'Clarity + QA + Funnel'},\r\n  {d:8,date:'2026-09-22',title:'Media Plan + Campaign Structure'},\r\n  {d:9,date:'2026-09-23',title:'Buyer Persona + Creative'},\r\n  {d:10,date:'2026-09-24',title:'Reel Shoot + Meta Build'},\r\n  {d:11,date:'2026-09-25',title:'Rules + Google Sheet KPI'},\r\n  {d:12,date:'2026-09-26',title:'Data Consolidation'},\r\n  {d:13,date:'2026-09-27',title:'Zoho CRM + Zapier'},\r\n  {d:14,date:'2026-09-28',title:'Lead Scoring + Optimisation'},\r\n  {d:15,date:'2026-09-29',title:'Final Presentation + Submission'}\r\n];\r\n\r\nconst tasks = [\r\n {id:'T01',day:1,cat:'Strategy',title:'Confirm chosen brand, group roles and business objective',concept:'Business Objective',brief:'Lock the brand, roles, sales owner and the one primary business outcome the campaign must improve.',deliverable:'Team setup + one-line objective',priority:'High'},\r\n {id:'T02',day:1,cat:'Research',title:'Create competitor analysis using trainer template',concept:'Competitive Analysis',brief:'Research at least 3 relevant competitors. Capture offer, positioning, audience, creative angles, CTA, landing page flow, proof, pricing and lead capture.',deliverable:'Competitor analysis sheet',priority:'High'},\r\n {id:'T03',day:1,cat:'Research',title:'Collect competitor creative and landing page evidence',concept:'Ad Library Research',brief:'Save screenshots\/URLs for relevant Meta ads, offers and landing page patterns. Note patterns, not just screenshots.',deliverable:'Evidence folder',priority:'Medium'},\r\n {id:'T04',day:2,cat:'CRO',title:'Conduct CRO audit for competitor template',concept:'CRO Audit',brief:'Audit message match, clarity, value proposition, CTA, trust, anxiety, urgency, distraction, form friction and mobile UX.',deliverable:'Completed CRO template',priority:'High'},\r\n {id:'T05',day:2,cat:'CRO',title:'Choose landing page persuasion framework',concept:'Fogg + LIFT',brief:'Decide where Fogg, LIFT or a combination will shape the copy and page structure. Explain the choice.',deliverable:'Framework map',priority:'High'},\r\n {id:'T06',day:2,cat:'CRO',title:'Define offer, primary CTA and conversion event',concept:'Conversion Goal',brief:'Define what the visitor gets, what action is requested and exactly what counts as a lead.',deliverable:'Offer + CTA + lead definition',priority:'High'},\r\n {id:'T07',day:3,cat:'Landing Page',title:'Build first AI-assisted landing page',concept:'AI Landing Page',brief:'Use ChatGPT, Claude or another AI tool to draft copy\/layout, then human-edit it for the selected brand. Do not publish raw AI copy.',deliverable:'Draft LP on WordPress',priority:'High'},\r\n {id:'T08',day:3,cat:'Landing Page',title:'Implement mobile-first LP structure and speed basics',concept:'UX',brief:'Check hierarchy, above-the-fold value, CTA visibility, whitespace, responsive behaviour, image weight and basic page performance.',deliverable:'Mobile-ready LP',priority:'High'},\r\n {id:'T09',day:4,cat:'Conversion Stack',title:'Setup lead form \/ instant form strategy',concept:'Lead Capture',brief:'Prepare form fields, intent questions, thank-you action and source attribution logic. Use Meta Instant Form where applicable.',deliverable:'Working lead capture',priority:'High'},\r\n {id:'T10',day:4,cat:'Conversion Stack',title:'Add live chatbot',concept:'Conversational Conversion',brief:'Install and configure Live Chatbot. Create welcome message, qualifying questions and clear handoff.',deliverable:'Working chatbot',priority:'High'},\r\n {id:'T11',day:4,cat:'Conversion Stack',title:'Add Hello Bar popup',concept:'Micro Conversion',brief:'Create a non-intrusive popup with one objective, offer and CTA. Ensure frequency\/timing does not destroy UX.',deliverable:'Working popup',priority:'Medium'},\r\n {id:'T12',day:4,cat:'Conversion Stack',title:'Add Wati \/ WhatsApp CTA',concept:'WhatsApp Conversion',brief:'Create direct WhatsApp intent path with pre-filled message and clear attribution where possible.',deliverable:'Working WhatsApp CTA',priority:'Medium'},\r\n {id:'T13',day:5,cat:'Experiment',title:'Create A\/B testing plan using trainer template',concept:'A\/B Testing',brief:'Define hypothesis, variable, control, variant, primary KPI, guardrail KPI, traffic split and decision rule.',deliverable:'A\/B test plan',priority:'High'},\r\n {id:'T14',day:5,cat:'Planning',title:'Create measurement plan and UTM naming convention',concept:'Measurement Plan',brief:'Standardise campaign\/ad\/adset\/content naming and UTMs before launch.',deliverable:'Naming + UTM sheet',priority:'High'},\r\n {id:'T15',day:6,cat:'Tracking',title:'Create fresh GTM container for new WordPress subdomain',concept:'GTM',brief:'Use a new GTM container and deploy it to all pages on the fresh WordPress install.',deliverable:'GTM installed',priority:'High'},\r\n {id:'T16',day:6,cat:'Tracking',title:'Configure GA4 for all pages and thank-you page',concept:'GA4',brief:'Install a fresh GA4 property\/data stream. Track all pages and implement a thank-you conversion event named Lead.',deliverable:'GA4 + Lead event',priority:'High'},\r\n {id:'T17',day:6,cat:'Tracking',title:'Install Meta Pixel via GTM',concept:'Meta Pixel',brief:'Install Pixel using the preferred tag architecture. Verify base code and important conversion signals.',deliverable:'Pixel verified',priority:'High'},\r\n {id:'T18',day:6,cat:'Tracking',title:'Implement button, form start, video, scroll and element tracking',concept:'Event Tracking',brief:'Create a clean event taxonomy in GTM\/GA4. Avoid duplicate or meaningless events.',deliverable:'Event tracking matrix',priority:'High'},\r\n {id:'T19',day:7,cat:'Tracking',title:'Setup Microsoft Clarity through GTM',concept:'Session Insights',brief:'Install Clarity via GTM and validate sessions are being recorded correctly.',deliverable:'Clarity verified',priority:'Medium'},\r\n {id:'T20',day:7,cat:'Tracking',title:'Setup Hello Bar and chatbot through GTM where supported',concept:'Tag Management',brief:'Use GTM to manage scripts\/tags where the implementation supports it and document exceptions.',deliverable:'GTM tags',priority:'Medium'},\r\n {id:'T21',day:7,cat:'Tracking',title:'Organise GTM folders, variables, tags and triggers',concept:'GTM Governance',brief:'Create an organised naming convention so another marketer can understand the container.',deliverable:'Clean GTM workspace',priority:'Medium'},\r\n {id:'T22',day:7,cat:'QA',title:'Run end-to-end tracking QA in preview\/debug',concept:'QA',brief:'Test page view, lead, buttons, form starts and conversion paths from a clean browser session.',deliverable:'QA checklist + evidence',priority:'High'},\r\n {id:'T23',day:7,cat:'Funnel',title:'Create full-funnel map using trainer template',concept:'Funnel Mapping',brief:'Map ad \u2192 landing page \u2192 capture \u2192 qualification \u2192 CRM \u2192 sales follow-up \u2192 outcome.',deliverable:'Funnel diagram',priority:'High'},\r\n {id:'T24',day:8,cat:'Media Plan',title:'Create media plan using trainer template',concept:'Media Planning',brief:'Set objective, audience, spend, flighting, placements, creative mix, KPIs and budget assumptions.',deliverable:'Media plan',priority:'High'},\r\n {id:'T25',day:8,cat:'Meta Ads',title:'Create Meta campaign structure using trainer template',concept:'Campaign Structure',brief:'Define campaign, ad set and ad naming, objectives, audiences, placements, budgets and testing logic.',deliverable:'Campaign architecture',priority:'High'},\r\n {id:'T26',day:9,cat:'Audience',title:'Create buyer persona using trainer template',concept:'Buyer Persona',brief:'Define context, pain points, triggers, objections, desired outcome, content behaviour and buying signals.',deliverable:'Buyer persona',priority:'High'},\r\n {id:'T27',day:9,cat:'Creative',title:'Create A\/B creative testing plan',concept:'Creative Testing',brief:'Map creative variables: hook, visual, offer, CTA, testimonial\/proof, creator style, format.',deliverable:'Creative test matrix',priority:'High'},\r\n {id:'T28',day:10,cat:'Creative',title:'Script Reel ad',concept:'Ad Scripting',brief:'Write hook, problem, story\/value, proof, offer and CTA. Create alternative hooks for testing.',deliverable:'Approved scripts',priority:'High'},\r\n {id:'T29',day:10,cat:'Creative',title:'Shoot and edit Reel ad variants',concept:'Creative Production',brief:'Produce usable vertical creatives with captions\/subtitles, strong first 3 seconds and brand consistency.',deliverable:'Reel ad files',priority:'High'},\r\n {id:'T30',day:10,cat:'Meta Ads',title:'Build ad campaign using Claude or manually',concept:'Meta Ad Setup',brief:'Create campaign\/ad sets\/ads, upload creatives, copy and CTA, then run platform QA before publishing.',deliverable:'Campaign draft\/active',priority:'High'},\r\n {id:'T31',day:11,cat:'Meta Ads',title:'Configure rules and value rules where applicable',concept:'Automation Rules',brief:'Use rules\/value rules only when they have a clear business use case. Define thresholds and explain why.',deliverable:'Rules sheet + screenshots',priority:'Medium'},\r\n {id:'T32',day:11,cat:'Analytics',title:'Create App Script \u2192 Google Sheet KPI feed',concept:'Data Automation',brief:'Connect available source data to a central KPI sheet using Apps Script where appropriate.',deliverable:'Automated KPI feed',priority:'High'},\r\n {id:'T33',day:12,cat:'Analytics',title:'Build one organised Google Sheet for multi-source data',concept:'Data Consolidation',brief:'Bring Meta, website\/GA4, lead and CRM metrics together. Include source, date, campaign dimensions and calculated KPIs.',deliverable:'Central KPI dashboard sheet',priority:'High'},\r\n {id:'T34',day:12,cat:'Analytics',title:'Define KPI dictionary and lead data structure',concept:'KPI Framework',brief:'Define each KPI, source, formula, frequency, owner and business use. Include lead status\/quality fields.',deliverable:'KPI dictionary',priority:'Medium'},\r\n {id:'T35',day:13,cat:'CRM',title:'Create Zoho CRM setup and pipeline',concept:'CRM',brief:'Create fields, pipeline stages, lead source fields and the minimum structure needed to manage all incoming leads centrally.',deliverable:'Zoho CRM pipeline',priority:'High'},\r\n {id:'T36',day:13,cat:'Automation',title:'Build Meta Instant Form \u2192 Google Sheet \u2192 Zoho CRM workflow in Zapier',concept:'Zapier',brief:'Map fields, test a dummy lead, avoid duplicates and confirm CRM ownership assignment.',deliverable:'Workflow 1 live',priority:'High'},\r\n {id:'T37',day:13,cat:'Automation',title:'Build chatbot \u2192 Google Sheet \u2192 Zoho CRM workflow in Zapier',concept:'Zapier',brief:'Capture chatbot data, normalise fields and push into CRM.',deliverable:'Workflow 2 live',priority:'High'},\r\n {id:'T38',day:13,cat:'Automation',title:'Build popup \u2192 Google Sheet \u2192 Zoho CRM workflow in Zapier',concept:'Zapier',brief:'Capture Hello Bar leads and push them into the same CRM pipeline.',deliverable:'Workflow 3 live',priority:'High'},\r\n {id:'T39',day:13,cat:'Automation',title:'Create automated new-lead email in Zoho CRM',concept:'CRM Workflow',brief:'Create a useful welcome\/acknowledgement email and workflow trigger for new incoming CRM leads.',deliverable:'Automation + email copy',priority:'High'},\r\n {id:'T40',day:14,cat:'CRM',title:'Create lead scoring and qualification framework',concept:'Lead Scoring',brief:'Score leads based on fit + intent. Define what score or conditions make the lead sales-ready.',deliverable:'Scoring matrix',priority:'High'},\r\n {id:'T41',day:14,cat:'CRM',title:'Assign qualified leads to sales owner\/team',concept:'Lead Assignment',brief:'Define routing rule, owner, response SLA and fallback process.',deliverable:'Assignment workflow',priority:'High'},\r\n {id:'T42',day:14,cat:'CRM',title:'Build Zoho CRM dashboard',concept:'CRM Dashboard',brief:'Visualise new leads, qualified leads, lead sources, pipeline stages, response time and outcome metrics.',deliverable:'CRM dashboard',priority:'High'},\r\n {id:'T43',day:14,cat:'Optimization',title:'Create optimisation checklist and decision tree',concept:'Optimisation',brief:'Map each KPI signal to possible causes, first diagnostic, action and test. Include what happens when performance drops.',deliverable:'Full optimisation playbook',priority:'High'},\r\n {id:'T44',day:15,cat:'Analysis',title:'Launch\/run campaign until sufficient qualified-lead signal',concept:'Campaign Operations',brief:'Operate the campaign, document changes and avoid declaring winners from tiny or unstable data.',deliverable:'Campaign log',priority:'High'},\r\n {id:'T45',day:15,cat:'Analysis',title:'Complete final performance analysis',concept:'Performance Analysis',brief:'Connect spend \u2192 reach \u2192 clicks \u2192 LP sessions \u2192 leads \u2192 qualified leads \u2192 sales outcomes. Explain gaps and learnings.',deliverable:'Final analysis',priority:'High'},\r\n {id:'T46',day:15,cat:'Presentation',title:'Build final presentation',concept:'Storytelling',brief:'Tell the story of the system and decisions. Show evidence, not just screenshots.',deliverable:'Final deck',priority:'High'},\r\n {id:'T47',day:15,cat:'Presentation',title:'Run final QA and submit all links\/evidence',concept:'Submission QA',brief:'Check all links, permissions, screenshots, evidence and presentation order. Submit a clean final folder.',deliverable:'Final submission pack',priority:'High'}\r\n];\r\n\r\nconst concepts = {\r\n 'Business Objective': {tag:'Strategy',why:'A marketing build without a business objective becomes a collection of tools. Start from the business result and work backward.',how:['Choose one primary outcome.','Define the conversion event.','Set the minimum acceptable quality signal.','Connect campaign KPIs to the business outcome.']},\r\n 'Competitive Analysis': {tag:'Research',why:'Competitor analysis gives you market context, offer patterns and gaps you can exploit \u2014 it is not a screenshot collection.',how:['Study at least 3 competitors.','Compare promise, audience, proof and CTA.','Record common patterns.','Look for whitespace rather than copying.']},\r\n 'CRO Audit': {tag:'CRO',why:'CRO is about reducing uncertainty and friction while increasing perceived value and actionability.',how:['Check message match.','Audit value proposition and clarity.','Look for anxiety, proof and trust gaps.','Remove distractions and unnecessary steps.']},\r\n 'Fogg + LIFT': {tag:'CRO',why:'Fogg helps you think in Motivation, Ability and Prompt. LIFT adds value proposition, relevance, clarity, urgency, anxiety and distraction.',how:['Use Fogg to assess action readiness.','Use LIFT to inspect the page experience.','Combine them when useful.','Link every copy decision to a user barrier.']},\r\n 'AI Landing Page': {tag:'AI',why:'AI accelerates ideation and production, but the student owns strategy, brand fit, factual accuracy and conversion quality.',how:['Give AI a detailed brief.','Ask for alternatives, not one final answer.','Human-edit every important claim.','Validate mobile UX and conversion flow.']},\r\n 'Lead Capture': {tag:'Conversion',why:'Every lead source should have a clear value exchange, minimum friction and a follow-up path.',how:['Only ask for fields you will use.','Add intent\/qualification questions carefully.','Design the next step after submission.','Pass source and campaign context where possible.']},\r\n 'A\/B Testing': {tag:'Experiment',why:'Testing needs a hypothesis and decision rule; otherwise it becomes random editing.',how:['Change one meaningful variable at a time.','Choose one primary KPI.','Define traffic\/data requirements.','Write the decision rule before looking at results.']},\r\n 'GTM': {tag:'Tracking',why:'GTM is the control layer for your tags and events. Organisation matters as much as implementation.',how:['Use a naming convention.','Separate tags, triggers and variables logically.','Use folders.','Test in Preview before publishing.']},\r\n 'GA4': {tag:'Analytics',why:'GA4 should answer behavioural questions and provide conversion data, not merely \u201cbe installed.\u201d',how:['Create a clear event taxonomy.','Mark the lead conversion.','Verify parameters and events.','Compare with other systems knowing attribution differs.']},\r\n 'Meta Pixel': {tag:'Measurement',why:'Pixel signals help Meta optimise and help you understand ad-side conversion signals.',how:['Install consistently.','Prioritise meaningful events.','Test firing.','Document limitations and attribution differences.']},\r\n 'Event Tracking': {tag:'Measurement',why:'Event tracking turns user interactions into usable evidence.',how:['Track business-relevant interactions.','Keep names standardised.','Avoid duplicate triggers.','Record the event dictionary.']},\r\n 'QA': {tag:'Quality',why:'A campaign can be \u201clive\u201d and still be broken. QA protects your data and lead flow.',how:['Test every path with a fresh session.','Verify tags\/events.','Submit test leads.','Confirm data reaches the next system.']},\r\n 'Funnel Mapping': {tag:'Strategy',why:'A funnel shows how each touchpoint moves a user toward a business outcome.',how:['Map entry source.','Show page and conversion step.','Show qualification.','Show CRM and sales outcome.']},\r\n 'Media Planning': {tag:'Planning',why:'A media plan turns budget into an executable hypothesis.',how:['Set objective.','Choose audience and placements.','Allocate budget.','Define KPIs and guardrails.']},\r\n 'Campaign Structure': {tag:'Meta Ads',why:'Campaign structure should make testing, reporting and optimisation easy.',how:['Create clear naming.','Separate audiences\/tests logically.','Choose budget approach intentionally.','Document the role of each ad set.']},\r\n 'Buyer Persona': {tag:'Audience',why:'A useful persona captures situations, motivations, objections and buying signals \u2014 not generic demographics.',how:['Describe the problem context.','Capture triggers and objections.','Identify desired outcome.','Translate insight into creative\/message.']},\r\n 'Creative Testing': {tag:'Creative',why:'Creative testing helps discover which message\/angle drives action.',how:['Test hooks.','Test format\/creator style.','Test offer framing.','Keep a learning log.']},\r\n 'Data Automation': {tag:'Analytics',why:'Repeated manual reporting causes delay and inconsistency. Automate where it improves reliability.',how:['Define source schema.','Normalize fields.','Protect against duplicates.','Audit the output.']},\r\n 'CRM': {tag:'Operations',why:'CRM is where marketing data becomes sales action.',how:['Define fields.','Set stages.','Assign owners.','Create follow-up rules.']},\r\n 'Zapier': {tag:'Automation',why:'Automation is only valuable when every step is reliable and observable.',how:['Map fields carefully.','Test dummy data.','Prevent duplicates.','Define failure handling.']},\r\n 'Lead Scoring': {tag:'CRM',why:'Lead scoring turns raw volume into prioritisation.',how:['Use fit signals.','Use intent signals.','Define qualification threshold.','Review scoring using real outcomes.']},\r\n 'Optimisation': {tag:'Performance',why:'Optimisation should diagnose the funnel before changing it.',how:['Locate the leaking stage.','Form a cause hypothesis.','Change the minimum necessary.','Record impact and learning.']},\r\n 'Performance Analysis': {tag:'Analytics',why:'The final story must connect ad input to business-quality output.',how:['Reconcile data.','Segment by source\/creative where useful.','Explain both wins and failures.','Turn findings into next tests.']}\r\n};\r\n\r\nconst checklistSets = {\r\n setupChecklist:['Hostinger access received','Brand subdomain created','WordPress installed','Project email created','SSL\/HTTPS working','Permalinks configured','Fresh GTM container created','Fresh GA4 property\/data stream created','Microsoft Clarity created','Meta Business\/Ad account readiness checked','Thank-you page created','Backup\/export point created'],\r\n trackingChecklist:['GTM on all pages','GA4 base tag','GA4 Lead event on thank-you','Meta Pixel base tracking','Button click tracking','Form start tracking','Form submit \/ lead tracking','Video play tracking','Scroll tracking','Element interaction tracking','Clarity via GTM','Hello Bar tag via GTM','Chatbot tag via GTM','GTM folders + naming convention','Preview\/Debug QA completed'],\r\n metaPrecheck:['Landing page stable','Thank-you path works','Primary conversion defined','Pixel verified','GA4 Lead verified','UTMs\/naming ready','CRM lead flow tested','Creative approved','Budget decision documented','A\/B testing hypothesis documented'],\r\n metaChecklist:['Campaign objective selected','Campaign structure created','Audience documented','Placements decision documented','Budget & schedule set','Primary copy written','Multiple creative angles prepared','CTA selected','Rules configured where applicable','Launch QA completed'],\r\n zapierChecklist:['Instant Form \u2192 Google Sheet','Google Sheet \u2192 Zoho CRM','Chatbot \u2192 Google Sheet','Chatbot \u2192 Zoho CRM','Popup \u2192 Google Sheet','Popup \u2192 Zoho CRM','Duplicate handling considered','Field mapping documented','Test lead successfully passed','Automation error path checked'],\r\n crmChecklist:['Zoho Lead fields created','Lead source fields created','Pipeline stages created','Sales owner selected','Lead assignment configured','Automated new-lead email','Lead scoring rules','Qualification criteria','Follow-up SLA','CRM dashboard'] ,\r\n submissionChecklist:['Competitor analysis','CRO audit','AI landing page live','Conversion tools live','A\/B test plan','GTM container','GA4 + Lead event','Meta Pixel','Clarity','Funnel map','Media plan','Campaign structure','Buyer persona','Creative test plan','Reel ad','Campaign evidence','Rules\/value rules evidence','Central KPI Sheet','KPI dictionary','Zoho CRM','Zapier workflows','Lead scoring','Lead assignment','CRM dashboard','Optimisation playbook','EOD reports','Final presentation','Final evidence folder']\r\n};\r\n\r\nconst funnelStages = ['Meta Ad \/ Organic Entry','Landing Page','Lead Form \/ Chatbot \/ Popup \/ WhatsApp','Thank-You \/ Conversion Event','Google Sheet + Source Data','Zoho CRM','Lead Scoring + Qualification','Sales Assignment + Follow-up','Qualified Lead \/ Sale \/ Business Outcome'];\r\nconst gaEvents = ['page_view','button_click','form_start','generate_lead \/ Lead','video_start','video_progress','video_complete','scroll_90','whatsapp_click','chat_open','popup_view','cta_click'];\r\nconst gtmFolders = ['00 \u00b7 Base','01 \u00b7 GA4','02 \u00b7 Meta Pixel','03 \u00b7 Lead Events','04 \u00b7 UX \/ Engagement','05 \u00b7 Clarity','06 \u00b7 Hello Bar','07 \u00b7 Chatbot','08 \u00b7 QA \/ Utilities'];\r\nconst qaProtocol = ['Open fresh browser session','Test every primary CTA','Trigger form start','Submit test lead','Check thank-you page','Check GA4 Realtime\/Debug','Check Meta events','Check Clarity recording','Check Google Sheet row','Check Zoho CRM record','Check owner assignment','Check automated email'];\r\nconst croChecklist = ['Message match','Headline clarity','Value proposition','CTA clarity','Above-the-fold hierarchy','Proof \/ trust','Objection handling','Urgency \/ relevance','Anxiety reduction','Form friction','Mobile UX','Page speed basics','Distraction control','Thank-you next step'];\r\nconst resourceItems = [\r\n ['Competitor Analysis Template','Trainer-shared WhatsApp template','Replace placeholder link'],\r\n ['CRO Audit Template','Trainer-shared WhatsApp template','Replace placeholder link'],\r\n ['Funnel Template','Trainer-shared template','Replace placeholder link'],\r\n ['Media Plan Template','Trainer-shared template','Replace placeholder link'],\r\n ['Meta Campaign Structure','Trainer-shared template','Replace placeholder link'],\r\n ['Buyer Persona Template','Trainer-shared template','Replace placeholder link'],\r\n ['A\/B Testing Plan','Trainer-shared template','Replace placeholder link'],\r\n ['Final Presentation Template','Trainer \/ batch resource','Replace placeholder link'],\r\n ['KPI Dashboard Sheet','Starter structure','Create\/attach central sheet']\r\n];\r\n\r\nconst KEY='dn_pgp_capstone_v1';\r\nconst defaultState={team:{},done:{},eod:[],experiments:[],crm:{},links:{}, blockers:'', dayFilter:'all'};\r\nlet state=load();\r\nfunction load(){try{return {...defaultState,...JSON.parse(localStorage.getItem(KEY)||'{}')}}catch(e){return {...defaultState}}}\r\nfunction save(){localStorage.setItem(KEY,JSON.stringify(state));renderAll()}\r\nfunction toast(msg){const el=document.getElementById('toast');el.textContent=msg;el.classList.add('show');clearTimeout(window.__toast);window.__toast=setTimeout(()=>el.classList.remove('show'),2200)}\r\nfunction esc(s=''){return String(s).replace(\/[&<>\"']\/g,m=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#039;'}[m]))}\r\nfunction statusFor(t){return state.done[t.id]?'done':'todo'}\r\nfunction showSection(id){document.querySelectorAll('.page-section').forEach(s=>s.style.display=s.id===id?'block':'none');document.querySelectorAll('.nav-btn').forEach(b=>b.classList.toggle('active',b.dataset.section===id));window.scrollTo({top:0,behavior:'smooth'});if(window.innerWidth<1050)document.getElementById('sidebar').classList.remove('open')}\r\nfunction renderKpis(){\r\n const total=tasks.length, done=tasks.filter(t=>state.done[t.id]).length, pct=Math.round(done\/total*100), eod=state.eod.length;\r\n const deliverables=Object.values(state.links).filter(Boolean).length;\r\n document.getElementById('kpiGrid').innerHTML=[\r\n  ['Tasks Complete',`${done}\/${total}`,`${pct}% overall`],['Project Progress',`${pct}%`,`15-day execution`],['EOD Reports',`${eod}\/15`,`Daily accountability`],['Final Links',`${deliverables}\/6`,`Submission evidence`]\r\n ].map(x=>`<div class=\"card kpi\"><div class=\"kpi-label\">${x[0]}<\/div><div class=\"kpi-value\">${x[1]}<\/div><div class=\"kpi-note\">${x[2]}<\/div><div class=\"progress-wrap\"><div class=\"progress\"><span style=\"width:${x[0]==='Tasks Complete'?pct:x[0]==='EOD Reports'?Math.min(100,Math.round(eod\/15*100)):x[0]==='Final Links'?Math.round(deliverables\/6*100):pct}%\"><\/span><\/div><\/div><\/div>`).join('');\r\n}\r\nfunction renderTimeline(){const counts={};tasks.forEach(t=>counts[t.day]=(counts[t.day]||0)+1);document.getElementById('timeline').innerHTML=days.map(d=>`<div class=\"day-chip ${state.dayFilter==d.d?'active':''}\" data-day=\"${d.d}\"><div class=\"date\">D${d.d}<\/div><div>${d.date.slice(8)} Sep<\/div><div class=\"count\">${counts[d.d]||0} tasks<\/div><\/div>`).join('');document.querySelectorAll('.day-chip').forEach(x=>x.onclick=()=>{state.dayFilter=x.dataset.day;document.getElementById('dayFilter').value=x.dataset.day;renderTasks();renderTimeline()});document.getElementById('todayFocusText').textContent=days.find(x=>x.date==='2026-09-15')?.title||'Current sprint'}\r\nfunction renderToday(){const todays=tasks.filter(t=>t.day===1).slice(0,5);document.getElementById('todayTasks').innerHTML=todays.map(t=>`<div style=\"display:flex;gap:8px;margin:9px 0;font-size:12px\"><span class=\"status ${statusFor(t)}\">${state.done[t.id]?'\u2713':'\u25cb'}<\/span><span>${esc(t.title)}<\/span><\/div>`).join('');document.getElementById('blockerBox').innerHTML=`<textarea id=\"blockersInput\" style=\"width:100%;min-height:100px;border:1px solid var(--line);border-radius:10px;padding:10px\" placeholder=\"Example: Waiting for Hostinger access from Jayanth...\">${esc(state.blockers||'')}<\/textarea><button class=\"btn\" style=\"margin-top:8px\" id=\"saveBlockers\">Save Blockers<\/button>`;document.getElementById('saveBlockers').onclick=()=>{state.blockers=document.getElementById('blockersInput').value;save();toast('Blockers saved')};const missing=checklistSets.submissionChecklist.filter((_,i)=>false);document.getElementById('submissionHealth').innerHTML=`<div class=\"kpi-value\" style=\"font-size:26px\">${Math.max(0,47-tasks.filter(t=>state.done[t.id]).length)}+<\/div><p style=\"color:var(--muted);font-size:12px\">project tasks \/ final evidence still to be completed. Use the tracker as the source of truth.<\/p><div class=\"alert\"><strong>Do not launch before QA.<\/strong> Your CRM and measurement path should be tested before you judge campaign performance.<\/div>`}\r\nfunction renderFilters(){const day=document.getElementById('dayFilter');day.innerHTML='<option value=\"all\">All Days<\/option>'+days.map(d=>`<option value=\"${d.d}\">Day ${d.d} \u00b7 ${d.date.slice(5)}<\/option>`).join('');day.value=state.dayFilter||'all';const cats=[...new Set(tasks.map(t=>t.cat))].sort();document.getElementById('categoryFilter').innerHTML='<option value=\"all\">All Categories<\/option>'+cats.map(c=>`<option>${esc(c)}<\/option>`).join('')}\r\nfunction renderTasks(){const q=(document.getElementById('taskSearch')?.value||'').toLowerCase();const df=document.getElementById('dayFilter')?.value||'all';const sf=document.getElementById('statusFilter')?.value||'all';const cf=document.getElementById('categoryFilter')?.value||'all';const arr=tasks.filter(t=>(df==='all'||t.day==df)&&(cf==='all'||t.cat===cf)&&(sf==='all'||(sf==='done'&&state.done[t.id])||(sf==='todo'&&!state.done[t.id]))&&(`${t.title} ${t.brief} ${t.concept} ${t.cat} ${t.deliverable}`.toLowerCase().includes(q)));document.getElementById('taskList').innerHTML=arr.length?arr.map(t=>`<div class=\"task ${state.done[t.id]?'done':''}\"><input class=\"check\" type=\"checkbox\" ${state.done[t.id]?'checked':''} data-task=\"${t.id}\"><div><div class=\"task-title\">${t.id} \u00b7 ${esc(t.title)}<\/div><div class=\"task-meta\"><span class=\"tag blue\">Day ${t.day}<\/span><span class=\"tag\">${esc(t.cat)}<\/span><span class=\"tag ${t.priority==='High'?'orange':'green'}\">${t.priority} Priority<\/span><span class=\"tag purple\">${esc(t.concept)}<\/span><\/div><div style=\"margin-top:7px;color:var(--muted);font-size:12px\">${esc(t.brief)} <strong>Output:<\/strong> ${esc(t.deliverable)}<\/div><\/div><div class=\"task-actions\"><button class=\"icon-btn\" data-open=\"${t.id}\" title=\"Open brief\">\u2197<\/button><button class=\"icon-btn\" data-concept=\"${esc(t.concept)}\" title=\"Open concept\">\u25c9<\/button><\/div><\/div>`).join(''):'<div class=\"empty\">No tasks match your filters.<\/div>';document.querySelectorAll('[data-task]').forEach(c=>c.onchange=()=>{state.done[c.dataset.task]=c.checked;save();toast(c.checked?'Task marked complete':'Task reopened')});document.querySelectorAll('[data-open]').forEach(b=>b.onclick=()=>openTask(b.dataset.open));document.querySelectorAll('[data-concept]').forEach(b=>b.onclick=()=>openConcept(b.dataset.concept))}\r\nfunction openTask(id){const t=tasks.find(x=>x.id===id);if(!t)return;document.getElementById('modalCategory').textContent=`${t.cat} \u00b7 Day ${t.day}`;document.getElementById('modalTitle').textContent=`${t.id} \u00b7 ${t.title}`;document.getElementById('modalBody').innerHTML=`<h4>What you need to do<\/h4><p>${esc(t.brief)}<\/p><h4>Required output<\/h4><div class=\"copybox\">${esc(t.deliverable)}<\/div><h4>Execution rule<\/h4><p>Do not mark this task complete until the deliverable can be shown to a trainer. Add evidence in your EOD report where useful.<\/p><h4>Related concept<\/h4><button class=\"btn\" id=\"modalConceptBtn\">Open: ${esc(t.concept)}<\/button>`;document.getElementById('modalConceptBtn').onclick=()=>openConcept(t.concept)}\r\nfunction openConcept(name){const c=concepts[name]||{tag:'Concept',why:'Use this concept as the reasoning layer behind the task.',how:[]};document.getElementById('modalCategory').textContent=c.tag;document.getElementById('modalTitle').textContent=name;document.getElementById('modalBody').innerHTML=`<h4>Why it matters<\/h4><p>${esc(c.why)}<\/p><h4>Use it like this<\/h4><ul>${c.how.map(x=>`<li>${esc(x)}<\/li>`).join('')}<\/ul>`;document.getElementById('modalBackdrop').classList.add('show')}\r\nfunction renderConcepts(){document.getElementById('conceptGrid').innerHTML=Object.entries(concepts).map(([name,c])=>`<div class=\"card\"><span class=\"tag blue\">${esc(c.tag)}<\/span><h3 style=\"margin:9px 0 4px\">${esc(name)}<\/h3><p style=\"color:var(--muted);font-size:12px\">${esc(c.why)}<\/p><button class=\"btn\" data-concept-card=\"${esc(name)}\">Learn + Execute \u2192<\/button><\/div>`).join('');document.querySelectorAll('[data-concept-card]').forEach(b=>b.onclick=()=>openConcept(b.dataset.conceptCard))}\r\nfunction renderChecklist(containerId,items,keyPrefix){document.getElementById(containerId).innerHTML=items.map((x,i)=>{const key=`${keyPrefix}${i}`;return `<label class=\"checkitem\"><input type=\"checkbox\" data-check=\"${esc(key)}\" ${state.done[key]?'checked':''}><span>${esc(x)}<\/span><\/label>`}).join('');document.querySelectorAll(`[data-check^=\"${keyPrefix}\"]`).forEach(c=>c.onchange=()=>{state.done[c.dataset.check]=c.checked;save();toast('Checklist updated')})}\r\nfunction renderFunnels(){document.getElementById('funnelStages').innerHTML=funnelStages.map((x,i)=>`<div style=\"display:flex;gap:9px;align-items:center;margin:8px 0\"><span class=\"tag blue\">${i+1}<\/span><strong style=\"font-size:12px\">${esc(x)}<\/strong><\/div>`).join('')}\r\nfunction renderEod(){document.getElementById('eodHistory').innerHTML=state.eod.length?`<div class=\"card\"><h3>EOD History<\/h3><div class=\"table-wrap\"><table class=\"table\"><thead><tr><th>Date<\/th><th>Completed<\/th><th>Blocked<\/th><th>Next<\/th><\/tr><\/thead><tbody>${state.eod.slice().reverse().map(r=>`<tr><td>${esc(r.date)}<\/td><td>${esc(r.completed).slice(0,180)}<\/td><td>${esc(r.blocked).slice(0,120)||'\u2014'}<\/td><td>${esc(r.next).slice(0,150)}<\/td><\/tr>`).join('')}<\/tbody><\/table><\/div><\/div>`:'<div class=\"empty\">No EOD reports saved yet. Add your first report after the day\u2019s work.<\/div>'}\r\nfunction renderExperiments(){document.getElementById('experimentLog').innerHTML=state.experiments.length?`<div class=\"table-wrap\"><table class=\"table\"><thead><tr><th>Hypothesis<\/th><th>KPI<\/th><th>Reason<\/th><\/tr><\/thead><tbody>${state.experiments.map(e=>`<tr><td>${esc(e.h)}<\/td><td>${esc(e.k)}<\/td><td>${esc(e.w)}<\/td><\/tr>`).join('')}<\/tbody><\/table><\/div>`:'<div class=\"empty\">No experiments logged yet.<\/div>'}\r\nfunction bindFormValues(){const t=state.team||{};['teamName','brandName','members','salesOwner','subdomain','lpUrl','projectGoal'].forEach(id=>document.getElementById(id).value=t[id]||'');const cr=state.crm||{};['qualificationRule','scoreLogic','assignmentRule','welcomeEmail'].forEach(id=>document.getElementById(id).value=cr[id]||'');const links=state.links||{};['linkPresentation','linkLanding','linkSheet','linkZoho','linkMeta','linkEvidence'].forEach(id=>document.getElementById(id).value=links[id]||'')}\r\nfunction renderResources(){document.getElementById('resourceGrid').innerHTML=resourceItems.map((r,i)=>`<div class=\"resource\"><h4>${esc(r[0])}<\/h4><p>${esc(r[1])}<\/p><button class=\"btn\" onclick=\"alert('${esc(r[2]).replace(\/'\/g,\"\\\\'\")}')\">${esc(r[2])}<\/button><\/div>`).join('')}\r\nfunction renderAll(){renderKpis();renderTimeline();renderToday();renderFilters();renderTasks();renderConcepts();renderChecklist('definitionChecklist',['Team + brand setup','Business objective + conversion goal','Competitor research evidence','CRO audit','Landing page + copy framework','Lead capture stack','A\/B test plan','Tracking architecture','Funnel + media plan','Meta campaign + creative','Central KPI sheet','Zoho CRM','Zapier workflows','Lead scoring + assignment','Optimisation playbook','Final presentation + evidence'],'def');renderChecklist('setupChecklist',checklistSets.setupChecklist,'setup');renderChecklist('croChecklist',croChecklist,'cro');renderChecklist('metaPrecheck',checklistSets.metaPrecheck,'metap');renderChecklist('metaChecklist',checklistSets.metaChecklist,'meta');renderChecklist('trackingChecklist',checklistSets.trackingChecklist,'track');renderChecklist('zapierChecklist',checklistSets.zapierChecklist,'zap');renderChecklist('crmChecklist',checklistSets.crmChecklist,'crm');renderChecklist('submissionChecklist',checklistSets.submissionChecklist,'sub');renderFunnels();document.getElementById('gaEvents').innerHTML=gaEvents.map(x=>`<div style=\"padding:7px 0;border-bottom:1px solid var(--line);font-family:ui-monospace;font-size:11px\">${esc(x)}<\/div>`).join('');document.getElementById('gtmFolders').innerHTML=gtmFolders.map(x=>`<div style=\"padding:7px 0;border-bottom:1px solid var(--line);font-size:12px\">${esc(x)}<\/div>`).join('');document.getElementById('qaProtocol').innerHTML=qaProtocol.map(x=>`<div style=\"padding:7px 0;border-bottom:1px solid var(--line);font-size:12px\">\u2713 ${esc(x)}<\/div>`).join('');renderEod();renderExperiments();bindFormValues();renderResources()}\r\n\r\n\/\/ Navigation\r\n\r\ndocument.querySelectorAll('.nav-btn').forEach(b=>b.onclick=()=>showSection(b.dataset.section));\r\ndocument.getElementById('menuBtn').onclick=()=>document.getElementById('sidebar').classList.toggle('open');\r\ndocument.getElementById('modalClose').onclick=()=>document.getElementById('modalBackdrop').classList.remove('show');\r\ndocument.getElementById('modalBackdrop').onclick=e=>{if(e.target.id==='modalBackdrop')e.currentTarget.classList.remove('show')};\r\ndocument.getElementById('taskSearch').addEventListener('input',renderTasks);document.getElementById('dayFilter').addEventListener('change',e=>{state.dayFilter=e.target.value;renderTasks();renderTimeline()});document.getElementById('statusFilter').addEventListener('change',renderTasks);document.getElementById('categoryFilter').addEventListener('change',renderTasks);\r\ndocument.getElementById('saveTeam').onclick=()=>{state.team={};['teamName','brandName','members','salesOwner','subdomain','lpUrl','projectGoal'].forEach(id=>state.team[id]=document.getElementById(id).value.trim());save();toast('Team details saved')};\r\ndocument.getElementById('saveCRMNotes').onclick=()=>{state.crm={};['qualificationRule','scoreLogic','assignmentRule','welcomeEmail'].forEach(id=>state.crm[id]=document.getElementById(id).value.trim());save();toast('CRM framework saved')};\r\ndocument.getElementById('saveLinks').onclick=()=>{state.links={};['linkPresentation','linkLanding','linkSheet','linkZoho','linkMeta','linkEvidence'].forEach(id=>state.links[id]=document.getElementById(id).value.trim());save();toast('Submission links saved')};\r\ndocument.getElementById('saveExperiment').onclick=()=>{const h=document.getElementById('hypothesis').value.trim(),k=document.getElementById('primaryKpi').value.trim(),w=document.getElementById('hypothesisWhy').value.trim();if(!h||!k){toast('Add a hypothesis and primary KPI');return}state.experiments.push({h,k,w});document.getElementById('hypothesis').value='';document.getElementById('primaryKpi').value='';document.getElementById('hypothesisWhy').value='';save();toast('Experiment logged')};\r\ndocument.getElementById('saveEod').onclick=()=>{const date=document.getElementById('eodDate').value||new Date().toISOString().slice(0,10),day=document.getElementById('eodDay').value.trim(),completed=document.getElementById('eodCompleted').value.trim(),evidence=document.getElementById('eodEvidence').value.trim(),blocked=document.getElementById('eodBlocked').value.trim(),next=document.getElementById('eodNext').value.trim();if(!completed){toast('Add what the group completed today');return}state.eod.push({date,day,completed,evidence,blocked,next});['eodCompleted','eodEvidence','eodBlocked','eodNext'].forEach(id=>document.getElementById(id).value='');save();toast('EOD report saved')};\r\ndocument.getElementById('jumpEod').onclick=()=>showSection('eod');\r\ndocument.getElementById('exportBtn').onclick=()=>{const blob=new Blob([JSON.stringify(state,null,2)],{type:'application\/json'});const a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download='PGP_Capstone_Project_Progress.json';a.click();URL.revokeObjectURL(a.href);toast('Progress exported')};\r\ndocument.getElementById('importBtn').onclick=()=>document.getElementById('fileInput').click();\r\ndocument.getElementById('fileInput').onchange=e=>{const f=e.target.files[0];if(!f)return;const r=new FileReader();r.onload=()=>{try{state=JSON.parse(r.result);save();toast('Progress imported')}catch(err){toast('Invalid progress file')}};r.readAsText(f)};\r\ndocument.getElementById('resetBtn').onclick=()=>{if(confirm('Reset all browser-saved progress for this project?')){state={...defaultState};save();toast('Project reset')}};\r\n\r\ndocument.getElementById('eodDate').value=new Date().toISOString().slice(0,10);\r\nrenderAll();\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>PGP 14 &#038; 15 | Capstone Project 3 \u2630 DN Digital NestPGP 14 &#038; 15 \u00b7 Capstone 3 Export Import Reset PROJECT WINDOW15 Sep \u2192 29 Sep 2026Meta Ads + CRO + Automation + CRM + Analytics Workspace \u2302 Dashboard \u25c8 Full Briefing \u2713 Task Tracker \u25c9 Concepts \u2699 Technical Setup \u2197 Funnel &#038; CRO [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":"","_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","_yoast_wpseo_focuskw":"","rank_math_title":"","rank_math_description":"","rank_math_focus_keyword":""},"class_list":["post-624","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/kalhonaho.online\/index.php?rest_route=\/wp\/v2\/pages\/624","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kalhonaho.online\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kalhonaho.online\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kalhonaho.online\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kalhonaho.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=624"}],"version-history":[{"count":4,"href":"https:\/\/kalhonaho.online\/index.php?rest_route=\/wp\/v2\/pages\/624\/revisions"}],"predecessor-version":[{"id":628,"href":"https:\/\/kalhonaho.online\/index.php?rest_route=\/wp\/v2\/pages\/624\/revisions\/628"}],"wp:attachment":[{"href":"https:\/\/kalhonaho.online\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}