Plans & Billing
Starter
For small compliance teams getting started.
$199 /mo
  • Up to 2 region combos
  • 2 team members
  • Weekly digest reports
  • Email alerts
  • 30-day archive
Most Popular
Professional
Comprehensive regulatory coverage for growing teams.
$499 /mo
  • 15 region combos
  • 15 team members
  • Real-time + daily + weekly reports
  • Email, Slack & webhook alerts
  • API access
  • 1-year archive
Enterprise
Full coverage with dedicated support for large orgs.
$1,499 /mo
  • 40 region combos
  • Unlimited team members
  • Everything in Professional
  • Custom integrations & SSO
  • Dedicated account manager
  • SLA guarantee
to any dashboard page. * Requires elements with IDs: userInitials, userName, userTier */ (async function loadUserProfile() { const token = localStorage.getItem('regpulse_token') || localStorage.getItem('token') || ''; if (!token) return; try { const res = await fetch('/api/me', { headers: { 'Authorization': 'Bearer ' + token } }); if (!res.ok) return; const data = await res.json(); if (!data.success || !data.subscriber) return; const sub = data.subscriber; const email = sub.email || ''; const company = sub.company || ''; // Derive display name: use company if available, otherwise email prefix const displayName = company || email.split('@')[0]; // Derive initials const parts = displayName.replace(/[^a-zA-Z0-9 ]/g, '').trim().split(/\s+/); const initials = parts.length >= 2 ? (parts[0][0] + parts[parts.length - 1][0]).toUpperCase() : displayName.slice(0, 2).toUpperCase(); const tierLabel = (sub.tier || 'free').charAt(0).toUpperCase() + (sub.tier || 'free').slice(1); const el = (id) => document.getElementById(id); if (el('userInitials')) el('userInitials').textContent = initials; if (el('userName')) el('userName').textContent = displayName; if (el('userTier')) el('userTier').textContent = tierLabel; } catch (e) { /* silent */ } })();