{"id":3355,"date":"2026-08-21T07:44:17","date_gmt":"2026-08-21T07:44:17","guid":{"rendered":"https:\/\/www.bare-digital.com\/ashe\/?page_id=3355"},"modified":"2026-08-21T07:58:45","modified_gmt":"2026-08-21T07:58:45","slug":"tech-stack-health-scorecard-tech-series-ep-2","status":"publish","type":"page","link":"https:\/\/www.bare-digital.com\/ashe\/tech-stack-health-scorecard-tech-series-ep-2\/","title":{"rendered":"Tech Stack Health Scorecard | Tech Series Ep.2"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3355\" class=\"elementor elementor-3355\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3b6a82c e-con-full e-flex e-con e-parent\" data-id=\"3b6a82c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8ff3a8f elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"8ff3a8f\" 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 Health Scorecard\r\nRachel name-checks this tool in the episode as coming in the show notes.\r\nIt walks subscribers through 5 scored dimensions and delivers a colour-coded verdict.\r\n\r\n2026 BRAND NOTE: this tool reuses the exact same muted status-colour vocabulary\r\nas the other two Tech Series tools (Tech Stack OS, Post-It Note Tracker rebrands)\r\nfor consistency across the tool suite: a muted sage for the \"green\/good\" verdict,\r\ncaramel itself for \"amber\/watch\", and a muted terracotta for \"red\/needs work\".\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 Health Scorecard | 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 other Tech Series tool rebrands *\/\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}\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:780px;margin:0 auto;padding:28px 18px 90px}\r\n \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(30px,6vw,50px);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:58ch;margin-top:14px}\r\n \r\n\/* progress bar *\/\r\n.progress-wrap{margin-top:24px;display:flex;align-items:center;gap:14px}\r\n.progress-bar{flex:1;height:6px;background:var(--line);border-radius:99px;overflow:hidden}\r\n.progress-fill{height:100%;background:var(--caramel);border-radius:99px;transition:width .4s cubic-bezier(.4,0,.2,1)}\r\n.progress-label{font-weight:700;font-size:12px;color:var(--ink-soft);white-space:nowrap}\r\n \r\n\/* section card *\/\r\n.section-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);margin-top:18px;padding:clamp(18px,3vw,28px);display:none}\r\n.section-card.active{display:block}\r\n.section-num{font-weight:700;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--caramel-deep)}\r\n.section-title{font-family:\"Fraunces\";font-weight:700;font-size:clamp(18px,3vw,24px);letter-spacing:-.01em;margin-top:4px;color:var(--plum)}\r\n.section-sub{font-size:14px;color:var(--ink-soft);margin-top:6px;max-width:52ch}\r\n \r\n\/* questions *\/\r\n.q-block{margin-top:22px;border-top:1px solid var(--line);padding-top:18px}\r\n.q-block:first-of-type{border-top:none;padding-top:0;margin-top:16px}\r\n.q-label{font-weight:600;font-size:14px;margin-bottom:10px}\r\n.options{display:flex;flex-direction:column;gap:8px}\r\n.option{display:flex;align-items:flex-start;gap:12px;background:var(--ivory-2);border:2px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;transition:.14s}\r\n.option:hover{border-color:var(--caramel);background:#fff}\r\n.option.selected{border-color:var(--plum);background:#fff}\r\n.option input[type=radio]{display:none}\r\n.option-dot{width:18px;height:18px;border-radius:50%;border:2px solid var(--line);flex:0 0 18px;margin-top:1px;display:flex;align-items:center;justify-content:center;transition:.14s}\r\n.option.selected .option-dot{border-color:var(--plum);background:var(--plum)}\r\n.option.selected .option-dot::after{content:'';width:6px;height:6px;border-radius:50%;background:#fff}\r\n.option-text{font-size:14px;line-height:1.4;color:var(--ink)}\r\n \r\n\/* nav buttons *\/\r\n.nav{display:flex;justify-content:space-between;align-items:center;margin-top:26px;gap:12px;flex-wrap:wrap}\r\n.btn{font-family:\"Fraunces\";font-weight:700;font-size:15px;border:none;border-radius:12px;padding:12px 22px;cursor:pointer;transition:.14s;display:inline-flex;align-items:center;gap:8px}\r\n.btn-primary{background:var(--plum);color:#fff}\r\n.btn-primary:hover{background:var(--plum-deep);transform:translateY(-2px)}\r\n.btn-ghost{background:transparent;color:var(--ink-soft);border:2px solid var(--line)}\r\n.btn-ghost:hover{border-color:var(--ink);color:var(--ink)}\r\n.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}\r\n \r\n\/* result panel *\/\r\n.result-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);margin-top:18px;padding:clamp(22px,4vw,36px);display:none}\r\n.result-card.active{display:block}\r\n.verdict-stamp{display:inline-flex;align-items:center;gap:10px;border-radius:99px;padding:8px 18px;font-family:\"General Sans\";font-weight:700;font-size:13px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:18px}\r\n.verdict-stamp.green{background:var(--status-good-tint);color:var(--status-good-text);border:2px solid var(--status-good)}\r\n.verdict-stamp.amber{background:var(--status-watch-tint);color:var(--status-watch-text);border:2px solid var(--status-watch)}\r\n.verdict-stamp.red{background:var(--status-bad-tint);color:var(--status-bad-text);border:2px solid var(--status-bad)}\r\n.verdict-stamp .vdot{width:8px;height:8px;border-radius:50%;background:currentColor}\r\n.result-headline{font-family:\"Fraunces\";font-weight:700;font-size:clamp(22px,4vw,32px);letter-spacing:-.02em;line-height:1.15;margin-bottom:10px;color:var(--plum)}\r\n.result-body{font-size:15px;color:var(--ink-soft);max-width:56ch;line-height:1.6}\r\n.score-bar-wrap{margin:24px 0 0}\r\n.score-label{font-weight:700;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:12px}\r\n.score-row{display:flex;align-items:center;gap:12px;margin-bottom:10px}\r\n.score-row-label{font-size:13px;font-weight:600;width:140px;flex:0 0 140px;color:var(--ink)}\r\n.score-row-bar{flex:1;height:8px;background:var(--line);border-radius:99px;overflow:hidden}\r\n.score-row-fill{height:100%;border-radius:99px;transition:width .6s cubic-bezier(.4,0,.2,1)}\r\n.score-row-num{font-size:12px;font-weight:700;width:28px;text-align:right;flex:0 0 28px}\r\n.moves-wrap{margin-top:26px;border-top:1px solid var(--line);padding-top:22px}\r\n.moves-title{font-family:\"Fraunces\";font-weight:700;font-size:16px;margin-bottom:14px;color:var(--plum)}\r\n.move{display:flex;gap:12px;margin-bottom:14px}\r\n.move-num{width:26px;height:26px;border-radius:50%;background:var(--plum);color:#fff;font-family:\"Fraunces\";font-weight:700;font-size:12px;display:flex;align-items:center;justify-content:center;flex:0 0 26px}\r\n.move-text{font-size:14px;line-height:1.5;padding-top:3px;color:var(--ink)}\r\n.quote-line{margin-top:26px;background:var(--plum);border-radius:12px;padding:16px 20px;color:#fff;font-size:14px;font-style:italic;line-height:1.5}\r\n.quote-attr{font-style:normal;font-weight:700;font-size:12px;opacity:.75;margin-top:6px;color:var(--rosegold)}\r\n.restart-row{margin-top:24px;text-align:center}\r\n \r\n@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}\r\n@media (max-width:520px){.topbar .tag{display:none}.score-row-label{width:100px;flex:0 0 100px}}\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 Resource<\/div>\r\n<h1>Tech Stack<br><span class=\"pink\">Health Scorecard<\/span><\/h1>\r\n<p class=\"lede\">Three minutes. Five sections. A colour-coded verdict on whether your stack is helping your firm scale or quietly draining your margin.<\/p>\r\n \r\n<div class=\"progress-wrap\">\r\n<div class=\"progress-bar\"><div class=\"progress-fill\" id=\"progressFill\" style=\"width:0%\"><\/div><\/div>\r\n<div class=\"progress-label\" id=\"progressLabel\">0 of 5<\/div>\r\n<\/div>\r\n \r\n<!-- SECTION 1: Visibility -->\r\n<div class=\"section-card active\" id=\"s1\">\r\n<div class=\"section-num\">Section 01 of 05<\/div>\r\n<div class=\"section-title\">Visibility<\/div>\r\n<div class=\"section-sub\">Do you actually know what you're paying for and using?<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">If someone asked you right now: how many software subscriptions does your firm pay for, could you name them all?<\/div>\r\n<div class=\"options\" data-q=\"1a\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q1a\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Yes, I know exactly, I reviewed them recently<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q1a\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Probably most, but a few might have slipped through<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q1a\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Honestly, no, I'd have to check the bank statement<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">How much does your tech stack cost per team member per month?<\/div>\r\n<div class=\"options\" data-q=\"1b\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q1b\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">I know this number (or roughly know it)<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q1b\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">I know the total but not per head<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q1b\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">I have no idea what the per-head cost looks like<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">In the last six months, have you cancelled any subscription because you realised you weren't using it?<\/div>\r\n<div class=\"options\" data-q=\"1c\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q1c\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Yes, I do a regular audit and cut what isn't working<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q1c\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">I've thought about it but not actually done it yet<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q1c\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">No, subscriptions just build up and I rarely review them<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"nav\">\r\n<span><\/span>\r\n<button class=\"btn btn-primary\" onclick=\"nextSection(1)\">Next <span>\u2192<\/span><\/button>\r\n<\/div>\r\n<\/div>\r\n \r\n<!-- SECTION 2: Connection -->\r\n<div class=\"section-card\" id=\"s2\">\r\n<div class=\"section-num\">Section 02 of 05<\/div>\r\n<div class=\"section-title\">Connection<\/div>\r\n<div class=\"section-sub\">Are your tools actually talking to each other, or are you the connector?<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">When a new client enquiry comes in, how many places does someone manually enter their details?<\/div>\r\n<div class=\"options\" data-q=\"2a\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q2a\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">One, it flows into everything else automatically<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q2a\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Two or three, there's some manual re-entry involved<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q2a\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">I genuinely don't know, but I know it's more steps than it should be<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">Between your attract\/sales tools and your CRM\/practice management, the handover is:<\/div>\r\n<div class=\"options\" data-q=\"2b\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q2b\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Automated, the data moves without anyone touching it<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q2b\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Semi-manual, someone copies and pastes the key info<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q2b\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Fully manual, the team does it from scratch each time<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">Do you pay for two different tools that you know could be replaced by one connected platform?<\/div>\r\n<div class=\"options\" data-q=\"2c\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q2c\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">No, I've consolidated where possible<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q2c\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Yes, one or two overlaps I haven't got round to sorting<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q2c\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Yes, and it's costing me time and money<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"nav\">\r\n<button class=\"btn btn-ghost\" onclick=\"prevSection(2)\">\u2190 Back<\/button>\r\n<button class=\"btn btn-primary\" onclick=\"nextSection(2)\">Next <span>\u2192<\/span><\/button>\r\n<\/div>\r\n<\/div>\r\n \r\n<!-- SECTION 3: Utilisation -->\r\n<div class=\"section-card\" id=\"s3\">\r\n<div class=\"section-num\">Section 03 of 05<\/div>\r\n<div class=\"section-title\">Utilisation<\/div>\r\n<div class=\"section-sub\">The average IRIS customer uses less than 20% of what they pay for. Where are you?<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">For your main practice management or CRM tool, how much of its functionality do you actually use?<\/div>\r\n<div class=\"options\" data-q=\"3a\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q3a\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">A lot, we've customised it and lean into it heavily<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q3a\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">The basics, we use the core functions but not much else<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q3a\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Very little, it's more of a glorified contact list<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">When your tech isn't doing something you need, your first instinct is to:<\/div>\r\n<div class=\"options\" data-q=\"3b\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q3b\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Ask the provider if it can do it, it often can<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q3b\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Find a workaround and keep going<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q3b\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Buy a new thing to fill the gap<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">Has your team been properly onboarded into your core tools, or did you just give them access and hope for the best?<\/div>\r\n<div class=\"options\" data-q=\"3c\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q3c\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Properly onboarded, there's a process and we check it works<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q3c\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Mixed, some have had training, some have worked it out themselves<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q3c\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Honestly, mostly the second one<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"nav\">\r\n<button class=\"btn btn-ghost\" onclick=\"prevSection(3)\">\u2190 Back<\/button>\r\n<button class=\"btn btn-primary\" onclick=\"nextSection(3)\">Next <span>\u2192<\/span><\/button>\r\n<\/div>\r\n<\/div>\r\n \r\n<!-- SECTION 4: Intent -->\r\n<div class=\"section-card\" id=\"s4\">\r\n<div class=\"section-num\">Section 04 of 05<\/div>\r\n<div class=\"section-title\">Intent<\/div>\r\n<div class=\"section-sub\">Are you buying software to solve real problems, or to feel like you're doing something?<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">The last time you bought a new software subscription, was there a clear problem it was solving?<\/div>\r\n<div class=\"options\" data-q=\"4a\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q4a\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Yes, I could name exactly what it was fixing and the time it would save<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q4a\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Roughly, I knew it would help, just not precisely how<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q4a\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">I bought it after a conference or because someone recommended it<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">Before buying new tech, do you check whether what you already have could do the job?<\/div>\r\n<div class=\"options\" data-q=\"4b\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q4b\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Always, existing tools get interrogated first<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q4b\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Sometimes, depends on how excited I am about the new thing<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q4b\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Rarely, I tend to reach for something new<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">Which of these feels most true about your relationship with tech at the moment?<\/div>\r\n<div class=\"options\" data-q=\"4c\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q4c\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Intentional, I know what everything does and why it's there<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q4c\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Evolving, I'm actively trying to get on top of it<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q4c\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Reactive, I buy things when problems get too painful<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"nav\">\r\n<button class=\"btn btn-ghost\" onclick=\"prevSection(4)\">\u2190 Back<\/button>\r\n<button class=\"btn btn-primary\" onclick=\"nextSection(4)\">Next <span>\u2192<\/span><\/button>\r\n<\/div>\r\n<\/div>\r\n \r\n<!-- SECTION 5: Scale-readiness -->\r\n<div class=\"section-card\" id=\"s5\">\r\n<div class=\"section-num\">Section 05 of 05<\/div>\r\n<div class=\"section-title\">Scale-readiness<\/div>\r\n<div class=\"section-sub\">Could your stack grow with you, or would it crack under pressure?<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">If your client volume doubled tomorrow, your current tech stack could handle it:<\/div>\r\n<div class=\"options\" data-q=\"5a\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q5a\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Yes, it's built to scale and the processes are there<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q5a\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Probably, but some bits would creak<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q5a\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">No, it would break and I'd have to rebuild mid-growth<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">The tech your firm uses to attract and onboard new clients is:<\/div>\r\n<div class=\"options\" data-q=\"5b\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q5b\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">As well-built as the tech you use to serve clients<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q5b\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Decent, but not as polished as the delivery side<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q5b\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">A bit of a mess, most of the focus has been on client work<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"q-block\">\r\n<div class=\"q-label\">Do you know your software cost per team member per month? (Rachel and James's target is \u00a380.)<\/div>\r\n<div class=\"options\" data-q=\"5c\">\r\n<label class=\"option\"><input type=\"radio\" name=\"q5c\" value=\"2\"><span class=\"option-dot\"><\/span><span class=\"option-text\">Yes, and I'm happy with where it sits<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q5c\" value=\"1\"><span class=\"option-dot\"><\/span><span class=\"option-text\">I know it, but it feels higher than it should be<\/span><\/label>\r\n<label class=\"option\"><input type=\"radio\" name=\"q5c\" value=\"0\"><span class=\"option-dot\"><\/span><span class=\"option-text\">I don't track it at all<\/span><\/label>\r\n<\/div>\r\n<\/div>\r\n \r\n<div class=\"nav\">\r\n<button class=\"btn btn-ghost\" onclick=\"prevSection(5)\">\u2190 Back<\/button>\r\n<button class=\"btn btn-primary\" id=\"submitBtn\" onclick=\"showResult()\">See my result \u2192<\/button>\r\n<\/div>\r\n<\/div>\r\n \r\n<!-- RESULT PANEL -->\r\n<div class=\"result-card\" id=\"result\">\r\n<div id=\"verdictStamp\" class=\"verdict-stamp green\"><span class=\"vdot\"><\/span><span id=\"verdictLabel\"><\/span><\/div>\r\n<div class=\"result-headline\" id=\"resultHeadline\"><\/div>\r\n<div class=\"result-body\" id=\"resultBody\"><\/div>\r\n \r\n<div class=\"score-bar-wrap\">\r\n<div class=\"score-label\">Your scores by section<\/div>\r\n<div id=\"scoreRows\"><\/div>\r\n<\/div>\r\n \r\n<div class=\"moves-wrap\">\r\n<div class=\"moves-title\">Your next three moves<\/div>\r\n<div id=\"movesContent\"><\/div>\r\n<\/div>\r\n \r\n<div class=\"quote-line\">\r\n\"The purpose of a tech stack is to save you time or provide more accurate information. If it's not doing either, it's just cost.\"\r\n<div class=\"quote-attr\">James Harris, StriveX, Practice Owners Podcast, Tech Series Ep.2<\/div>\r\n<\/div>\r\n \r\n<div class=\"restart-row\">\r\n<button class=\"btn btn-ghost\" onclick=\"restart()\">Start again<\/button>\r\n<\/div>\r\n<\/div>\r\n \r\n<\/div>\r\n \r\n<script>\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\n \r\nlet current=1;\r\nconst total=5;\r\n \r\nconst sectionNames=[\"Visibility\",\"Connection\",\"Utilisation\",\"Intent\",\"Scale-readiness\"];\r\n \r\nfunction getScore(section){\r\nlet s=0;\r\nconst qs=document.querySelectorAll(`input[name^=\"q${section}\"]:checked`);\r\nqs.forEach(q=>s+=parseInt(q.value));\r\nreturn s;\r\n}\r\n \r\nfunction allAnswered(section){\r\nconst groups=[...new Set([...document.querySelectorAll(`input[name^=\"q${section}\"]`)].map(i=>i.name))];\r\nreturn groups.every(g=>document.querySelector(`input[name=\"${g}\"]:checked`));\r\n}\r\n \r\nfunction updateProgress(){\r\nconst pct=Math.round(((current-1)\/total)*100);\r\ndocument.getElementById(\"progressFill\").style.width=pct+\"%\";\r\ndocument.getElementById(\"progressLabel\").textContent=(current-1)+\" of \"+total;\r\n}\r\n \r\nfunction nextSection(from){\r\nif(!allAnswered(from)){\r\nalert(\"Please answer all questions in this section before moving on.\");\r\nreturn;\r\n}\r\ndocument.getElementById(\"s\"+from).classList.remove(\"active\");\r\ncurrent=from+1;\r\nif(current<=total){\r\ndocument.getElementById(\"s\"+current).classList.add(\"active\");\r\nupdateProgress();\r\ntry{document.getElementById(\"s\"+current).scrollIntoView({behavior:\"smooth\",block:\"start\"});}catch(e){}\r\n}\r\n}\r\n \r\nfunction prevSection(to){\r\ndocument.getElementById(\"s\"+to).classList.remove(\"active\");\r\ncurrent=to-1;\r\ndocument.getElementById(\"s\"+current).classList.add(\"active\");\r\nupdateProgress();\r\ntry{document.getElementById(\"s\"+current).scrollIntoView({behavior:\"smooth\",block:\"start\"});}catch(e){}\r\n}\r\n \r\ndocument.querySelectorAll(\".option\").forEach(opt=>{\r\nopt.addEventListener(\"click\",function(){\r\nconst radio=this.querySelector(\"input[type=radio]\");\r\nconst name=radio.name;\r\ndocument.querySelectorAll(`input[name=\"${name}\"]`).forEach(r=>{\r\nr.closest(\".option\").classList.remove(\"selected\");\r\n});\r\nradio.checked=true;\r\nthis.classList.add(\"selected\");\r\n});\r\n});\r\n \r\nfunction showResult(){\r\nif(!allAnswered(5)){alert(\"Please answer all questions before seeing your result.\");return;}\r\n \r\nconst scores=[];\r\nlet total_score=0;\r\nfor(let i=1;i<=5;i++){const s=getScore(i);scores.push(s);total_score+=s;}\r\nconst max=30;\r\nconst pct=Math.round((total_score\/max)*100);\r\n \r\ndocument.getElementById(\"s5\").classList.remove(\"active\");\r\ndocument.getElementById(\"progressFill\").style.width=\"100%\";\r\ndocument.getElementById(\"progressLabel\").textContent=\"5 of 5\";\r\n \r\nconst stamp=document.getElementById(\"verdictStamp\");\r\nconst headline=document.getElementById(\"resultHeadline\");\r\nconst body=document.getElementById(\"resultBody\");\r\nconst moves=document.getElementById(\"movesContent\");\r\n \r\nlet level,verdictText,headlineText,bodyText,movesList;\r\n \r\nif(total_score>=22){\r\nlevel=\"green\";verdictText=\"Stack in good shape\";\r\nheadlineText=\"You know your stack. Now squeeze more from it.\";\r\nbodyText=\"Your tech is intentional and broadly connected. The margin you're leaving on the table isn't in new subscriptions, it's in the 80% of what you already own that you haven't fully explored yet. Go deeper before you go wider.\";\r\nmovesList=[\"Pull a full utilisation audit on your two most expensive tools this month. Ask the provider to walk you through what you're not using.\",\"Map one manual handover in your client journey and test whether it can be automated with what you already have.\",\"Set a per-head monthly software target and review it quarterly, treat it like a team member cost, because it is one.\"];\r\n} else if(total_score>=12){\r\nlevel=\"amber\";verdictText=\"Work to do\";\r\nheadlineText=\"Your stack is holding you back in places. Let's fix the leaks.\";\r\nbodyText=\"You're using tech, but it's working harder than you are to stay connected. Somewhere in your stack there's a subscription you're barely touching, a manual handover that's costing someone hours, and probably a tool doing half a job because nobody had time to set it up properly. None of that is your fault. All of it is fixable.\";\r\nmovesList=[\"Do a bank statement walk of shame this week: open every direct debit and ask 'do I actually use this?' Cancel one thing by Friday.\",\"Identify the single most painful manual step in your client journey (data entered twice, something emailed that could be automated) and solve it first.\",\"Pick your main CRM or practice management tool and call their support team. Ask what most firms your size use that you're not. You will be surprised.\"];\r\n} else {\r\nlevel=\"red\";verdictText=\"Stack needs a reset\";\r\nheadlineText=\"Your tech is costing you more than money.\";\r\nbodyText=\"Right now your tech stack is probably adding admin, not removing it. You're likely paying for tools that don't talk to each other, and possibly for things you've completely forgotten about. The good news: you don't need more software. You need a map. Start there, and the right decisions become obvious.\";\r\nmovesList=[\"Before you do anything else: open your bank statement and list every software subscription. One page, everything. That list is your starting point.\",\"Use the Tech Stack OS (in this member area) to map your full client journey. Seeing it on one page will show you exactly where things are breaking.\",\"Call a 30-minute internal review with anyone involved in running jobs. Ask: what do we do manually that we shouldn't? The answers will tell you where to spend next.\"];\r\n}\r\n \r\nstamp.className=\"verdict-stamp \"+level;\r\ndocument.getElementById(\"verdictLabel\").textContent=verdictText;\r\nheadline.textContent=headlineText;\r\nbody.textContent=bodyText;\r\n \r\nconst colors={green:\"var(--status-good)\",amber:\"var(--status-watch)\",red:\"var(--status-bad)\"};\r\nconst rowsEl=document.getElementById(\"scoreRows\");\r\nrowsEl.innerHTML=\"\";\r\nscores.forEach((s,i)=>{\r\nconst pctRow=Math.round((s\/6)*100);\r\nconst row=document.createElement(\"div\");row.className=\"score-row\";\r\nrow.innerHTML=`<div class=\"score-row-label\">${sectionNames[i]}<\/div>\r\n<div class=\"score-row-bar\"><div class=\"score-row-fill\" style=\"width:0%;background:${colors[level]}\" data-w=\"${pctRow}%\"><\/div><\/div>\r\n<div class=\"score-row-num\">${s}\/6<\/div>`;\r\nrowsEl.appendChild(row);\r\n});\r\n \r\nmoves.innerHTML=movesList.map((m,i)=>`<div class=\"move\"><div class=\"move-num\">${i+1}<\/div><div class=\"move-text\">${m}<\/div><\/div>`).join(\"\");\r\n \r\ndocument.getElementById(\"result\").classList.add(\"active\");\r\ntry{document.getElementById(\"result\").scrollIntoView({behavior:\"smooth\",block:\"start\"});}catch(e){}\r\n \r\n\/\/ animate bars after paint\r\nsetTimeout(()=>{\r\ndocument.querySelectorAll(\".score-row-fill\").forEach(el=>{\r\nel.style.transition=\"width .6s cubic-bezier(.4,0,.2,1)\";\r\nel.style.width=el.dataset.w;\r\n});\r\n},80);\r\n \r\nstore.set(\"scorecard_result\",JSON.stringify({score:total_score,level,date:new Date().toISOString()}));\r\n}\r\n \r\nfunction restart(){\r\ndocument.querySelectorAll(\"input[type=radio]\").forEach(r=>{r.checked=false;r.closest(\".option\").classList.remove(\"selected\");});\r\ndocument.getElementById(\"result\").classList.remove(\"active\");\r\nfor(let i=2;i<=5;i++)document.getElementById(\"s\"+i).classList.remove(\"active\");\r\ndocument.getElementById(\"s1\").classList.add(\"active\");\r\ncurrent=1;updateProgress();\r\ntry{document.querySelector(\".wrap\").scrollIntoView({behavior:\"smooth\",block:\"start\"});}catch(e){}\r\n}\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 Health Scorecard | The Practice Owners Podcast The Practice Owners Podcast Tech Series \u00b7 Episode 2 Tech Series Member Resource Tech StackHealth Scorecard Three minutes. Five sections. A colour-coded verdict on whether your stack is helping your firm scale or quietly draining your margin. 0 of 5 Section 01 of 05 Visibility Do [&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-3355","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.bare-digital.com\/ashe\/wp-json\/wp\/v2\/pages\/3355","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=3355"}],"version-history":[{"count":4,"href":"https:\/\/www.bare-digital.com\/ashe\/wp-json\/wp\/v2\/pages\/3355\/revisions"}],"predecessor-version":[{"id":3364,"href":"https:\/\/www.bare-digital.com\/ashe\/wp-json\/wp\/v2\/pages\/3355\/revisions\/3364"}],"wp:attachment":[{"href":"https:\/\/www.bare-digital.com\/ashe\/wp-json\/wp\/v2\/media?parent=3355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}