> ## Documentation Index
> Fetch the complete documentation index at: https://docs.revenuebase.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Release notes

> Recent updates to the RevenueBase platform, APIs, and data.

export const RBUpdate = ({label, children}) => <div className="rb-update">
    <div className="rb-update-label">{label}</div>
    <div className="rb-update-body">{children}</div>
  </div>;

export const RBCardGroup = ({cols = 3, children}) => <div className={`rb-grid-${cols}`}>{children}</div>;

export const RBCard = ({href, title, desc, icon, tag, children, stat}) => {
  const icons = {
    cloud: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M2.25 15a4.5 4.5 0 0 0 4.5 4.5H18a3.75 3.75 0 0 0 1.332-7.257 3 3 0 0 0-3.758-3.848 5.25 5.25 0 0 0-10.233 2.33A4.502 4.502 0 0 0 2.25 15Z" />
      </svg>,
    database: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 5.625c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125" />
      </svg>,
    table: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M3.375 19.5h17.25m-17.25 0a1.125 1.125 0 0 1-1.125-1.125M3.375 19.5h7.5c.621 0 1.125-.504 1.125-1.125m-9.75 0V5.625m0 12.75v-1.5c0-.621.504-1.125 1.125-1.125m18.375 2.625V5.625m0 12.75c0 .621-.504 1.125-1.125 1.125m1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125m0 3.75h-7.5A1.125 1.125 0 0 1 12 18.375m9.75-12.75c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125m19.5 0v1.5c0 .621-.504 1.125-1.125 1.125M2.25 5.625v1.5c0 .621.504 1.125 1.125 1.125m0 0h17.25m-17.25 0h7.5c.621 0 1.125.504 1.125 1.125M3.375 8.25c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125m17.25-3.75h-7.5c-.621 0-1.125.504-1.125 1.125m8.625-1.125c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125m-17.25 0h7.5m-7.5 0c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125M12 10.875v-1.5m0 1.5c0 .621-.504 1.125-1.125 1.125M12 10.875c0 .621.504 1.125 1.125 1.125m-2.25 0c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125m2.25-2.25h-2.25m2.25 0h2.25" />
      </svg>,
    link: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" />
      </svg>,
    clock: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
      </svg>,
    'book-atlas': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M12 6.042A8.967 8.967 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0 0 18 18a8.967 8.967 0 0 0-6 2.292m0-14.25v14.25" />
      </svg>,
    fingerprint: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M7.864 4.243A7.5 7.5 0 0 1 19.5 10.5c0 2.92-.556 5.709-1.568 8.268M5.742 6.364A7.465 7.465 0 0 0 4.5 10.5a7.464 7.464 0 0 1-1.15 3.993m1.989 3.559A11.209 11.209 0 0 0 8.25 10.5a3.75 3.75 0 1 1 7.5 0c0 .527-.021 1.049-.064 1.565M12 10.5a14.94 14.94 0 0 1-3.6 9.75m6.633-4.596a18.666 18.666 0 0 1-2.485 5.33" />
      </svg>,
    'gauge-high': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z" />
      </svg>,
    wrench: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M11.42 15.17 17.25 21A2.652 2.652 0 0 0 21 17.25l-5.877-5.877M11.42 15.17l2.496-3.03c.317-.384.74-.626 1.208-.766M11.42 15.17l-4.655 5.653a2.548 2.548 0 1 1-3.586-3.586l6.837-5.63m5.108-.233c.55-.164 1.163-.188 1.743-.14a4.5 4.5 0 0 0 4.486-6.336l-3.276 3.277a3.004 3.004 0 0 1-2.25-2.25l3.276-3.276a4.5 4.5 0 0 0-6.336 4.486c.091 1.076-.071 2.264-.904 2.95l-.102.085m-1.745 1.437L5.909 7.5H4.5L3 3.75l1.5-1.5L8.25 3.75v1.409l4.26 4.26m-1.745 1.437 1.745-1.437m6.615 8.206L15.75 15.75M4.867 19.125h.008v.008h-.008v-.008Z" />
      </svg>,
    'magnifying-glass': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 15.803 7.5 7.5 0 0 0 15.803 15.803Z" />
      </svg>,
    envelope: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M21.75 6.75v10.5a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25m19.5 0v.243a2.25 2.25 0 0 1-1.07 1.916l-7.5 4.615a2.25 2.25 0 0 1-2.36 0L3.32 8.91a2.25 2.25 0 0 1-1.07-1.916V6.75" />
      </svg>,
    building: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M2.25 21h19.5m-18-18v18m10.5-18v18m6-13.5V21M6.75 6.75h.75m-.75 3h.75m-.75 3h.75m3-6h.75m-.75 3h.75m-.75 3h.75M6.75 21v-3.375c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21M3 3h12m-.75 4.5H21m-3.75 3.75h.008v.008h-.008v-.008Zm0 3h.008v.008h-.008v-.008Zm0 3h.008v.008h-.008v-.008Z" />
      </svg>,
    user: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z" />
      </svg>,
    users: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M15 19.128a9.38 9.38 0 0 0 2.625.372 9.337 9.337 0 0 0 4.121-.952 4.125 4.125 0 0 0-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0Zm8.25 2.25a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z" />
      </svg>,
    'user-group': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M15 19.128a9.38 9.38 0 0 0 2.625.372 9.337 9.337 0 0 0 4.121-.952 4.125 4.125 0 0 0-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0Zm8.25 2.25a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z" />
      </svg>,
    'users-gear': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z" />
      </svg>,
    mobile: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M10.5 1.5H8.25A2.25 2.25 0 0 0 6 3.75v16.5a2.25 2.25 0 0 0 2.25 2.25h7.5A2.25 2.25 0 0 0 18 20.25V3.75a2.25 2.25 0 0 0-2.25-2.25H13.5m-3 0V3h3V1.5m-3 0h3m-3 18h3" />
      </svg>,
    calendar: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5" />
      </svg>,
    'badge-check': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M9 12.75 11.25 15 15 9.75M21 12c0 1.268-.63 2.39-1.593 3.068a3.745 3.745 0 0 1-1.043 3.296 3.745 3.745 0 0 1-3.296 1.043A3.745 3.745 0 0 1 12 21c-1.268 0-2.39-.63-3.068-1.593a3.746 3.746 0 0 1-3.296-1.043 3.745 3.745 0 0 1-1.043-3.296A3.745 3.745 0 0 1 3 12c0-1.268.63-2.39 1.593-3.068a3.745 3.745 0 0 1 1.043-3.296 3.746 3.746 0 0 1 3.296-1.043A3.746 3.746 0 0 1 12 3c1.268 0 2.39.63 3.068 1.593a3.746 3.746 0 0 1 3.296 1.043 3.746 3.746 0 0 1 1.043 3.296A3.745 3.745 0 0 1 21 12Z" />
      </svg>,
    at: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M16.5 12a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0Zm0 0c0 1.657 1.007 3 2.25 3S21 13.657 21 12a9 9 0 1 0-2.636 6.364M16.5 12V8.25" />
      </svg>,
    handshake: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M10.05 4.575a1.575 1.575 0 1 0-3.15 0v3m3.15-3v-1.5a1.575 1.575 0 0 1 3.15 0v1.5m-3.15 0 .075 5.925m3.075.75V4.575m0 0a1.575 1.575 0 0 1 3.15 0V15M6.9 7.575a1.575 1.575 0 1 0-3.15 0v8.175a6.75 6.75 0 0 0 6.75 6.75h2.018a5.25 5.25 0 0 0 3.712-1.538l1.732-1.732a5.25 5.25 0 0 0 1.538-3.712l.003-2.024a.668.668 0 0 1 .198-.471 1.575 1.575 0 1 0-2.228-2.228 3.818 3.818 0 0 0-1.12 2.687M6.9 7.575V12m6.27 4.318A4.49 4.49 0 0 1 16.35 15m.002 0h-.002" />
      </svg>,
    'microchip-ai': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M8.25 3v1.5M4.5 8.25H3m18 0h-1.5M4.5 12H3m18 0h-1.5m-15 3.75H3m18 0h-1.5M8.25 19.5V21M12 3v1.5m0 15V21m3.75-18v1.5m0 15V21m-9-1.5h10.5a2.25 2.25 0 0 0 2.25-2.25V6.75a2.25 2.25 0 0 0-2.25-2.25H6.75A2.25 2.25 0 0 0 4.5 6.75v10.5a2.25 2.25 0 0 0 2.25 2.25Zm.75-12h9v9h-9v-9Z" />
      </svg>,
    'shield-check': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z" />
      </svg>,
    chain: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" />
      </svg>,
    leaf: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99" />
      </svg>,
    'chart-line': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5M9 11.25v1.5M12 9v3.75m3-6v6" />
      </svg>,
    code: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M17.25 6.75 22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3-4.5 16.5" />
      </svg>,
    headset: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 0 0 2.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.035 12.035 0 0 1-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 0 0-1.091-.852H4.5A2.25 2.25 0 0 0 2.25 4.5v2.25Z" />
      </svg>,
    filter: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 0 1-.659 1.591l-5.432 5.432a2.25 2.25 0 0 0-.659 1.591v2.927a2.25 2.25 0 0 1-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 0 0-.659-1.591L3.659 7.409A2.25 2.25 0 0 1 3 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0 1 12 3Z" />
      </svg>,
    'layer-group': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M6 6.878V6a2.25 2.25 0 0 1 2.25-2.25h7.5A2.25 2.25 0 0 1 18 6v.878m-12 0c.235-.083.487-.128.75-.128h10.5c.263 0 .515.045.75.128m-12 0A2.25 2.25 0 0 0 4.5 9v.878m13.5-3A2.25 2.25 0 0 1 19.5 9v.878m0 0a2.246 2.246 0 0 0-.75-.128H5.25c-.263 0-.515.045-.75.128m15 0A2.25 2.25 0 0 1 21 12v6a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 18v-6c0-.98.626-1.813 1.5-2.122" />
      </svg>,
    bookmark: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M17.593 3.322c1.1.128 1.907 1.077 1.907 2.185V21L12 17.25 4.5 21V5.507c0-1.108.806-2.057 1.907-2.185a48.507 48.507 0 0 1 11.186 0Z" />
      </svg>,
    'share-nodes': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M9 8.25H7.5a2.25 2.25 0 0 0-2.25 2.25v9a2.25 2.25 0 0 0 2.25 2.25h9a2.25 2.25 0 0 0 2.25-2.25v-9a2.25 2.25 0 0 0-2.25-2.25H15m0-3-3-3m0 0-3 3m3-3V15" />
      </svg>,
    'file-export': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3" />
      </svg>,
    'wand-magic-sparkles': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z" />
      </svg>,
    'circle-question': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 5.25h.008v.008H12v-.008Z" />
      </svg>,
    stairs: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M2.25 18 9 11.25l4.306 4.306a11.95 11.95 0 0 1 5.814-5.518l2.74-1.22m0 0-5.94-2.281m5.94 2.28-2.28 5.941" />
      </svg>,
    'arrow-right': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3" />
      </svg>,
    python: <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M14.25 9.75 16.5 12l-2.25 2.25m-4.5 0L7.5 12l2.25-2.25M6 20.25h12A2.25 2.25 0 0 0 20.25 18V6A2.25 2.25 0 0 0 18 3.75H6A2.25 2.25 0 0 0 3.75 6v12A2.25 2.25 0 0 0 6 20.25Z" />
      </svg>,
    'code-branch': <svg width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="1.5">
        <path strokeLinecap="round" strokeLinejoin="round" d="M17.25 6.75 22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3-4.5 16.5" />
      </svg>
  };
  const resolvedIcon = typeof icon === 'string' ? icons[icon] : icon;
  const Tag = href ? 'a' : 'div';
  const linkProps = href ? {
    href
  } : {};
  return <Tag {...linkProps} className="rb-card">
      <span className="rb-ch rb-ch--tl" />
      <span className="rb-ch rb-ch--tr" />
      <span className="rb-ch rb-ch--bl" />
      <span className="rb-ch rb-ch--br" />
      <div className="rb-card-header">
        {resolvedIcon && <div className="rb-card-icon">{resolvedIcon}</div>}
        <div className="rb-card-name">{title}</div>
      </div>
      {desc && <p className="rb-card-desc">{desc}</p>}
      {children && <div className={stat ? 'rb-card-stat' : 'rb-card-desc'}>{children}</div>}
      {tag && <span className="rb-card-tag">{tag}</span>}
    </Tag>;
};

## How to read our quality stats

Here is how we measure the quality of our data

* **Email re-verification:** % of emails verified (last 60 days)
* **Contact freshness:** % of job experiences verified on LinkedIn (last 90 days)
* **Company accuracy:** % of company data verified by trusted sources (last 90 days)

<RBUpdate label="July 2026">
  <Accordion title="View July 2026 release notes" defaultOpen>
    <RBCardGroup cols={3}>
      <RBCard title="Email re-verification" icon="envelope" stat>**98.4%**</RBCard>
      <RBCard title="Contact freshness" icon="leaf" stat>**77.5%**</RBCard>
      <RBCard title="Company accuracy" icon="building" stat>**89%**</RBCard>
    </RBCardGroup>

    ## What's new

    <AccordionGroup>
      <Accordion title="Dataset scale: 403M contacts" defaultOpen>
        The June release brings the dataset to **403M total contacts** (no change), with **66.5M verified emails** (+1.2M) and **53.2M phone numbers** (-0.2M).
      </Accordion>

      <Accordion title="Fixed job order in profile indicator" defaultOpen>
        The job\_order\_in\_profile field is used to indicate
        the sequence of a person's job history entries as they appear on their LinkedIn profile. In some cases, this
        value did not correctly reflect the true LinkedIn display order — job history entries could appear out of
        sequence when reconstructed from this field.
      </Accordion>

      <Accordion title="Massive update of companies websites and domains" defaultOpen>
        Roughly 3M companies saw updates to their websites and domains.
      </Accordion>
    </AccordionGroup>
  </Accordion>
</RBUpdate>

<RBUpdate label="June 2026">
  <Accordion title="View June 2026 release notes">
    <RBCardGroup cols={3}>
      <RBCard title="Email re-verification" icon="envelope" stat>**97%**</RBCard>
      <RBCard title="Contact freshness" icon="leaf" stat>**84%**</RBCard>
      <RBCard title="Company accuracy" icon="building" stat>**89%**</RBCard>
    </RBCardGroup>

    ## What's new

    <AccordionGroup>
      <Accordion title="Dataset scale: 403M contacts">
        The June release brings the dataset to **403M total contacts** (+15M), with **65.3M verified emails** (+0.3M) and **53.4M phone numbers** (+0.6M).
      </Accordion>

      <Accordion title="Persona and job classification fill-rate recovery">
        AI-classified fields recovered coverage that was missing from the May release, with substantial gains across all three dimensions:

        * **Persona:** 71% → 84%
        * **Job function:** 66% → 79%
        * **Job level:** 73% → 87%
      </Accordion>

      <Accordion title="Enrichment field fill-rate improvements">
        Additional fill-rate gains across several enrichment fields:

        * **ERP tech org:** +11pp
        * **Education:** +5pp
        * **LinkedIn connections count:** +4pp
        * **LinkedIn headline:** +1pp
      </Accordion>
    </AccordionGroup>
  </Accordion>
</RBUpdate>

<RBUpdate label="May 2026">
  <Accordion title="View May 2026 release notes">
    <RBCardGroup cols={3}>
      <RBCard title="Email re-verification" icon="envelope" stat>**98%**</RBCard>
      <RBCard title="Contact freshness" icon="leaf" stat>**83%**</RBCard>
      <RBCard title="Company accuracy" icon="building" stat>**89%**</RBCard>
    </RBCardGroup>

    ## What's new

    <AccordionGroup>
      <Accordion title="Dataset scale: 388M contacts">
        The May release brings the dataset to **388M total contacts**, with approximately **65M verified emails** and **52.8M cellphone numbers**.
      </Accordion>

      <Accordion title="Fill-rate improvements across enrichment fields">
        Significant fill-rate gains across multiple enrichment fields in this release:

        * **Persona:** 62.2% → 71.3% *(expected to grow further in the next release)*
        * **Job function:** 60.0% → 66.7%
        * **Job level:** 70.1% → 72.6%
        * **Education:** 41.4% → 44.8%
      </Accordion>

      <Accordion title="LinkedIn Member ID now available">
        A new `linkedin_num_id` field is now exposed on person records with a fill-rate of \~95%. This is the permanent numeric LinkedIn Member ID (also referred to as Member Number, LinkedIn ID, or Person ID in API contexts) — a fixed identifier that cannot be changed, unlike vanity profile URLs which users can update at any time.

        Because the numeric ID is stable and permanent, it's the preferred identifier for deduplication and cross-system matching. Customers frequently use it to reliably link RevenueBase records with their own CRM data or third-party enrichment sources.
      </Accordion>

      <Accordion title="Resolved ~5M hidden duplicate profiles">
        Fixed an issue where the same person could appear multiple times in the dataset with different LinkedIn profile URLs due to URL encoding variations. Approximately 5M affected records have been deduplicated, improving overall dataset consistency.
      </Accordion>
    </AccordionGroup>
  </Accordion>
</RBUpdate>

<RBUpdate label="April 2026">
  <Accordion title="View April 2026 release notes">
    <RBCardGroup cols={3}>
      <RBCard title="Email re-verification" icon="envelope" stat>**97%**</RBCard>
      <RBCard title="Contact freshness" icon="leaf" stat>**84%**</RBCard>
      <RBCard title="Company accuracy" icon="building" stat>**89%**</RBCard>
    </RBCardGroup>

    The Contact Freshness is less than our usual number due to brand new contacts we have imported from a new vendor updated at the end of 2025.

    ## What's new

    <AccordionGroup>
      <Accordion title="Extended Data Source for Social Profile Collection">
        Integrated an additional data source for collecting social profiles, broadening the foundation of our profile coverage. This expansion will directly improve experience data coverage and increase the total number of profiles available in the dataset.
      </Accordion>

      <Accordion title="Improvement in Cellphone Coverage">
        Major improvement to cellphone data coverage (7.5M cellphone number increase globally, 6.9M in the US), substantially increasing the fill-rate for cellphone numbers across profiles. This enhancement makes mobile contact data more accessible and reliable for outreach workflows.
      </Accordion>

      <Accordion title="Data Quality Fixes">
        Cleaned up job title fields that contained meaningless values — records where `job_title` consisted entirely of special characters such as `&`, `;`, `/`, and similar symbols rather than actual job title text. These values have been removed or corrected, improving the overall quality of the data.
      </Accordion>
    </AccordionGroup>
  </Accordion>
</RBUpdate>

<RBUpdate label="March 2026">
  <Accordion title="View March 2026 release notes">
    <RBCardGroup cols={3}>
      <RBCard title="Email re-verification" icon="envelope" stat>**98%**</RBCard>
      <RBCard title="Contact freshness" icon="leaf" stat>**92.3%**</RBCard>
      <RBCard title="Company accuracy" icon="building" stat>**88.7%**</RBCard>
    </RBCardGroup>

    ## Data updates

    <AccordionGroup>
      <Accordion title="Data improvements">
        * Removed 0.9M contacts who recently left their jobs
        * Removed 1.2M undeliverable email addresses, sustaining >95% deliverability
        * Removed 0.1M invalid mobile numbers
      </Accordion>
    </AccordionGroup>

    ## What's new

    <AccordionGroup>
      <Accordion title="Documentation site launch">
        RevenueBase launched our dedicated documentation site covering quickstart guides, full API reference with live playground, and data feed schema documentation.
      </Accordion>

      <Accordion title="New LinkedIn fields on company dataset">
        Two new fields sourced from LinkedIn have been added to the Company dataset:

        * **`logo_url`** — direct link to the company's LinkedIn profile logo
        * **`company_headline`** — headline text displayed on the company's LinkedIn page

        <Warning>
          LinkedIn periodically rotates logo URLs as part of their asset protection mechanisms. For long-term use cases, cache a local copy of logos at retrieval time rather than relying on the URL remaining stable.
        </Warning>
      </Accordion>

      <Accordion title="LinkedIn connections count in Gigasheet">
        The Gigasheet dataset now includes the `linkedin_connections_count` column, surfacing the number of LinkedIn connections per profile directly in the dataset. No additional joins required.
      </Accordion>

      <Accordion title="Job title data quality fix">
        Resolved an issue where LinkedIn's data protection mechanisms caused company names to appear in place of job title values. Approximately 90% of affected records have been corrected via a targeted backfill. Remaining cases will be resolved in upcoming job data updates.
      </Accordion>

      <Accordion title="Funding dates backfill — Insight dataset">
        Resolved a data gap where last funding dates were not updated for approximately two months due to a third-party provider issue. Funding date fields in the Insight dataset are now current.
      </Accordion>
    </AccordionGroup>
  </Accordion>
</RBUpdate>

<RBUpdate label="February 2026">
  <Accordion title="View February 2026 release notes">
    <RBCardGroup cols={3}>
      <RBCard title="Email re-verification" icon="envelope" stat>**97%**</RBCard>
      <RBCard title="Contact freshness" icon="leaf" stat>**93%** last 90 days</RBCard>
      <RBCard title="Company accuracy" icon="building" stat>**88%**</RBCard>
    </RBCardGroup>

    ## Data updates

    <AccordionGroup>
      <Accordion title="Data improvements">
        * Removed 0.9M contacts who recently left their jobs
        * Removed 1.5M undeliverable email addresses, sustaining >95% deliverability
        * Removed 0.3M invalid mobile numbers
      </Accordion>
    </AccordionGroup>

    ## What's new

    <AccordionGroup>
      <Accordion title="Company name added to person dataset">
        A dedicated `company_name` field has been added directly to Person records. Previously, retrieving company names required joining Person data with Company data. This field is now available inline, removing that join dependency.
      </Accordion>

      <Accordion title="Indian states now supported">
        Person location data now includes full support for Indian state codes and state names, extending existing coverage beyond the USA and Canada. Contacts in India can be searched and filtered using standardized state codes.

        **Impact:** 7% increase in fill-rate for `state_code` and `state_name` fields for Indian contacts.
      </Accordion>

      <Accordion title="Headquarters country assignment — quality fix">
        Resolved an issue where company headquarters addresses formatted as "City, State" could be incorrectly assigned to the wrong country. US state codes were in some cases misinterpreted as country codes (e.g., `MD` for Maryland parsed as Moldova).

        **Impact:** 2–5% improvement in headquarters address fill-rate and accuracy across countries.
      </Accordion>
    </AccordionGroup>
  </Accordion>
</RBUpdate>

<RBUpdate label="January 2026">
  <Accordion title="View January 2026 release notes">
    <RBCardGroup cols={3}>
      <RBCard title="Email re-verification" icon="envelope" stat>**98%**</RBCard>
      <RBCard title="Contact freshness" icon="leaf" stat>**95%**</RBCard>
      <RBCard title="Company accuracy" icon="building" stat>**89%**</RBCard>
    </RBCardGroup>

    ## Data updates

    <AccordionGroup>
      <Accordion title="Data quality metrics">
        * **Email re-verification:** 98% verified within the last 60 days
        * **Contact freshness:** 95% of job experiences re-verified on LinkedIn within the last 90 days
        * **Company accuracy:** 89% of company data verified by trusted sources within the last 90 days
      </Accordion>

      <Accordion title="Data improvements">
        * Removed 3.2M contacts who recently left their jobs
        * Removed 2.9M undeliverable email addresses, sustaining >95% deliverability
        * Removed 0.7M invalid mobile numbers
      </Accordion>
    </AccordionGroup>

    ## What's new

    <AccordionGroup>
      <Accordion title="LinkedIn data protection — experience and education fill-rate impact">
        LinkedIn has tightened its data protection measures, making data collection significantly harder. A new workaround approach has been introduced to prevent loss of most experience and education data from LinkedIn profiles.

        In the January release, all fields maintained approximately the same fill rate as the previous month, with the exception of experience and education data, which saw a minor drop of 1–2%. These protections may also extend the rescraping period going forward.
      </Accordion>
    </AccordionGroup>
  </Accordion>
</RBUpdate>
