$
<style> .calc-inputs { background: white; padding: 32px; border-radius: 12px; border: 1px solid rgba(0, 204, 153, 0.2); margin-bottom: 32px; } .calc-input-group { margin-bottom: 24px; } .calc-input-group:last-child { margin-bottom: 0; } .calc-input-label { display: block; font-size: 0.95rem; font-weight: 600; color: var(--navy); margin-bottom: 8px; } .calc-input-range { display: flex; align-items: center; gap: 16px; } .calc-input-range input[type="range"] { flex: 1; height: 6px; border-radius: 3px; background: rgba(0, 204, 153, 0.2); outline: none; -webkit-appearance: none; } .calc-input-range input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 20px; height: 20px; border-radius: 50%; background: var(--teal); cursor: pointer; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .calc-input-range input[type="range"]::-moz-range-thumb { width: 20px; height: 20px; border-radius: 50%; background: var(--teal); cursor: pointer; border: none; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .calc-input-value { min-width: 80px; padding: 8px 12px; background: rgba(0, 204, 153, 0.1); border-radius: 6px; font-weight: 700; color: var(--teal); text-align: right; font-size: 1rem; } .calc-input-dropdown { width: 100%; padding: 12px; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 6px; font-size: 0.95rem; color: var(--navy); background: white; } .calc-results { background: linear-gradient(135deg, rgba(0, 204, 153, 0.05), rgba(0, 204, 153, 0.02)); padding: 32px; border-radius: 12px; border: 1px solid rgba(0, 204, 153, 0.2); margin-bottom: 32px; } .calc-results.locked { background: linear-gradient(135deg, rgba(100, 100, 100, 0.05), rgba(100, 100, 100, 0.02)); border-color: rgba(100, 100, 100, 0.2); } .calc-result-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-bottom: 24px; } .calc-result-item { padding: 16px; background: white; border-radius: 8px; border-left: 4px solid var(--teal); } .calc-result-item.locked { border-left-color: rgba(100, 100, 100, 0.3); opacity: 0.7; } .calc-result-label { font-size: 0.85rem; color: var(--gray-600); text-transform: uppercase; letter-spacing: 0.5px; font-weight: 600; margin-bottom: 8px; } .calc-result-value { font-size: 1.8rem; font-weight: 800; color: var(--teal); } .calc-result-value.locked { color: var(--gray-500); } .calc-result-note { font-size: 0.85rem; color: var(--gray-600); margin-top: 8px; line-height: 1.4; } .calc-divider { height: 2px; background: rgba(0, 204, 153, 0.1); margin: 24px 0; } .calc-gate { padding: 24px; background: white; border: 2px dashed rgba(0, 0, 0, 0.1); border-radius: 8px; text-align: center; margin: 24px 0; } .calc-gate h4 { margin: 0 0 12px; color: var(--navy); } .calc-gate p { margin: 0 0 16px; color: var(--gray-600); font-size: 0.95rem; } .calc-gate-form { display: grid; grid-template-columns: 1fr 1fr auto; gap: 12px; max-width: 500px; margin: 0 auto; } .calc-gate-form input { padding: 10px; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 6px; font-size: 0.9rem; } .calc-gate-form button { padding: 10px 20px; } @media (max-width: 640px) { .calc-gate-form { grid-template-columns: 1fr; } } </style> <!-- BREADCRUMB --> <nav class="breadcrumbs" aria-label="Breadcrumb"> <div class="container"> <a href="/">Home</a> <span aria-hidden="true">&rsaquo;</span> <span>ROI Calculator</span> </div> </nav> <!-- HERO --> <section class="hero"> <div class="container"> <span class="section-label">ROI Calculator</span> <h1>Calculate Your Revenue Leakage</h1> <p class="subhead">Real math. No guesses. Based on benchmarked leakage rates across 300+ providers.</p> </div> </section> <!-- CALCULATOR SECTION --> <section class="section section-white"> <div class="container" style="max-width:900px;"> <div class="calc-inputs"> <div class="calc-input-group"> <label class="calc-input-label">Monthly Claim Volume</label> <div class="calc-input-range"> <input type="range" id="claimVolume" min="1000" max="100000" value="10000" step="500" oninput="updateCalculator()"> <div class="calc-input-value" id="claimVolumeDisplay">10,000</div> </div> <p style="font-size:0.85rem;color:var(--gray-500);margin-top:4px;">Range: 1,000–100,000 claims/month</p> </div> <div class="calc-input-group"> <label class="calc-input-label">Current Denial Rate</label> <div class="calc-input-range"> <input type="range" id="denialRate" min="5" max="25" value="12" step="1" oninput="updateCalculator()"> <div class="calc-input-value" id="denialRateDisplay">12%</div> </div> <p style="font-size:0.85rem;color:var(--gray-500);margin-top:4px;">Healthcare average: 10–15% denial rate</p> </div> <div class="calc-input-group"> <label class="calc-input-label">Average Reimbursement per Claim</label> <div class="calc-input-range"> <input type="range" id="avgReimbursement" min="50" max="500" value="150" step="10" oninput="updateCalculator()"> <div class="calc-input-value" id="avgReimbursementDisplay">$150</div> </div> <p style="font-size:0.85rem;color:var(--gray-500);margin-top:4px;">Varies by specialty. Range: $50–$500</p> </div> <div class="calc-input-group"> <label class="calc-input-label">Billing FTEs on Your Team</label> <select id="billingFTEs" class="calc-input-dropdown" onchange="updateCalculator()"> <option value="1">1 FTE</option> <option value="2" selected>2 FTEs</option> <option value="3">3 FTEs</option> <option value="5">5 FTEs</option> <option value="10">10 FTEs</option> <option value="10plus">10+ FTEs</option> </select> <p style="font-size:0.85rem;color:var(--gray-500);margin-top:4px;">How many billing staff are actively working denials and follow-ups?</p> </div> </div> <!-- PHASE 1 RESULTS (UNGATED) --> <div class="calc-results"> <h3 style="margin-top:0;color:var(--navy);">Your Revenue Cycle Reality</h3> <div class="calc-result-grid"> <div class="calc-result-item"> <div class="calc-result-label">Denied Claims/Month</div> <div class="calc-result-value" id="deniedClaimsResult">1,200</div> <div class="calc-result-note">At 12% denial rate</div> </div> <div class="calc-result-item"> <div class="calc-result-label">Appeals Your Team Can Work</div> <div class="calc-result-value" id="teamCapacityResult">53</div> <div class="calc-result-note">~3 hrs per appeal, 25 work days/month</div> </div> <div class="calc-result-item"> <div class="calc-result-label">Unworked Denials</div> <div class="calc-result-value" id="unworkedResult">1,147</div> <div class="calc-result-note">Abandoned without appeal</div> </div> <div class="calc-result-item"> <div class="calc-result-label">Annual Denial Revenue at Risk</div> <div class="calc-result-value" id="annualDenialRiskResult">$2.1M</div> <div class="calc-result-note">Unworked × $150 × 12 months × 35% recovery rate</div> </div> </div> <div class="calc-divider"></div> <p style="font-size:0.95rem;color:var(--gray-700);margin:0;">This is what's happening every month at your organization. Now let's add in what ANKA finds:</p> </div> <!-- PHASE 2 RESULTS (GATED) --> <div class="calc-results locked" id="phase2Results" style="display:none;"> <h3 style="margin-top:0;color:var(--gray-600);">Total Estimated Leakage (Including Underpayments &amp; Aged AR)</h3> <div class="calc-result-grid"> <div class="calc-result-item locked"> <div class="calc-result-label">Underpayments Annually</div> <div class="calc-result-value locked" id="underpaymentResult">$540K</div> <div class="calc-result-note">3–5% of revenue, missed by manual checks</div> </div> <div class="calc-result-item locked"> <div class="calc-result-label">Aged AR Recoverable</div> <div class="calc-result-value locked" id="agedARResult">$405K</div> <div class="calc-result-note">15–25% of accounts 90+ days old</div> </div> <div class="calc-result-item locked"> <div class="calc-result-label">Total Annual Leakage</div> <div class="calc-result-value locked" id="totalLeakageResult">$2.95M</div> <div class="calc-result-note">Denial + Underpayment + Aged AR</div> </div> <div class="calc-result-item locked"> <div class="calc-result-label">Year 1 ANKA ROI</div> <div class="calc-result-value locked" id="roiResult">280%</div> <div class="calc-result-note">Typical outcome-based pricing</div> </div> </div> </div> <!-- EMAIL GATE --> <div class="calc-gate" id="emailGate"> <h4>See your full leakage estimate</h4> <p>Enter your email to unlock underpayment and aged AR calculations</p> <form class="calc-gate-form" onsubmit="handleUnlockPhase2(event)"> <input type="email" id="gateEmail" placeholder="your@email.com" required> <input type="text" id="gateOrgName" placeholder="Organization name" required> <button type="submit" class="btn btn-secondary btn-sm">Unlock Full Results</button> </form> </div> <!-- CTA TO ASSESSMENT --> <div style="text-align:center;margin-top:48px;padding:24px;background:rgba(0,204,153,0.05);border-radius:8px;"> <h3 style="margin-top:0;color:var(--navy);">Ready to see your actual numbers?</h3> <p style="color:var(--gray-700);margin:12px 0;">These are estimates based on benchmarks. Your real assessment dives into your specific data: your actual denials, your payer contracts, your AR aging.</p> <a href="/assessment/" class="btn btn-primary btn-arrow">Start Your Complimentary Assessment</a> <p style="font-size:0.85rem;color:var(--gray-500);margin-top:12px;">Complimentary for qualified organizations (10+ providers).</p> </div> </div> </section> <script> function formatNumber(num) { return Math.round(num).toLocaleString(); } function updateCalculator() { const claimVolume = parseInt(document.getElementById('claimVolume').value); const denialRate = parseInt(document.getElementById('denialRate').value); const avgReimbursement = parseInt(document.getElementById('avgReimbursement').value); const billingFTEs = document.getElementById('billingFTEs').value; // Update display values document.getElementById('claimVolumeDisplay').textContent = formatNumber(claimVolume); document.getElementById('denialRateDisplay').textContent = denialRate + '%'; document.getElementById('avgReimbursementDisplay').textContent = '$' + avgReimbursement; // Phase 1 calculations const deniedClaims = Math.round(claimVolume * (denialRate / 100)); const appealsPerFTE = 53; // ~3 hrs each, 25 work days const fteMultiplier = billingFTEs === '10plus' ? 10 : parseInt(billingFTEs); const teamCapacity = appealsPerFTE * fteMultiplier; const unworkedDenials = Math.max(0, deniedClaims - teamCapacity); const recoveryRate = 0.35; const annualDenialRisk = unworkedDenials * avgReimbursement * 12 * recoveryRate; document.getElementById('deniedClaimsResult').textContent = '$' + formatNumber(deniedClaims); document.getElementById('teamCapacityResult').textContent = formatNumber(teamCapacity); document.getElementById('unworkedResult').textContent = formatNumber(unworkedDenials); document.getElementById('annualDenialRiskResult').textContent = '$' + formatNumber(annualDenialRisk); // Phase 2 calculations (if unlocked) if (document.getElementById('phase2Results').style.display !== 'none') { const monthlyRevenue = claimVolume * avgReimbursement; const annualRevenue = monthlyRevenue * 12; const underpaymentRate = 0.04; const underpayments = annualRevenue * underpaymentRate; const agedARRate = 0.08; const agedARRecoverable = annualRevenue * agedARRate; const totalLeakage = annualDenialRisk + underpayments + agedARRecoverable; const iankaServiceCost = (underpayments * 0.30) + (totalLeakage * 0.15); const roi = ((totalLeakage - iankaServiceCost) / iankaServiceCost * 100); document.getElementById('underpaymentResult').textContent = '$' + formatNumber(underpayments); document.getElementById('agedARResult').textContent = '$' + formatNumber(agedARRecoverable); document.getElementById('totalLeakageResult').textContent = '$' + formatNumber(totalLeakage); document.getElementById('roiResult').textContent = Math.round(roi) + '%'; } } function handleUnlockPhase2(event) { event.preventDefault(); document.getElementById('emailGate').style.display = 'none'; document.getElementById('phase2Results').style.display = 'block'; updateCalculator(); // In production: send email + org name to backend alert('Thank you! We\'ve unlocked your full leakage estimate.'); } // Initialize on page load updateCalculator(); </script>