Convert OIG/SAM from one-time $299/yr to recurring $79/month (card+ACH only) - the first real recurring-billing product in the system. Exclusion screening is a *monthly* federal obligation, so recurring monitoring fits the requirement and is the biggest valuation lever (vs a one-time annual run). Catalog (single source of truth): - service-catalog.ts: add billing_interval + allowed_methods to ComplianceService; oig-sam-screening -> 7900c, billing_interval:"month", allowed_methods:[card,ach], name "(Monthly Monitoring)". - gen-service-catalog.py + check-service-catalog-drift.py: carry/guard the two new fields; regenerate site catalog. Checkout (api/src/routes/checkout.ts): - mode:"subscription" with recurring price_data when billing_interval is set; surcharge absorbed for recurring (clean $79/mo); server-side METHOD_NOT_ALLOWED re-validation against allowed_methods. - ensureColumns + migration 100: compliance_orders.stripe_subscription_id, bundle_upsell_sent_at (+ subscription index). Webhooks (api/src/routes/webhooks.ts): - record stripe_subscription_id on checkout.session.completed (subscription mode). - invoice.paid (subscription_cycle only) -> re-dispatch screening for the cycle; invoice.payment_failed -> admin alert + first-failure customer nudge; customer.subscription.deleted -> mark order cancelled. (API 2026-03-25 moved the subscription link to invoice.parent.subscription_details.subscription.) Fulfillment: - job_server.py: pass recurring_cycle/invoice_id into the order. - npi_provider.py: OIG handler labels renewal cycles "[Monthly cycle]" + re-screen note; bundle action runs only the FIRST screening + flags the $79/mo upsell. Bundle land-and-expand: - Provider Compliance Bundle now includes only the first OIG/SAM screening (was giving away $948/yr of monitoring inside an $899 bundle). - new worker scripts/workers/bundle_upsell.py (+ pw-bundle-upsell timer): ~3 weeks after a paid bundle, emails the customer to continue $79/mo monitoring; dedup via bundle_upsell_sent_at; skips customers who already have an OIG/SAM order. Surfaces updated to $79/mo: PaymentStep (filters methods, "Billed every month, cancel anytime"), order pages, healthcare index, npi-compliance-check tool (also fixed stale $699 bundle drift -> $899), hc_oig_screening + hc_compliance_bundle emails. Docs: billing.md gains a "Stripe-native Subscriptions" section + a reality-check banner (Adyen/ERPNext-gateway model documented there is NOT live; Stripe is the real rail). Fixed run-migrations.yml container name bug (performancewest-postgres-1 -> performancewest-api-postgres-1, overridable). Tests: api/tests/recurring-subscription.test.ts (28 assertions) covers catalog gating, method validation, surcharge suppression, recurring line-item build, invoiceSubscriptionId extraction, renewal-cycle gating. tsc clean; site build clean; catalog drift OK. Manual deploy step: enable invoice.paid, invoice.payment_failed, customer.subscription.deleted on the Stripe webhook endpoint.
103 lines
No EOL
9.5 KiB
HTML
103 lines
No EOL
9.5 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style>@media only screen and (max-width:600px){.pw-wrap{width:100%!important;border-radius:0!important;}.pw-pad{padding:24px 16px!important;}}body,table,td,p,a{-webkit-text-size-adjust:100%;}table{border-collapse:collapse!important;}img{border:0;}</style></head><body style="margin:0;padding:0;background:#eef0f3;">
|
|
<center>
|
|
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="background:#eef0f3;"><tr><td style="padding:24px 10px;">
|
|
<table role="presentation" class="pw-wrap" width="620" cellpadding="0" cellspacing="0" style="margin:0 auto;border-radius:10px;overflow:hidden;background:#fff;">
|
|
|
|
<!-- Header -->
|
|
<tr><td style="background-color:#0f766e;background:linear-gradient(135deg,#0f766e 0%,#14b8a6 100%);padding:26px 28px;">
|
|
<img src="https://performancewest.net/images/logo-white.png" alt="Performance West" style="height:44px;margin-bottom:10px;display:block" />
|
|
<h1 style="color:#fff;margin:0;font-size:22px;font-weight:700;font-family:Inter,system-ui,sans-serif;">Exclusion Screening Notice</h1>
|
|
<p style="color:#ccfbf1;margin:6px 0 0;font-size:13px;font-family:Inter,system-ui,sans-serif;">Monthly OIG/SAM exclusion screening</p>
|
|
</td></tr>
|
|
|
|
<!-- Body -->
|
|
<tr><td class="pw-pad" style="padding:28px;font-family:Inter,system-ui,sans-serif;color:#1f2937;">
|
|
<p style="font-size:15px;margin:0 0 18px;line-height:1.5;">Hi {{ .Subscriber.Name }},</p>
|
|
<h2 style="font-size:19px;margin:0 0 14px;color:#0f172a;line-height:1.3;">One excluded individual can cost you everything</h2>
|
|
<p style="font-size:14px;line-height:1.7;margin:0 0 18px;">Federal rules require practices that bill Medicare/Medicaid to screen employees and vendors against the <strong>OIG LEIE</strong> and <strong>SAM</strong> exclusion lists — and to document it.</p>
|
|
|
|
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin:22px 0;"><tr><td style="background:#ecfdf5;border:2px solid #6ee7b7;border-radius:10px;padding:18px;">
|
|
<h3 style="margin:0 0 10px;font-size:15px;color:#065f46;font-weight:700;">Why it matters</h3>
|
|
<div style="font-size:13px;color:#065f46;line-height:1.7;">Employing or contracting an excluded party triggers <strong>civil monetary penalties up to $20,000 per claim</strong> plus repayment. Most practices have <strong>no documented screening process</strong>.</div>
|
|
</td></tr></table>
|
|
|
|
<!-- Detail row -->
|
|
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin:18px 0;font-size:13px;">
|
|
<tr style="border-bottom:1px solid #e5e7eb;"><td style="padding:10px 0;color:#6b7280;">NPI</td><td style="padding:10px 0;font-weight:600;text-align:right;">{{ .Subscriber.Attribs.npi }}</td></tr>
|
|
<tr style="border-bottom:1px solid #e5e7eb;"><td style="padding:10px 0;color:#6b7280;">Practice</td><td style="padding:10px 0;font-weight:600;text-align:right;">{{ .Subscriber.Attribs.practice }}</td></tr>
|
|
<tr><td style="padding:10px 0;color:#6b7280;">Our service fee</td><td style="padding:10px 0;font-weight:700;text-align:right;color:#047857;">$79/month</td></tr>
|
|
</table>
|
|
|
|
<!-- Verify-it-yourself: the OIG LEIE and SAM exclusion lists are public and
|
|
free to search. We screen against the very same official sources, so the
|
|
provider can see exactly what we check. -->
|
|
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin:14px 0 22px;"><tr><td style="background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;padding:16px;">
|
|
<p style="margin:0 0 6px;font-size:13px;color:#1e3a8a;font-weight:700;">We screen against the official government lists — check them yourself.</p>
|
|
<p style="margin:0 0 12px;font-size:13px;color:#1e40af;line-height:1.6;">The OIG LEIE and SAM.gov exclusion databases are public. Search your providers and staff against the same sources we monitor monthly:</p>
|
|
<a href="https://exclusions.oig.hhs.gov/" style="display:inline-block;margin:0 6px 6px 0;padding:10px 18px;background:#fff;border:1px solid #1d4ed8;color:#1d4ed8;font-weight:700;border-radius:8px;text-decoration:none;font-size:13px;">Search OIG LEIE ↗</a>
|
|
<a href="https://sam.gov/search/?index=ex" style="display:inline-block;margin:0 0 6px 0;padding:10px 18px;background:#fff;border:1px solid #1d4ed8;color:#1d4ed8;font-weight:700;border-radius:8px;text-decoration:none;font-size:13px;">Search SAM.gov ↗</a>
|
|
<p style="margin:8px 0 0;font-size:11px;color:#64748b;line-height:1.5;">A one-time self-search isn’t the same as the documented, recurring screening CMS expects — that’s what we provide.</p>
|
|
</td></tr></table>
|
|
|
|
<!-- CTA -->
|
|
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin:22px 0;"><tr><td style="background:#ecfdf5;border:2px solid #10b981;border-radius:10px;padding:18px;text-align:center;">
|
|
<p style="font-size:14px;color:#065f46;margin:0 0 6px;font-weight:600;">We run and document your OIG/SAM exclusion screening.</p>
|
|
<p style="font-size:12px;color:#047857;margin:0 0 14px;">Monthly checks with an audit-ready record — $79/month, cancel anytime.</p>
|
|
<a href="https://performancewest.net/order/oig-sam-screening?npi={{ .Subscriber.Attribs.npi }}" style="display:inline-block;padding:14px 40px;background:#10b981;color:#fff;font-weight:700;border-radius:8px;text-decoration:none;font-size:15px;">Set up exclusion screening →</a>
|
|
</td></tr></table>
|
|
|
|
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin:18px 0;"><tr><td style="background:#f0f4f8;border-radius:8px;padding:16px;font-size:13px;color:#374151;line-height:1.6;">
|
|
<strong>Questions?</strong> Reply to this email or call <strong>(888) 411-0383</strong>. Performance West is a dedicated healthcare compliance firm — we handle the CMS/NPPES paperwork so you can focus on patients.
|
|
</td></tr></table>
|
|
|
|
<!-- Personal guarantee from the founder: photo links to the About page so
|
|
readers can confirm a real person stands behind the work. -->
|
|
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin:22px 0;"><tr><td style="background:#f8fafc;border:1px solid #e2e8f0;border-left:4px solid #0f766e;border-radius:10px;padding:20px;">
|
|
<table role="presentation" width="100%" cellpadding="0" cellspacing="0">
|
|
<tr>
|
|
<td width="92" valign="top" style="padding-right:16px;">
|
|
<a href="https://performancewest.net/about">
|
|
<img src="https://performancewest.net/images/justin-hannah.jpg" alt="Justin Hannah, Founder of Performance West" width="76" height="76" style="width:76px;height:76px;border-radius:50%;display:block;border:2px solid #0f766e;" />
|
|
</a>
|
|
</td>
|
|
<td valign="top">
|
|
<p style="margin:0 0 10px;font-size:14px;color:#1f2937;line-height:1.7;font-style:italic;">“If we handle this for you and you are not completely satisfied, I will personally make it right. You will not pay billable hours, and you will not be left chasing a government portal on your own. That is my promise.”</p>
|
|
<p style="margin:0;">
|
|
<a href="https://performancewest.net/about" style="text-decoration:none;">
|
|
<img src="https://performancewest.net/images/justin-signature-v2.png" alt="Justin Hannah" width="150" style="width:150px;height:auto;display:block;margin:0 0 2px;" />
|
|
</a>
|
|
<span style="font-size:13px;font-weight:700;color:#0f172a;">Justin Hannah</span><br>
|
|
<span style="font-size:12px;color:#64748b;">Founder & Principal Consultant, Performance West Inc.</span>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td></tr></table>
|
|
|
|
|
|
<!-- Trust signals (data-safety + guarantee — relevant when sharing provider info) -->
|
|
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin:20px 0 6px;border-top:1px solid #e5e7eb;padding-top:14px;">
|
|
<tr>
|
|
<td align="center" style="padding:10px 4px;font-family:Inter,system-ui,sans-serif;">
|
|
<span style="display:inline-block;margin:0 8px;font-size:11px;font-weight:600;color:#0f766e;">🛡️ SOC 2 Type II hosting</span>
|
|
<span style="display:inline-block;margin:0 8px;font-size:11px;font-weight:600;color:#0f766e;">✅ HIPAA & PCI compliant</span>
|
|
<span style="display:inline-block;margin:0 8px;font-size:11px;font-weight:600;color:#0f766e;">🔒 256-bit TLS encrypted</span>
|
|
<span style="display:inline-block;margin:0 8px;font-size:11px;font-weight:600;color:#0f766e;">💳 Secure payment by Stripe</span>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" style="padding:4px;font-family:Inter,system-ui,sans-serif;font-size:12px;color:#4b5563;">
|
|
<strong style="color:#047857;">100% satisfaction guarantee</strong> · fixed pricing, no billable hours · trusted by providers nationwide
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td></tr>
|
|
|
|
<!-- Footer -->
|
|
<tr><td style="padding:16px 28px;background:#f8fafc;border-top:1px solid #e5e7eb;font-size:11px;color:#9ca3af;text-align:center;">
|
|
<p style="margin:0 0 8px;">Performance West is an independent compliance firm, not affiliated with CMS, Medicare, the OIG, or SAM.gov.</p>
|
|
<p style="margin:0;">Performance West Inc. · 525 Randall Ave Ste 100-1195, Cheyenne, WY 82001 · <a href="https://performancewest.net" style="color:#6b7280;">performancewest.net</a></p>
|
|
<p style="margin:6px 0 0;"><a href="{{ UnsubscribeURL }}" style="color:#6b7280;">Unsubscribe</a></p>
|
|
</td></tr>
|
|
|
|
</table></td></tr></table></center></body></html> |