{"id":3349,"date":"2026-08-21T07:42:47","date_gmt":"2026-08-21T07:42:47","guid":{"rendered":"https:\/\/www.bare-digital.com\/ashe\/?page_id=3349"},"modified":"2026-08-21T07:55:14","modified_gmt":"2026-08-21T07:55:14","slug":"tech-stack-os-tech-series-ep-2","status":"publish","type":"page","link":"https:\/\/www.bare-digital.com\/ashe\/tech-stack-os-tech-series-ep-2\/","title":{"rendered":"Tech Stack OS | Tech Series Ep.2"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3349\" class=\"elementor elementor-3349\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9b17175 e-con-full e-flex e-con e-parent\" data-id=\"9b17175\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-be290e4 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"be290e4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en-GB\">\r\n<!--\r\nTHE PRACTICE OWNERS PODCAST \/ ACCOUNTANT_SHE\r\nTech Series Ep.2: Tech Stack OS (Paid Member Tool)\r\nThree tabs:\r\n1. StriveX Stack: the real firm's map, read-only, visual\r\n2. Your Stack: subscriber maps their own firm, saves to localStorage\r\n3. Decision Engine: \"do I actually need this product?\" flowchart\r\n\r\n2026 BRAND NOTE: the 6-stage journey header (Attract > Manage > Serve > Comply >\r\nAdvise > Succeed) originally used 6 unrelated bright hues. The 5-colour brand\r\npalette only gives two real \"hero\" colours (plum, caramel), so instead of adding\r\nfour new off-brand colours, the 6 stage headers are a smooth interpolated\r\ngradient from plum to caramel, computed programmatically, not eyeballed. It\r\nreads as a journey rather than six unrelated colours, and stays entirely inside\r\nthe brand's own two hero hues.\r\n\r\nThe auto\/manual and go\/hold\/no status systems reuse the same muted status\r\npalette as the Post-It Note Tracker rebrand, for consistency across the tool\r\nsuite: a muted sage for \"good\/automated\/go\", caramel itself for \"watch\/manual\/\r\nhold\", and a muted terracotta for \"no\/manual gap that matters\".\r\n-->\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>Tech Stack OS | The Practice Owners Podcast<\/title>\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Fraunces:ital,opsz,wght@0,9..144,500;0,9..144,600;0,9..144,700;0,9..144,800;1,9..144,500;1,9..144,600&display=swap\" rel=\"stylesheet\">\r\n<link rel=\"stylesheet\" href=\"https:\/\/api.fontshare.com\/v2\/css?f[]=general-sans@400,500,600,700&display=swap\">\r\n<style>\r\n:root{\r\n--ivory:#F6F0E6;--ivory-2:#FBF7EF;--ivory-deep:#EFE3CC;\r\n--ink:#2B2328;--ink-soft:#6B5F63;\r\n--plum:#4A2C3B;--plum-deep:#3A2130;\r\n--caramel:#BE8A5A;--caramel-deep:#A87446;\r\n--rosegold:#C7A07A;\r\n--card:#FFFFFF;--line:#E2D8C4;--shadow:0 18px 50px -22px rgba(43,35,40,.35);--r:16px;\r\n\/* semantic status colours, shared with the Post-It Note Tracker rebrand *\/\r\n--status-good:#6B7A52;--status-good-tint:#E4E9D8;--status-good-text:#3F4A2E;\r\n--status-watch:#A87446;--status-watch-tint:#F1E4D2;--status-watch-text:#7A5220;\r\n--status-bad:#A1483C;--status-bad-tint:#F3DED8;--status-bad-text:#7A2E26;\r\n\/* 6-stage journey gradient, computed plum -> caramel *\/\r\n--stage-1:#4A2C3B;--stage-2:#613F41;--stage-3:#785247;--stage-4:#90644E;--stage-5:#A77754;--stage-6:#BE8A5A;\r\n}\r\n*{box-sizing:border-box;margin:0;padding:0}\r\nhtml{-webkit-text-size-adjust:100%}\r\nbody{\r\nfont-family:\"General Sans\",system-ui,sans-serif;background:var(--ivory);color:var(--ink);\r\nline-height:1.5;padding-top:44px;-webkit-font-smoothing:antialiased;\r\nbackground-image:radial-gradient(circle at 10% -8%,rgba(199,160,122,.14),transparent 42%),radial-gradient(circle at 98% 2%,rgba(74,44,59,.08),transparent 40%);\r\n}\r\n\/* FIXED BANNER. position:fixed (NOT sticky) on purpose: our site page builder wraps pasted\r\nHTML in overflow:hidden which breaks position:sticky. fixed + width:100% + left:0 escapes\r\nthat. The body padding-top above stops content hiding underneath. DO NOT change to sticky. *\/\r\n.topbar{position:fixed;top:0;left:0;width:100%;height:44px;z-index:1000;background:var(--plum);color:#fff;\r\ndisplay:flex;align-items:center;justify-content:space-between;padding:0 18px;box-shadow:0 2px 14px rgba(43,35,40,.28)}\r\n.topbar .brand{font-family:\"General Sans\";font-weight:700;font-size:13.5px;letter-spacing:-.01em;display:flex;align-items:center;gap:9px}\r\n.topbar .brand .bdot{width:6px;height:6px;border-radius:50%;background:var(--caramel);flex:0 0 auto}\r\n.topbar .tag{font-weight:700;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--rosegold)}\r\n \r\n.wrap{max-width:900px;margin:0 auto;padding:28px 18px 90px}\r\n.eyebrow{font-weight:700;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--caramel-deep);display:flex;align-items:center;gap:10px;flex-wrap:wrap}\r\n.eyebrow .dot{width:5px;height:5px;border-radius:50%;background:var(--ink);opacity:.3}\r\nh1{font-family:\"Fraunces\";font-weight:700;letter-spacing:-.01em;font-size:clamp(28px,5.5vw,46px);line-height:1;margin:12px 0 0;color:var(--plum)}\r\nh1 .pink{color:var(--caramel-deep);font-style:italic}\r\n.lede{font-size:clamp(14px,2.2vw,16px);color:var(--ink-soft);max-width:60ch;margin-top:12px}\r\n \r\n\/* TABS *\/\r\n.tabs{display:flex;gap:4px;margin-top:24px;background:var(--plum);border-radius:14px;padding:5px;overflow:hidden}\r\n.tab{flex:1;font-family:\"Fraunces\";font-weight:700;font-size:13px;padding:9px 10px;border-radius:10px;border:none;cursor:pointer;background:transparent;color:rgba(246,240,230,.6);transition:.14s;text-align:center;letter-spacing:.01em}\r\n.tab.active{background:var(--caramel);color:#fff}\r\n.tab:hover:not(.active){color:#fff;background:rgba(246,240,230,.12)}\r\n \r\n.panel{display:none;margin-top:4px}\r\n.panel.active{display:block}\r\n \r\n\/* STRIVEX MAP *\/\r\n.map-intro{font-size:14px;color:var(--ink-soft);margin:4px 0 18px;max-width:56ch}\r\n.stage-row{display:flex;gap:0;margin-bottom:2px;align-items:stretch}\r\n.stage-header{display:flex;gap:0;margin-bottom:8px}\r\n.stage-hcell{flex:1;text-align:center;padding:8px 4px 6px;font-family:\"General Sans\";font-weight:700;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#fff;position:relative}\r\n.stage-hcell:first-child{border-radius:10px 0 0 10px}\r\n.stage-hcell:last-child{border-radius:0 10px 10px 0}\r\n.stage-hcell::after{content:'\u25b6';position:absolute;right:-8px;top:50%;transform:translateY(-50%);font-size:10px;z-index:2;color:rgba(246,240,230,.7)}\r\n.stage-hcell:last-child::after{display:none}\r\n.sc-attract{background:var(--stage-1)}\r\n.sc-manage{background:var(--stage-2)}\r\n.sc-serve{background:var(--stage-3)}\r\n.sc-comply{background:var(--stage-4)}\r\n.sc-advise{background:var(--stage-5)}\r\n.sc-succeed{background:var(--stage-6)}\r\n \r\n.tool-col{flex:1;padding:6px;display:flex;flex-direction:column;gap:5px}\r\n.tool-chip{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:12px;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:7px;line-height:1.3}\r\n.tool-chip .chip-dot{width:8px;height:8px;border-radius:50%;flex:0 0 8px}\r\n.chip-auto{background:var(--status-good)}\r\n.chip-manual{background:var(--status-watch)}\r\n.tool-chip.tool-auto{border-left:3px solid var(--status-good)}\r\n.tool-chip.tool-manual{border-left:3px solid var(--status-watch)}\r\n.tool-chip .chip-label{font-size:10px;color:var(--ink-soft);font-weight:400;display:block;margin-top:1px}\r\n \r\n.map-legend{display:flex;gap:20px;margin:14px 0 6px;flex-wrap:wrap}\r\n.legend-item{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink-soft)}\r\n.legend-dot{width:10px;height:10px;border-radius:50%}\r\n \r\n.map-quote{background:var(--plum);border-radius:12px;padding:16px 20px;color:#fff;font-size:14px;margin-top:16px;line-height:1.55}\r\n.map-quote strong{color:var(--rosegold)}\r\n.map-quote .qs{font-size:12px;opacity:.65;margin-top:6px}\r\n \r\n\/* scroll hint *\/\r\n.scroll-hint{font-size:12px;color:var(--ink-soft);margin-bottom:8px;font-weight:600}\r\n.map-scroll{overflow-x:auto;padding-bottom:8px}\r\n.map-inner{min-width:680px}\r\n \r\n\/* YOUR STACK *\/\r\n.save-line{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--ink-soft);margin:4px 0 14px}\r\n.save-dot{width:7px;height:7px;border-radius:50%;background:var(--status-good);flex:0 0 7px}\r\n.save-line.warn .save-dot{background:var(--status-watch)}\r\n \r\n.your-stage{margin-bottom:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}\r\n.your-stage-head{background:var(--plum);padding:12px 16px;display:flex;align-items:center;justify-content:space-between}\r\n.your-stage-title{font-family:\"Fraunces\";font-weight:700;font-size:14px;color:#fff;display:flex;align-items:center;gap:10px}\r\n.stage-pill{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:3px 8px;border-radius:99px;background:rgba(246,240,230,.15);color:rgba(246,240,230,.75)}\r\n.your-stage-body{padding:14px 16px}\r\n.stage-desc{font-size:13px;color:var(--ink-soft);margin-bottom:12px}\r\n.tool-rows{display:flex;flex-direction:column;gap:8px}\r\n.tool-row{display:flex;gap:8px;align-items:center}\r\n.tool-input{flex:1;border:1.5px solid var(--line);border-radius:8px;padding:8px 10px;font-family:\"General Sans\",sans-serif;font-size:13px;color:var(--ink);background:var(--ivory-2);transition:.14s}\r\n.tool-input:focus{outline:none;border-color:var(--caramel);background:#fff}\r\n.tool-select{border:1.5px solid var(--line);border-radius:8px;padding:8px 10px;font-family:\"General Sans\",sans-serif;font-size:12px;color:var(--ink-soft);background:var(--ivory-2);cursor:pointer;transition:.14s}\r\n.tool-select:focus{outline:none;border-color:var(--caramel)}\r\n.tool-select.auto{border-color:var(--status-good);color:var(--status-good-text);background:var(--status-good-tint)}\r\n.tool-select.manual{border-color:var(--status-watch);color:var(--status-watch-text);background:var(--status-watch-tint)}\r\n.add-tool-btn{font-family:\"General Sans\",sans-serif;font-size:12px;font-weight:600;color:var(--caramel-deep);background:none;border:1.5px dashed var(--caramel);border-radius:8px;padding:7px 14px;cursor:pointer;margin-top:4px;transition:.14s}\r\n.add-tool-btn:hover{background:var(--ivory-deep)}\r\n.notes-input{width:100%;border:1.5px solid var(--line);border-radius:8px;padding:8px 10px;font-family:\"General Sans\",sans-serif;font-size:13px;color:var(--ink);background:var(--ivory-2);min-height:52px;resize:vertical;margin-top:8px;transition:.14s}\r\n.notes-input:focus{outline:none;border-color:var(--caramel);background:#fff}\r\n.notes-label{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-top:10px;margin-bottom:4px;display:block}\r\n \r\n.save-btn{font-family:\"Fraunces\";font-weight:700;font-size:15px;background:var(--plum);color:#fff;border:none;border-radius:12px;padding:12px 24px;cursor:pointer;transition:.14s;display:flex;align-items:center;gap:8px;margin-top:16px}\r\n.save-btn:hover{background:var(--plum-deep);transform:translateY(-2px)}\r\n.save-confirm{font-size:13px;color:var(--status-good-text);font-weight:600;margin-top:8px;display:none}\r\n \r\n.summary-card{background:var(--plum);border-radius:var(--r);padding:20px 22px;margin-top:16px;color:#fff}\r\n.summary-title{font-family:\"Fraunces\";font-weight:700;font-size:16px;margin-bottom:12px}\r\n.summary-stat{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid rgba(246,240,230,.14);font-size:14px}\r\n.summary-stat:last-child{border-bottom:none}\r\n.summary-val{font-family:\"Fraunces\";font-weight:700;font-size:18px}\r\n.summary-val.green{color:#B7C69E}\r\n.summary-val.amber{color:var(--rosegold)}\r\n.summary-val.red{color:#E0A99E}\r\n \r\n\/* DECISION ENGINE *\/\r\n.de-intro{font-size:14px;color:var(--ink-soft);margin:4px 0 18px;max-width:56ch}\r\n.de-product-row{display:flex;gap:10px;align-items:flex-end;margin-bottom:18px;flex-wrap:wrap}\r\n.de-label{font-weight:700;font-size:13px;display:block;margin-bottom:6px}\r\n.de-input{flex:1;min-width:180px;border:2px solid var(--line);border-radius:10px;padding:10px 14px;font-family:\"General Sans\",sans-serif;font-size:15px;font-weight:600;background:var(--card)}\r\n.de-input:focus{outline:none;border-color:var(--caramel)}\r\n.de-start-btn{font-family:\"Fraunces\";font-weight:700;font-size:14px;background:var(--caramel);color:#fff;border:none;border-radius:10px;padding:10px 20px;cursor:pointer;transition:.14s;white-space:nowrap}\r\n.de-start-btn:hover{background:var(--caramel-deep)}\r\n \r\n.question-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px;margin-bottom:10px}\r\n.q-step{font-weight:700;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--caramel-deep);margin-bottom:6px}\r\n.q-text{font-family:\"Fraunces\";font-weight:700;font-size:clamp(16px,2.8vw,20px);letter-spacing:-.01em;line-height:1.25;margin-bottom:16px;color:var(--plum)}\r\n.de-options{display:flex;flex-direction:column;gap:8px}\r\n.de-opt{background:var(--ivory-2);border:2px solid var(--line);border-radius:10px;padding:12px 16px;cursor:pointer;font-size:14px;font-weight:600;transition:.14s;text-align:left;color:var(--ink)}\r\n.de-opt:hover{border-color:var(--caramel);background:#fff}\r\n \r\n.verdict-panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:24px;margin-top:4px;display:none}\r\n.verdict-panel.show{display:block}\r\n.v-badge{display:inline-flex;align-items:center;gap:8px;border-radius:99px;padding:6px 16px;font-family:\"General Sans\";font-weight:700;font-size:11px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:14px}\r\n.v-badge.go{background:var(--status-good-tint);color:var(--status-good-text);border:2px solid var(--status-good)}\r\n.v-badge.hold{background:var(--status-watch-tint);color:var(--status-watch-text);border:2px solid var(--status-watch)}\r\n.v-badge.no{background:var(--status-bad-tint);color:var(--status-bad-text);border:2px solid var(--status-bad)}\r\n.v-badge .vb-dot{width:7px;height:7px;border-radius:50%;background:currentColor}\r\n.v-title{font-family:\"Fraunces\";font-weight:700;font-size:clamp(18px,3vw,26px);letter-spacing:-.02em;line-height:1.15;margin-bottom:10px;color:var(--plum)}\r\n.v-body{font-size:14px;color:var(--ink-soft);line-height:1.6;max-width:54ch}\r\n.v-checklist{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}\r\n.v-check-title{font-weight:700;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:10px}\r\n.v-check-item{display:flex;gap:10px;margin-bottom:8px;font-size:14px;align-items:flex-start}\r\n.v-check-icon{flex:0 0 18px;margin-top:1px}\r\n.de-restart-row{margin-top:16px;display:flex;gap:10px;flex-wrap:wrap}\r\n.btn-sm{font-family:\"Fraunces\";font-weight:700;font-size:13px;border:2px solid var(--line);background:none;color:var(--ink-soft);border-radius:10px;padding:8px 16px;cursor:pointer;transition:.14s}\r\n.btn-sm:hover{border-color:var(--ink);color:var(--ink)}\r\n \r\n@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}\r\n@media(max-width:600px){\r\n.topbar .tag{display:none}\r\n.tabs{flex-direction:column;border-radius:12px}\r\n.tab{border-radius:8px}\r\n.stage-hcell{font-size:9px;padding:6px 2px}\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"topbar\">\r\n<span class=\"brand\"><span class=\"bdot\"><\/span>The Practice Owners Podcast<\/span>\r\n<span class=\"tag\">Tech Series \u00b7 Episode 2<\/span>\r\n<\/div>\r\n \r\n<div class=\"wrap\">\r\n<div class=\"eyebrow\">Tech Series <span class=\"dot\"><\/span> Member Tool<\/div>\r\n<h1>Tech Stack <span class=\"pink\">OS<\/span><\/h1>\r\n<p class=\"lede\">The receipts, the map, and the decision engine. See the real StriveX stack, build your own, and run any new product through a no-nonsense filter before you buy it.<\/p>\r\n \r\n<div class=\"tabs\">\r\n<button class=\"tab active\" onclick=\"switchTab('strivex',this)\">StriveX's Stack<\/button>\r\n<button class=\"tab\" onclick=\"switchTab('yours',this)\">Your Stack<\/button>\r\n<button class=\"tab\" onclick=\"switchTab('engine',this)\">Should I Buy It?<\/button>\r\n<\/div>\r\n \r\n<!-- ====== TAB 1: STRIVEX MAP ====== -->\r\n<div class=\"panel active\" id=\"tab-strivex\">\r\n<p class=\"map-intro\">Rachel and James's real stack, mapped left to right through the six-stage client journey. Green connections are automated. Amber are manual. No one's paying us to say any of it.<\/p>\r\n \r\n<div class=\"map-legend\">\r\n<div class=\"legend-item\"><div class=\"legend-dot\" style=\"background:var(--status-good)\"><\/div>Automated connection<\/div>\r\n<div class=\"legend-item\"><div class=\"legend-dot\" style=\"background:var(--status-watch)\"><\/div>Manual connection \/ step<\/div>\r\n<div class=\"legend-item\"><div class=\"legend-dot\" style=\"background:var(--line)\"><\/div>Tool sits at this stage<\/div>\r\n<\/div>\r\n \r\n<p class=\"scroll-hint\">Scroll right on mobile \u2192<\/p>\r\n<div class=\"map-scroll\">\r\n<div class=\"map-inner\">\r\n<div class=\"stage-header\">\r\n<div class=\"stage-hcell sc-attract\">Attract<\/div>\r\n<div class=\"stage-hcell sc-manage\">Manage<\/div>\r\n<div class=\"stage-hcell sc-serve\">Serve<\/div>\r\n<div class=\"stage-hcell sc-comply\">Comply<\/div>\r\n<div class=\"stage-hcell sc-advise\">Advise<\/div>\r\n<div class=\"stage-hcell sc-succeed\">Succeed<\/div>\r\n<\/div>\r\n \r\n<!-- CLIENT-FACING ROW -->\r\n<div style=\"font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:4px;\">For the client<\/div>\r\n<div class=\"stage-row\">\r\n<div class=\"tool-col\">\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Instagram \/ TikTok \/ YouTube<\/strong><span class=\"chip-label\">Content creation &amp; SEO<\/span><\/span><\/div>\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>ManyChat<\/strong><span class=\"chip-label\">DM automation \u2192 leads<\/span><\/span><\/div>\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Strively<\/strong><span class=\"chip-label\">Central lead capture<\/span><\/span><\/div>\r\n<\/div>\r\n<div class=\"tool-col\">\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Strively<\/strong><span class=\"chip-label\">Lead nurture, proposals, onboarding start<\/span><\/span><\/div>\r\n<div class=\"tool-chip tool-manual\"><span class=\"chip-dot chip-manual\"><\/span><span><strong>Bright Manager<\/strong><span class=\"chip-label\">Manual handover from Strively (no Zapier yet)<\/span><\/span><\/div>\r\n<\/div>\r\n<div class=\"tool-col\">\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Xero (primary)<\/strong><span class=\"chip-label\">Client bookkeeping<\/span><\/span><\/div>\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>QuickBooks<\/strong><span class=\"chip-label\">Secondary bookkeeping<\/span><\/span><\/div>\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>FreeAgent<\/strong><span class=\"chip-label\">Some clients<\/span><\/span><\/div>\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Dext \/ Hubdoc<\/strong><span class=\"chip-label\">Receipt capture (where needed)<\/span><\/span><\/div>\r\n<\/div>\r\n<div class=\"tool-col\">\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>TaxCalc<\/strong><span class=\"chip-label\">CT, SA, accounts, chosen for audit module<\/span><\/span><\/div>\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Bright Portal<\/strong><span class=\"chip-label\">Client portal \/ eSigning<\/span><\/span><\/div>\r\n<\/div>\r\n<div class=\"tool-col\">\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Syft<\/strong><span class=\"chip-label\">Cross-company &amp; group reporting (internal use + select clients)<\/span><\/span><\/div>\r\n<div class=\"tool-chip tool-manual\"><span class=\"chip-dot chip-manual\"><\/span><span><strong>Excel + Word<\/strong><span class=\"chip-label\">Management accounts, R&amp;D claims, KPI reports<\/span><\/span><\/div>\r\n<\/div>\r\n<div class=\"tool-col\">\r\n<div class=\"tool-chip tool-manual\"><span class=\"chip-dot chip-manual\"><\/span><span><strong>Billing via CRM<\/strong><span class=\"chip-label\">Raised when work completed<\/span><\/span><\/div>\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Xero<\/strong><span class=\"chip-label\">Internal bookkeeping<\/span><\/span><\/div>\r\n<\/div>\r\n<\/div>\r\n \r\n<!-- FIRM-FACING ROW -->\r\n<div style=\"font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin:16px 0 4px;\">For the firm<\/div>\r\n<div class=\"stage-row\">\r\n<div class=\"tool-col\">\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Meta Suite<\/strong><span class=\"chip-label\">Analytics &amp; ad management<\/span><\/span><\/div>\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Fathom<\/strong><span class=\"chip-label\">Meeting recordings &amp; transcripts<\/span><\/span><\/div>\r\n<\/div>\r\n<div class=\"tool-col\">\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Bright Manager<\/strong><span class=\"chip-label\">CRM, workflow, fee projection, red flag system<\/span><\/span><\/div>\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Fathom<\/strong><span class=\"chip-label\">Prospect call recordings<\/span><\/span><\/div>\r\n<\/div>\r\n<div class=\"tool-col\">\r\n<div class=\"tool-chip tool-manual\"><span class=\"chip-dot chip-manual\"><\/span><span><strong>Excel capacity planner<\/strong><span class=\"chip-label\">Year-end team (5\u20138 jobs per month per person)<\/span><\/span><\/div>\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Bright Manager tasks<\/strong><span class=\"chip-label\">Business services team workflow<\/span><\/span><\/div>\r\n<\/div>\r\n<div class=\"tool-col\">\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Internal franchise<\/strong><span class=\"chip-label\">Process WPs, templates, checklists, the \"Gordon Ramsay\" layer<\/span><\/span><\/div>\r\n<\/div>\r\n<div class=\"tool-col\">\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Syft<\/strong><span class=\"chip-label\">Automated manager reports (no finance person needed)<\/span><\/span><\/div>\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>ChatGPT \/ Claude<\/strong><span class=\"chip-label\">Contracts, org design, tax Q&amp;A with clients, managers<\/span><\/span><\/div>\r\n<\/div>\r\n<div class=\"tool-col\">\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>Microsoft 365<\/strong><span class=\"chip-label\">Email, Office apps, SharePoint, most underused per head<\/span><\/span><\/div>\r\n<div class=\"tool-chip tool-auto\"><span class=\"chip-dot chip-auto\"><\/span><span><strong>IT managed service<\/strong><span class=\"chip-label\">Outsourced after 7 years of James doing it<\/span><\/span><\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"map-quote\">\r\nThe average IRIS customer uses <strong>less than 20%<\/strong> of what they pay for. Two firms can use the same product and have totally different experiences. The difference isn't the tool. It's the setup, the ownership, and the willingness to be annoying about asking what else it can do.\r\n<div class=\"qs\">Rachel &amp; James Harris, Practice Owners Podcast, Tech Series Ep.2<\/div>\r\n<\/div>\r\n \r\n<div style=\"margin-top:16px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px\">\r\n<div style=\"font-family:'Fraunces';font-weight:700;font-size:16px;margin-bottom:12px;color:var(--plum)\">The real numbers (April 2025\u2013March 2026)<\/div>\r\n<div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px\">\r\n<div style=\"background:var(--ivory-2);border-radius:10px;padding:12px 14px\">\r\n<div style=\"font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)\">Total annual spend<\/div>\r\n<div style=\"font-family:'Fraunces';font-weight:700;font-size:28px;color:var(--caramel-deep);margin-top:4px\">\u00a325k<\/div>\r\n<\/div>\r\n<div style=\"background:var(--ivory-2);border-radius:10px;padding:12px 14px\">\r\n<div style=\"font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)\">Per head\/month<\/div>\r\n<div style=\"font-family:'Fraunces';font-weight:700;font-size:28px;color:var(--plum);margin-top:4px\">\u00a380<\/div>\r\n<\/div>\r\n<div style=\"background:var(--ivory-2);border-radius:10px;padding:12px 14px\">\r\n<div style=\"font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)\">Team size<\/div>\r\n<div style=\"font-family:'Fraunces';font-weight:700;font-size:28px;color:var(--ink);margin-top:4px\">5<\/div>\r\n<\/div>\r\n<div style=\"background:var(--ivory-2);border-radius:10px;padding:12px 14px\">\r\n<div style=\"font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)\">Biggest cost<\/div>\r\n<div style=\"font-family:'Fraunces';font-weight:700;font-size:18px;color:var(--ink);margin-top:4px;line-height:1.1\">Microsoft<br>+ Bright<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n \r\n<!-- ====== TAB 2: YOUR STACK ====== -->\r\n<div class=\"panel\" id=\"tab-yours\">\r\n<div class=\"save-line\" id=\"saveLine\"><div class=\"save-dot\" id=\"saveDot\"><\/div><span id=\"saveText\">Loading...<\/span><\/div>\r\n \r\n<div id=\"yourStages\"><\/div>\r\n \r\n<div style=\"display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px\">\r\n<button class=\"save-btn\" onclick=\"saveStack()\">Save my stack \u2713<\/button>\r\n<button class=\"btn-sm\" onclick=\"clearStack()\" style=\"border-color:var(--status-bad);color:var(--status-bad)\">Clear &amp; start again<\/button>\r\n<\/div>\r\n<div class=\"save-confirm\" id=\"saveConfirm\">Saved. It will be here when you come back.<\/div>\r\n \r\n<div class=\"summary-card\" id=\"stackSummary\" style=\"display:none\">\r\n<div class=\"summary-title\">Your stack at a glance<\/div>\r\n<div id=\"summaryRows\"><\/div>\r\n<\/div>\r\n<\/div>\r\n \r\n<!-- ====== TAB 3: DECISION ENGINE ====== -->\r\n<div class=\"panel\" id=\"tab-engine\">\r\n<p class=\"de-intro\">Thinking about a new product? Run it through this before you buy. Honest questions, no fluff, a clear verdict at the end.<\/p>\r\n \r\n<div class=\"de-product-row\">\r\n<div style=\"flex:1;min-width:180px\">\r\n<label class=\"de-label\" for=\"productName\">What's the product called?<\/label>\r\n<input class=\"de-input\" id=\"productName\" type=\"text\" placeholder=\"e.g. Ignition, Carbon, Karbon...\">\r\n<\/div>\r\n<button class=\"de-start-btn\" onclick=\"startEngine()\">Start \u2192<\/button>\r\n<\/div>\r\n \r\n<div id=\"engineQuestions\" style=\"display:none\"><\/div>\r\n<div class=\"verdict-panel\" id=\"engineVerdict\"><\/div>\r\n<\/div>\r\n \r\n<\/div>\r\n \r\n<script>\r\n\/* ---- STORAGE SHIM ---- *\/\r\nconst store=(()=>{\r\nlet mem={},ok=false;\r\ntry{const k=\"__t\";localStorage.setItem(k,\"1\");localStorage.removeItem(k);ok=true;}catch(e){ok=false;}\r\nreturn{persists:ok,\r\nget(k){try{return ok?localStorage.getItem(k):(k in mem?mem[k]:null);}catch(e){return(k in mem)?mem[k]:null;}},\r\nset(k,v){try{if(ok)localStorage.setItem(k,v);else mem[k]=v;}catch(e){mem[k]=v;}}};\r\n})();\r\nfunction readJSON(k,fb){try{const v=store.get(k);return v?JSON.parse(v):fb;}catch(e){return fb;}}\r\nfunction writeJSON(k,v){store.set(k,JSON.stringify(v));}\r\n \r\n\/* ---- TABS ---- *\/\r\nfunction switchTab(id,btn){\r\ndocument.querySelectorAll(\".panel\").forEach(p=>p.classList.remove(\"active\"));\r\ndocument.querySelectorAll(\".tab\").forEach(t=>t.classList.remove(\"active\"));\r\ndocument.getElementById(\"tab-\"+id).classList.add(\"active\");\r\nbtn.classList.add(\"active\");\r\n}\r\n \r\n\/* ---- YOUR STACK ---- *\/\r\nconst stages=[\r\n{id:\"attract\",label:\"Attract\",desc:\"How prospects find you and how you capture their interest. Think: website, social, SEO, lead capture, ManyChat-style automations.\"},\r\n{id:\"manage\",label:\"Manage\",desc:\"Your CRM, onboarding, proposals, engagement letters, AML checks. The admin that turns a prospect into a client.\"},\r\n{id:\"serve\",label:\"Serve\",desc:\"Bookkeeping, VAT, payroll, receipt capture. The day-to-day delivery for clients.\"},\r\n{id:\"comply\",label:\"Comply\",desc:\"Year-end accounts, corporation tax, self assessment, audit, statutory filings.\"},\r\n{id:\"advise\",label:\"Advise\",desc:\"Management accounts, forecasting, R&D, advisory templates, client reporting dashboards.\"},\r\n{id:\"succeed\",label:\"Succeed\",desc:\"Billing, invoicing, time recording, internal bookkeeping, IT, Microsoft. Everything that runs the firm itself.\"},\r\n];\r\n \r\nlet stackData=readJSON(\"stack_data\",{});\r\n \r\nfunction buildYourStack(){\r\nconst container=document.getElementById(\"yourStages\");\r\ncontainer.innerHTML=\"\";\r\nstages.forEach(stage=>{\r\nconst saved=stackData[stage.id]||{tools:[{name:\"\",type:\"auto\"}],notes:\"\"};\r\nconst div=document.createElement(\"div\");\r\ndiv.className=\"your-stage\";\r\ndiv.id=\"stage-\"+stage.id;\r\ndiv.innerHTML=`\r\n<div class=\"your-stage-head\">\r\n<div class=\"your-stage-title\">${stage.label}<span class=\"stage-pill\">Stage<\/span><\/div>\r\n<\/div>\r\n<div class=\"your-stage-body\">\r\n<div class=\"stage-desc\">${stage.desc}<\/div>\r\n<div class=\"tool-rows\" id=\"rows-${stage.id}\"><\/div>\r\n<button class=\"add-tool-btn\" onclick=\"addToolRow('${stage.id}')\">+ Add tool<\/button>\r\n<span class=\"notes-label\">Notes \/ gaps \/ things to fix<\/span>\r\n<textarea class=\"notes-input\" id=\"notes-${stage.id}\" placeholder=\"e.g. We're doing this manually and it's killing us...\">${saved.notes||\"\"}<\/textarea>\r\n<\/div>`;\r\ncontainer.appendChild(div);\r\nconst tools=saved.tools&&saved.tools.length?saved.tools:[{name:\"\",type:\"auto\"}];\r\ntools.forEach((t,i)=>addToolRow(stage.id,t.name,t.type,false));\r\nif(!tools.length)addToolRow(stage.id,\"\",\"auto\",false);\r\n});\r\n}\r\n \r\nfunction addToolRow(stageId,name=\"\",type=\"auto\",focus=true){\r\nconst rows=document.getElementById(\"rows-\"+stageId);\r\nconst div=document.createElement(\"div\");div.className=\"tool-row\";\r\ndiv.innerHTML=`<input class=\"tool-input\" type=\"text\" placeholder=\"Tool name (e.g. Xero, Bright Manager...)\" value=\"${name.replace(\/\"\/g,'&quot;')}\">\r\n<select class=\"tool-select ${type}\" onchange=\"this.className='tool-select '+this.value\">\r\n<option value=\"auto\"${type===\"auto\"?\" selected\":\"\"}>\ud83d\udfe2 Auto<\/option>\r\n<option value=\"manual\"${type===\"manual\"?\" selected\":\"\"}>\ud83d\udfe1 Manual<\/option>\r\n<\/select>\r\n<button style=\"background:none;border:none;cursor:pointer;font-size:16px;color:var(--ink-soft);padding:4px\" onclick=\"this.closest('.tool-row').remove()\">\u2715<\/button>`;\r\nrows.appendChild(div);\r\nif(focus){const inp=div.querySelector(\"input\");try{inp.focus();}catch(e){}}\r\n}\r\n \r\nfunction collectStack(){\r\nconst data={};\r\nstages.forEach(s=>{\r\nconst rows=[...document.querySelectorAll(`#rows-${s.id} .tool-row`)];\r\nconst tools=rows.map(r=>({name:r.querySelector(\"input\").value.trim(),type:r.querySelector(\"select\").value})).filter(t=>t.name);\r\nconst notes=document.getElementById(\"notes-\"+s.id).value.trim();\r\ndata[s.id]={tools,notes};\r\n});\r\nreturn data;\r\n}\r\n \r\nfunction saveStack(){\r\nstackData=collectStack();\r\nwriteJSON(\"stack_data\",stackData);\r\nconst conf=document.getElementById(\"saveConfirm\");\r\nconf.style.display=\"block\";\r\nupdateSummary();\r\nsetTimeout(()=>{conf.style.display=\"none\";},3000);\r\n}\r\n \r\nfunction clearStack(){\r\nif(!confirm(\"Clear your entire stack? This can't be undone.\"))return;\r\nstackData={};writeJSON(\"stack_data\",{});\r\nbuildYourStack();updateSummary();\r\n}\r\n \r\nfunction updateSummary(){\r\nconst d=collectStack();\r\nlet total=0,auto=0,manual=0;\r\nstages.forEach(s=>{total+=d[s.id].tools.length;d[s.id].tools.forEach(t=>{if(t.type===\"auto\")auto++;else manual++;});});\r\nconst card=document.getElementById(\"stackSummary\");\r\nif(total===0){card.style.display=\"none\";return;}\r\ncard.style.display=\"block\";\r\nconst autoColor=auto>manual?\"green\":auto===manual?\"amber\":\"amber\";\r\ndocument.getElementById(\"summaryRows\").innerHTML=`\r\n<div class=\"summary-stat\"><span>Total tools mapped<\/span><span class=\"summary-val\">${total}<\/span><\/div>\r\n<div class=\"summary-stat\"><span>Automated connections<\/span><span class=\"summary-val green\">${auto}<\/span><\/div>\r\n<div class=\"summary-stat\"><span>Manual connections<\/span><span class=\"summary-val ${manual>auto?\"red\":\"amber\"}\">${manual}<\/span><\/div>\r\n<div class=\"summary-stat\"><span>Stages with notes\/gaps<\/span><span class=\"summary-val amber\">${stages.filter(s=>d[s.id].notes).length}<\/span><\/div>`;\r\n}\r\n \r\nfunction initSaveLine(){\r\nconst line=document.getElementById(\"saveLine\");\r\nconst dot=document.getElementById(\"saveDot\");\r\nconst text=document.getElementById(\"saveText\");\r\nif(store.persists){dot.style.background=\"var(--status-good)\";text.textContent=\"Your stack saves automatically in this browser.\";}\r\nelse{line.classList.add(\"warn\");dot.style.background=\"var(--status-watch)\";text.textContent=\"Preview mode: your work won't save here, but it will on the live site.\";}\r\n}\r\n \r\n\/* ---- DECISION ENGINE ---- *\/\r\nconst questions=[\r\n{id:\"problem\",text:\"Can you name the exact problem this product solves for your firm, in one sentence?\",opts:[\r\n{text:\"Yes, I can describe it precisely\",val:\"yes\"},\r\n{text:\"Sort of, it feels like it will help but I can't pin it down\",val:\"maybe\"},\r\n{text:\"Not really, it just looks good \/ someone recommended it\",val:\"no\"}\r\n]},\r\n{id:\"existing\",text:\"Could any of the tools you already pay for do this, if you used them properly?\",opts:[\r\n{text:\"No, I've checked and this genuinely fills a gap\",val:\"no\"},\r\n{text:\"Maybe, I haven't fully interrogated what I already have\",val:\"maybe\"},\r\n{text:\"Probably yes, if I'm honest with myself\",val:\"yes\"}\r\n]},\r\n{id:\"process\",text:\"Do you have a clear, working process for this area already, that software would make faster or better?\",opts:[\r\n{text:\"Yes, the process works, this would automate or improve it\",val:\"yes\"},\r\n{text:\"The process is patchy, this might help fix it\",val:\"maybe\"},\r\n{text:\"No, we're hoping the software will create the process for us\",val:\"no\"}\r\n]},\r\n{id:\"cost\",text:\"Do you know the per-team-member monthly cost of adding this, and does it feel justified?\",opts:[\r\n{text:\"Yes, I've calculated it and it feels right\",val:\"yes\"},\r\n{text:\"I know the headline cost but not per head\",val:\"maybe\"},\r\n{text:\"I haven't worked out the numbers at all\",val:\"no\"}\r\n]},\r\n{id:\"connected\",text:\"Will this tool connect to the rest of your stack, or will it create another manual handover?\",opts:[\r\n{text:\"It connects, I've checked the integrations\",val:\"yes\"},\r\n{text:\"I think it does, but I haven't verified\",val:\"maybe\"},\r\n{text:\"Probably not, it will be another silo\",val:\"no\"}\r\n]},\r\n];\r\n \r\nlet engineAnswers={};\r\nlet currentQ=0;\r\nlet productName=\"\";\r\n \r\nfunction startEngine(){\r\nproductName=document.getElementById(\"productName\").value.trim()||\"this product\";\r\nengineAnswers={};currentQ=0;\r\ndocument.getElementById(\"engineVerdict\").classList.remove(\"show\");\r\ndocument.getElementById(\"engineVerdict\").innerHTML=\"\";\r\nshowQuestion(0);\r\ndocument.getElementById(\"engineQuestions\").style.display=\"block\";\r\n}\r\n \r\nfunction showQuestion(idx){\r\nconst container=document.getElementById(\"engineQuestions\");\r\ncontainer.innerHTML=\"\";\r\nif(idx>=questions.length){showVerdict();return;}\r\nconst q=questions[idx];\r\nconst card=document.createElement(\"div\");card.className=\"question-card\";\r\ncard.innerHTML=`<div class=\"q-step\">Question ${idx+1} of ${questions.length} \u00b7 ${productName}<\/div>\r\n<div class=\"q-text\">${q.text}<\/div>\r\n<div class=\"de-options\">${q.opts.map(o=>`<button class=\"de-opt\" onclick=\"answer('${q.id}','${o.val}')\">${o.text}<\/button>`).join(\"\")}<\/div>`;\r\ncontainer.appendChild(card);\r\ntry{card.scrollIntoView({behavior:\"smooth\",block:\"nearest\"});}catch(e){}\r\n}\r\n \r\nfunction answer(qId,val){\r\nengineAnswers[qId]=val;\r\ncurrentQ++;\r\nshowQuestion(currentQ);\r\n}\r\n \r\nfunction showVerdict(){\r\ndocument.getElementById(\"engineQuestions\").innerHTML=\"\";\r\nconst yeses=Object.values(engineAnswers).filter(v=>v===\"yes\").length;\r\nconst nos=Object.values(engineAnswers).filter(v=>v===\"no\").length;\r\nconst maybes=Object.values(engineAnswers).filter(v=>v===\"maybe\").length;\r\n \r\nlet badge,badgeClass,title,body,checks;\r\n \r\nif(yeses>=4){\r\nbadgeClass=\"go\";badge=\"Go, buy it\";\r\ntitle=`${productName} sounds like a genuine fit.`;\r\nbody=\"You've got a clear problem, you've checked your existing tools, the process is ready, the cost makes sense, and it connects. That's the right box to tick. Get the trial, set a 60-day review date, and measure it properly.\";\r\nchecks=[\r\n\"\u2705 Start a trial, don't commit to annual until 60 days in\",\r\n\"\u2705 Set one metric you'll use to judge whether it's working\",\r\n\"\u2705 Assign one person to own the setup and onboarding\",\r\n\"\u2705 Review again in 60 days. If it hasn't saved time or improved accuracy, cut it.\"\r\n];\r\n} else if(nos>=3){\r\nbadgeClass=\"no\";badge=\"Not yet\";\r\ntitle=`Pause on ${productName}.`;\r\nbody=\"Something doesn't add up. Either the problem isn't clear enough, your existing tools might already solve it, or you're hoping software will fix a process problem. None of those are good reasons to spend. Come back to this when the process is cleaner.\";\r\nchecks=[\r\n\"\ud83d\udd34 Write down the problem in one sentence. If you can't, you're not ready.\",\r\n\"\ud83d\udd34 Spend 30 minutes properly interrogating what you already pay for.\",\r\n\"\ud83d\udd34 If the process is broken, fix the process first. Software on a broken process breaks faster.\",\r\n\"\ud83d\udd34 Revisit this in 60 days once the fundamentals are clearer.\"\r\n];\r\n} else {\r\nbadgeClass=\"hold\";badge=\"Hold, do the homework first\";\r\ntitle=`${productName} might be right, but you're not sure yet.`;\r\nbody=\"There are too many maybes here to commit. That usually means you haven't fully diagnosed the problem, or you haven't looked hard enough at what you already have. Do those two things first, then run this again.\";\r\nchecks=[\r\n\"\ud83d\udfe1 Can you describe the exact problem in one sentence? Write it down.\",\r\n\"\ud83d\udfe1 Ask your current CRM or PM tool provider if it can do what you need.\",\r\n\"\ud83d\udfe1 Get a demo and ask specifically: 'How does this connect to [your CRM]?'\",\r\n\"\ud83d\udfe1 Calculate the per-head monthly cost before you book the trial.\"\r\n];\r\n}\r\n \r\nconst panel=document.getElementById(\"engineVerdict\");\r\npanel.innerHTML=`\r\n<div class=\"v-badge ${badgeClass}\"><span class=\"vb-dot\"><\/span>${badge}<\/div>\r\n<div class=\"v-title\">${title}<\/div>\r\n<div class=\"v-body\">${body}<\/div>\r\n<div class=\"v-checklist\">\r\n<div class=\"v-check-title\">Before you decide<\/div>\r\n${checks.map(c=>`<div class=\"v-check-item\"><span class=\"v-check-icon\">${c.slice(0,2)}<\/span><span>${c.slice(2)}<\/span><\/div>`).join(\"\")}\r\n<\/div>\r\n<div class=\"de-restart-row\">\r\n<button class=\"btn-sm\" onclick=\"startEngine()\">Run again for ${productName}<\/button>\r\n<button class=\"btn-sm\" onclick=\"resetEngine()\">Try a different product<\/button>\r\n<\/div>`;\r\npanel.classList.add(\"show\");\r\ntry{panel.scrollIntoView({behavior:\"smooth\",block:\"start\"});}catch(e){}\r\n}\r\n \r\nfunction resetEngine(){\r\ndocument.getElementById(\"productName\").value=\"\";\r\ndocument.getElementById(\"engineQuestions\").style.display=\"none\";\r\ndocument.getElementById(\"engineVerdict\").classList.remove(\"show\");\r\nengineAnswers={};currentQ=0;\r\ntry{document.getElementById(\"productName\").scrollIntoView({behavior:\"smooth\",block:\"nearest\"});}catch(e){}\r\n}\r\n \r\n\/* ---- INIT ---- *\/\r\ninitSaveLine();\r\nbuildYourStack();\r\nupdateSummary();\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Tech Stack OS | The Practice Owners Podcast The Practice Owners Podcast Tech Series \u00b7 Episode 2 Tech Series Member Tool Tech Stack OS The receipts, the map, and the decision engine. See the real StriveX stack, build your own, and run any new product through a no-nonsense filter before you buy it. StriveX&#8217;s Stack [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"_eb_attr":"","_templately_pack_id":"","_templately_imported_at":"","_templately_source":"","_templately_import_session_id":"","footnotes":""},"class_list":["post-3349","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.bare-digital.com\/ashe\/wp-json\/wp\/v2\/pages\/3349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bare-digital.com\/ashe\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.bare-digital.com\/ashe\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.bare-digital.com\/ashe\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bare-digital.com\/ashe\/wp-json\/wp\/v2\/comments?post=3349"}],"version-history":[{"count":4,"href":"https:\/\/www.bare-digital.com\/ashe\/wp-json\/wp\/v2\/pages\/3349\/revisions"}],"predecessor-version":[{"id":3361,"href":"https:\/\/www.bare-digital.com\/ashe\/wp-json\/wp\/v2\/pages\/3349\/revisions\/3361"}],"wp:attachment":[{"href":"https:\/\/www.bare-digital.com\/ashe\/wp-json\/wp\/v2\/media?parent=3349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}