<!DOCTYPE html><!-- Last Published: Fri Jul 24 2026 14:03:14 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="www.theswarm.com" data-wf-page="6851765b9ad7e983bbc40feb" data-wf-site="6194c0787e082a13b6aa29b4"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>The Swarm - The Relationship Data Company</title><meta content="The Swarm curates a rich dataset of 580M profiles with daily job changes, 100M companies with fundraising data, and a unique relationship mapping technology for builders and investors." name="description"/><meta content="The Swarm - The Relationship Data Company" property="og:title"/><meta content="The Swarm curates a rich dataset of 580M profiles with daily job changes, 100M companies with fundraising data, and a unique relationship mapping technology for builders and investors." property="og:description"/><meta content="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/685547accf01c11437b48d3d_a8c25e48f774f0f812d8a7144fe666b2_OG-image-home.png" property="og:image"/><meta content="The Swarm - The Relationship Data Company" name="twitter:title"/><meta content="The Swarm curates a rich dataset of 580M profiles with daily job changes, 100M companies with fundraising data, and a unique relationship mapping technology for builders and investors." name="twitter:description"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><link href="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/css/the-swarm-staging-new.shared.699cb8407.min.css" rel="stylesheet" type="text/css" integrity="sha384-aZy4QHoamIxcjNWQDcomWNQWuPdLEnna1EcfixT7ZxtSN3hSwM/qEH7kzwBkAuRL" crossorigin="anonymous"/><style>@media (min-width:992px) {html.w-mod-js:not(.w-mod-ix) [data-w-id="f31d8291-d225-4307-6cbc-9909a34c9551"] {opacity:0;}html.w-mod-js:not(.w-mod-ix) [data-w-id="bc30cc0f-32a7-42dc-d441-5acae56def30"] {opacity:0;}}@media (max-width:991px) and (min-width:768px) {html.w-mod-js:not(.w-mod-ix) [data-w-id="f31d8291-d225-4307-6cbc-9909a34c9551"] {opacity:0;}html.w-mod-js:not(.w-mod-ix) [data-w-id="bc30cc0f-32a7-42dc-d441-5acae56def30"] {opacity:0;}}</style><link href="https://fonts.googleapis.com" rel="preconnect"/><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin="anonymous"/><script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script><script type="text/javascript">WebFont.load({  google: {    families: ["JetBrains Mono:300,400,500,600,700","Press Start 2P:300,400,500,600,700"]  }});</script><script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script><link href="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6315c8fb267b7df328cef873_theswarm_symbol_favicon.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/63342b66e4b0656fdcd53c09_theswarm-favicon.svg" rel="apple-touch-icon"/><script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "The Swarm",
  "url": "/",
  "description": "The Swarm curates a rich dataset of 580M profiles with daily job changes, 100M companies with fundraising data, and a unique relationship mapping technology for builders and investors.",
  "logo": {
    "@type": "ImageObject",
    "url": "https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/619bb1ab5bf284b385d3e2ee_TheSwarm_Logo_Light.svg"
  },
  "sameAs": [
    "https://www.linkedin.com/company/theswarm",
    "https://twitter.com/theswarm",
    "https://www.instagram.com/theswarm",
    "https://www.youtube.com/theswarm"
  ],
  "founder": {
    "@type": "Person",
    "name": "David Connors"
  }
}
</script><!-- Usercentrics CMP - MUST load before everything else for autoblocker to work -->
<script>
(function () {
  var SUPPRESS_PATHS = [
    "/david",
    "/olivier",
    "/grace"
  ];

  if (SUPPRESS_PATHS.indexOf(window.location.pathname) !== -1) {
    window.UC_UI_SUPPRESS_CMP_DISPLAY = true;
  }

  var script = document.createElement("script");
  script.id = "usercentrics-cmp";
  script.setAttribute("data-settings-id", "k5k1msQIyWiKvN");
  script.src = "https://web.cmp.usercentrics.eu/ui/loader.js";
  document.head.appendChild(script);
})();
</script>


<!-- Google Tag Manager (with autoblocker-safe injection) -->
<script data-uc-allowed="true">(function(w,d,i){
  w.dataLayer = w.dataLayer || [];
  w.dataLayer.push({'gtm.start': new Date().getTime(), event: 'gtm.js'});
  var s = d.createElement('script');
  s.async = true;
  s.src = 'https://www.googletagmanager.com/gtm.js?id=' + i;
  d.head.appendChild(s);
})(window, document, 'GTM-M9BB7B6');</script>
<!-- End Google Tag Manager --><script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Organization",
      "url": "https://www.theswarm.com/",
      "logo": "https://assets-global.website-files.com/6194c0787e082a13b6aa29b4/619bb1ab5bf284b385d3e2ee_TheSwarm_Logo_Light.svg"
    }
 </script>
 
<!-- [Attributes by Finsweet] CMS Load -->
<script  async src="https://cdn.jsdelivr.net/npm/@finsweet/attributes-cmsload@1/cmsload.js"></script>

<style>
.bg-grid {
--bg-color: #141414;
--line-color-1: #1c1b1b;
--line-color-2: #191919;
background-color: var(--bg-color);
background-image: 
linear-gradient(var(--line-color-1) 1.5px, transparent 1.5px), 
linear-gradient(90deg, var(--line-color-1) 1.5px, transparent 1.5px), 
linear-gradient(var(--line-color-2) 1px, transparent 1px), 
linear-gradient(90deg, var(--line-color-2) 1px, transparent 1px);
background-position: -1.5px -1.5px, -1.5px -1.5px, -1px -1px, -1px -1px;
background-size: 100px 100px, 100px 100px, 20px 20px, 20px 20px;
}
</style></head><body class="body"><div id="start" class="page-wrapper"><div data-collapse="medium" data-animation="default" data-duration="400" data-easing="ease" data-easing2="ease-in-out" role="banner" class="nav_component nav_bg w-nav"><div class="announcement-banner"><div class="announcement-text">The Swarm is Acquiring Commsor<a href="https://commsor.theswarm.com" class="announcement-link">Read the news → </a></div><div data-w-id="3ef08717-e24a-66ff-d1b9-9bc2fb3320f1" class="close-announcement"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a5e32937b7598d3b776a5f0_icon-x.svg" loading="lazy" alt="" class="icon-1x1-small icon-small"/></div></div><div class="page-padding"><div class="nav_container hide-desktop"><a href="/" aria-current="page" class="nav_brand w-nav-brand w--current"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/619bb1ab5bf284b385d3e2ee_TheSwarm_Logo_Light.svg" loading="lazy" height="Auto" alt="The Swarm" width="160" class="nav_brand-image"/><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a47d1aa2a0d_theswarm-logo-white.png" loading="lazy" sizes="(max-width: 479px) 93vw, 160px" alt="The Swarm" width="160" srcset="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a47d1aa2a0d_theswarm-logo-white-p-500.png 500w, https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a47d1aa2a0d_theswarm-logo-white-p-800.png 800w, https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a47d1aa2a0d_theswarm-logo-white.png 948w" class="nav_brand-image nav_brand-image-dark"/></a><nav role="navigation" class="nav_menu_desktop w-nav-menu"><div data-hover="true" data-delay="40" class="dropdown-menu w-dropdown"><div class="desktop-menu-link w-dropdown-toggle"><div class="dropdown-text">Data</div></div><nav class="dropdown-menu-list dropdown-1-move w-dropdown-list"><div class="dropdown-pointer"><div class="dropdown-blue"><div class="dropdown-fill nav-data"><a href="/data/relationships" class="dropdown-link-item dropdown-color-blue w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/640e1ec8ba675283890cf583_icon-menu-partnership.svg" alt="" class="image-16"/></div><div class="nav-content-wrap"><div class="dropdown-title">Relationship Data</div></div></a><a href="/data/people" class="dropdown-link-item dropdown-color-blue w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8cd1879bc1aa31ca61_menu-icon-job-changes.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">People &amp; Job Changes</div></div></a><a href="/data/company" class="dropdown-link-item dropdown-color-blue w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8ddc8ed64200b3f299_menu-icon-firmographic-data.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Companies &amp; Fundraising</div></div></a><a href="/data/live" class="dropdown-link-item dropdown-color-blue w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8cb1b8067d43ffc5cc_menu-icon-live-enrichment.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Live Enrichment</div></div></a></div></div><div class="pointer pointer-blue"></div></div></nav></div><div data-hover="true" data-delay="40" class="dropdown-menu w-dropdown"><div class="desktop-menu-link w-dropdown-toggle"><div class="dropdown-text">Products</div></div><nav class="dropdown-menu-list dropdown-4-move w-dropdown-list"><div class="dropdown-pointer"><div class="dropdown-orange"><div class="dropdown-fill"><a href="/product/web-application" class="dropdown-link-item dropdown-color-orange w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41b94084d60ef9df8f7a5_icon-saas.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Web Application</div></div></a><a href="/product/data-api" class="dropdown-link-item dropdown-color-orange w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/67bca21faf5501844c68a175_icon-api.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Swarm API </div></div></a><a href="https://docs.theswarm.com" target="_blank" class="dropdown-link-item dropdown-color-orange w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41ac8a4169fa231f40a2f_icon-api.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Documentation</div></div></a></div></div><div class="pointer pointer-orange"></div></div></nav></div><div data-hover="true" data-delay="40" class="dropdown-menu w-dropdown"><div class="desktop-menu-link w-dropdown-toggle"><div class="dropdown-text">Integrations</div></div><nav class="dropdown-menu-list dropdown-5-menu w-dropdown-list"><div class="dropdown-pointer"><div class="dropdown-orange"><div class="dropdown-fill nav-integrations"><a id="w-node-_240353d8-737e-6dd8-f0f9-b62ff052e590-ddb364ea" href="/integrations/hubspot" class="dropdown-link-item dropdown-color-orange max-width-150 w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8c8ef7eacfa554e910_menu-logo-hubspot.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">HubSpot</div></div></a><a href="/integrations/mcp" class="dropdown-link-item dropdown-color-orange max-width-150 w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68bf093aecde0722ace9c705_961fa156b293e5534d364e841c8b032e_mcp_icon.webp" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">MCP</div></div></a><a href="/integrations/attio" class="dropdown-link-item dropdown-color-orange max-width-150 w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/689c75051a365efd34c08ecf_icon-attio.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Attio</div></div></a><a id="w-node-_175ae751-e3e5-8444-75cc-c1c3e7e4f48c-ddb364ea" href="/integrations/clay" class="dropdown-link-item dropdown-color-orange max-width-150 w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880aea27822d97e0b8687b2_menu-logo-clay.png" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Clay</div></div></a><a id="w-node-_0f55519a-ca4c-6331-eec7-7a8026ae4319-ddb364ea" href="/integrations/airtable" class="dropdown-link-item dropdown-color-orange max-width-150 w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68a649ac759ad7a1de4b8ab4_airtable.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Airtable</div></div></a><a href="https://databar.ai/" target="_blank" class="dropdown-link-item dropdown-color-orange max-width-150 w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8c8ad679935f40f8f3_menu-logo-databar.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Databar</div></div></a><a href="https://www.getcargo.ai/" target="_blank" class="dropdown-link-item dropdown-color-orange max-width-150 w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/689c747004f84cc41e97c69b_icon-cargo.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Cargo</div></div></a><a href="/integrations/unify" class="dropdown-link-item dropdown-color-orange max-width-150 w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a4d0f1fa6f55eb18ec484f1_icon-unify.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Unify</div></div></a><a href="https://instantly.ai/" target="_blank" class="dropdown-link-item dropdown-color-orange max-width-150 w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a4d0f20c6b7e55a8d93fdcf_icon-instantly.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Instantly</div></div></a><a href="https://www.clarify.ai/" target="_blank" class="dropdown-link-item dropdown-color-orange max-width-150 w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a4d0f2095b630618210e18d_icon-clarify.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Clarify</div></div></a></div></div><div class="pointer"></div></div></nav></div><div data-hover="true" data-delay="40" class="dropdown-menu w-dropdown"><div class="desktop-menu-link w-dropdown-toggle"><div class="dropdown-text">Company</div></div><nav class="dropdown-menu-list dropdown-6-move w-dropdown-list"><div class="dropdown-pointer"><div class="dropdown-yellow"><div class="dropdown-fill nav-company"><a href="/company/about" class="dropdown-link-item dropdown-color-yellow w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8c1420fd12f2d210e4_menu-icon-about.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">About</div></div></a><a href="/company/swarm-insights" class="dropdown-link-item dropdown-color-yellow w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6322cf0aceeff74711c3b1e8_icon_nrm_8.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Insights</div></div></a><a href="/company/case-studies" class="dropdown-link-item dropdown-color-yellow w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8c6baf2847def021c8_menu-icon-case-studies.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Case Studies</div></div></a><a href="/company/trust-center" class="dropdown-link-item dropdown-color-yellow w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8cb311a2c3a9f5a8e7_menu-icon-trustcenter.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Trust Center</div></div></a><a href="/company/go-to-network-academy" class="dropdown-link-item dropdown-color-yellow w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41ac7651fb7e141fabf4d_icon-academy.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Go-To-Network Academy</div></div></a><a href="https://www.swarmhackers.com/" target="_blank" class="dropdown-link-item dropdown-color-yellow w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8cae4c6d52ff381c22_menu-icon-community.svg" alt=""/></div><div class="nav-content-wrap"><div class="nav-content-wrap"><div class="dropdown-title">Community</div></div></div></a><a href="/company/emails" class="dropdown-link-item dropdown-color-yellow w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41ac8ebdf444fe5d6abf3_icon-casestudies.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Subscribe</div></div></a><a href="/start" class="dropdown-link-item dropdown-color-yellow w-inline-block"><div class="icon-square"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8c6e145f51eb885f8b_menu-icon-contact.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Contact</div></div></a></div></div><div class="pointer pointer-yellow"></div></div></nav></div><a href="/pricing" class="dropdown-text text-link pricing-menu">Pricing</a></nav><div class="nav_button-wrapper"><a data-cta="demo-navbar" href="/product/fulldemo" class="button is-blank w-button">Demo</a><a data-cta="login-navbar" href="https://app.theswarm.com" class="button w-button">Log in</a><a data-cta="get-started-navbar" href="/start" class="button-swarm is-small w-button">Get started</a></div><div class="nav_container-mobile"><a href="#" class="nav_brand w-nav-brand"><img width="160" height="44" alt="The Swarm" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/619bb1ab5bf284b385d3e2ee_TheSwarm_Logo_Light.svg" loading="lazy" class="nav_brand-image"/><img width="160" sizes="(max-width: 479px) 93vw, 160px" alt="The Swarm" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a47d1aa2a0d_theswarm-logo-white.png" loading="lazy" srcset="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a47d1aa2a0d_theswarm-logo-white-p-500.png 500w, https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a47d1aa2a0d_theswarm-logo-white-p-800.png 800w, https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a47d1aa2a0d_theswarm-logo-white.png 948w" class="nav_brand-image nav_brand-image-dark"/></a><nav role="navigation" class="nav_menu_mobile-2 w-nav-menu"><a href="#" class="mobile-nav-link-2 w-nav-link">Home</a><div data-delay="0" data-hover="false" class="mobile-dropdown-menu w-dropdown"><div class="mobile-menu-link-3 w-dropdown-toggle"><div class="icon-2 w-icon-dropdown-toggle"></div><div class="dropdown-text-mobile-2">ProductS</div></div><nav class="mobile-menu-list-2 w-dropdown-list"><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/67bca21faf5501844c68a175_icon-api.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Data API</div></div></a><a href="https://docs.theswarm.com/docs/getting-started/introduction" target="_blank" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/67bca21f533ef49ed525e668_icon-api-docs.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Documentation</div></div></a><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41b94084d60ef9df8f7a5_icon-saas.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">SaaS Application</div></div></a><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/67bca21f321b7afbc55ef31a_icon-clay.png"/></div><div class="nav-content-wrap"><div class="dropdown-title">Clay Integration</div></div></a><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41ac7245926328d770ef7_icon-extension.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Chrome Extension</div></div></a></nav></div><div data-delay="0" data-hover="false" class="mobile-dropdown-menu w-dropdown"><div class="mobile-menu-link-3 w-dropdown-toggle"><div class="icon-2 w-icon-dropdown-toggle"></div><div class="dropdown-text-mobile-2">CUSTOMERS</div></div><nav class="mobile-menu-list-2 w-dropdown-list"><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/62d16ae9feb68433e91fcc28_icon-product-feature%203.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Case Studies</div></div></a><a href="https://help.theswarm.com" target="_blank" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41ac860b4400fce457e9c_icon-helpcenter.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Help Center</div></div></a><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/62bc1d72a1c9506933a168b7_menu-icons-yellow-04.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Trust Center</div></div></a><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/62bc1d722cdb5385793993bf_menu-icons-yellow-06.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Swarm Events</div></div></a><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6322cf0aceeff74711c3b1e8_icon_nrm_8.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Swarm Plays</div></div></a><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6365ae975303aabd2fbd160b_icon-academy.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Go-To-Network Academy</div></div></a></nav></div><div data-delay="0" data-hover="false" class="mobile-dropdown-menu w-dropdown"><div class="mobile-menu-link-3 w-dropdown-toggle"><div class="icon-2 w-icon-dropdown-toggle"></div><div class="dropdown-text-mobile-2">Company</div></div><nav class="mobile-menu-list-2 w-dropdown-list"><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41b662ac048b7fafcb0fb_icon-about.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">About</div></div></a><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41ac7ca3bd4262698269d_icon-insights.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Insights</div></div></a><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41ac880a90be57a6d8de9_icon-partners.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Partners</div></div></a><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/62bc1d724e57e876efe56a7e_menu-icons-blue-04.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Early Stage Program</div></div></a><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6613a4f95b2977b85057fdab_icon-menu-refer.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Subscribe</div></div></a><a href="#" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/62bc1d7288aa276eebc1e1b9_menu-icons-blue-01.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Contact</div></div></a></nav></div><a href="#" class="mobile-nav-link-2 w-nav-link">PRICING</a><div class="nav_button-wrapper-mobile"><a href="https://app.theswarm.com" class="button-swarm-3 is-medium w-button">Sign in</a><a href="#" class="button-2 is-medium w-button">Talk to sales</a></div></nav><div data-ix="navbar-interaction-settings" class="menu-button w-nav-button"><div class="line-top-2"></div><div class="line-middle"></div><div class="line-bottom"></div></div></div></div><div class="nav_container-mobile"><a href="/" aria-current="page" class="nav_brand w-nav-brand w--current"><img width="160" height="44" alt="The Swarm" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/619bb1ab5bf284b385d3e2ee_TheSwarm_Logo_Light.svg" loading="lazy" class="nav_brand-image"/><img width="160" sizes="(max-width: 479px) 93vw, 160px" alt="The Swarm" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a47d1aa2a0d_theswarm-logo-white.png" loading="lazy" srcset="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a47d1aa2a0d_theswarm-logo-white-p-500.png 500w, https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a47d1aa2a0d_theswarm-logo-white-p-800.png 800w, https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a47d1aa2a0d_theswarm-logo-white.png 948w" class="nav_brand-image nav_brand-image-dark"/></a><nav role="navigation" class="nav_menu_mobile w-nav-menu"><div data-delay="0" data-hover="false" class="mobile-dropdown-menu w-dropdown"><div class="mobile-nav-link w-dropdown-toggle"><div class="icon-2 w-icon-dropdown-toggle"></div><div class="dropdown-text-mobile">DATA</div></div><nav class="mobile-menu-list w-dropdown-list"><a href="/data/relationships" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41ac880a90be57a6d8de9_icon-partners.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Relationship Data</div></div></a><a href="/data/people" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8cd1879bc1aa31ca61_menu-icon-job-changes.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">People &amp; Job Changes</div></div></a><a href="/data/company" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8ddc8ed64200b3f299_menu-icon-firmographic-data.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Companies &amp; Fundraising</div></div></a><a href="/data/live" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8cb1b8067d43ffc5cc_menu-icon-live-enrichment.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Live Enrichment</div></div></a></nav></div><div data-delay="0" data-hover="false" class="mobile-dropdown-menu w-dropdown"><div class="mobile-nav-link w-dropdown-toggle"><div class="icon-2 w-icon-dropdown-toggle"></div><div class="dropdown-text-mobile">ProductS</div></div><nav class="mobile-menu-list w-dropdown-list"><a href="/product/web-application" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41b94084d60ef9df8f7a5_icon-saas.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Web Application</div></div></a><a href="/product/data-api" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/67bca21faf5501844c68a175_icon-api.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Swarm API</div></div></a><a href="#" target="_blank" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41ac8a4169fa231f40a2f_icon-api.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Documentation</div></div></a></nav></div><div data-delay="0" data-hover="false" class="mobile-dropdown-menu w-dropdown"><div class="mobile-menu-link w-dropdown-toggle"><div class="icon-2 w-icon-dropdown-toggle"></div><div class="dropdown-text-mobile">integrations</div></div><nav class="mobile-menu-list w-dropdown-list"><div class="mobile-menu-2-col"><a href="/integrations/hubspot" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8c8ef7eacfa554e910_menu-logo-hubspot.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">HubSpot</div></div></a><a href="/integrations/mcp" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68bf093aecde0722ace9c705_961fa156b293e5534d364e841c8b032e_mcp_icon.webp"/></div><div class="nav-content-wrap"><div class="dropdown-title">MCP</div></div></a><a href="/integrations/attio" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/689c75051a365efd34c08ecf_icon-attio.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Attio</div></div></a><a href="/integrations/clay" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880aea27822d97e0b8687b2_menu-logo-clay.png"/></div><div class="nav-content-wrap"><div class="dropdown-title">Clay</div></div></a><a href="/integrations/airtable" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68a649ac759ad7a1de4b8ab4_airtable.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Airtable</div></div></a><a href="https://databar.ai/" target="_blank" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8c8ad679935f40f8f3_menu-logo-databar.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Databar</div></div></a><a href="https://www.getcargo.ai/" target="_blank" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/689c747004f84cc41e97c69b_icon-cargo.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Cargo</div></div></a><a href="/integrations/unify" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a4d0f1fa6f55eb18ec484f1_icon-unify.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Unify</div></div></a><a href="https://instantly.ai/" target="_blank" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a4d0f20c6b7e55a8d93fdcf_icon-instantly.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Instantly</div></div></a><a href="https://www.clarify.ai/" target="_blank" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a4d0f2095b630618210e18d_icon-clarify.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Clarify</div></div></a></div></nav></div><div data-delay="0" data-hover="false" class="mobile-dropdown-menu w-dropdown"><div class="mobile-menu-link w-dropdown-toggle"><div class="icon-2 w-icon-dropdown-toggle"></div><div class="dropdown-text-mobile">Company</div></div><nav class="mobile-menu-list w-dropdown-list"><a href="/company/about" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8c1420fd12f2d210e4_menu-icon-about.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">About</div></div></a><a href="/company/swarm-insights" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6322cf0aceeff74711c3b1e8_icon_nrm_8.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Insights</div></div></a><a href="/company/case-studies" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img width="17" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8c6baf2847def021c8_menu-icon-case-studies.svg" alt=""/></div><div class="nav-content-wrap"><div class="dropdown-title">Case Studies</div></div></a><a href="/company/trust-center" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8cb311a2c3a9f5a8e7_menu-icon-trustcenter.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Trust Center</div></div></a><a href="/company/go-to-network-academy" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41ac7651fb7e141fabf4d_icon-academy.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Go-To-Network Academy</div></div></a><a href="https://www.swarmhackers.com/" target="_blank" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8cae4c6d52ff381c22_menu-icon-community.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Community</div></div></a><a href="/company/emails" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66f41ac8ebdf444fe5d6abf3_icon-casestudies.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Subscribe</div></div></a><a href="/company/contact" class="dropdown-link-mobile w-inline-block"><div class="icon-square"><img alt="" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6880ae8c6e145f51eb885f8b_menu-icon-contact.svg"/></div><div class="nav-content-wrap"><div class="dropdown-title">Contact</div></div></a></nav></div><a href="/pricing" class="mobile-nav-link w-nav-link">PRICING</a><div class="nav_button-wrapper-mobile"><a data-cta="get-started-navbar" href="/start" class="button-swarm is-medium w-button">Get started →</a><a href="https://app.theswarm.com" data-cta="login-navbar" target="_blank" class="button is-medium w-button">Log In</a><a href="/product/fulldemo" data-cta="demo-navbar" class="button is-medium w-button">Demo</a></div></nav><div data-ix="navbar-interaction-settings" class="menu-button w-nav-button"><div class="line-top-3"></div><div class="line-middle"></div><div class="line-bottom"></div></div></div></div></div><header class="section-layout-1 background-hero-1-image"><section id="home-waitlist" class="page-padding"><div class="container-large"><div class="padding-vertical"><div class="layout-centered z-index-2"><a href="/integrations/mcp" target="_blank" class="button-animation margin-bottom w-inline-block"><div class="text-size-regular text-weight-normal"><span>Available on Claude</span></div></a><div class="home-content"><h1 class="heading-xlarge text-align-center">The Relationship Intelligence Leader<br/></h1><div class="margin-vertical margin-small"><div class="text-size-medium mobile-centered-text">The Swarm curates a rich dataset of 500M profiles with daily job changes, 50M companies with fundraising data, and a unique relationship mapping AI engine for builders and investors.<br/></div></div><div class="w-layout-grid buttons-grid"><a data-cta="get-started-hero" href="/start" class="button-swarm w-button">Get started →</a><a href="#" class="button-link w-inline-block w-lightbox"><div class="button-circles"><div id="w-node-bc30cc0f-32a7-42dc-d441-5acae56def2c-bbc40feb" data-w-id="bc30cc0f-32a7-42dc-d441-5acae56def2c" class="button-circle size-large bg-orange"><div class="button-play-circle_arrow"></div></div><div class="button-circle size-large bg-pink is-second"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/63fa5f22f86571953bfe31ab_david-connors.png" loading="lazy" width="56" height="54" alt="David Connors - CEO - The Swarm"/></div></div><div data-w-id="bc30cc0f-32a7-42dc-d441-5acae56def30" class="button-label"><div class="button-text">Intro Video</div><div class="button-subtext">with Co-Founder<br/>David Connors</div></div><script type="application/json" class="w-json">{
  "items": [
    {
      "url": "https://youtube.com/watch?v=RSKg0cTLgZM&autoplay=1&rel=0",
      "originalUrl": "https://youtube.com/watch?v=RSKg0cTLgZM&autoplay=1&rel=0",
      "width": 940,
      "height": 528,
      "thumbnailUrl": "https://i.ytimg.com/vi/RSKg0cTLgZM/hqdefault.jpg",
      "html": "<iframe class=\"embedly-embed\" src=\"//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FRSKg0cTLgZM%3Ffeature%3Doembed%26rel%3D0%26autoplay%3D1&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DRSKg0cTLgZM&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FRSKg0cTLgZM%2Fhqdefault.jpg&autoplay=1&type=text%2Fhtml&schema=youtube\" width=\"940\" height=\"528\" scrolling=\"no\" title=\"YouTube embed\" frameborder=\"0\" allow=\"autoplay; fullscreen; encrypted-media; picture-in-picture;\" allowfullscreen=\"true\"></iframe>",
      "type": "video"
    }
  ],
  "group": ""
}</script></a></div></div><div class="button-gradient-animation w-embed"><style>
.button-animation {
    position: relative;
    display: inline-block;
    padding: 12px 24px;
    text-decoration: none;
    border-radius: 50px;
    background: transparent;
    overflow: hidden;
    cursor: pointer;
}

/* Animated border gradient */
.button-animation::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(270deg, 
        #FF8434 0%, 
        #FDD470 16.67%, 
        #EBAC7E 33.33%, 
        #4D6CED 50%,
        #FF8434 66.67%,
        #FDD470 83.33%,
        #FF8434 100%
    );
    background-size: 200% 100%;
    border-radius: 50px;
    animation: borderSlide 5s linear infinite;
    z-index: -2;
}

/* Inner background to create border effect */
.button-animation::after {
    content: '';
    position: absolute;
    top: 1px;
    left: 1px;
    right: 1px;
    bottom: 1px;
    background: #1a1a1a;
    border-radius: 49px;
    z-index: -1;
}

/* Animated text gradient */
.button-animation span {
    position: relative;
    background: linear-gradient(270deg, 
        #FF8434 0%, 
        #FDD470 16.67%, 
        #EBAC7E 33.33%, 
        #4D6CED 50%,
        #FF8434 66.67%,
        #FDD470 83.33%,
        #FF8434 100%
    );
    background-size: 200% 100%;
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: textSlide 5s linear infinite;
}

@keyframes borderSlide {
    0% {
        background-position: 0% center;
    }
    100% {
        background-position: 200% center;
    }
}

@keyframes textSlide {
    0% {
        background-position: 0% center;
    }
    100% {
        background-position: 200% center;
    }
}

/* Hover effect - optional */
.button-animation:hover::before {
    animation-duration: 1.5s;
}

.button-animation:hover span {
    animation-duration: 1.5s;
}
</style></div></div></div></div></section><div class="elements-container animated-bg margin-top-50"><div class="elements-track"><div class="elements-carousel mask-right"><div class="elements-item"><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/64cfef3ddad21a00fda16ec7_linkedin-icon.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-200">LinkedIn Connections</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a35a33879cf878795_icon-google-email.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-130">Email Contacts</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03af8ce56547de334f7_icon-google-calendar.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label">Calendar Contacts</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a21d6fc618b631520_icon-reactions.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label">Posts &amp; Reactions</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03aacd789c0dfb96bcc_icon-investors-data.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label">Fundraising data</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03b1324c33835ed8a57_icon-people-data.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-120">People Data</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03b6090c4299ecaa752_icon-work-overlaps.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-130">Work Overlaps</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a336ea246d53ebeb7_icon-education-overlaps.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label">Education Overlaps</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03ab7330f053828dcc4_icon-live-enrichment.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-130">Live Enrichment</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a9c99834dec468a0a_icon-job-change.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-120">Job Changes</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03ab5f61803c3ca9211_icon-company-data.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label">Firmographics</div></div></div><div class="elements-item"><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/64cfef3ddad21a00fda16ec7_linkedin-icon.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-200">LinkedIn Connections</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a35a33879cf878795_icon-google-email.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-130">Email Contacts</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03af8ce56547de334f7_icon-google-calendar.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label">Calendar Contacts</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a21d6fc618b631520_icon-reactions.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label">Posts &amp; Reactions</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03aacd789c0dfb96bcc_icon-investors-data.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label">Fundraising data</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03b1324c33835ed8a57_icon-people-data.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-120">People Data</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03b6090c4299ecaa752_icon-work-overlaps.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-130">Work Overlaps</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a336ea246d53ebeb7_icon-education-overlaps.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label">Education Overlaps</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03ab7330f053828dcc4_icon-live-enrichment.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-130">Live Enrichment</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a9c99834dec468a0a_icon-job-change.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-120">Job Changes</div></div><div class="element-item"><div class="element-item-icon"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03ab5f61803c3ca9211_icon-company-data.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label">Firmographics</div></div></div></div></div><div class="centered-logo"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e505fca9b9f45a0e01ec_3304724e6bdba74bb0a0b7f84581c701_logo-swarm-centered.png" loading="lazy" alt="" class="logo-image"/><div class="logo-blurred-background hide-tablet"></div></div><div class="elements-track"><div class="elements-carousel mask-left"><div class="elements-item"><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a0a70aba9c83415c6_a21c0c483babb260dadaddac9196e4b6_icon-hubspot.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-100">HubSpot</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a4f5fc840cf81fc13_icon-clay.png" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">Clay</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a1324c33835ed8a04_icon-attio.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">Attio</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a4d0f1fa6f55eb18ec484f1_icon-unify.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">Unify</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a4d0f20c6b7e55a8d93fdcf_icon-instantly.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">Instantly</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a4d0f2095b630618210e18d_icon-clarify.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">Clarify</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03ac42b999c3b9a1129_icon-CSV.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">CSV</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68a649ac759ad7a1de4b8ab4_airtable.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-80">Airtable</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a62441366cf8ff4ea_icon-cargo.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-80">Cargo</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a1a46788de10697ef_icon-API.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">API</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a74c7e2797e44a570_icon-MCP.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">MCP</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/67a51806dffb06b22d4adb85_theswarm-icon-logo.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-80">WebApp</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68f265e23cabb9b8fc862997_lovable.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-120">Custom Apps</div></div></div><div class="elements-item"><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a0a70aba9c83415c6_a21c0c483babb260dadaddac9196e4b6_icon-hubspot.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-100">HubSpot</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a4f5fc840cf81fc13_icon-clay.png" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">Clay</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a1324c33835ed8a04_icon-attio.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">Attio</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a4d0f1fa6f55eb18ec484f1_icon-unify.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">Unify</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a4d0f20c6b7e55a8d93fdcf_icon-instantly.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">Instantly</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a4d0f2095b630618210e18d_icon-clarify.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">Clarify</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03ac42b999c3b9a1129_icon-CSV.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">CSV</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68a649ac759ad7a1de4b8ab4_airtable.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-80">Airtable</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a62441366cf8ff4ea_icon-cargo.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-80">Cargo</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a1a46788de10697ef_icon-API.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">API</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68e7e03a74c7e2797e44a570_icon-MCP.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-50">MCP</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/67a51806dffb06b22d4adb85_theswarm-icon-logo.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-80">WebApp</div></div><div class="element-item"><div class="element-item-icon circle"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68f265e23cabb9b8fc862997_lovable.svg" loading="lazy" alt="" class="chart-item-icon-image"/></div><div class="element-item-label _w-120">Custom Apps</div></div></div></div></div></div><div class="elements-styles w-embed"><style>
.elements-carousel.mask-right {
  -webkit-mask-image: linear-gradient(to right, black 85%, transparent 100%);
  mask-image: linear-gradient(to right, black 85%, transparent 100%);
}

.elements-carousel.mask-left {
  -webkit-mask-image: linear-gradient(to left, black 85%, transparent 100%);
  mask-image: linear-gradient(to left, black 85%, transparent 100%);
}

/* For screens wider than 1440px */
@media (min-width: 1440px) {
  .elements-carousel.mask-right {
    -webkit-mask-image: linear-gradient(to right, black 93%, transparent 100%);
    mask-image: linear-gradient(to right, black 93%, transparent 100%);
  }
  .elements-carousel.mask-left {
    -webkit-mask-image: linear-gradient(to left, black 93%, transparent 100%);
    mask-image: linear-gradient(to left, black 93%, transparent 100%);
  }
}

.animated-bg {
  background-image: url("data:image/svg+xml,%3Csvg width='1440' height='2' viewBox='0 0 1440 2' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E.line%7Bstroke-dasharray:6 6;animation:dash 2s linear infinite%7D@keyframes dash%7Bto%7Bstroke-dashoffset:12%7D%7D%3C/style%3E%3Cpath class='line' d='M1440 1H0' stroke='%23464646'/%3E%3C/svg%3E");
  background-repeat: repeat-x;
  background-size: 1440px 2px;
  background-position: center;
}

.logo-blurred-background {
  animation: rotate360 6s linear infinite;
}

@keyframes rotate360 {
  to {
    transform: rotate(360deg);
  }
}
</style></div><div class="background-gradient hide-mobile-portrait"></div></header><div class="section-layout-1"><div class="padding-global"><div class="container-large"><div class="padding-top padding-xlarge"><div class="margin-bottom margin-xlarge"><div class="text-align-center"><div class="max-width-large align-center"><div class="margin-bottom margin-small"><h2 class="heading-medium text-color-orange">Let&#x27;s start with you.</h2><h3 class="heading-style-h2">What would you like to explore?</h3></div></div></div></div></div><div class="margin-vertical margin-huge"><div mouse-tracker="" class="w-layout-grid layout_row move-down"><a id="w-node-_283a02bf-ef4a-4a52-a2ea-3f5280518535-80518535" href="/data/people" class="about_layout_card card w-inline-block"><div class="about_card-content card-content"><div class="about_card-content-top"><div class="margin-bottom margin-xxsmall"><div class="layout_item-icon-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6851c9c9ebc5e83b0ca2d554_icon-business-network.webp" alt="" class="icon-1x1-medium-2"/></div></div><div class="margin-bottom margin-xxsmall"><h3 class="heading-style-h5">Real-time people data</h3></div><p class="text-size-regular text-color-light-grey hide-mobile-landscape">Live enrich up to 50k profiles daily. Get access to our dataset of 500M profiles.</p></div></div></a><a id="w-node-_283a02bf-ef4a-4a52-a2ea-3f5280518535-80518535" href="/data/people" class="about_layout_card card w-inline-block"><div class="about_card-content card-content"><div class="about_card-content-top"><div class="margin-bottom margin-xxsmall"><div class="layout_item-icon-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6851d743319923354b6f5267_icon-job-change-2.webp" alt="" class="icon-1x1-medium-2"/></div></div><div class="margin-bottom margin-xxsmall"><h3 class="heading-style-h5">Job change tracking data</h3></div><p class="text-size-regular text-color-light-grey hide-mobile-landscape">The Swarm AI detects job and role changes and update our data on a daily basis.</p></div></div></a><a id="w-node-_283a02bf-ef4a-4a52-a2ea-3f5280518535-80518535" href="/data/company" class="about_layout_card card w-inline-block"><div class="about_card-content card-content"><div class="about_card-content-top"><div class="margin-bottom margin-xxsmall"><div class="layout_item-icon-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6851d743a7050ce2906641f9_icon-companies.webp" alt="" class="icon-1x1-medium-2"/></div></div><div class="margin-bottom margin-xxsmall"><h3 class="heading-style-h5">High-fidelity company data</h3></div><p class="text-size-regular text-color-light-grey hide-mobile-landscape">The Swarm database includes 50M companies with fundraising data.</p></div></div></a><a id="w-node-_283a02bf-ef4a-4a52-a2ea-3f5280518535-80518535" href="/product/data-api" class="about_layout_card card w-inline-block"><div class="about_card-content card-content"><div class="about_card-content-top"><div class="margin-bottom margin-xxsmall"><div class="layout_item-icon-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68a76c89aaceab63fb1f3b95_68a76aded9e4bd68bca06260_social-connections.webp" alt="" class="icon-1x1-medium-2"/></div></div><div class="margin-bottom margin-xxsmall"><h3 class="heading-style-h5">Social engagement data</h3></div><p class="text-size-regular text-color-light-grey hide-mobile-landscape">Retrieve a social post content and its reactors. Now available to all customers.</p></div></div></a><a id="w-node-_283a02bf-ef4a-4a52-a2ea-3f5280518535-80518535" href="/product/web-application" class="about_layout_card card w-inline-block"><div class="about_card-content card-content"><div class="about_card-content-top"><div class="margin-bottom margin-xxsmall"><div class="layout_item-icon-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6851d3cfbdbcd756e492edcb_9545b2a432e0ea9feeb54b09c669ef03_icon-business-swarm.webp" alt="" class="icon-1x1-medium-2"/></div></div><div class="margin-bottom margin-xxsmall"><h3 class="heading-style-h5">Relationship data on Swarm</h3></div><p class="text-size-regular text-color-light-grey hide-mobile-landscape">Our SaaS platform is built for teams to combine their networks.</p></div></div></a><a id="w-node-_283a02bf-ef4a-4a52-a2ea-3f5280518535-80518535" href="/integrations/clay" class="about_layout_card card w-inline-block"><div class="about_card-content card-content"><div class="about_card-content-top"><div class="margin-bottom margin-xxsmall"><div class="layout_item-icon-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6851d401bdbcd756e492edce_27548bf1cd16a6f9b096a983bf7e3230_icon-clayhack-menu.webp" alt="" class="icon-1x1-medium-2"/></div></div><div class="margin-bottom margin-xxsmall"><h3 class="heading-style-h5">Relationship data on Clay </h3></div><p class="text-size-regular text-color-light-grey hide-mobile-landscape">Leverage our Clay integration to find the right intros, right from Clay.</p></div></div></a><a id="w-node-_283a02bf-ef4a-4a52-a2ea-3f5280518535-80518535" href="/integrations/hubspot" class="about_layout_card card w-inline-block"><div class="about_card-content card-content"><div class="about_card-content-top"><div class="margin-bottom margin-xxsmall"><div class="layout_item-icon-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6851d40abdbcd756e492edcf_e9ad2df08d09029f9e0ebe854c856419_icon-hubspot.webp" alt="HubSpot - 3D Icon" class="icon-1x1-medium-2"/></div></div><div class="margin-bottom margin-xxsmall"><h3 class="heading-style-h5">Relationship data on HubSpot</h3></div><p class="text-size-regular text-color-light-grey hide-mobile-landscape">Learn about our solutions to integrate Swarm data in your CRM.</p></div></div></a><a id="w-node-_283a02bf-ef4a-4a52-a2ea-3f5280518535-80518535" href="/integrations/mcp" class="about_layout_card card w-inline-block"><div class="about_card-content card-content"><div class="about_card-content-top"><div class="margin-bottom margin-xxsmall"><div class="layout_item-icon-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/68bf093aecde0722ace9c705_961fa156b293e5534d364e841c8b032e_mcp_icon.webp" alt="" class="icon-1x1-medium-2"/></div></div><div class="margin-bottom margin-xxsmall"><h3 class="heading-style-h5">Relationship data via MCP</h3></div><p class="text-size-regular text-color-light-grey hide-mobile-landscape">Get access to your relationship data on Claude or directly connect to our MCP server.</p></div></div></a></div></div><div class="margin-bottom margin-small hidden"><h2 class="heading-medium text-color-orange text-align-center">Not sure? Talk to our <a href="https://www.theswarm.com/ai-ceo">new AI CEO</a>.</h2><div class="text-size-medium mobile-centered-text">He’s nice. And knows his stuff.<br/></div></div></div></div></div><section data-w-id="bcc4e0d4-25ab-f157-dc57-7eac61789a41" class="section_testimonial"><div class="overflow-hidden"><div class="padding-global"><div class="container-large"><div class="margin-bottom"><div class="text-align-center-2"><div class="max-width-large-2 align-center"><div class="margin-bottom-2 margin-small"><h2 class="heading-style-h2">Loved by pioneers and leaders </h2></div><p class="text-size-regular-2 hide-mobile-landscape">Thousands of early-stage startups and established companies use The Swarm.<br/></p></div></div></div><div class="w-layout-grid advisors-logos margin-bottom"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/69f90917fc27cf3a6d03746f_Monaco.svg" loading="lazy" id="w-node-a0825e58-9b92-fec9-2f91-b9cdd2d97387-bbc40feb" height="70" alt="Reforge Logo" class="customer-logo reduce-logo"/><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66e92d7a1ea9b1ba7c7e5d36_logo_clay.svg" loading="lazy" id="w-node-_32429ba5-35ac-0309-b48e-5acb24a56c3e-bbc40feb" alt="Clay logo" class="customer-logo"/><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/66e92d795c618e8f8a917920_logo_AIsdr.svg" loading="lazy" id="w-node-_4357f53d-ab57-baee-ad7f-9da774eb6007-bbc40feb" alt="AiSDR Logo" class="customer-logo reduce-logo"/><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/681e255517ed43ad5d7a543a_EDF-logo.svg" loading="lazy" id="w-node-_29d13b21-f0f2-b761-307f-1d5344a0b0fb-bbc40feb" alt="Environmental Defense Fund" class="customer-logo edf-logo"/><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/698f4d1f791278fadd02f613_klarna.svg" loading="lazy" id="w-node-be23f06a-3687-1b62-4f39-265e7aae3163-bbc40feb" alt="Athena Logo" class="customer-logo reduce-logo"/><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a3b1af34a2a307af6531f02_clarify-logo.svg" loading="lazy" id="w-node-b5a9b7b5-2a62-f27e-addd-403c0b21e07a-bbc40feb" alt="Two Sigma Ventures Logo" class="customer-logo"/><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6a3b1a5738dde67377614ca0_pin-logo.svg" loading="lazy" id="w-node-_0e99f568-ed76-3ba7-6d75-72b7c97ce338-bbc40feb" alt="Two Sigma Ventures Logo" class="customer-logo"/><div class="backed-by"><div class="backed-by-span-text"><div class="label-text">Backed by</div></div><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/67dd28026e3a17721a4c4f8f_logo_hubspot_ventures_color.webp" loading="lazy" id="w-node-_74d29ea3-ec4a-1e74-0924-19cd393bece4-bbc40feb" alt="HubSpot Ventures" class="customer-logo enlarged-logo"/></div></div></div></div><div class="testimonial_component"><div mouse-tracker="" class="testimonial_loop-trigger"><div class="testimonial_card"><div class="testimonial_content-top"><div class="text-size-medium">I&#x27;ve waited 15 years for a platform like The Swarm. I almost don&#x27;t want other companies to find out!</div></div><div class="margin-top margin-small"><div class="testimonial_client"><div class="testimonial_client-image-wrapper"><img width="Auto" src="https://cdn.prod.website-files.com/6851cb7ccf2671df0babeda5/683f0aa316d78b1431d87c17_Vivek%20Sodera.webp" alt="" loading="eager" class="testimonial_customer-image"/></div><div class="testimonial_client-info"><div class="text-size-medium">Vivek Sodera</div><div class="text-size-small text-color-yellow">Co-Founder at Superhuman</div></div></div></div></div><div class="testimonial_card"><div class="testimonial_content-top"><div class="text-size-medium">We’re using The Swarm as the single source of truth for people relationships.</div></div><div class="margin-top margin-small"><div class="testimonial_client"><div class="testimonial_client-image-wrapper"><img width="Auto" src="https://cdn.prod.website-files.com/6851cb7ccf2671df0babeda5/683f0b506261d0976311f47d_Eric%20Tarczynski.webp" alt="" loading="eager" class="testimonial_customer-image"/></div><div class="testimonial_client-info"><div class="text-size-medium">Eric Tarczynski</div><div class="text-size-small text-color-yellow">Managing Partner at Contrary</div></div></div></div></div><div class="testimonial_card"><div class="testimonial_content-top"><div class="text-size-medium">We work with a number of enrichment providers and our team loves working with you guys the most!</div></div><div class="margin-top margin-small"><div class="testimonial_client"><div class="testimonial_client-image-wrapper"><img width="Auto" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/69e0f520fd1af6245fce67f7_jarrod.jpg" alt="" loading="eager" class="testimonial_customer-image"/></div><div class="testimonial_client-info"><div class="text-size-medium">Jarrod Webb</div><div class="text-size-small text-color-yellow">Co-Founder at Blinq</div></div></div></div></div><div class="testimonial_card"><div class="testimonial_content-top"><div class="text-size-medium">The Swarm is a key partner to AiSDR. They stand out with daily refreshes, an ultra responsive team, and flexible terms. Their Network Mapper API also makes them a top provider to watch.</div></div><div class="margin-top margin-small"><div class="testimonial_client"><div class="testimonial_client-image-wrapper"><img width="Auto" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/67c86945bfaaf3607176ddca_yuriy-zaremba.jpeg" alt="Jeff Leathers" loading="eager" class="testimonial_customer-image"/></div><div class="testimonial_client-info"><div class="text-size-medium">Yuriy Zaremba</div><div class="text-size-small text-color-yellow">Co-founder &amp; CEO at AiSDR<br/>2X YC Alumni</div></div></div></div></div><div class="testimonial_card"><div class="testimonial_content-top"><div class="text-size-medium">Teams should always tap the network of their stakeholders. The Swarm makes it easy to map them and find warm intros.</div></div><div class="margin-top margin-small"><div class="testimonial_client"><div class="testimonial_client-image-wrapper"><img width="Auto" src="https://cdn.prod.website-files.com/6851cb7ccf2671df0babeda5/683f0aa3acd6a230b88e0cf7_Kevin%20Mahaffey.webp" alt="" loading="eager" class="testimonial_customer-image"/></div><div class="testimonial_client-info"><div class="text-size-medium">Kevin Mahaffey</div><div class="text-size-small text-color-yellow">Co-Founder at Lookout</div></div></div></div></div><div class="testimonial_card"><div class="testimonial_content-top"><div class="text-size-medium">In the age of AI, the winning go-to-market motions will be built on authentic relationships.</div></div><div class="margin-top margin-small"><div class="testimonial_client"><div class="testimonial_client-image-wrapper"><img width="Auto" src="https://cdn.prod.website-files.com/6851cb7ccf2671df0babeda5/683f0aa311cdd19dde1bd588_Adam%20Coccari.jpg" alt="" loading="eager" class="testimonial_customer-image"/></div><div class="testimonial_client-info"><div class="text-size-medium">Adam Coccari</div><div class="text-size-small text-color-yellow">Managing Director <br/>at HubSpot Ventures</div></div></div></div></div><div class="testimonial_card"><div class="testimonial_content-top"><div class="text-size-medium">We introduce a lot of our founders to warm connections who could be sales entry points for them.</div></div><div class="margin-top margin-small"><div class="testimonial_client"><div class="testimonial_client-image-wrapper"><img width="Auto" src="https://cdn.prod.website-files.com/6851cb7ccf2671df0babeda5/683f0b6b4a78dd2af86032d5_Selin%20Ataman.webp" alt="" loading="eager" class="testimonial_customer-image"/></div><div class="testimonial_client-info"><div class="text-size-medium">Selin Ataman</div><div class="text-size-small text-color-yellow">Talent Manager at 500</div></div></div></div></div></div><div mouse-tracker="" class="testimonial_loop-trigger"><div class="testimonial_card"><div class="testimonial_content-top"><div class="text-size-medium">I&#x27;ve waited 15 years for a platform like The Swarm. I almost don&#x27;t want other companies to find out!</div></div><div class="margin-top margin-small"><div class="testimonial_client"><div class="testimonial_client-image-wrapper"><img width="Auto" src="https://cdn.prod.website-files.com/6851cb7ccf2671df0babeda5/683f0aa316d78b1431d87c17_Vivek%20Sodera.webp" alt="" loading="eager" class="testimonial_customer-image"/></div><div class="testimonial_client-info"><div class="text-size-medium">Vivek Sodera</div><div class="text-size-small text-color-yellow">Co-Founder at Superhuman</div></div></div></div></div><div class="testimonial_card"><div class="testimonial_content-top"><div class="text-size-medium">We’re using The Swarm as the single source of truth for people relationships.</div></div><div class="margin-top margin-small"><div class="testimonial_client"><div class="testimonial_client-image-wrapper"><img width="Auto" src="https://cdn.prod.website-files.com/6851cb7ccf2671df0babeda5/683f0b506261d0976311f47d_Eric%20Tarczynski.webp" alt="" loading="eager" class="testimonial_customer-image"/></div><div class="testimonial_client-info"><div class="text-size-medium">Eric Tarczynski</div><div class="text-size-small text-color-yellow">Managing Partner at Contrary</div></div></div></div></div><div class="testimonial_card"><div class="testimonial_content-top"><div class="text-size-medium">The Swarm is a key partner to AiSDR. They stand out with daily refreshes, an ultra responsive team, and flexible terms. Their Network Mapper API also makes them a top provider to watch.</div></div><div class="margin-top margin-small"><div class="testimonial_client"><div class="testimonial_client-image-wrapper"><img width="Auto" src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/67c86945bfaaf3607176ddca_yuriy-zaremba.jpeg" alt="Jeff Leathers" loading="eager" class="testimonial_customer-image"/></div><div class="testimonial_client-info"><div class="text-size-medium">Yuriy Zaremba</div><div class="text-size-small text-color-yellow">Co-founder &amp; CEO at AiSDR<br/>2X YC Alumni</div></div></div></div></div><div class="testimonial_card"><div class="testimonial_content-top"><div class="text-size-medium">Teams should always tap the network of their stakeholders. The Swarm makes it easy to map them and find warm intros.</div></div><div class="margin-top margin-small"><div class="testimonial_client"><div class="testimonial_client-image-wrapper"><img width="Auto" src="https://cdn.prod.website-files.com/6851cb7ccf2671df0babeda5/683f0aa3acd6a230b88e0cf7_Kevin%20Mahaffey.webp" alt="" loading="eager" class="testimonial_customer-image"/></div><div class="testimonial_client-info"><div class="text-size-medium">Kevin Mahaffey</div><div class="text-size-small text-color-yellow">Co-Founder at Lookout</div></div></div></div></div><div class="testimonial_card"><div class="testimonial_content-top"><div class="text-size-medium">In the age of AI, the winning go-to-market motions will be built on authentic relationships.</div></div><div class="margin-top margin-small"><div class="testimonial_client"><div class="testimonial_client-image-wrapper"><img width="Auto" src="https://cdn.prod.website-files.com/6851cb7ccf2671df0babeda5/683f0aa311cdd19dde1bd588_Adam%20Coccari.jpg" alt="" loading="eager" class="testimonial_customer-image"/></div><div class="testimonial_client-info"><div class="text-size-medium">Adam Coccari</div><div class="text-size-small text-color-yellow">Managing Director <br/>at HubSpot Ventures</div></div></div></div></div><div class="testimonial_card"><div class="testimonial_content-top"><div class="text-size-medium">We introduce a lot of our founders to warm connections who could be sales entry points for them.</div></div><div class="margin-top margin-small"><div class="testimonial_client"><div class="testimonial_client-image-wrapper"><img width="Auto" src="https://cdn.prod.website-files.com/6851cb7ccf2671df0babeda5/683f0b6b4a78dd2af86032d5_Selin%20Ataman.webp" alt="" loading="eager" class="testimonial_customer-image"/></div><div class="testimonial_client-info"><div class="text-size-medium">Selin Ataman</div><div class="text-size-small text-color-yellow">Talent Manager at 500</div></div></div></div></div></div></div></div></section><div class="section-layout-1"><div class="padding-global"><div class="container-large"><div class="padding-top padding-xlarge"><div class="margin-bottom margin-xlarge"><div class="text-align-center"><div class="max-width-large align-center"><div class="margin-bottom margin-small"><h3 class="heading-style-h2">One API.<br/>580 million profiles. <br/>168 quadrillion relationships.</h3></div></div></div></div><div class="margin-bottom"><div class="swarmdata_component"><div data-current="Relationship Data" data-easing="ease" data-duration-in="300" data-duration-out="100" class="swarmdata_tabs w-tabs"><div class="swarmdata_tabs-menu no-scrollbar w-tab-menu"><a data-w-tab="Relationship Data" class="swarmdata_tab-link w-inline-block w-tab-link w--current"><div class="text-size-medium">Relationship Data</div></a><a data-w-tab="People Data" class="swarmdata_tab-link w-inline-block w-tab-link"><div class="text-size-medium">People &amp; Job Change Data</div></a><a data-w-tab="Company Data" class="swarmdata_tab-link w-inline-block w-tab-link"><div class="text-size-medium">Company &amp; Fundraising Data</div></a></div><div class="swarmdata_tabs-content w-tab-content"><div data-w-tab="Relationship Data" class="swarmdata_tab-pane w-tab-pane w--tab-active"><div class="swarmdata_tab-wrapper"><div data-script="relationship-data" class="swarmdata_script-wrapper"><div class="data-script-a w-embed w-script"><script>
// Standalone JSON Viewer Script (for data-script="script-A")

;((window) => {
  const INJECTED_STYLES = new Set();

  function injectStylesOnce(id, cssContent) {
    if (INJECTED_STYLES.has(id) || document.getElementById(id)) {
      INJECTED_STYLES.add(id);
      return;
    }
    const style = document.createElement('style');
    style.id = id;
    style.textContent = cssContent;
    document.head.appendChild(style);
    INJECTED_STYLES.add(id);
  }

  function debounce(func, wait) {
    let timeout;
    return function(...args) {
      clearTimeout(timeout);
      timeout = setTimeout(() => func.apply(this, args), wait);
    };
  }

  class BaseVisualization {
    constructor(container, options = {}) {
      this.container = container;
      if (!this.container) {
        console.error(`Container not found for visualization.`);
        this.isValid = false;
        return;
      }
      this.isValid = true;
      this.options = options;
      this.canvas = null;
      this.ctx = null;
      this.animationId = null;
      this.resizeObserver = null;
      this.eventListeners = [];
      this.SCRIPT_ID = 'base-viz';
      this.CSS_STYLES = '';
      this.debouncedResizeHandler = debounce(this.handleResize.bind(this), 250);
    }

    init() {
      if (!this.isValid) return;
      this.injectOwnStyles();
      this.setupDOM();
      this.setupCanvas();
      this.setupEventListeners();
      this.handleResize();
    }

    injectOwnStyles() {
      if (this.CSS_STYLES) {
        injectStylesOnce(`${this.SCRIPT_ID}-styles`, this.CSS_STYLES);
      }
    }

    setupDOM() {
      this.canvas = document.createElement('canvas');
      this.canvas.style.display = 'block';
      this.canvas.style.width = '100%';
      this.canvas.style.height = '100%';
      this.container.innerHTML = '';
      this.container.appendChild(this.canvas);
      if (getComputedStyle(this.container).position === 'static') {
        this.container.style.position = 'relative';
      }
      this.container.style.overflow = 'hidden';
    }

    setupCanvas() {
      if (!this.canvas) return;
      this.ctx = this.canvas.getContext('2d');
    }

    _addEventListener(element, type, listener, options) {
      const boundListener = listener.bind(this);
      element.addEventListener(type, boundListener, options);
      this.eventListeners.push({ element, type, listener: boundListener, options });
    }

    setupEventListeners() {
      if (window.ResizeObserver) {
        this.resizeObserver = new ResizeObserver(this.debouncedResizeHandler);
        this.resizeObserver.observe(this.container);
      } else {
        this._addEventListener(window, 'resize', this.debouncedResizeHandler);
      }
    }

    handleResize() {
      if (!this.canvas || !this.ctx || !this.container.clientWidth || !this.container.clientHeight) {
        return;
      }
      const rect = this.container.getBoundingClientRect();
      const dpr = window.devicePixelRatio || 1;
      this.canvas.width = rect.width * dpr;
      this.canvas.height = rect.height * dpr;
      this.canvas.style.width = `${rect.width}px`;
      this.canvas.style.height = `${rect.height}px`;
      this.ctx.scale(dpr, dpr);
      this.requestRedraw();
    }

    requestRedraw() { /* Placeholder, specific viz might implement */ }

    destroy() {
      if (!this.isValid) return;
      if (this.animationId) cancelAnimationFrame(this.animationId);
      if (this.resizeObserver) this.resizeObserver.disconnect();
      this.eventListeners.forEach(({ element, type, listener, options }) => {
        element.removeEventListener(type, listener, options);
      });
      if (this.container) {
        this.container.innerHTML = '';
        delete this.container.dataset.v0VizInitializedScriptA; // Specific flag
      }
      this.canvas = null; this.ctx = null; this.container = null; this.isValid = false;
    }
    startAnimationLoop() {}
    stopAnimationLoop() {
      if (this.animationId) {
        cancelAnimationFrame(this.animationId);
        this.animationId = null;
      }
    }
  }

  class JsonViz extends BaseVisualization {
    constructor(container, options = {}) {
      super(container, options);
      if (!this.isValid) return;
      this.SCRIPT_ID = "script-A-json-viewer";
      this.CSS_STYLES = `.${this.SCRIPT_ID}-container { /* Styles if needed */ }`;
      this.jsonData = this.options.jsonData || [
        {
          profile: { full_name: "David Connors", current_title: "Co-Founder & CEO", linkedin_slug: "connorsdavid", work_email: "david@theswarm.com", current_company_name: "The Swarm", current_company_website: "theswarm.com", current_company_industry: "Computer Software" },
          connections: [{ sources: [{ origin: "shared_investor", investor: "Felicis Ventures", portfolio_company: "Plaid" }], user_id: "c09a9b47-7de1-4f6a-8085-c44ed18db9e0", user_name: "Maximus Greenwald", user_linkedin_slug: "max-greenwald", connection_strength: 0.1084125480166015, manual_strength: null, strength_normalized: 1, created_at: "2024-12-24" }],
        },
      ];
      this.colorConfig = { key: "#727272", stringValue: "#EDEDED", dateValue: "#4a6aef", numberValue: "#fdd167", booleanValue: "#FF7B72", nullValue: "#FF7B72", brackets: "#444241", punctuation: "#444241", background: "#0e0d0d", indentLineColor: "rgba(255, 255, 255, 0.1)", ...this.options.colorConfig };
      this.scrollY = 0; this.contentHeight = 0; this.isDragging = false; this.startY = 0; this.isAutoScrolling = true; this.jsonLines = []; this.bracketPairs = []; this.lineCache = new Map();
      this.LINE_HEIGHT = 20; this.CHAR_WIDTH = 8.4; this.LEFT_PADDING = 10; this.SCROLL_SPEED = 0.5; this.SCROLLBAR_WIDTH = 8; this.SCROLLBAR_PADDING = 6;
      this.REGEX = { isoDate: /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z?$/, simpleDate: /^\d{4}-\d{2}-\d{2}$/, timestamp: /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/, whitespace: /\s/, brackets: /[{}[\],:]/, valueEnd: /[,}\]\s]/, numberStart: /[-\d]/, boolStart: /[tfn]/, leadingSpaces: /^(\s*)/ };
      this.init();
    }

    init() {
      super.init();
      if (!this.isValid) return;
      this.container.style.cursor = "grab";
      this.container.style.backgroundColor = this.colorConfig.background;
      this.prepareJsonData();
      this.draw();
      setTimeout(() => { if (this.contentHeight > 0 && this.isAutoScrolling) this.startAutoScroll(); }, 500);
    }

    setupEventListeners() {
      super.setupEventListeners();
      this._addEventListener(this.container, "wheel", this.handleWheel, { passive: false });
      this._addEventListener(this.container, "mousedown", this.handleMouseDown);
      this._addEventListener(document, "mousemove", this.handleMouseMove);
      this._addEventListener(document, "mouseup", this.handleMouseUp);
      this._addEventListener(document, "mouseleave", this.handleMouseUp);
    }

    prepareJsonData() { const jsonString = JSON.stringify(this.jsonData, null, 2); this.jsonLines = jsonString.split("\n"); this.contentHeight = this.jsonLines.length * this.LINE_HEIGHT; this.findBrackets(); }
    isDate(str) { const clean = str.replace(/^"|"$/g, ""); return this.REGEX.isoDate.test(clean) || this.REGEX.simpleDate.test(clean) || this.REGEX.timestamp.test(clean); }
    isNumber(str) { if (!str) return false; const num = +str; return !isNaN(num) && isFinite(num); }
    getIndent(line) { const match = line.match(this.REGEX.leadingSpaces); return match ? match[1].length : 0; }

    parseLine(line) {
      if (this.lineCache.has(line)) return this.lineCache.get(line);
      const tokens = []; let i = 0; const len = line.length;
      while (i < len) {
        const char = line[i];
        if (this.REGEX.whitespace.test(char)) { const start = i; while (i < len && this.REGEX.whitespace.test(line[i])) i++; tokens.push({ text: line.substring(start, i), color: this.colorConfig.background, type: "space" }); continue; }
        if (this.REGEX.brackets.test(char)) { tokens.push({ text: char, color: char === ":" ? this.colorConfig.punctuation : this.colorConfig.brackets, type: char === ":" ? "punct" : "bracket" }); i++; continue; }
        if (char === '"') { const result = this.parseString(line, i); const isKey = this.isNextColon(line, result.end); let type = "string", color = this.colorConfig.stringValue; if (isKey) { type = "key"; color = this.colorConfig.key; } else if (this.isDate(result.value)) { type = "date"; color = this.colorConfig.dateValue; } tokens.push({ text: result.value, color, type }); i = result.end; continue; }
        if (this.REGEX.numberStart.test(char) || this.REGEX.boolStart.test(char)) { const result = this.parseValue(line, i); let type = "string", color = this.colorConfig.stringValue; switch (result.value) { case "null": type = "null"; color = this.colorConfig.nullValue; break; case "true": case "false": type = "bool"; color = this.colorConfig.booleanValue; break; default: if (this.isNumber(result.value)) { type = "number"; color = this.colorConfig.numberValue; } } tokens.push({ text: result.value, color, type }); i = result.end; continue; }
        tokens.push({ text: char, color: this.colorConfig.stringValue, type: "string" }); i++;
      }
      this.lineCache.set(line, tokens); return tokens;
    }
    parseString(line, start) { let i = start + 1; const len = line.length; while (i < len && !(line[i] === '"' && line[i - 1] !== "\\")) i++; return { value: line.substring(start, i + 1), end: i + 1 }; }
    parseValue(line, start) { let i = start; const len = line.length; while (i < len && !this.REGEX.valueEnd.test(line[i])) i++; return { value: line.substring(start, i), end: i }; }
    isNextColon(line, start) { let i = start; const len = line.length; while (i < len && this.REGEX.whitespace.test(line[i])) i++; return i < len && line[i] === ":"; }

    findBrackets() {
      if (this.jsonLines.length === 0 || this.bracketPairs.length > 0) return;
      const stack = []; const pairs = [];
      for (let i = 0; i < this.jsonLines.length; i++) {
        const line = this.jsonLines[i]; const trimmed = line.trim(); if (!trimmed) continue;
        const last = trimmed[trimmed.length - 1]; const first = trimmed[0];
        if (last === "{" || last === "[") { stack.push({ line: i, indent: this.getIndent(line), char: last }); }
        else if (stack.length > 0 && (first === "}" || first === "]")) { const open = stack[stack.length - 1]; if ((open.char === "{" && first === "}") || (open.char === "[" && first === "]")) { stack.pop(); pairs.push({ start: open.line, end: i, level: open.indent }); } }
      }
      this.bracketPairs = pairs;
    }

    handleResize() { super.handleResize(); if (!this.canvas) return; const displayWidth = this.canvas.getBoundingClientRect().width; this.updateFontMetrics(displayWidth); this.contentHeight = this.jsonLines.length * this.LINE_HEIGHT; this.draw(); }
    updateFontMetrics(displayWidth) { if (displayWidth < 480) { this.effectiveFontSize = 11; this.LINE_HEIGHT = 16; this.CHAR_WIDTH = 6.6; } else { this.effectiveFontSize = 14; this.LINE_HEIGHT = 20; this.CHAR_WIDTH = 8.4; } this.ctx.font = `${this.effectiveFontSize}px "Menlo", "Monaco", "Courier New", monospace`; }

    draw() {
      if (!this.ctx || !this.canvas) return;
      const rect = this.canvas.getBoundingClientRect(); const displayWidth = rect.width; const displayHeight = rect.height;
      this.updateFontMetrics(displayWidth);
      this.ctx.fillStyle = this.colorConfig.background; this.ctx.fillRect(0, 0, displayWidth, displayHeight);
      if (!this.jsonLines.length) this.prepareJsonData();
      this.contentHeight = this.jsonLines.length * this.LINE_HEIGHT;
      const startLine = Math.floor(this.scrollY / this.LINE_HEIGHT); const endLine = Math.ceil((this.scrollY + displayHeight) / this.LINE_HEIGHT) + 1;
      this.drawIndentLines(displayWidth, displayHeight, startLine, endLine);
      this.ctx.textBaseline = "top";
      const totalLines = this.jsonLines.length; if (totalLines === 0) return;
      for (let i = startLine; i < endLine; i++) {
        const y = i * this.LINE_HEIGHT - this.scrollY; if (y < -this.LINE_HEIGHT || y > displayHeight) continue;
        const lineIndex = i % totalLines; const line = this.jsonLines[lineIndex];
        if (line !== undefined) { const tokens = this.parseLine(line); let x = this.LEFT_PADDING; for (const token of tokens) { this.ctx.fillStyle = token.color; this.ctx.fillText(token.text, x, y); x += this.ctx.measureText(token.text).width; } }
      }
      this.drawScrollbar(displayWidth, displayHeight);
    }

    drawIndentLines(displayWidth, displayHeight, startLine, endLine) {
      if (!this.bracketPairs.length) return; this.ctx.strokeStyle = this.colorConfig.indentLineColor; this.ctx.lineWidth = 1; this.ctx.setLineDash([]); this.ctx.beginPath();
      const totalLines = this.jsonLines.length; if (totalLines === 0) return;
      const startCycle = Math.floor(startLine / totalLines); const endCycle = Math.floor(endLine / totalLines) + 1;
      for (let cycle = startCycle; cycle <= endCycle; cycle++) {
        const offset = cycle * totalLines;
        for (const pair of this.bracketPairs) {
          const actualStart = pair.start + offset; const actualEnd = pair.end + offset; if (actualEnd < startLine || actualStart > endLine) continue;
          const x = this.LEFT_PADDING + pair.level * this.CHAR_WIDTH;
          const startY = Math.max(0, Math.max(actualStart, startLine) * this.LINE_HEIGHT - this.scrollY);
          const endY = Math.min(displayHeight, Math.min(actualEnd, endLine) * this.LINE_HEIGHT - this.scrollY);
          if (startY < endY) { this.ctx.moveTo(x, startY); this.ctx.lineTo(x, endY); }
        }
      }
      this.ctx.stroke();
    }

    drawScrollbar(displayWidth, displayHeight) {
      if (this.contentHeight <= displayHeight) return;
      const barHeight = Math.max(30, displayHeight * (displayHeight / this.contentHeight));
      let currentScrollY = this.scrollY; if (this.contentHeight > 0) { while (currentScrollY > this.contentHeight) currentScrollY -= this.contentHeight; } else { currentScrollY = 0; }
      const scrollProgress = this.contentHeight > displayHeight ? currentScrollY / (this.contentHeight - displayHeight) : 0;
      const barY = scrollProgress * (displayHeight - barHeight);
      this.ctx.fillStyle = "rgba(255, 255, 255, 0.1)"; this.ctx.fillRect(displayWidth - this.SCROLLBAR_WIDTH - this.SCROLLBAR_PADDING / 2, barY, this.SCROLLBAR_WIDTH, barHeight);
    }

    startAutoScroll() {
      if (this.animationId || !this.isAutoScrolling) return;
      const animate = () => {
        if (!this.isAutoScrolling || !this.ctx) { this.animationId = null; return; }
        this.scrollY += this.SCROLL_SPEED;
        if (this.contentHeight > 0 && this.scrollY > this.contentHeight + this.canvas.height / (window.devicePixelRatio || 1)) { this.scrollY %= this.contentHeight; }
        this.draw(); this.animationId = requestAnimationFrame(animate);
      };
      this.animationId = requestAnimationFrame(animate);
    }
    stopAutoScroll() { super.stopAnimationLoop(); this.isAutoScrolling = false; }

    handleWheel(e) {
      e.preventDefault(); const wasAutoScrolling = this.isAutoScrolling; this.stopAutoScroll();
      const displayHeight = this.canvas.getBoundingClientRect().height; const maxScroll = Math.max(0, this.contentHeight - displayHeight);
      this.scrollY += e.deltaY; if (this.scrollY < 0) this.scrollY = 0;
      if (this.contentHeight > displayHeight && this.scrollY > maxScroll) { if (this.options.loopScroll) { this.scrollY %= this.contentHeight; } else { this.scrollY = maxScroll; } }
      this.draw();
      if (wasAutoScrolling) { if (this.autoScrollResumeTimeout) clearTimeout(this.autoScrollResumeTimeout); this.autoScrollResumeTimeout = setTimeout(() => { this.isAutoScrolling = true; this.startAutoScroll(); }, 500); }
    }

    handleMouseDown(e) {
      const wasAutoScrolling = this.isAutoScrolling; this.stopAutoScroll();
      this.isDragging = true; this.startY = e.clientY; this.initialScrollY = this.scrollY; this.container.style.cursor = "grabbing";
      if (wasAutoScrolling && !this.boundResumeAutoScroll) {
        this.boundResumeAutoScroll = () => { if (this.autoScrollResumeTimeout) clearTimeout(this.autoScrollResumeTimeout); this.autoScrollResumeTimeout = setTimeout(() => { this.isAutoScrolling = true; this.startAutoScroll(); }, 500); document.removeEventListener("mouseup", this.boundResumeAutoScroll); delete this.boundResumeAutoScroll; };
        document.addEventListener("mouseup", this.boundResumeAutoScroll);
      }
    }
    handleMouseMove(e) { if (!this.isDragging) return; const deltaY = e.clientY - this.startY; const displayHeight = this.canvas.getBoundingClientRect().height; const maxScroll = Math.max(0, this.contentHeight - displayHeight); this.scrollY = this.initialScrollY - deltaY; if (this.scrollY < 0) this.scrollY = 0; if (this.scrollY > maxScroll && this.contentHeight > displayHeight) this.scrollY = maxScroll; this.draw(); }
    handleMouseUp() { if (this.isDragging) { this.isDragging = false; this.container.style.cursor = "grab"; } }
    updateData(newData) { this.jsonData = newData; this.jsonLines = []; this.bracketPairs = []; this.lineCache.clear(); this.scrollY = 0; this.prepareJsonData(); this.draw(); if (this.isAutoScrolling) this.startAutoScroll(); }
    destroy() { this.stopAutoScroll(); super.destroy(); this.lineCache.clear(); }
  }

  function initializeJsonViewer() {
    const container = document.querySelector('[data-script="relationship-data"]');
    if (container && !container.dataset.v0VizInitializedScriptA) {
      new JsonViz(container); // Add options here if reading from HTML/Webflow
      container.dataset.v0VizInitializedScriptA = 'true';
    }
  }

  if (typeof window !== 'undefined') {
    if (document.readyState === 'loading') {
      document.addEventListener('DOMContentLoaded', initializeJsonViewer);
    } else {
      initializeJsonViewer();
    }
    // window.V0JsonViewer = { initialize: initializeJsonViewer, JsonViz }; // Optional: expose if needed
  }
})(typeof window !== 'undefined' ? window : {});
</script></div></div><div class="swarmdata_content"><div class="text-size-medium text-color-blue">Network Mapping Data</div><h2 class="heading-style-h2">Relationship Data</h2><ul role="list" class="bullet-list margin-top margin-0"><li class="bullet-list-item"><div class="text-size-regular-2">Map intro paths between anyone, anywhere in the professional world. All you need is a company domain to map relationships.</div></li><li class="bullet-list-item"><div class="text-size-regular-2">Real-time relationship scoring with normalized strength indicators</div></li></ul><div class="code-spacing text-size-small"><span class="line-height">Build with: </span><span class="text-style-code text-color-yellow">connection_strength</span>, <span class="text-style-code text-color-blue">overlap_start_date</span>, <span class="text-style-code text-color-pink">shared_company</span>, <span class="text-style-code text-color-green">portfolio_company</span></div></div></div></div><div data-w-tab="People Data" class="swarmdata_tab-pane w-tab-pane"><div class="swarmdata_tab-wrapper"><div data-script="profile-data" class="swarmdata_script-wrapper"><div class="data-script-b w-embed w-script"><script>
// Standalone Profile Graph Script (for data-script="script-B")

;((window) => {
  const INJECTED_STYLES = new Set();

  function injectStylesOnce(id, cssContent) {
    if (INJECTED_STYLES.has(id) || document.getElementById(id)) {
      INJECTED_STYLES.add(id);
      return;
    }
    const style = document.createElement('style');
    style.id = id;
    style.textContent = cssContent;
    document.head.appendChild(style);
    INJECTED_STYLES.add(id);
  }

  function debounce(func, wait) {
    let timeout;
    return function(...args) {
      clearTimeout(timeout);
      timeout = setTimeout(() => func.apply(this, args), wait);
    };
  }

  class BaseVisualization {
    constructor(container, options = {}) {
      this.container = container;
      if (!this.container) {
        console.error(`Container not found for visualization.`);
        this.isValid = false;
        return;
      }
      this.isValid = true;
      this.options = options;
      this.canvas = null;
      this.ctx = null;
      this.animationId = null;
      this.resizeObserver = null;
      this.eventListeners = [];
      this.SCRIPT_ID = 'base-viz';
      this.CSS_STYLES = '';
      this.debouncedResizeHandler = debounce(this.handleResize.bind(this), 250);
    }

    init() {
      if (!this.isValid) return;
      this.injectOwnStyles();
      this.setupDOM();
      this.setupCanvas();
      this.setupEventListeners();
      this.handleResize();
    }

    injectOwnStyles() {
      if (this.CSS_STYLES) {
        injectStylesOnce(`${this.SCRIPT_ID}-styles`, this.CSS_STYLES);
      }
    }

    setupDOM() {
      this.canvas = document.createElement('canvas');
      this.canvas.style.display = 'block';
      this.canvas.style.width = '100%';
      this.canvas.style.height = '100%';
      this.container.innerHTML = '';
      this.container.appendChild(this.canvas);
      if (getComputedStyle(this.container).position === 'static') {
        this.container.style.position = 'relative';
      }
      this.container.style.overflow = 'hidden';
    }

    setupCanvas() {
      if (!this.canvas) return;
      this.ctx = this.canvas.getContext('2d');
    }

    _addEventListener(element, type, listener, options) {
      const boundListener = listener.bind(this);
      element.addEventListener(type, boundListener, options);
      this.eventListeners.push({ element, type, listener: boundListener, options });
    }

    setupEventListeners() {
      if (window.ResizeObserver) {
        this.resizeObserver = new ResizeObserver(this.debouncedResizeHandler);
        this.resizeObserver.observe(this.container);
      } else {
        this._addEventListener(window, 'resize', this.debouncedResizeHandler);
      }
    }

    handleResize() {
      if (!this.canvas || !this.ctx || !this.container.clientWidth || !this.container.clientHeight) {
        return;
      }
      const rect = this.container.getBoundingClientRect();
      const dpr = window.devicePixelRatio || 1;
      this.canvas.width = rect.width * dpr;
      this.canvas.height = rect.height * dpr;
      this.canvas.style.width = `${rect.width}px`;
      this.canvas.style.height = `${rect.height}px`;
      this.ctx.scale(dpr, dpr);
      this.requestRedraw();
    }

    requestRedraw() { this.needsRedraw = true; /* For ProfileGraphViz */ }

    destroy() {
      if (!this.isValid) return;
      if (this.animationId) cancelAnimationFrame(this.animationId);
      if (this.resizeObserver) this.resizeObserver.disconnect();
      this.eventListeners.forEach(({ element, type, listener, options }) => {
        element.removeEventListener(type, listener, options);
      });
      if (this.container) {
        this.container.innerHTML = '';
        delete this.container.dataset.v0VizInitializedScriptB; // Specific flag
      }
      this.canvas = null; this.ctx = null; this.container = null; this.isValid = false;
    }
    startAnimationLoop() {}
    stopAnimationLoop() {
      if (this.animationId) {
        cancelAnimationFrame(this.animationId);
        this.animationId = null;
      }
    }
  }

  class ProfileGraphViz extends BaseVisualization {
    constructor(container, options = {}) {
      super(container, options);
      if (!this.isValid) return;
      this.SCRIPT_ID = "script-B-profile-graph";
      this.CSS_STYLES = `
        .${this.SCRIPT_ID}-popup { position: absolute; background: rgba(10,10,10,0.95); border: 1px solid rgba(255,255,255,0.3); border-radius: 12px; padding: 12px; color: white; font-size: 12px; max-width: 280px; backdrop-filter: blur(20px); z-index: 1000; pointer-events: none; opacity: 0; transition: opacity 0.2s ease, transform 0.2s ease; font-family: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace; box-shadow: 0 8px 32px rgba(0,0,0,0.6); display: none; transform: translateY(10px); }
        .${this.SCRIPT_ID}-popup.visible { opacity: 1; display: block; transform: translateY(0); }
        .${this.SCRIPT_ID}-popup h3 { margin: 0 0 8px 0; font-size: 14px; font-weight: bold; }
        .${this.SCRIPT_ID}-popup p { margin: 4px 0; }
        @media (max-width: 480px) { .${this.SCRIPT_ID}-popup { font-size: 11px; max-width: 240px; padding: 10px; } .${this.SCRIPT_ID}-popup h3 { font-size: 12px; } }`;
      this.PHYSICS_CONFIG = { springStrength: 0.05, damping: 0.85, minMovement: 0.1 };
      this.BASE_WIDTH = 580; this.BASE_HEIGHT = 500;
      this.DEFAULT_PROFILE_DATA = { profile: { name: "David Connors", location: "San Francisco, CA", email: "david@example.com", image: "https://cdn.prod.website-files.com/6836cd4c80fa4fe6bc555463/6849f9bd903ac4bb2ea82637_profile-icon.png" }, current_role: { title: "Co-Founder & CEO", company: "The Swarm", industry: "Software Development" }, experience: [{ title: "Founder-in-Residence", company: "Sequoia Capital" }], education: [{ school: "University of Melbourne", degree: "B. Commerce" }], skills: ["Strategy", "Management", "Planning"], contact: { email: "david@example.com", linkedin: "linkedin.com/in/connorsdavid", twitter: "connorsd" }, linkedin_stats: { followers: 8742, posts: 127, total_likes: 24653, reach: 156890 } };
      this.DEFAULT_ICONS = { skills: "https://cdn.jsdelivr.net/npm/lucide-static@latest/icons/brain-cog.svg", education: "https://cdn.jsdelivr.net/npm/lucide-static@latest/icons/graduation-cap.svg", contact: "https://cdn.jsdelivr.net/npm/lucide-static@latest/icons/mail.svg", current_role: "https://cdn.jsdelivr.net/npm/lucide-static@latest/icons/briefcase.svg", experience: "https://cdn.jsdelivr.net/npm/lucide-static@latest/icons/history.svg", linkedin: "https://cdn.jsdelivr.net/npm/lucide-static@latest/icons/linkedin.svg" };
      this.profileData = this.options.profileData ? this.mergeData(this.DEFAULT_PROFILE_DATA, this.options.profileData) : this.DEFAULT_PROFILE_DATA;
      this.vizOptions = { iconUrls: this.DEFAULT_ICONS, colors: { profile: "#3b82f6", current_role: "#35C37F", experience: "#f59e0b", education: "#4A6AEF", skills: "#F5814F", contact: "#F8AC8B", linkedin_stats: "#0077b5" }, ...this.options.vizOptions };
      this.scale = 1; this.canvasWidth = this.BASE_WIDTH; this.canvasHeight = this.BASE_HEIGHT; this.needsRedraw = true; this.isAnimatingPhysics = false; this.lastFrameTime = 0; this.isDragging = false; this.draggedNode = null; this.dragOffset = { x: 0, y: 0 }; this.hoveredNode = null; this.selectedNode = null; this.mousePos = { x: 0, y: 0 }; this.physicsEnabled = false; this.profileImage = null; this.imageLoaded = false; this.svgIcons = {}; this.iconsLoaded = false; this.iconsLoadedCount = 0; this.totalIcons = Object.keys(this.vizOptions.iconUrls).length; this.nodes = []; this.connections = []; this.baseNodes = []; this.popup = null;
      this.init();
    }

    mergeData(defaultData, userData) { const merged = { ...defaultData }; for (const key in userData) { if (userData.hasOwnProperty(key)) { if (userData[key] && typeof userData[key] === "object" && !Array.isArray(userData[key]) && defaultData[key] && typeof defaultData[key] === "object") { merged[key] = this.mergeData(defaultData[key], userData[key]); } else { merged[key] = userData[key]; } } } return merged; }
    setupDOM() { super.setupDOM(); this.popup = document.createElement("div"); this.popup.className = `${this.SCRIPT_ID}-popup`; this.container.appendChild(this.popup); }
    init() { super.init(); if (!this.isValid) return; this.loadProfileImage(); this.loadSVGIcons(); this.createNodesAndConnections(); this.startAnimationLoop(); }

    setupEventListeners() {
      super.setupEventListeners();
      this._addEventListener(this.canvas, "mousedown", this.handleMouseDown); this._addEventListener(this.canvas, "mousemove", this.handleMouseMove); this._addEventListener(this.canvas, "mouseup", this.handleMouseUp); this._addEventListener(this.canvas, "mouseleave", this.handleMouseLeave);
      this._addEventListener(this.canvas, "contextmenu", (e) => e.preventDefault());
      this._addEventListener(this.canvas, "touchstart", this.handleTouchStart, { passive: false }); this._addEventListener(this.canvas, "touchmove", this.handleTouchMove, { passive: false }); this._addEventListener(this.canvas, "touchend", this.handleTouchEnd, { passive: false });
    }

    handleResize() {
      super.handleResize(); if (!this.canvas) return;
      this.canvasWidth = this.canvas.getBoundingClientRect().width; this.canvasHeight = this.canvas.getBoundingClientRect().height;
      const scaleX = this.canvasWidth / this.BASE_WIDTH; const scaleY = this.canvasHeight / this.BASE_HEIGHT;
      this.scale = Math.min(scaleX, scaleY);
      if (this.baseNodes.length > 0) { this.scaleNodes(); }
      this.needsRedraw = true;
    }

    scaleNodes() {
      const centerOffsetX = (this.canvasWidth - this.BASE_WIDTH * this.scale) / 2; const centerOffsetY = (this.canvasHeight - this.BASE_HEIGHT * this.scale) / 2;
      this.nodes = this.baseNodes.map((baseNode) => ({ ...baseNode, x: baseNode.x * this.scale + centerOffsetX, y: baseNode.y * this.scale + centerOffsetY, originalX: baseNode.originalX * this.scale + centerOffsetX, originalY: baseNode.originalY * this.scale + centerOffsetY, radius: baseNode.radius * this.scale, vx: baseNode.vx !== undefined ? baseNode.vx : 0, vy: baseNode.vy !== undefined ? baseNode.vy : 0 }));
      this.needsRedraw = true;
    }

    loadProfileImage() { this.profileImage = new Image(); this.profileImage.crossOrigin = "anonymous"; this.profileImage.onload = () => { this.imageLoaded = true; this.needsRedraw = true; }; this.profileImage.onerror = () => { console.warn("Failed to load profile image."); this.imageLoaded = true; this.needsRedraw = true; }; this.profileImage.src = this.profileData.profile.image || this.DEFAULT_PROFILE_DATA.profile.image; }
    loadSVGIcons() {
      this.iconsLoadedCount = 0; this.iconsLoaded = false; this.svgIcons = {}; this.totalIcons = Object.keys(this.vizOptions.iconUrls).length;
      if (this.totalIcons === 0) { this.iconsLoaded = true; this.needsRedraw = true; return; }
      for (const [key, url] of Object.entries(this.vizOptions.iconUrls)) {
        const img = new Image(); img.crossOrigin = "anonymous";
        img.onload = () => { this.svgIcons[key] = img; this.iconsLoadedCount++; if (this.iconsLoadedCount === this.totalIcons) { this.iconsLoaded = true; this.needsRedraw = true; } };
        img.onerror = () => { console.warn(`Failed to load icon: ${key} from ${url}`); this.iconsLoadedCount++; if (this.iconsLoadedCount === this.totalIcons) { this.iconsLoaded = true; this.needsRedraw = true; } };
        img.src = url;
      }
    }

    createNodesAndConnections() {
      const centerX = this.BASE_WIDTH / 2; const centerY = this.BASE_HEIGHT / 2; const radius = 180; const positions = [];
      for (let i = 0; i < 6; i++) { const angle = (Math.PI * 2 * i) / 6 - Math.PI / 2; positions.push({ x: centerX + radius * Math.cos(angle), y: centerY + radius * Math.sin(angle) }); }
      this.baseNodes = [
        { id: "profile", x: centerX, y: centerY, originalX: centerX, originalY: centerY, radius: 45, color: this.vizOptions.colors.profile, label: "Profile", type: "Profile", data: this.profileData.profile, iconKey: null },
        { id: "current_role", x: positions[0].x, y: positions[0].y, originalX: positions[0].x, originalY: positions[0].y, radius: 32, color: this.vizOptions.colors.current_role, label: "Current role", type: "Current role", data: this.profileData.current_role, iconKey: "current_role" },
        { id: "experience", x: positions[1].x, y: positions[1].y, originalX: positions[1].x, originalY: positions[1].y, radius: 32, color: this.vizOptions.colors.experience, label: "Experience", type: "Experience", data: this.profileData.experience, iconKey: "experience" },
        { id: "education", x: positions[2].x, y: positions[2].y, originalX: positions[2].x, originalY: positions[2].y, radius: 32, color: this.vizOptions.colors.education, label: "Education", type: "Education", data: this.profileData.education, iconKey: "education" },
        { id: "skills", x: positions[3].x, y: positions[3].y, originalX: positions[3].x, originalY: positions[3].y, radius: 32, color: this.vizOptions.colors.skills, label: "Skills", type: "Skills", data: this.profileData.skills, iconKey: "skills" },
        { id: "contact", x: positions[4].x, y: positions[4].y, originalX: positions[4].x, originalY: positions[4].y, radius: 32, color: this.vizOptions.colors.contact, label: "Contact", type: "Contact", data: this.profileData.contact, iconKey: "contact" },
        { id: "linkedin_stats", x: positions[5].x, y: positions[5].y, originalX: positions[5].x, originalY: positions[5].y, radius: 32, color: this.vizOptions.colors.linkedin_stats, label: "LinkedIn Data", type: "LinkedIn", data: this.profileData.linkedin_stats, iconKey: "linkedin" },
      ].map((node) => ({ ...node, vx: 0, vy: 0 }));
      this.connections = [ { from: "profile", to: "current_role" }, { from: "profile", to: "experience" }, { from: "profile", to: "education" }, { from: "profile", to: "skills" }, { from: "profile", to: "contact" }, { from: "profile", to: "linkedin_stats" }];
      this.scaleNodes(); this.needsRedraw = true;
    }

    getNodeAt(x, y) { for (const node of this.nodes) { const dx = x - node.x; const dy = y - node.y; const distanceSquared = dx * dx + dy * dy; const touchPadding = this.scale < 0.8 ? 10 * this.scale : 5 * this.scale; const radiusSquared = (node.radius + touchPadding) ** 2; if (distanceSquared <= radiusSquared) return node; } return null; }
    getEventPosition(e) { const rect = this.canvas.getBoundingClientRect(); if (e.touches && e.touches.length > 0) { return { x: e.touches[0].clientX - rect.left, y: e.touches[0].clientY - rect.top, screenX: e.touches[0].clientX, screenY: e.touches[0].clientY }; } return { x: e.clientX - rect.left, y: e.clientY - rect.top, screenX: e.clientX, screenY: e.clientY }; }
    handleMouseDown(e) { const pos = this.getEventPosition(e); const node = this.getNodeAt(pos.x, pos.y); if (node) { this.isDragging = true; this.draggedNode = node; this.selectedNode = node; this.dragOffset = { x: pos.x - node.x, y: pos.y - node.y }; this.canvas.style.cursor = "grabbing"; this.hidePopup(); this.needsRedraw = true; this.physicsEnabled = false; this.isAnimatingPhysics = false; } }
    handleMouseMove(e) { const pos = this.getEventPosition(e); this.mousePos = { x: pos.screenX, y: pos.screenY }; if (this.isDragging && this.draggedNode) { this.draggedNode.x = pos.x - this.dragOffset.x; this.draggedNode.y = pos.y - this.dragOffset.y; this.needsRedraw = true; } else { const node = this.getNodeAt(pos.x, pos.y); if (node !== this.hoveredNode) { this.hoveredNode = node; this.canvas.style.cursor = node ? "grab" : "default"; this.needsRedraw = true; if (node) { this.showPopup(node); } else { this.hidePopup(); } } } }
    handleMouseUp() { if (this.isDragging && this.draggedNode) { this.startPhysics(); } this.isDragging = false; this.draggedNode = null; this.canvas.style.cursor = this.hoveredNode ? "grab" : "default"; }
    handleMouseLeave() { this.hoveredNode = null; this.hidePopup(); this.handleMouseUp(); this.canvas.style.cursor = "default"; this.needsRedraw = true; }
    handleTouchStart(e) { e.preventDefault(); this.handleMouseDown(e); }
    handleTouchMove(e) { e.preventDefault(); this.handleMouseMove(e); }
    handleTouchEnd(e) { e.preventDefault(); this.handleMouseUp(); }

    startPhysics() { if (this.isAnimatingPhysics) return; this.physicsEnabled = true; this.isAnimatingPhysics = true; }
    startAnimationLoop() { const loop = (currentTime) => { if (!this.ctx) { this.animationId = null; return; } this.animatePhysics(currentTime); if (this.needsRedraw) { this.renderScene(); this.needsRedraw = false; } this.animationId = requestAnimationFrame(loop); }; this.animationId = requestAnimationFrame(loop); }

    animatePhysics(currentTime = 0) {
      if (!this.isAnimatingPhysics && !this.physicsEnabled) return;
      if (currentTime - this.lastFrameTime < 16 && this.lastFrameTime !== 0) return;
      this.lastFrameTime = currentTime; let hasMovement = false; const scaledMinMovement = this.PHYSICS_CONFIG.minMovement * this.scale;
      for (const node of this.nodes) {
        if (this.isDragging && node === this.draggedNode) continue;
        const dx = node.originalX - node.x; const dy = node.originalY - node.y;
        node.vx += dx * this.PHYSICS_CONFIG.springStrength; node.vy += dy * this.PHYSICS_CONFIG.springStrength;
        node.vx *= this.PHYSICS_CONFIG.damping; node.vy *= this.PHYSICS_CONFIG.damping;
        for (const other of this.nodes) { if (node === other) continue; const dx2 = node.x - other.x; const dy2 = node.y - other.y; const distanceSquared = dx2 * dx2 + dy2 * dy2; const minDistance = node.radius + other.radius + 10 * this.scale; const minDistanceSquared = minDistance * minDistance; if (distanceSquared < minDistanceSquared && distanceSquared > 0) { const distance = Math.sqrt(distanceSquared); const force = (minDistance - distance) * 0.1; const angle = Math.atan2(dy2, dx2); node.vx += Math.cos(angle) * force; node.vy += Math.sin(angle) * force; } }
        node.x += node.vx; node.y += node.vy;
        if (Math.abs(node.vx) > scaledMinMovement || Math.abs(node.vy) > scaledMinMovement || Math.abs(dx) > scaledMinMovement || Math.abs(dy) > scaledMinMovement) { hasMovement = true; }
      }
      if (hasMovement) { this.needsRedraw = true; } else { this.isAnimatingPhysics = false; this.physicsEnabled = false; }
    }

    renderScene() { if (!this.ctx) return; this.ctx.clearRect(0, 0, this.canvasWidth, this.canvasHeight); this.drawConnections(); this.drawNodes(); }
    drawConnections() { if (!this.ctx) return; for (const connection of this.connections) { const fromNode = this.nodes.find((n) => n.id === connection.from); const toNode = this.nodes.find((n) => n.id === connection.to); if (!fromNode || !toNode) continue; const isHighlighted = this.selectedNode && ((connection.from === "profile" && connection.to === this.selectedNode.id) || (connection.to === "profile" && connection.from === this.selectedNode.id)); this.ctx.beginPath(); this.ctx.moveTo(fromNode.x, fromNode.y); this.ctx.lineTo(toNode.x, toNode.y); if (isHighlighted) { this.ctx.strokeStyle = this.selectedNode.color; this.ctx.lineWidth = 3 * this.scale; } else { this.ctx.strokeStyle = "#374151"; this.ctx.lineWidth = 2 * this.scale; } this.ctx.stroke(); } }
    drawNodes() {
      if (!this.ctx) return;
      for (const node of this.nodes) {
        const isHovered = this.hoveredNode === node; const isSelected = this.selectedNode === node; const isDragged = this.isDragging && this.draggedNode === node; const radius = node.radius + (isHovered || isDragged ? 4 * this.scale : 0);
        if (node.type === "Profile" && this.imageLoaded && this.profileImage && this.profileImage.complete && this.profileImage.naturalWidth !== 0) { this.ctx.save(); this.ctx.beginPath(); this.ctx.arc(node.x, node.y, radius, 0, 2 * Math.PI); this.ctx.clip(); const imgSize = radius * 2; this.ctx.drawImage(this.profileImage, node.x - radius, node.y - radius, imgSize, imgSize); this.ctx.restore(); if (isSelected || isDragged) { this.ctx.strokeStyle = "#ffffff"; this.ctx.lineWidth = 3 * this.scale; } else if (isHovered) { this.ctx.strokeStyle = "#3b82f6"; this.ctx.lineWidth = 2 * this.scale; } else { this.ctx.strokeStyle = "transparent"; this.ctx.lineWidth = 0; } if (this.ctx.lineWidth > 0) { this.ctx.beginPath(); this.ctx.arc(node.x, node.y, radius, 0, 2 * Math.PI); this.ctx.stroke(); }
        } else { this.ctx.fillStyle = node.color; this.ctx.beginPath(); this.ctx.arc(node.x, node.y, radius, 0, 2 * Math.PI); this.ctx.fill(); if (isSelected || isDragged) { this.ctx.strokeStyle = "#ffffff"; this.ctx.lineWidth = 3 * this.scale; } else if (isHovered) { this.ctx.strokeStyle = "#ffffff"; this.ctx.lineWidth = 1.5 * this.scale; } else { this.ctx.strokeStyle = "transparent"; this.ctx.lineWidth = 0; } if (this.ctx.lineWidth > 0) { this.ctx.beginPath(); this.ctx.arc(node.x, node.y, radius, 0, 2 * Math.PI); this.ctx.stroke(); }
          if (node.iconKey && this.svgIcons[node.iconKey] && this.svgIcons[node.iconKey].complete && this.svgIcons[node.iconKey].naturalWidth !== 0) { const iconSize = Math.max(16 * this.scale, 12); this.ctx.drawImage(this.svgIcons[node.iconKey], node.x - iconSize / 2, node.y - iconSize / 2, iconSize, iconSize); }
        }
        this.ctx.fillStyle = "#ffffff"; const fontSize = Math.max(10 * this.scale, 8); this.ctx.font = `${fontSize}px 'JetBrains Mono', 'Fira Code', 'Consolas', monospace`; this.ctx.textAlign = "center"; this.ctx.textBaseline = "alphabetic"; this.ctx.fillText(node.label, node.x, node.y + radius + 18 * this.scale);
      }
    }

    showPopup(node) { const content = this.generatePopupContent(node); this.popup.innerHTML = content; this.popup.style.opacity = "0"; this.popup.style.display = "block"; this.positionPopup(node); this.popup.offsetHeight; this.popup.style.opacity = "1"; this.popup.classList.add("visible"); }
    hidePopup() { this.popup.style.opacity = "0"; setTimeout(() => { if (this.popup.style.opacity === "0") { this.popup.style.display = "none"; this.popup.classList.remove("visible"); } }, 200); }
    positionPopup(node) { if (!node || !this.container || !this.popup) return; const popupRect = this.popup.getBoundingClientRect(); const popupWidth = popupRect.width || 280; const popupHeight = popupRect.height || 150; const nodeCanvasX = node.x; const nodeCanvasY = node.y; let popupX = nodeCanvasX - popupWidth / 2; let popupY = nodeCanvasY - node.radius - popupHeight - 10 * this.scale; if (popupX < 10) popupX = 10; if (popupX + popupWidth > this.canvasWidth - 10) popupX = this.canvasWidth - popupWidth - 10; if (popupY < 10) popupY = nodeCanvasY + node.radius + 10 * this.scale; if (popupY + popupHeight > this.canvasHeight - 10) popupY = this.canvasHeight - popupHeight - 10; this.popup.style.left = `${popupX}px`; this.popup.style.top = `${popupY}px`; }
    generatePopupContent(node) { const { type, data } = node; let html = `<h3 style="font-weight:bold; color: #fff; margin-top: 0; margin-bottom: 8px;">${type}</h3>`; if (type === "Profile") html += `<p style="color: #d1d5db;">${data.name}</p><p style="color: #9ca3af;">${data.location}</p>`; else if (type === "Current role") html += `<p style="color: #fff; font-weight:bold;">${data.title}</p><p style="color: #d1d5db;">@ ${data.company}</p>`; else if (type === "Experience" && Array.isArray(data)) html += data.slice(0, 2).map((exp) => `<p style="color: #fff;">${exp.title} at ${exp.company}</p>`).join(""); else if (type === "Education" && Array.isArray(data)) html += data.slice(0, 2).map((edu) => `<p style="color: #fff;">${edu.degree} from ${edu.school}</p>`).join(""); else if (type === "Skills" && Array.isArray(data)) html += `<p style="color: #fff;">${data.slice(0, 4).join(", ")}</p>`; else if (type === "Contact") html += `<p style="color: #fff;">Email: ${data.email}</p>`; else if (type === "LinkedIn") html += `<p style="color: #fff;">Followers: ${this.formatNumber(data.followers)}</p>`; else html += `<p style="color: #d1d5db;">Details for ${type}</p>`; return html; }
    formatNumber(num) { return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); }
    updateData(newData) { this.profileData = this.mergeData(this.profileData, newData); this.loadProfileImage(); this.loadSVGIcons(); this.createNodesAndConnections(); this.needsRedraw = true; }
    destroy() { super.destroy(); this.profileImage = null; this.svgIcons = {}; if (this.popup && this.popup.parentNode) { this.popup.parentNode.removeChild(this.popup); } this.popup = null; }
  }

  function initializeProfileGraph() {
    const container = document.querySelector('[data-script="profile-data"]');
    if (container && !container.dataset.v0VizInitializedScriptB) {
      new ProfileGraphViz(container); // Add options here if reading from HTML/Webflow
      container.dataset.v0VizInitializedScriptB = 'true';
    }
  }

  if (typeof window !== 'undefined') {
    if (document.readyState === 'loading') {
      document.addEventListener('DOMContentLoaded', initializeProfileGraph);
    } else {
      initializeProfileGraph();
    }
    // window.V0ProfileGraph = { initialize: initializeProfileGraph, ProfileGraphViz }; // Optional
  }
})(typeof window !== 'undefined' ? window : {});
</script></div></div><div class="swarmdata_content"><div class="text-size-medium text-color-yellow">Global Employee Data</div><h2 class="heading-style-h2">People Data</h2><ul role="list" class="bullet-list margin-top margin-0"><li class="bullet-list-item"><div class="text-size-regular-2">580M+ people with daily-refreshed job data.</div></li><li class="bullet-list-item"><div class="text-size-regular-2">Monitor job changes across 100M+ profiles in real-time</div></li><li class="bullet-list-item"><div class="text-size-regular-2">Current roles, work history, education, skills, interests, business email addresses, and more.</div></li></ul><div class="code-spacing text-size-small"><span class="line-height">Key fields:</span><span class="text-style-code text-color-blue">latest_company_change_at</span>, <span class="text-style-code text-color-orange">job_company_industry</span>, <span class="text-style-code text-color-green">experience.is_primary</span>, <span class="text-style-code text-color-yellow">portfolio_company</span></div></div></div></div><div data-w-tab="Company Data" class="swarmdata_tab-pane w-tab-pane"><div class="swarmdata_tab-wrapper"><div data-script="company-data" class="swarmdata_script-wrapper"><div class="data-script-c w-embed w-script"><script>
// Company Dashboard Visualization Script
// Usage: Add data-script="company-data" attribute to target div

(function() {
  'use strict';

  // --- Utility Functions ---
  const INJECTED_STYLES = new Set();

  function injectStylesOnce(id, cssContent) {
    if (INJECTED_STYLES.has(id) || document.getElementById(id)) {
      INJECTED_STYLES.add(id);
      return;
    }
    const style = document.createElement("style");
    style.id = id;
    style.textContent = cssContent;
    document.head.appendChild(style);
    INJECTED_STYLES.add(id);
  }

  function debounce(func, wait) {
    let timeout;
    return function(...args) {
      clearTimeout(timeout);
      timeout = setTimeout(() => func.apply(this, args), wait);
    };
  }

  // --- Font Configuration ---
  const FONT_CONFIG = {
    largeSingleMetrics: {
      value: { fontSize: 38, lineHeight: 46, fontWeight: "bold" },
      title: { fontSize: 15, lineHeight: 20, fontWeight: "bold" },
      subtitle: { fontSize: 13, lineHeight: 18, fontWeight: "normal" },
    },
    mediumDualMetrics: {
      value: { fontSize: 28, lineHeight: 34, fontWeight: "bold" },
      title: { fontSize: 12, lineHeight: 16, fontWeight: "bold" },
      subtitle: { fontSize: 11, lineHeight: 15, fontWeight: "normal" },
      secondaryValue: { fontSize: 28, lineHeight: 34, fontWeight: "bold" },
      secondaryTitle: { fontSize: 12, lineHeight: 16, fontWeight: "bold" },
    },
    smallSingleMetrics: {
      value: { fontSize: 22, lineHeight: 26, fontWeight: "bold" },
      title: { fontSize: 14, lineHeight: 18, fontWeight: "bold" },
      subtitle: { fontSize: 12, lineHeight: 16, fontWeight: "normal" },
    },
    wideSingleMetrics: {
      value: { fontSize: 26, lineHeight: 30, fontWeight: "bold" },
      title: { fontSize: 14, lineHeight: 18, fontWeight: "bold" },
      subtitle: { fontSize: 12, lineHeight: 16, fontWeight: "normal" },
    },
  };

  // --- Base Visualization Class ---
  class BaseVisualization {
    constructor(container, options = {}) {
      this.container = container;
      if (!this.container) {
        console.error(`Container not found for visualization.`);
        this.isValid = false;
        return;
      }
      this.isValid = true;
      this.options = options;
      this.canvas = null;
      this.ctx = null;
      this.animationId = null;
      this.resizeObserver = null;
      this.eventListeners = [];
      this.SCRIPT_ID = "base-viz";
      this.CSS_STYLES = "";
      this.debouncedResizeHandler = debounce(this.handleResize.bind(this), 250);
      this.needsRedraw = false;
    }

    initBase() {
      if (!this.isValid) return;
      this.injectOwnStyles();
      this.setupDOM();
      this.setupCanvas();
      this.setupEventListeners();
      this.handleResize();
    }

    injectOwnStyles() {
      if (this.CSS_STYLES) {
        injectStylesOnce(`${this.SCRIPT_ID}-styles`, this.CSS_STYLES);
      }
    }

    setupDOM() {
      this.canvas = document.createElement("canvas");
      this.canvas.style.display = "block";
      this.canvas.style.width = "100%";
      this.canvas.style.height = "100%";
      this.container.innerHTML = "";
      this.container.appendChild(this.canvas);
      if (getComputedStyle(this.container).position === "static") {
        this.container.style.position = "relative";
      }
      this.container.style.overflow = "hidden";
    }

    setupCanvas() {
      if (!this.canvas) return;
      this.ctx = this.canvas.getContext("2d");
    }

    _addEventListener(element, type, listener, options) {
      const boundListener = typeof listener === "function" ? listener.bind(this) : listener;
      element.addEventListener(type, boundListener, options);
      this.eventListeners.push({ element, type, listener: boundListener, options });
    }

    setupEventListeners() {
      if (window.ResizeObserver) {
        this.resizeObserver = new ResizeObserver(this.debouncedResizeHandler);
        this.resizeObserver.observe(this.container);
      } else {
        this._addEventListener(window, "resize", this.debouncedResizeHandler);
      }
    }

    handleResize() {
      if (!this.canvas || !this.ctx || !this.container.clientWidth || !this.container.clientHeight) {
        return;
      }
      const rect = this.container.getBoundingClientRect();
      const dpr = window.devicePixelRatio || 1;
      this.canvas.width = rect.width * dpr;
      this.canvas.height = rect.height * dpr;
      this.canvas.style.width = `${rect.width}px`;
      this.canvas.style.height = `${rect.height}px`;
      this.ctx.scale(dpr, dpr);
      this.requestRedraw();
    }

    requestRedraw() {
      this.needsRedraw = true;
    }

    destroy() {
      if (!this.isValid) return;
      if (this.animationId) cancelAnimationFrame(this.animationId);
      if (this.resizeObserver) this.resizeObserver.disconnect();
      this.eventListeners.forEach(({ element, type, listener, options }) => {
        element.removeEventListener(type, listener, options);
      });
      if (this.container) {
        this.container.innerHTML = "";
        delete this.container.dataset.v0VizInitializedScriptC;
      }
      this.canvas = null;
      this.ctx = null;
      this.isValid = false;
    }

    startAnimationLoop() {}
    
    stopAnimationLoop() {
      if (this.animationId) {
        cancelAnimationFrame(this.animationId);
        this.animationId = null;
      }
    }
  }

  // --- Company Dashboard Visualization Class ---
  class CompanyDashboardViz extends BaseVisualization {
    constructor(container, options = {}) {
      super(container, options);
      if (!this.isValid) return;
      
      this.SCRIPT_ID = "script-C-company-profile";
      this.CSS_STYLES = `
        .${this.SCRIPT_ID}-tooltip { 
          position: absolute; 
          background: linear-gradient(135deg, #2f2f2f 0%, #1a1a1a 100%); 
          border: 1px solid #666666; 
          border-radius: 12px; 
          padding: 16px; 
          color: #e2e8f0; 
          font-size: 12px; 
          font-family: "Roobert Pro", Inter, Arial, sans-serif; 
          max-width: 300px; 
          z-index: 1000; 
          pointer-events: none; 
          opacity: 0; 
          transform: translateY(10px); 
          transition: opacity 0.2s ease-out, transform 0.2s ease-out; 
          box-shadow: 0 10px 25px rgba(0,0,0,0.5); 
        }
        .${this.SCRIPT_ID}-tooltip.show { 
          opacity: 1; 
          transform: translateY(0); 
        }
        .${this.SCRIPT_ID}-tooltip-title { 
          font-weight: 600; 
          margin-bottom: 8px; 
          font-size: 13px; 
        }
        .${this.SCRIPT_ID}-tooltip-description { 
          line-height: 1.4; 
          margin-bottom: 8px; 
        }
        .${this.SCRIPT_ID}-tooltip-category { 
          font-size: 10px; 
          color: #94a3b8; 
          text-transform: uppercase; 
          letter-spacing: 0.5px; 
        }`;
      
      this.tooltip = null;
      this.metrics = [];
      this.hoveredCardId = null;
      this.startTime = null;
      this.numberStartTime = null;
      this.avatarsImage = null;
      
      // Default metrics data
      this.baseMetrics = options.metricsData || [
        {
          id: "funding",
          title: "TOTAL FUNDING",
          value: "$21.9B",
          subtitle: "Since 2016",
          description: "Total capital raised by OpenAI since its inception, fueling its research and development in artificial general intelligence.",
          color: "#4A6AEF",
          size: "large",
          category: "funding",
          targetValue: 21.9,
        },
        {
          id: "latest",
          title: "LATEST ROUND",
          value: "$6.6B",
          subtitle: "Oct 2024",
          secondaryValue: "18",
          secondaryTitle: "ROUNDS",
          description: "Details of the most recent funding round, indicating continued investor confidence and capital influx.",
          color: "#FF8A50",
          size: "medium",
          category: "funding",
          targetValue: 6.6,
          secondaryTargetValue: 18,
        },
        {
          id: "valuation",
          title: "VALUATION",
          value: "$157B",
          subtitle: "Current",
          secondaryValue: "$3.4B",
          secondaryTitle: "ARR",
          description: "Current market valuation of OpenAI, reflecting its significant impact and future potential in the AI industry.",
          color: "#4A9EFF",
          size: "medium",
          category: "funding",
          targetValue: 157,
          secondaryTargetValue: 3.4,
        },
        {
          id: "years",
          title: "YEARS",
          value: "9",
          subtitle: "Founded 2015",
          description: "Number of years OpenAI has been operational, highlighting its journey from a research lab to a leading AI entity.",
          color: "#4A9EFF",
          size: "small",
          category: "company",
          targetValue: 9,
        },
        {
          id: "growth",
          title: "GROWTH RATE",
          value: "2,847%",
          subtitle: "Employee Growth",
          description: "Represents the compound annual growth rate of the company's workforce, indicating rapid expansion.",
          color: "#fdd167",
          size: "small",
          category: "growth",
          targetValue: 2847,
        },
        {
          id: "microsoft",
          title: "MICROSOFT",
          value: "$11B",
          subtitle: "Strategic Partner",
          description: "Significant investment and partnership with Microsoft, providing substantial resources and cloud computing capabilities.",
          color: "#FF8A50",
          size: "small",
          category: "company",
          targetValue: 11,
        },
        {
          id: "leader",
          title: "AI LEADER",
          value: "#1",
          subtitle: "Market Position",
          description: "OpenAI's recognized leadership position in the artificial intelligence market, driven by groundbreaking models like GPT.",
          color: "#4A9EFF",
          size: "small",
          category: "company",
          targetValue: 1,
        },
        {
          id: "team",
          title: "TEAM SIZE",
          value: "500+",
          subtitle: "Est. 2024",
          description: "Estimated number of employees, showcasing the scale of its operations and talent pool.",
          color: "#fdd167",
          size: "wide",
          category: "team",
          targetValue: 500,
        },
      ];
    }

    async init() {
      if (!this.isValid) return;

      // Load font if available
      if (typeof document !== "undefined" && document.fonts) {
        try {
          await document.fonts.load('12px "Roobert Pro"');
          console.log('CompanyDashboardViz: "Roobert Pro" font loaded or already available.');
        } catch (error) {
          console.warn('CompanyDashboardViz: "Roobert Pro" font could not be loaded or timed out. Fallback fonts will be used for canvas.', error);
        }
      }

      // Load avatars image
      this.avatarsImage = new Image();
      this.avatarsImage.crossOrigin = "anonymous";
      this.avatarsImage.onload = () => {
        console.log("CompanyDashboardViz: Avatars image loaded successfully.");
        this.requestRedraw();
      };
      this.avatarsImage.onerror = (error) => {
        console.warn("CompanyDashboardViz: Failed to load avatars image:", error);
      };
      this.avatarsImage.src = "https://cdn.prod.website-files.com/6836cd4c80fa4fe6bc555463/685148231998dd438a10606f_avatars.webp";

      super.initBase();
      if (!this.isValid) return;
      this.startAnimationLoop();
    }

    setupDOM() {
      super.setupDOM();
      this.tooltip = document.createElement("div");
      this.tooltip.className = `${this.SCRIPT_ID}-tooltip`;
      this.container.appendChild(this.tooltip);
    }

    setupEventListeners() {
      super.setupEventListeners();
      if (this.canvas) {
        this._addEventListener(this.canvas, "mousemove", this.handleCanvasMouseMove.bind(this));
        this._addEventListener(this.canvas, "mouseleave", this.handleCanvasMouseLeave.bind(this));
      }
    }

    handleResize() {
      super.handleResize();
      if (!this.canvas) return;
      const rect = this.canvas.getBoundingClientRect();
      this.metrics = this.calculateLayout(rect.width, rect.height);
      this.startTime = null;
      this.numberStartTime = null;
      this.needsRedraw = true;
    }

    calculateLayout(canvasWidth, canvasHeight) {
      const padding = canvasWidth * 0.05;
      const gridWidth = canvasWidth - 2 * padding;
      const startX = padding;
      const gap = gridWidth * 0.015;
      const cellWidth = (gridWidth - gap * 3) / 4;
      const availableGridHeight = canvasHeight - 2 * padding;
      const cellHeight = (availableGridHeight - gap * 3) / 4;
      const startY = padding;
      
      const positions = {
        funding: { x: startX, y: startY, width: cellWidth * 2 + gap, height: cellHeight * 2 + gap },
        latest: { x: startX + cellWidth * 2 + gap * 2, y: startY, width: cellWidth * 2 + gap, height: cellHeight },
        valuation: { x: startX + cellWidth * 2 + gap * 2, y: startY + cellHeight + gap, width: cellWidth * 2 + gap, height: cellHeight },
        years: { x: startX, y: startY + cellHeight * 2 + gap * 2, width: cellWidth, height: cellHeight },
        growth: { x: startX + cellWidth + gap, y: startY + cellHeight * 2 + gap * 2, width: cellWidth, height: cellHeight },
        microsoft: { x: startX + cellWidth * 2 + gap * 2, y: startY + cellHeight * 2 + gap * 2, width: cellWidth, height: cellHeight },
        leader: { x: startX + cellWidth * 3 + gap * 3, y: startY + cellHeight * 2 + gap * 2, width: cellWidth, height: cellHeight },
        team: { x: startX, y: startY + cellHeight * 3 + gap * 3, width: gridWidth, height: cellHeight },
      };
      
      return this.baseMetrics.map((metric) => ({
        ...metric,
        ...positions[metric.id],
        animatedValue: 0,
        secondaryAnimatedValue: 0,
        hoverScale: 1.0,
      }));
    }

    getCardAt(x, y) {
      for (const metric of this.metrics) {
        if (!metric.x || !metric.y || !metric.width || !metric.height || metric.hoverScale === undefined) continue;
        const scaledWidth = metric.width * metric.hoverScale;
        const scaledHeight = metric.height * metric.hoverScale;
        const scaledX = metric.x + (metric.width - scaledWidth) / 2;
        const scaledY = metric.y + (metric.height - scaledHeight) / 2;
        if (x >= scaledX && x <= scaledX + scaledWidth && y >= scaledY && y <= scaledY + scaledHeight) {
          return metric;
        }
      }
      return null;
    }

    handleCanvasMouseMove(e) {
      if (!this.canvas) return;
      const rect = this.canvas.getBoundingClientRect();
      const x = e.clientX - rect.left;
      const y = e.clientY - rect.top;
      const hoveredCard = this.getCardAt(x, y);
      
      if (hoveredCard) {
        if (this.hoveredCardId !== hoveredCard.id) {
          this.hoveredCardId = hoveredCard.id;
          this.showTooltip(e, hoveredCard);
          this.needsRedraw = true;
        }
        this.updateTooltipPosition(e);
        this.canvas.style.cursor = "pointer";
      } else {
        if (this.hoveredCardId !== null) {
          this.hoveredCardId = null;
          this.hideTooltip();
          this.needsRedraw = true;
        }
        this.canvas.style.cursor = "default";
      }
    }

    handleCanvasMouseLeave() {
      if (this.hoveredCardId !== null) {
        this.hoveredCardId = null;
        this.hideTooltip();
        this.needsRedraw = true;
        if (this.canvas) this.canvas.style.cursor = "default";
      }
    }

    showTooltip(event, metric) {
      if (!this.tooltip) return;
      this.tooltip.innerHTML = `
        <div class="${this.SCRIPT_ID}-tooltip-title" style="color: ${metric.color};">${metric.title}</div>
        <div class="${this.SCRIPT_ID}-tooltip-description">${metric.description}</div>
        <div class="${this.SCRIPT_ID}-tooltip-category">Category: ${metric.category}</div>
      `;
      this.tooltip.classList.add("show");
      this.updateTooltipPosition(event);
    }

    hideTooltip() {
      if (!this.tooltip) return;
      this.tooltip.classList.remove("show");
    }

    updateTooltipPosition(event) {
      if (!this.tooltip || !this.container) return;
      const containerRect = this.container.getBoundingClientRect();
      const x = event.clientX - containerRect.left;
      const y = event.clientY - containerRect.top;
      const tooltipRect = this.tooltip.getBoundingClientRect();
      
      let popupX = x + 15;
      let popupY = y - tooltipRect.height - 10;
      
      if (popupX + tooltipRect.width > containerRect.width) {
        popupX = x - tooltipRect.width - 15;
      }
      if (popupX < 0) {
        popupX = 5;
      }
      if (popupY < 0) {
        popupY = y + 15;
      }
      if (popupY + tooltipRect.height > containerRect.height) {
        popupY = containerRect.height - tooltipRect.height - 5;
      }
      
      this.tooltip.style.left = `${popupX}px`;
      this.tooltip.style.top = `${popupY}px`;
    }

    formatAnimatedValue(metric, animatedValue) {
      switch (metric.id) {
        case "funding": return `$${animatedValue.toFixed(1)}B`;
        case "latest": return `$${animatedValue.toFixed(1)}B`;
        case "valuation": return `$${Math.round(animatedValue)}B`;
        case "years": return Math.round(animatedValue).toString();
        case "growth": return `${Math.round(animatedValue).toLocaleString()}%`;
        case "microsoft": return `$${Math.round(animatedValue)}B`;
        case "leader": return `#${Math.round(animatedValue)}`;
        case "team": return `${Math.round(animatedValue)}+`;
        default: return Math.round(animatedValue).toString();
      }
    }

    formatSecondaryAnimatedValue(metric, animatedValue) {
      switch (metric.id) {
        case "latest": return Math.round(animatedValue).toString();
        case "valuation": return `$${animatedValue.toFixed(1)}B`;
        default: return Math.round(animatedValue).toString();
      }
    }

    updateHoverScales() {
      let hasChanges = false;
      this.metrics.forEach((metric) => {
        if (metric.hoverScale === undefined) metric.hoverScale = 1.0;
        const targetScale = this.hoveredCardId === metric.id ? 1.05 : 1.0;
        const scaleDiff = targetScale - metric.hoverScale;
        if (Math.abs(scaleDiff) > 0.001) {
          metric.hoverScale += scaleDiff * 0.12;
          hasChanges = true;
        } else {
          metric.hoverScale = targetScale;
        }
      });
      return hasChanges;
    }

    drawRoundedRect(x, y, width, height, radius) {
      if (!this.ctx) return;
      this.ctx.beginPath();
      this.ctx.moveTo(x + radius, y);
      this.ctx.lineTo(x + width - radius, y);
      this.ctx.quadraticCurveTo(x + width, y, x + width, y + radius);
      this.ctx.lineTo(x + width, y + height - radius);
      this.ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);
      this.ctx.lineTo(x + radius, y + height);
      this.ctx.quadraticCurveTo(x, y + height, x, y + height - radius);
      this.ctx.lineTo(x, y + radius);
      this.ctx.quadraticCurveTo(x, y, x + radius, y);
      this.ctx.closePath();
    }

    drawText(text, x, y, maxWidth, fontSize, color, align = "left", weight = "normal") {
      if (!this.ctx) return;
      this.ctx.fillStyle = color;
      this.ctx.font = `${weight} ${fontSize}px "Roobert Pro", Inter, Arial, sans-serif`;
      this.ctx.textAlign = align;
      this.ctx.textBaseline = "top";
      
      if (weight === "bold") {
        this.ctx.shadowColor = "rgba(0,0,0,0.3)";
        this.ctx.shadowBlur = 2;
        this.ctx.shadowOffsetX = 0;
        this.ctx.shadowOffsetY = 1;
      }
      
      this.ctx.fillText(text, x, y, maxWidth);
      
      this.ctx.shadowColor = "transparent";
      this.ctx.shadowBlur = 0;
      this.ctx.shadowOffsetX = 0;
      this.ctx.shadowOffsetY = 0;
    }

    drawCard(metric, isHovered, animationProgress) {
      if (!this.ctx || metric.x === undefined || metric.y === undefined || 
          metric.width === undefined || metric.height === undefined) return;

      const { x, y, width, height, hoverScale = 1 } = metric;
      this.ctx.save();
      
      const centerX = x + width / 2;
      const centerY = y + height / 2;
      this.ctx.translate(centerX, centerY);
      this.ctx.scale(hoverScale, hoverScale);
      this.ctx.translate(-centerX, -centerY);
      this.ctx.globalAlpha = animationProgress;

      // Background gradient
      const bgGradient = this.ctx.createLinearGradient(x, y, x, y + height);
      if (isHovered) {
        bgGradient.addColorStop(0, "#2a2a2a");
        bgGradient.addColorStop(1, "#1a1a1a");
      } else {
        bgGradient.addColorStop(0, "#1a1a1a");
        bgGradient.addColorStop(1, "#0f0f0f");
      }
      
      this.ctx.fillStyle = bgGradient;
      this.drawRoundedRect(x, y, width, height, 8);
      this.ctx.fill();

      // Border
      this.ctx.strokeStyle = isHovered ? "#888888" : "#454545";
      this.ctx.lineWidth = isHovered ? 2 : 1;
      this.drawRoundedRect(x, y, width, height, 8);
      this.ctx.stroke();

      // Hover glow effect
      if (isHovered) {
        const glowGradient = this.ctx.createRadialGradient(centerX, centerY, 0, centerX, centerY, Math.max(width, height) * 0.8);
        glowGradient.addColorStop(0, `${metric.color}40`);
        glowGradient.addColorStop(0.5, `${metric.color}20`);
        glowGradient.addColorStop(1, `${metric.color}00`);
        this.ctx.fillStyle = glowGradient;
        this.drawRoundedRect(x - 8, y - 8, width + 16, height + 16, 16);
        this.ctx.fill();
      }

      // Color indicator dot
      this.ctx.fillStyle = metric.color;
      this.ctx.globalAlpha = animationProgress * (isHovered ? 1 : 0.7);
      if (isHovered) {
        this.ctx.shadowColor = metric.color;
        this.ctx.shadowBlur = 10;
      }
      this.ctx.beginPath();
      this.ctx.arc(x + width - 10, y + 10, isHovered ? 5 : 3, 0, Math.PI * 2);
      this.ctx.fill();
      this.ctx.shadowColor = "transparent";
      this.ctx.shadowBlur = 0;
      this.ctx.globalAlpha = animationProgress;

      let styles;
      const spacingValueToTitle = 8;
      const spacingTitleToSubtitle = 6;
      const cardSidePadding = Math.max(20, width * 0.05);

      if (metric.secondaryValue && metric.secondaryTitle) {
        // Dual metric card
        styles = FONT_CONFIG.mediumDualMetrics;
        const dualCardContentTopPadding = height * 0.25;
        const contentTopY = y + dualCardContentTopPadding;
        const dividerPhysicalWidth = 1;
        const dividerVisualGap = 20;
        const availableContentWidth = width - cardSidePadding * 2 - dividerPhysicalWidth - dividerVisualGap * 2;
        const columnWidth = availableContentWidth / 2;

        // Primary column
        const primaryColX = x + cardSidePadding;
        const primaryValueY = contentTopY;
        const primaryDisplayValue = metric.animatedValue !== undefined ? 
          this.formatAnimatedValue(metric, metric.animatedValue) : metric.value;

        this.drawText(primaryDisplayValue, primaryColX, primaryValueY, columnWidth, 
          styles.value.fontSize, metric.color, "left", styles.value.fontWeight);

        const primaryTitleY = primaryValueY + styles.value.lineHeight + spacingValueToTitle;
        this.drawText(metric.title, primaryColX, primaryTitleY, columnWidth, 
          styles.title.fontSize, isHovered ? "#f1f5f9" : "#cbd5e1", "left", styles.title.fontWeight);

        // Divider
        const dividerX = primaryColX + columnWidth + dividerVisualGap + dividerPhysicalWidth / 2;
        this.ctx.strokeStyle = isHovered ? "rgba(148, 163, 184, 0.7)" : "rgba(100, 116, 139, 0.4)";
        this.ctx.lineWidth = dividerPhysicalWidth;
        this.ctx.beginPath();
        const dividerTopY = primaryValueY + styles.value.lineHeight * 0.1;
        const dividerBottomY = primaryTitleY + styles.title.lineHeight - styles.title.lineHeight * 0.1;
        this.ctx.moveTo(dividerX, dividerTopY);
        this.ctx.lineTo(dividerX, dividerBottomY);
        this.ctx.stroke();

        // Secondary column
        const secondaryColX = dividerX + dividerPhysicalWidth / 2 + dividerVisualGap;
        const secondaryValueY = contentTopY;
        const secondaryDisplayValue = metric.secondaryAnimatedValue !== undefined ?
          this.formatSecondaryAnimatedValue(metric, metric.secondaryAnimatedValue) : metric.secondaryValue || "";

        this.drawText(secondaryDisplayValue, secondaryColX, secondaryValueY, columnWidth,
          styles.secondaryValue.fontSize, metric.color, "left", styles.secondaryValue.fontWeight);

        const secondaryTitleY = secondaryValueY + styles.secondaryValue.lineHeight + spacingValueToTitle;
        this.drawText(metric.secondaryTitle, secondaryColX, secondaryTitleY, columnWidth,
          styles.secondaryTitle.fontSize, isHovered ? "#f1f5f9" : "#cbd5e1", "left", styles.secondaryTitle.fontWeight);

      } else {
        // Single metric card
        if (metric.size === "large") styles = FONT_CONFIG.largeSingleMetrics;
        else if (metric.size === "wide") styles = FONT_CONFIG.wideSingleMetrics;
        else styles = FONT_CONFIG.smallSingleMetrics;

        // Special handling for team card with image
        if (metric.id === "team" && this.avatarsImage && this.avatarsImage.complete) {
          const maxImageHeight = Math.min(height * 0.35, 60);
          const imageAspectRatio = this.avatarsImage.naturalWidth / this.avatarsImage.naturalHeight;

          let imageWidth, imageHeight;
          if (imageAspectRatio > 1) {
            imageHeight = maxImageHeight;
            imageWidth = imageHeight * imageAspectRatio;
          } else {
            imageWidth = maxImageHeight * imageAspectRatio;
            imageHeight = maxImageHeight;
          }

          const imageX = x + width - cardSidePadding - imageWidth;
          const imageY = y + (height - imageHeight) / 2;
          this.ctx.drawImage(this.avatarsImage, imageX, imageY, imageWidth, imageHeight);

          const imageSpacing = 20;
          const textAreaWidth = width - cardSidePadding * 2 - imageWidth - imageSpacing;
          const textBlockHeight = styles.value.lineHeight + spacingValueToTitle + styles.title.lineHeight +
            (metric.subtitle ? spacingTitleToSubtitle + styles.subtitle.lineHeight : 0);

          let currentY = y + (height - textBlockHeight) / 2;
          const contentX = x + cardSidePadding;

          const displayValue = metric.animatedValue !== undefined ? 
            this.formatAnimatedValue(metric, metric.animatedValue) : metric.value;
          this.drawText(displayValue, contentX, currentY, textAreaWidth, styles.value.fontSize, 
            metric.color, "left", styles.value.fontWeight);
          currentY += styles.value.lineHeight + spacingValueToTitle;

          this.drawText(metric.title, contentX, currentY, textAreaWidth, styles.title.fontSize,
            isHovered ? "#f1f5f9" : "#cbd5e1", "left", styles.title.fontWeight);
          currentY += styles.title.lineHeight + spacingTitleToSubtitle;

          if (metric.subtitle) {
            this.drawText(metric.subtitle, contentX, currentY, textAreaWidth, styles.subtitle.fontSize,
              isHovered ? "#a1a1aa" : "#64748b", "left", styles.subtitle.fontWeight);
          }
        } else {
          // Regular single-data card
          const textBlockHeight = styles.value.lineHeight + spacingValueToTitle + styles.title.lineHeight +
            (metric.subtitle ? spacingTitleToSubtitle + styles.subtitle.lineHeight : 0);

          let currentY = y + (height - textBlockHeight) / 2;
          const contentX = x + cardSidePadding;
          const contentWidth = width - cardSidePadding * 2;

          const displayValue = metric.animatedValue !== undefined ? 
            this.formatAnimatedValue(metric, metric.animatedValue) : metric.value;
          this.drawText(displayValue, contentX, currentY, contentWidth, styles.value.fontSize,
            metric.color, "left", styles.value.fontWeight);
          currentY += styles.value.lineHeight + spacingValueToTitle;

          this.drawText(metric.title, contentX, currentY, contentWidth, styles.title.fontSize,
            isHovered ? "#f1f5f9" : "#cbd5e1", "left", styles.title.fontWeight);
          currentY += styles.title.lineHeight + spacingTitleToSubtitle;

          if (metric.subtitle) {
            this.drawText(metric.subtitle, contentX, currentY, contentWidth, styles.subtitle.fontSize,
              isHovered ? "#a1a1aa" : "#64748b", "left", styles.subtitle.fontWeight);
          }
        }
      }
      this.ctx.restore();
    }

    updateAnimatedValues(deltaTime) {
      let hasChanges = false;
      this.metrics.forEach((metric) => {
        const valueDiff = metric.targetValue - (metric.animatedValue || 0);
        if (Math.abs(valueDiff) > 0.01) {
          metric.animatedValue = (metric.animatedValue || 0) + valueDiff * deltaTime * 0.7;
          hasChanges = true;
        } else {
          metric.animatedValue = metric.targetValue;
        }

        if (metric.secondaryTargetValue !== undefined) {
          const secondaryValueDiff = metric.secondaryTargetValue - (metric.secondaryAnimatedValue || 0);
          if (Math.abs(secondaryValueDiff) > 0.01) {
            metric.secondaryAnimatedValue = (metric.secondaryAnimatedValue || 0) + secondaryValueDiff * deltaTime * 0.7;
            hasChanges = true;
          } else {
            metric.secondaryAnimatedValue = metric.secondaryTargetValue;
          }
        }
      });
      return hasChanges;
    }

    draw(time) {
      if (!this.ctx || !this.canvas) return;

      if (!this.startTime) this.startTime = time;
      const timeDiff = time - this.startTime;
      const animationProgress = Math.min(1, timeDiff / 500);

      const deltaTime = Math.min(1, (time - (this.numberStartTime || time)) / 1000);
      const hasValueChanges = this.updateAnimatedValues(deltaTime);
      const hasHoverChanges = this.updateHoverScales();

      if (!this.numberStartTime || hasValueChanges) {
        this.numberStartTime = time;
      }

      if (!this.needsRedraw && !hasValueChanges && !hasHoverChanges) {
        return;
      }
      this.needsRedraw = false;

      this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
      this.metrics.forEach((metric) => {
        const isHovered = this.hoveredCardId === metric.id;
        this.drawCard(metric, isHovered, animationProgress);
      });
    }

    startAnimationLoop() {
      if (this.animationId) {
        cancelAnimationFrame(this.animationId);
      }

      const animate = (time) => {
        this.draw(time);
        this.animationId = requestAnimationFrame(animate);
      };

      this.animationId = requestAnimationFrame(animate);
    }

    destroy() {
      super.destroy();
      this.stopAnimationLoop();
    }
  }

  // --- Initialization Function ---
  function initializeCompanyDashboard() {
    // Find all elements with data-script="company-data"
    const containers = document.querySelectorAll('[data-script="company-data"]');
    const instances = [];

    containers.forEach((container) => {
      // Skip if already initialized
      if (container.dataset.v0VizInitializedScriptC) {
        return;
      }

      // Check for custom data attributes
      const customOptions = {};
      
      // Allow custom metrics data via data-metrics attribute (JSON string)
      if (container.dataset.metrics) {
        try {
          customOptions.metricsData = JSON.parse(container.dataset.metrics);
        } catch (e) {
          console.warn('Invalid JSON in data-metrics attribute:', e);
        }
      }

      // Create and initialize the visualization
      const viz = new CompanyDashboardViz(container, customOptions);
      viz.init().then(() => {
        console.log('Company dashboard initialized successfully');
      }).catch((error) => {
        console.error('Failed to initialize company dashboard:', error);
      });

      instances.push(viz);
      container.dataset.v0VizInitializedScriptC = 'true';
    });

    return instances;
  }

  // --- Auto-initialization ---
  // Initialize when DOM is ready
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', initializeCompanyDashboard);
  } else {
    // DOM is already ready
    initializeCompanyDashboard();
  }

  // Also initialize when new elements are added dynamically
  if (window.MutationObserver) {
    const observer = new MutationObserver((mutations) => {
      let shouldInit = false;
      mutations.forEach((mutation) => {
        mutation.addedNodes.forEach((node) => {
          if (node.nodeType === 1) { // Element node
            if (node.matches && node.matches('[data-script="company-data"]')) {
              shouldInit = true;
            } else if (node.querySelectorAll) {
              const found = node.querySelectorAll('[data-script="company-data"]');
              if (found.length > 0) {
                shouldInit = true;
              }
            }
          }
        });
      });
      
      if (shouldInit) {
        setTimeout(initializeCompanyDashboard, 100); // Small delay to ensure DOM is stable
      }
    });

    observer.observe(document.body, {
      childList: true,
      subtree: true
    });
  }

  // Expose initialization function globally for manual use
  window.initializeCompanyDashboard = initializeCompanyDashboard;

})();
</script></div></div><div class="swarmdata_content"><div class="text-size-medium text-color-orange">Global Firmographic Data</div><h2 class="heading-style-h2">Company Data</h2><ul role="list" class="bullet-list margin-top margin-0"><li class="bullet-list-item"><div class="text-size-regular-2">100M+ companies globally, from startups to enterprises</div></li><li class="bullet-list-item"><div class="text-size-regular-2">Round history, investor networks, valuation tracking</div></li><li class="bullet-list-item"><div class="text-size-regular-2">Team size changes, location data, and industry</div></li></ul><div class="code-spacing text-size-small"><span class="line-height">Developer data:</span><span class="text-style-code text-color-green">funding_data.total_funding_amount_usd</span>, <span class="text-style-code text-color-orange">last_round_type,</span>, <span class="text-style-code text-color-pink">locations</span></div></div></div></div></div></div></div></div></div></div></div></div><div class="page-padding overflow-hidden"><div class="container-large"><div class="padding-vertical padding-large"><div class="heading-block margin-bottom-50"><h3 class="heading-2 text-align-center">Our data. Your applications.</h3></div><div class="feature-layout-4col"><div class="text-block"><div class="feature-icon-home"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6452df6ee451d779b6a93c1f_Bulk_import.svg" loading="lazy" alt="Bulk imports" class="feature-icon-svg"/></div><div class="text-block-header text-align-center"><h4 class="heading-5_2">GTM Tech</h4></div></div><div class="text-block"><div class="feature-icon-home"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6452df6fce5242b03a3955db_Team_collaboration.svg" loading="lazy" alt="Team collaboration" class="feature-icon-svg"/></div><div class="text-block-header text-align-center"><h4 class="heading-5_2">Recruiting Tech</h4></div></div><div class="text-block"><div class="feature-icon-home"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6452df6fefd9044cd3433df5_Powerful_search.svg" loading="lazy" alt="Powerful search" class="feature-icon-svg"/></div><div class="text-block-header text-align-center"><h4 class="heading-5_2">Traffic De-anonymization</h4></div></div><div class="text-block"><div class="feature-icon-home"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6452df6f635c88cc9c72a78f_Pipelines.svg" loading="lazy" alt="Pipelines" class="feature-icon-svg"/></div><div class="text-block-header text-align-center"><h4 class="heading-5_2">AI Prospecting</h4></div></div><div class="text-block"><div class="feature-icon-home"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6452df6f5a19178107bc09a0_Intro_requests.svg" loading="lazy" alt="Intro requests" class="feature-icon-svg"/></div><div class="text-block-header text-align-center"><h4 class="heading-5_2">Deal Sourcing for VCs</h4></div></div><div class="text-block"><div class="feature-icon-home"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6452df6e635c88af8572a78e_Work_overlaps.svg" loading="lazy" alt="Work overlaps" class="feature-icon-svg"/></div><div class="text-block-header text-align-center"><h4 class="heading-5_2">Sales Intelligence</h4></div></div><div class="text-block"><div class="feature-icon-home"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6452df6ec9cc01283a133dc8_Integrations.svg" loading="lazy" alt="Integrations" class="feature-icon-svg"/></div><div class="text-block-header text-align-center"><h4 class="heading-5_2">Agent Builders</h4></div></div><div class="text-block"><div class="feature-icon-home"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6452df6ffa096b4c73d71531_Connection_strength.svg" loading="lazy" alt="Connection strength" class="feature-icon-svg"/></div><div class="text-block-header text-align-center"><h4 class="heading-5_2">Warm Intro Paths</h4></div></div></div></div></div></div><div class="page-padding margin-top-50"><div class="container-large"></div></div><div class="page-padding"><div class="container-large"><div class="section-item-row row-single"><div class="section-item section-item-horizontal section-item-reverse"><div class="section-item-image max-width-480 hide-mobile-portrait"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6305e3d0bc95be282dae89d2_image-theswarm-network.webp" loading="lazy" height="" sizes="(max-width: 859px) 100vw, 859px" alt="" srcset="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6305e3d0bc95be282dae89d2_image-theswarm-network-p-500.webp 500w, https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6305e3d0bc95be282dae89d2_image-theswarm-network-p-800.webp 800w, https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6305e3d0bc95be282dae89d2_image-theswarm-network.webp 859w" class="max-width-480"/></div><div class="section-item-text section-item-horizontal"><div class="padding-right padding-xxhuge"><h3 class="heading-3 no-top-margin">Privacy and security are built in, not bolted on.</h3><div class="text-size-medium w-richtext"><ul role="list"><li class="text-size-medium">The Swarm is GDPR and CCPA-compliant, with a secure-by-design data infrastructure.</li><li class="text-size-medium">We&#x27;re actively undergoing SOC 2 Type II compliance, supported by Vanta.</li><li class="text-size-medium">Hundreds of scale-ups, VC firms, and industry leaders already use The Swarm.</li></ul></div><div class="safety_badges"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/62fd0a844544ed1b022eaeec_safety_badge_1.svg" loading="lazy" alt="CCPA Compliant" class="safety_badge"/><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/62fd0a844308017a50d5a636_safety_badge_2.svg" loading="lazy" alt="GDPR Compliant" class="safety_badge"/></div></div></div></div></div></div></div><header class="section-layout-1 background-hero-1-image hidden"><section id="home-2" class="page-padding"><div class="container-large"><div class="padding-vertical padding-top-botto-hero"><div class="layout-centered padding-medium"><div class="annoucement-block"><div class="annoucement-block-wrapper"><div class="text-size-regular text-align-center">🔆  The Swarm AI Network Mapper Is Here!</div><a href="/product/data-api" class="text-size-regular text-color-orange">Learn more</a></div></div><h1 class="heading-1 home">Power up your<br/>company network.</h1><div class="max-width-600 margin-large"><div class="text-size-medium mobile-centered-text">Map and tap into the warm relationships around your company.<br/>Find your people&#x27;s former colleagues instantly with AI.<br/>Layer in your LinkedIn and email contacts.<br/></div><div class="w-layout-grid buttons-grid"><a data-event-category="Section" data-event-label="Build my network" href="https://app.theswarm.com/" class="button-swarm w-button">Start for free →</a><a href="#" class="button-link w-inline-block w-lightbox"><div class="button-circles"><div id="w-node-f31d8291-d225-4307-6cbc-9909a34c954d-bbc40feb" data-w-id="f31d8291-d225-4307-6cbc-9909a34c954d" class="button-circle size-large bg-orange"><div class="button-play-circle_arrow"></div></div><div class="button-circle size-large bg-pink is-second"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/63fa5f22f86571953bfe31ab_david-connors.png" loading="lazy" width="56" height="54" alt="David Connors - CEO - The Swarm"/></div></div><div data-w-id="f31d8291-d225-4307-6cbc-9909a34c9551" class="button-label"><div class="button-text">Watch 2-min demo</div><div class="button-subtext">Co-Founder<br/>David Connors</div></div><script type="application/json" class="w-json">{
  "items": [
    {
      "url": "https://youtube.com/watch?v=fmi-EebjnLU&autoplay=1&rel=0",
      "originalUrl": "https://youtube.com/watch?v=fmi-EebjnLU&autoplay=1&rel=0",
      "width": 940,
      "height": 528,
      "html": "<iframe class=\"embedly-embed\" src=\"//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Ffmi-EebjnLU%3Ffeature%3Doembed%26rel%3D0%26autoplay%3D1&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dfmi-EebjnLU&key=96f1f04c5f4143bcb0f2e68c87d65feb&autoplay=1&type=text%2Fhtml&schema=youtube\" width=\"940\" height=\"528\" scrolling=\"no\" title=\"YouTube embed\" frameborder=\"0\" allow=\"autoplay; fullscreen; encrypted-media; picture-in-picture;\" allowfullscreen=\"true\"></iframe>",
      "type": "video"
    }
  ],
  "group": ""
}</script></a></div><div class="hero-3-line"><div class="div-block-48"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6526bf5e71d56a46e0d1f0d1_icon-no-creditcard.svg" loading="lazy" alt="" class="icon-small"/><div>Free 30-day trial. <a href="#" class="text-color-white">Plans</a> start at $29/month.<br/></div></div><div class="div-block-48"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6526bef9efb0fc9ae586c38d_icon-g2-stars.svg" loading="lazy" alt="4.8/5 star rating on G2.com"/><div>4.8/5 G2 Rating<br/></div></div></div></div></div></div></div></section><div class="background-gradient hide-mobile-portrait"></div></header><section class="section-layout-1"><div class="page-padding"><div class="container-large"><div class="padding-vertical padding-top-2"><div id="w-node-_0c1c588b-ddb0-a657-6ee0-1a5fc9369291-bbc40feb" class="layout-content-1 text-align-center"><h2 class="heading-style-h2">Your questions, answered.<br/></h2><div class="accordion_component margin-top-50"><div class="accordion_columns"><div class="accordion_item accordion_item-small"><div class="accordion_question-wrapper accordion_item_small"><h3 class="text-size-medium text-weight-medium">How do I get started?</h3><div class="accordion-icon w-embed"><svg height="100%" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 8H8V14H6V8H0V6H6V0H8V6H14V8Z" fill="currentcolor"/>
</svg></div></div><div class="accordion_content-wrapper accordion_item_small"><div class="accordion_content-wrapper-box"><div class="text-rich-text w-richtext"><p>Create a free Swarm account to use our platform for relationship mapping or to retrieve an API key and start putting our data to work for you.</p></div></div></div></div><div class="accordion_item accordion_item-small"><div class="accordion_question-wrapper accordion_item_small"><h3 class="text-size-medium text-weight-medium">Can I import data from other tools?</h3><div class="accordion-icon w-embed"><svg height="100%" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 8H8V14H6V8H0V6H6V0H8V6H14V8Z" fill="currentcolor"/>
</svg></div></div><div class="accordion_content-wrapper accordion_item_small"><div class="accordion_content-wrapper-box"><div class="text-rich-text w-richtext"><p>Yes! You and your Swarm connectors can easily import their connections from LinkedIn, Google Contacts, and from your CRM.<br/></p></div></div></div></div><div class="accordion_item accordion_item-small"><div class="accordion_question-wrapper accordion_item_small"><h3 class="text-size-medium text-weight-medium">Do you have monthly and annual billing options?</h3><div class="accordion-icon w-embed"><svg height="100%" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 8H8V14H6V8H0V6H6V0H8V6H14V8Z" fill="currentcolor"/>
</svg></div></div><div class="accordion_content-wrapper accordion_item_small"><div class="accordion_content-wrapper-box"><div class="text-rich-text w-richtext"><p>Yes! Our plans are billed either annually or monthly. Our pricing is transparent and all listed <a href="/pricing">here</a>.</p></div></div></div></div><div class="accordion_item accordion_item-small"><div class="accordion_question-wrapper accordion_item_small"><h3 class="text-size-medium text-weight-medium">How much does The Swarm cost?</h3><div class="accordion-icon w-embed"><svg height="100%" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 8H8V14H6V8H0V6H6V0H8V6H14V8Z" fill="currentcolor"/>
</svg></div></div><div class="accordion_content-wrapper accordion_item_small"><div class="accordion_content-wrapper-box"><div class="text-rich-text w-richtext"><p>Our SaaS platform starts at $99 /month and our API plans scale with usage. Learn more about our <a href="/pricing">pricing here</a>. </p></div></div></div></div></div><div class="accordion_columns"><div class="accordion_item accordion_item-small"><div class="accordion_question-wrapper accordion_item_small"><h3 class="text-size-medium text-weight-medium">What’s Relationship Intelligence?</h3><div class="accordion-icon w-embed"><svg height="100%" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 8H8V14H6V8H0V6H6V0H8V6H14V8Z" fill="currentcolor"/>
</svg></div></div><div class="accordion_content-wrapper accordion_item_small"><div class="accordion_content-wrapper-box"><div class="text-rich-text w-richtext"><p>The Swarm is the Relationship Intelligence Leader. We give companies and investors the keys to their extended networks and the relationship data they need to accelerate sales, recruiting, and fundraising. Learn more <a href="https://www.theswarm.com/customers/about-relationship-intelligence">here</a>.<br/></p></div></div></div></div><div class="accordion_item accordion_item-small"><div class="accordion_question-wrapper accordion_item_small"><h3 class="text-size-medium text-weight-medium">How do you handle personal data?</h3><div class="accordion-icon w-embed"><svg height="100%" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 8H8V14H6V8H0V6H6V0H8V6H14V8Z" fill="currentcolor"/>
</svg></div></div><div class="accordion_content-wrapper accordion_item_small"><div class="accordion_content-wrapper-box"><div class="text-rich-text w-richtext"><p>Learn about our commitment to data safety and security on our <a href="/company/trust-center">Trust Center</a>. Our purpose is to help you harness your collective company network: We’ll never rent or sell your data to third parties for advertising or promotional use. You can also watch this short <a href="https://help.theswarm.com/en/articles/6753137-how-does-the-swarm-handle-your-data">video</a> for more details on how we handle imports and data enrichment.</p></div></div></div></div><div class="accordion_item accordion_item-small"><div class="accordion_question-wrapper accordion_item_small"><h3 class="text-size-medium text-weight-medium">Do you integrate with other tools?</h3><div class="accordion-icon w-embed"><svg height="100%" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 8H8V14H6V8H0V6H6V0H8V6H14V8Z" fill="currentcolor"/>
</svg></div></div><div class="accordion_content-wrapper accordion_item_small"><div class="accordion_content-wrapper-box"><div class="text-rich-text w-richtext"><p>Yes, we have a native Clay Integration, a HubSpot integration, a Gmail integration, and an open API that lets you integrate The Swarm in other tools. We&#x27;re working on additional integrations. Contact us for more information.</p></div></div></div></div></div></div></div></div></div></div></section><section id="waitlist" class="section-c2a"><div class="page-padding"><div class="container-large"><div class="footer-content"><div class="footer-top max-width-medium"><h2 class="heading-style-h2">Lean on the best data.<br/>Find the warmest intros.<br/>‍</h2><div class="margin-top margin-small"><a data-cta="get-started-footer" href="/start" class="button-swarm is-large w-button">Get started →</a></div></div></div></div></div></section></div><div class="footer_short"><div class="page-padding"><div class="container-large"><div class="footer-content footer-short padding-top-bottom"><div class="footer-rows"><div class="footer-row first-row-2"><div id="w-node-_0514081a-a04e-775a-c1ae-f4ca35883155-3588312b" class="footer-link-column"><div id="w-node-_0514081a-a04e-775a-c1ae-f4ca35883156-3588312b" class="footer-link-header text-color-blue">DATA</div><div id="w-node-_0514081a-a04e-775a-c1ae-f4ca35883158-3588312b" class="footer-links-list"><a href="/data/relationships" class="footer-link-address link-color-blue">Relationship Data</a><a href="/data/people" class="footer-link-address link-color-blue">People &amp; Job Changes</a><a href="/data/company" class="footer-link-address link-color-blue">Companies &amp; Fundraising</a><a id="w-node-_0514081a-a04e-775a-c1ae-f4ca3588315f-3588312b" href="/data/live" class="footer-link-address link-color-blue">Live Enrichment</a></div></div><div id="w-node-_0514081a-a04e-775a-c1ae-f4ca35883131-3588312b" class="footer-link-column"><div id="w-node-_0514081a-a04e-775a-c1ae-f4ca35883132-3588312b" class="footer-link-header text-color-orange">Products</div><div id="w-node-_0514081a-a04e-775a-c1ae-f4ca35883134-3588312b" class="footer-links-list"><a href="/product/data-api" class="footer-link-address link-color-orange">Data API</a><a href="https://data.theswarm.com/" target="_blank" class="footer-link-address link-color-orange">Data Products</a><a href="https://docs.theswarm.com/" target="_blank" class="footer-link-address link-color-orange">Documentation</a><a id="w-node-_0514081a-a04e-775a-c1ae-f4ca3588313b-3588312b" href="/product/web-application" class="footer-link-address link-color-orange">SaaS Application</a><a href="/pricing" class="footer-link-address link-color-orange">Pricing</a></div></div><div id="w-node-_0514081a-a04e-775a-c1ae-f4ca35883145-3588312b" class="footer-link-column"><div id="w-node-_0514081a-a04e-775a-c1ae-f4ca35883146-3588312b" class="footer-link-header text-color-pink">USE CASES</div><div id="w-node-_0514081a-a04e-775a-c1ae-f4ca35883148-3588312b" class="footer-links-list"><a id="w-node-_0514081a-a04e-775a-c1ae-f4ca35883139-3588312b" href="/product/demo" class="footer-link-address link-color-orange">Overview | 2min</a><a href="/product/fulldemo" class="footer-link-address link-color-orange">Full Demo | 8min</a><a href="/product/data-api" class="footer-link-address link-color-pink">For Builders</a><a href="/solutions/sales" class="footer-link-address link-color-pink">For Sales Teams</a><a href="/solutions/investors" class="footer-link-address link-color-pink">For Investors</a><a href="/solutions/for-founders" class="footer-link-address link-color-pink">For Founders</a></div></div><div id="w-node-_164bb308-a89a-7e15-2bd8-6a2869c24e77-3588312b" class="footer-link-column"><div id="w-node-_164bb308-a89a-7e15-2bd8-6a2869c24e78-3588312b" class="footer-link-header text-color-yellow">RESOURCES</div><div id="w-node-_164bb308-a89a-7e15-2bd8-6a2869c24e7a-3588312b" class="footer-links-list"><a href="/company/case-studies" class="footer-link-address link-color-yellow">Case Studies</a><div id="w-node-_164bb308-a89a-7e15-2bd8-6a2869c24e7d-3588312b" class="footer-link-block"><a href="https://help.theswarm.com" target="_blank" class="footer-link-address link-color-yellow">Help Center</a><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/623aef24027a420c18116169_icon-external-link.svg" loading="lazy" alt="" class="icon-external"/></div><a href="/company/trust-center" class="footer-link-address link-color-yellow">Trust Center</a><a href="/customers/swarm-events" class="footer-link-address link-color-yellow">Swarm Events</a><a id="w-node-_164bb308-a89a-7e15-2bd8-6a2869c24e85-3588312b" href="#" target="_blank" class="footer-link-address link-color-yellow">Community</a><a href="/company/go-to-network-academy" class="footer-link-address link-color-yellow">Go-To-Network Academy</a><a href="/customers/about-relationship-intelligence" class="footer-link-address link-color-yellow">Relationship Intelligence</a><a href="/love" class="footer-link-address link-color-yellow">Testimonials</a></div></div><div id="w-node-_0514081a-a04e-775a-c1ae-f4ca35883167-3588312b" class="footer-link-column"><div id="w-node-_0514081a-a04e-775a-c1ae-f4ca35883168-3588312b" class="footer-link-header text-color-blue">company</div><div id="w-node-_0514081a-a04e-775a-c1ae-f4ca3588316a-3588312b" class="footer-links-list"><a href="/company/about" class="footer-link-address link-color-blue">About</a><a href="/company/swarm-insights" class="footer-link-address link-color-blue">Insights</a><a href="/partners" class="footer-link-address link-color-blue">Partners</a><a href="/company/early-stage-program" class="footer-link-address link-color-blue">Early Stage Program</a><a href="https://dsr.trustsuperset.com/?orgId=0ed646d6-b843-4222-b209-cd97ff3f8b73" target="_blank" class="footer-link-address link-color-blue">Do Not Sell</a><a data-uc-cookie-settings="true" href="#" target="_blank" class="footer-link-address link-color-blue">Cookie Setting</a><a href="/company/emails" class="footer-link-address link-color-blue">Subscribe</a><a href="/start" class="footer-link-address link-color-blue">Contact</a></div><a href="https://www.producthunt.com/products/the-swarm" target="_blank" class="w-inline-block"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/67f8e13d2b64b50842149cad_top-post-badge.svg" loading="lazy" alt="The Swarm on Product Hunt"/></a></div></div><div class="footer-row last-row"><a href="/" aria-current="page" class="footer-logo w-inline-block w--current"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/619bb1ab5bf284b385d3e2ee_TheSwarm_Logo_Light.svg" loading="lazy" width="160" alt="The Swarm" class="nav_brand-image"/></a><div class="footer-copyright"><div class="copyright-code w-embed w-script"><div class="copyright">© <span id="copyright-year">2021</span> The Swarm. All rights reserved.</div>

<script>
  document.getElementById("copyright-year").innerHTML = `${new Date().getFullYear()}`;
</script></div><div class="footer-copy-links"><a href="/privacy" class="footer-copy-link">Privacy Policy</a><a href="/terms" class="footer-copy-link">Terms &amp; Conditions</a></div></div><div class="text-align-right"><a href="https://www.linkedin.com/company/wearetheswarm/" target="_blank" class="social-icon-link w-inline-block"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a1967aa29f9_f-icon-2.svg" loading="lazy" alt="linkedin icon" class="s-icon-normal"/><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082ad9edaa29fb_f-icon-2a.svg" loading="lazy" alt="linkedin icon" class="s-icon-color"/></a><a href="https://twitter.com/wearetheswarm" target="_blank" class="social-icon-link w-inline-block"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/650daeebfe21e54542428fcc_icon-footer-x.svg" loading="lazy" alt="twitter logo" class="s-icon-normal"/><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/650daeebccfced4177c8e8f5_icon-footer-x-hover.svg" loading="lazy" width="32" height="31" alt="" class="s-icon-color"/></a><a href="https://www.instagram.com/wearetheswarm/" target="_blank" class="social-icon-link w-inline-block"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6197ce2bafed5483a9fcb23b_instagram.png" loading="lazy" width="32" height="31" alt="instagram icon" class="s-icon-normal"/><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6197ce49b36b4c5e1c6cf268_instagramhover.png" loading="lazy" width="32" height="31" alt="instagram icon" class="s-icon-color"/></a><a href="https://angel.co/company/wearetheswarm" target="_blank" class="social-icon-link w-inline-block"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082aab56aa29f6_f-icon-1.svg" loading="lazy" alt="icon" class="s-icon-normal"/><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a947daa29f5_f-icon-1a.svg" loading="lazy" alt="icon" class="s-icon-color"/></a><a href="https://www.youtube.com/channel/UCrXm6642RHmVTJoWKaUWLWA" target="_blank" class="social-icon-link w-inline-block"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/630d0b11a5eb371d22814183_youtube-icon.svg" loading="lazy" alt="" class="s-icon-normal"/><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/630d0b1280032f14e6712743_youtube-icon-pink.svg" loading="lazy" alt="" class="s-icon-color"/></a><a href="mailto:hello@theswarm.com" class="social-icon-link w-inline-block"><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6194c0787e082a653daa29fa_f-icon-4.svg" loading="lazy" alt="icon" class="s-icon-normal"/><img src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/6197979675cc9156dbf5f275_Asset%2010.svg" loading="lazy" alt="" class="s-icon-color"/></a></div></div></div></div></div></div></div><script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=6194c0787e082a13b6aa29b4" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/js/the-swarm-staging-new.schunk.36b8fb49256177c8.js" type="text/javascript" integrity="sha384-4abIlA5/v7XaW1HMXKBgnUuhnjBYJ/Z9C1OSg4OhmVw9O3QeHJ/qJqFBERCDPv7G" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/js/the-swarm-staging-new.schunk.5fc4d9fa2d9062b5.js" type="text/javascript" integrity="sha384-UfIdJAYidhOibD8bM7IgkCxy/sIv8hm+x9xpXGORt1PEWb2gsMjZyZdIBCexZymS" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/6194c0787e082a13b6aa29b4/js/the-swarm-staging-new.f4ce8323.34a734f3a34d4a49.js" type="text/javascript" integrity="sha384-//XzRtWbe4pvCfYOqs0nKNW5D1SQiEhHhiPc+LHntCuz4ny78SB/aaOtjwbq2NYx" crossorigin="anonymous"></script><!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M9BB7B6"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->


<!-- Usercentrics Cookie Settings reopener -->
<script>
  document.addEventListener('click', function(e) {
    var target = e.target.closest('[data-uc-cookie-settings]');
    if (target) {
      e.preventDefault();
      if (typeof UC_UI !== 'undefined' && UC_UI.showSecondLayer) {
        UC_UI.showSecondLayer();
      } else {
        console.warn('Usercentrics UC_UI not loaded yet');
      }
    }
  });
</script>

</body></html>