1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="utf-8"> 5 <title>About Abacus.AI Company | Enterprise Generative AI Platform</title> 6 <meta name="description" content="Learn about Abacus AI, the enterprise generative AI platform delivering enterprise AI solutions, AI agents, and advanced automation for businesses."> 7 <meta property="og:url" content="https://abacus.ai/about"> 8 <meta property="og:site_name" content="Abacus.AI"> 9 <meta property="og:title" content="About Abacus.AI Company | Enterprise Generative AI Platform" /> 10 <meta property="og:description" content="Learn about Abacus AI, the enterprise generative AI platform delivering enterprise AI solutions, AI agents, and advanced automation for businesses."> 11 <meta property="og:image" content="https://abacus.ai/static/h4664e939/og/og_about.jpg" /> 12 <meta property="og:image:type" content="image/jpeg" /> 13 <meta property="og:image:width" content="1200" /> 14 <meta property="og:image:height" content="630" /> 15 <meta property="og:type" content="website" /> 16 <meta property="fb:app_id" content="758771677996804" /> 17 18 19<link id="iconFav1" rel="shortcut icon" href="/static/hbfd5c88b/icon2/favicon.ico" /> 20<link id="iconFav2" rel="icon" type="image/x-icon" sizes="16x16 32x32" href="/static/hbfd5c88b/icon2/favicon.ico" /> 21 22<link rel="icon" sizes="192x192" href="/static/h23c4bfa0/icon2/favicon-192.png" /> 23<link rel="apple-touch-icon" sizes="180x180" href="/static/hb3ee7c1d/icon2/favicon-180-precomposed.png" /> 24<meta name="msapplication-TileColor" content="#FFFFFF" /> 25<meta name="msapplication-TileImage" content="/static/haba49645/icon2/favicon-144-precomposed.png" /> 26 <meta name="viewport" content="width=device-width,initial-scale=1.0"> 27 <meta name="insight-app-sec-validation" content="be86a286-6081-4e6d-afd3-7f376bb38ca1"> 28 <link rel="preconnect" href="https://apps.abacus.ai">
vendor: 66 bytes, lines 28-29
28 29 <script async src="https://www.googletagmanager.com/gtag/js?id=
29G-NM4YZNYB7G
vendor: 12 bytes, line 29
29"></script>
30<script>
vendor: 128 bytes, lines 31-35
31window.dataLayer = window.dataLayer || []; 32function gtag(){dataLayer.push(arguments);} 33gtag('js', new Date()); 34 35gtag('config', '
35G-NM4YZNYB7G
vendor: 45 bytes, line 35
35', {cookie_flags: 'secure;samesite=none'});
36gtag('set', 'user_properties', {'exp': 'exp_ns2_revamp'}) 37gtag('event', 'experiment_set', {'exp': 'exp_ns2_revamp'}) 38</script>
vendor: 1 bytes, line 38
38
39<script> 40 (function () { 41 var zi = document.createElement('script'); 42 zi.type = 'text/javascript'; 43 zi.async = true; 44 zi.referrerPolicy = 'unsafe-url'; 45 zi.src = 'https://ws.zoominfo.com/pixel/62ff9bdbe2e537008ecab918'; 46 var s = document.getElementsByTagName('script')[0]; 47 s.parentNode.insertBefore(zi, s); 48 })(); 49</script>
49 50<!-- Twitter universal website tag code -->
51<script> 52 !function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments); 53 },s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='//static.ads-twitter.com/uwt.js', 54 a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script'); 55 // Insert Twitter Pixel ID and Standard Event data below 56 twq('init','o52dx'); 57 twq('track','PageView'); 58</script>
58 59<!-- End Twitter universal website tag code --> 60<!-- Twitter conversion tracking base code -->
61<script> 62 !function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments); 63 },s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='https://static.ads-twitter.com/uwt.js', 64 a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script'); 65 twq('config','obw0r'); 66</script>
66 67<!-- End Twitter conversion tracking base code -->
68<script async src="https://browser.sentry-cdn.com/6.2.0/bundle.min.js" integrity="sha384-PWBASVWyeEeNsEw6zDTEwryGvuiH1xuxnlu/n+GOI777vnfbqyYLzqCf+najQLoi" crossorigin="anonymous"></script>
68 69 70<!-- for r2b.com -->
71<script> 72 (function (key) { 73 if (window.reb2b) return; 74 window.reb2b = { loaded: true }; 75 var s = document.createElement("script"); 76 s.async = true; 77 s.src = "https://ddwl4m2hdecbv.cloudfront.net/b/" + key + "/" + key + ".js.gz"; 78 var firstScript = document.getElementsByTagName("script")[0]; 79 firstScript.parentNode.insertBefore(s, firstScript); 80 })("GNLKQHP8526Q"); 81</script>
81 82 83<!-- for vector pixel -->
84<script> 85 (function (window, document) { 86 try { 87 if (window.vector) { 88 console.log("Vector snippet included more than once."); 89 return; 90 } 91 var vectorObj = {}; 92 vectorObj.q = vectorObj.q || []; 93 var methods = ["load", "identify", "on"]; 94 var createMethod = function (method) { 95 return function () { 96 var args = Array.prototype.slice.call(arguments); 97 vectorObj.q.push([method, args]); 98 }; 99 }; 100 for (var i = 0; i < methods.length; i++) { 101 var method = methods[i]; 102 vectorObj[method] = createMethod(method); 103 } 104 window.vector = vectorObj; 105 if (!vectorObj.loaded) { 106 var script = document.createElement("script"); 107 script.type = "text/javascript"; 108 script.async = true; 109 script.src = "https://cdn.vector.co/pixel.js"; 110 var firstScript = document.getElementsByTagName("script")[0]; 111 firstScript.parentNode.insertBefore(script, firstScript); 112 vectorObj.loaded = true; 113 } 114 } catch (e) { 115 console.error("Error loading Vector:", e); 116 } 117 })(window, document); 118 119 vector.load("3c7f486d-07b1-4b73-97b9-250a36636a05"); 120</script>
120<script>(function () { try { var t = localStorage.getItem('ns2-theme'); if (t === 'light' || t === 'dark') { document.documentElement.setAttribute('data-ns2-theme', t); } } catch (e) {} })();</script>
120 121 <link rel="preconnect" href="https://fonts.googleapis.com"> 122 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 123 <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;1,400&display=swap" rel="stylesheet" media="print" onload="this.media='all'"> 124 <noscript><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;1,400&display=swap" rel="stylesheet"></noscript> 125 <link rel="stylesheet" href="/static/h01e71f96/v2/css/ns2.css"> 126 <link rel="preload" href="/static/h3100e775/v2/fonts/inter-latin.woff2" as="font" type="font/woff2" crossorigin> 127<style> 128@font-face { font-family: "Inter"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("/static/h3100e775/v2/fonts/inter-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } 129@font-face { font-family: "Inter"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("/static/h34b9c504/v2/fonts/inter-latin-ext.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; } 130@font-face { font-family: "Geist Mono"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("/static/h684ad5b5/v2/fonts/geist-mono-latin.woff2") format("woff2"); } 131@font-face { font-family: "Inter Fallback"; src: local("Arial"); size-adjust: 107.25%; ascent-override: 90.33%; descent-override: 22.49%; line-gap-override: 0%; } 132</style> 133<link rel="stylesheet" href="/static/hab4b620c/v2/css/tokens.css"> 134<link rel="stylesheet" href="/static/h18c5ef89/v2/css/base.css"> 135<link rel="stylesheet" href="/static/hb44feb54/v2/css/chrome.css"> 136 <link rel="stylesheet" href="/static/h45dfb7f8/v2/css/pages/company.css"> 137 138</head> 139<body class="v2-body"> 140 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=G-NM4YZNYB7G" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 141 <a class="v2-skip" href="#main">Skip to content</a> 142 <div class="v2-glow" aria-hidden="true"></div> 143 144 145 146 147<header class="ns2-header"> 148 <div class="ns2-container ns2-header-inner"> 149 <a class="ns2-logo" href="/"><img class="ns2-logo-ink" src="/static/hafa23d09/imgs/logo_text80Dark.webp" alt="Abacus.AI" width="148" height="20"><img class="ns2-logo-white" src="/static/h60348627/imgs/logo_text80.webp" alt="Abacus.AI" width="148" height="20"></a> 150 151 <nav class="ns2-nav" aria-label="Main"> 152 <div class="ns2-dd" data-ns2-dd> 153 <button type="button" class="ns2-nav-link" aria-expanded="false" aria-controls="ns2-products"> 154 Products 155 <svg viewBox="0 0 14 14" aria-hidden="true" focusable="false"><path d="M3.5 5.25L7 8.75L10.5 5.25" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg> 156 </button> 157 <div class="ns2-dd-panel" id="ns2-products"><div class="ns2-menu ns2-menu--cols"> 158 <ul class="ns2-menu-col"> 159 <li style="--ns2-i: 0"><a class="ns2-menu-item" href="/teams/chatllm"><span class="ns2-menu-tile ns2-menu-tile--logo" aria-hidden="true"><img src="/static/h62176ad3/imgs/homepage4/chatllm_icon.webp" alt="" width="24" height="24" loading="lazy" decoding="async"></span><span class="ns2-menu-text"><b>ChatLLM</b><span>All-In-One AI Assistant</span></span></a></li><li style="--ns2-i: 1"><a class="ns2-menu-item" href="/teams/agent"><span class="ns2-menu-tile ns2-menu-tile--logo" aria-hidden="true"><img src="/static/h22675917/imgs/chatllm/deepagent_icon_menu.webp" alt="" width="24" height="24" loading="lazy" decoding="async"></span><span class="ns2-menu-text"><b>Abacus AI Agent</b><span>General-Purpose Agent</span></span></a></li><li style="--ns2-i: 2"><a class="ns2-menu-item" href="/teams/supercomputer"><span class="ns2-menu-tile ns2-menu-tile--logo" aria-hidden="true"><img src="/static/h2d6ddffc/imgs/deepagent/key_features/powerful_computer_icon.webp" alt="" width="24" height="24" loading="lazy" decoding="async"></span><span class="ns2-menu-text"><b>Abacus AI SuperComputer</b><span>Powerful AI Computer</span></span></a></li> 160 </ul><ul class="ns2-menu-col"> 161 <li style="--ns2-i: 0"><a class="ns2-menu-item" href="/gen_ai"><span class="ns2-menu-tile ns2-menu-tile--logo" aria-hidden="true"><img src="/static/h3cc5a9da/imgs/expsecond/iconEnterprise1.webp" alt="" width="24" height="24" loading="lazy" decoding="async"></span><span class="ns2-menu-text"><b>Abacus AI Enterprise</b><span>Enterprise-Class Agentic Platform</span></span></a></li><li style="--ns2-i: 1"><a class="ns2-menu-item" href="/teams/studio"><span class="ns2-menu-tile ns2-menu-tile--logo" aria-hidden="true"><img src="/static/h35f8bd1b/imgs/abacus_studio_icon.webp" alt="" width="24" height="24" loading="lazy" decoding="async"></span><span class="ns2-menu-text"><b>Abacus AI Studio</b><span>Multi-Media Studio</span></span></a></li><li style="--ns2-i: 2"><a class="ns2-menu-item" href="/teams/routellm-apis"><span class="ns2-menu-tile ns2-menu-tile--logo" aria-hidden="true"><img src="/static/hc0f6cddc/imgs/teams/routellm_icon.webp" alt="" width="24" height="24" loading="lazy" decoding="async"></span><span class="ns2-menu-text"><b>RouteLLM API</b><span>Cache-Aware API to 100s of AI Models</span></span></a></li> 162 </ul> 163</div></div> 164 </div> 165 <a class="ns2-nav-link" href="/gen_ai">Enterprise</a> 166 <div class="ns2-dd" data-ns2-dd> 167 <button type="button" class="ns2-nav-link" aria-expanded="false" aria-controls="ns2-research"> 168 Research 169 <svg viewBox="0 0 14 14" aria-hidden="true" focusable="false">
169<path d="M3.5 5.25L7 8.75L10.5 5.25" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg> 170 </button> 171 <div class="ns2-dd-panel" id="ns2-research"><div class="ns2-menu"> 172 <ul class="ns2-menu-col"> 173 <li style="--ns2-i: 0"><a class="ns2-menu-item" href="/research"><span class="ns2-menu-tile ns2-menu-tile--mask" aria-hidden="true"><i style="--ns2-mask: url('/static/h85cd89cf/imgs/homepage4/dropdown/icon_research.svg')"></i></span><span class="ns2-menu-text"><b>Research Areas</b><span>Explore our research initiatives</span></span></a></li><li style="--ns2-i: 1"><a class="ns2-menu-item" href="/publications"><span class="ns2-menu-tile ns2-menu-tile--mask" aria-hidden="true"><i style="--ns2-mask: url('/static/hc07ee98d/imgs/homepage4/dropdown/icon_publications.svg')"></i></span><span class="ns2-menu-text"><b>Publications</b><span>Read our latest papers</span></span></a></li> 174 </ul> 175</div></div> 176 </div> 177 <div class="ns2-dd" data-ns2-dd> 178 <button type="button" class="ns2-nav-link" aria-expanded="false" aria-controls="ns2-company"> 179 Company 180 <svg viewBox="0 0 14 14" aria-hidden="true" focusable="false"><path d="M3.5 5.25L7 8.75L10.5 5.25" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg> 181 </button> 182 <div class="ns2-dd-panel" id="ns2-company"><div class="ns2-menu"> 183 <ul class="ns2-menu-col"> 184 <li style="--ns2-i: 0"><a class="ns2-menu-item" href="/about"><span class="ns2-menu-tile ns2-menu-tile--mask" aria-hidden="true"><i style="--ns2-mask: url('/static/h2f9b2fb7/imgs/homepage4/dropdown/icon_about.svg')"></i></span><span class="ns2-menu-text"><b>About Us</b><span>Learn about our mission</span></span></a></li><li style="--ns2-i: 1"><a class="ns2-menu-item" href="/culture"><span class="ns2-menu-tile ns2-menu-tile--mask" aria-hidden="true"><i style="--ns2-mask: url('/static/h013bef39/imgs/homepage4/dropdown/icon_culture.svg')"></i></span><span class="ns2-menu-text"><b>Culture</b><span>Our values and team</span></span></a></li><li style="--ns2-i: 2"><a class="ns2-menu-item" href="/press"><span class="ns2-menu-tile ns2-menu-tile--mask" aria-hidden="true"><i style="--ns2-mask: url('/static/hc562110d/imgs/homepage4/dropdown/icon_press.svg')"></i></span><span class="ns2-menu-text"><b>Press</b><span>News and media coverage</span></span></a></li><li style="--ns2-i: 3"><a class="ns2-menu-item" href="/casestudies"><span class="ns2-menu-tile ns2-menu-tile--mask" aria-hidden="true"><i style="--ns2-mask: url('/static/h570084f3/imgs/homepage4/dropdown/icon_casestudies.svg')"></i></span><span class="ns2-menu-text"><b>Customers</b><span>Success stories from customers</span></span></a></li><li style="--ns2-i: 4"><a class="ns2-menu-item" href="/security"><span class="ns2-menu-tile ns2-menu-tile--mask" aria-hidden="true"><i style="--ns2-mask: url('/static/ha49a8cbc/imgs/homepage4/dropdown/icon_security.svg')"></i></span><span class="ns2-menu-text"><b>Security</b><span>Enterprise-grade security</span></span></a></li><li style="--ns2-i: 5"><a class="ns2-menu-item" href="/jobs"><span class="ns2-menu-tile ns2-menu-tile--mask" aria-hidden="true"><i style="--ns2-mask: url('/static/hb2711d2b/imgs/homepage4/dropdown/icon_jobs.svg')"></i></span><span class="ns2-menu-text"><b>Jobs</b><span>Join our team</span></span></a></li><li style="--ns2-i: 6"><a class="ns2-menu-item" href="https://blog.abacus.ai/"><span class="ns2-menu-tile ns2-menu-tile--mask" aria-hidden="true"><i style="--ns2-mask: url('/static/h1c250806/imgs/homepage4/dropdown/icon_blog.svg')"></i></span><span class="ns2-menu-text"><b>Blog</b><span>Latest news and updates</span></span></a></li> 185 </ul> 186</div></div> 187 </div> 188 </nav> 189 190 <div class="ns2-header-actions"> 191 192 193 194 <a class="ns2-nav-link" href="https://apps.abacus.ai/chatllm/" data-ns2-app-link="login">Log in</a> 195 <button type="button" class="ns2-theme-btn" data-ns2-theme-toggle aria-label="Switch to dark theme" data-ns2-label-dark="Switch to dark theme" data-ns2-label-light="Switch to light theme">
196 <svg class="ns2-theme-moon" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg> 197 <svg class="ns2-theme-sun" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></g></svg> 198 </button><a class="ns2-btn ns2-btn--pill" href="/app/signup?" data-ns2-cta data-ns2-params="{}">Get started</a> 199 200 </div> 201 </div> 202</header> 203 <main id="main" tabindex="-1"> 204 205<section class="v2-hero about-hero" aria-labelledby="about-title"> 206 <div class="v2-wrap"> 207 <p class="v2-label v2-hero__label">Company</p> 208 <div class="v2-hero__grid"> 209 <h1 class="v2-display v2-hero__title" id="about-title">About Us</h1> 210 <div class="v2-hero__side"> 211 <p class="v2-lead">Abacus.AI is the state-of-the-art SuperAssistant and agentic platform built to automate white-collar work. Over 3M professionals, small businesses, and enterprises, including dozens of the Fortune 500, run on Abacus.AI.</p> 212 </div> 213 </div> 214 </div> 215</section> 216 217<section class="v2-section v2-section--tight" aria-labelledby="about-products"> 218 <div class="v2-wrap"> 219 <div class="v2-head v2-head--rule"> 220 <div class="v2-head__bar"> 221 <h2 class="v2-label" id="about-products">Products</h2> 222 </div> 223</div> 224 <div class="v2-co-products" data-v2-reveal> 225 <a class="v2-card v2-co-product" href="/teams/chatllm"> 226 <h3 class="v2-h3">ChatLLM</h3> 227 <p class="v2-card__text">ChatLLM is the super assistant for professionals and small teams. 100+ AI models that run your personal agents, create full-stack and mobile apps, and power self-improving tasks that get better with every run.</p> 228 <span class="v2-more">Learn more<svg class="v2-icon " width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M5 12h14" /><path d="m12 5 7 7-7 7" /></svg></span> 229 </a> 230 <a class="v2-card v2-co-product" href="/generative-ai"> 231 <h3 class="v2-h3">Abacus.AI Enterprise</h3> 232 <p class="v2-card__text">Abacus.AI Enterprise puts that same power to work across your entire organization. It connects to your systems of record, builds an AI brain that learns your business, and deploys agents and AI workflows that automate mission-critical processes, with single sign-on, flexible deployment options, and enterprise-grade security and compliance built in. It is a force multiplier for every employee and a growth engine for the business.</p> 233 <span class="v2-more">Learn more<svg class="v2-icon " width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M5 12h14" /><path d="m12 5 7 7-7 7" /></svg></span> 234 </a> 235 </div> 236 </div> 237</section> 238 239<section class="v2-section v2-section--fill"> 240 <div class="v2-wrap v2-co-split"> 241 <p class="v2-h2 v2-co-split__title" data-v2-reveal="words">Our mission is simple: give every professional and every enterprise a super assistant that automates all their work.</p> 242 <p class="v2-co-split__body" data-v2-reveal="self"> 243 Headquartered in San Francisco, Abacus.AI is backed by world-class investors including <a class="v2-link" href="https://en.wikipedia.org/wiki/Mike_Volpi" target="_blank" rel="noopener">Mike Volpi</a> (Index Ventures), <a class="v2-link" href="https://en.wikipedia.org/wiki/Eric_Schmidt" target="_blank" rel="noopener">Eric Schmidt</a> (former CEO and Chairman of Google), <a class="v2-link" href="https://en.wikipedia.org/wiki/Ram_Shriram" target="_blank" rel="noopener">Ram Shriram</a> (Google board member), Coatue, Khosla Ventures, and Tiger Global. The company was founded by Google, Amazon, and Uber veterans Bindu Reddy and Arvind Sundararajan, and our team has shipped some of the most widely used products in tech, from Gmail and Google Docs to Amazon Personalize and Uber's autonomy stack. 244 </p> 245 </div> 246</section> 247
248<section class="v2-section" id="team" aria-labelledby="about-team"> 249 <div class="v2-wrap"> 250 <div class="v2-head"> 251 <h2 class="v2-h2 v2-head__title about-section-title" id="about-team">Team</h2> 252</div> 253 <div class="v2-people" data-v2-reveal> 254 <article class="v2-person about-team-card" aria-labelledby="team-1"> 255 <img class="v2-person__photo" src="/static/h396ca8d8/imgs/teamA9-new.webp" alt="Bindu Reddy" loading="lazy" decoding="async" > 256 <div class="v2-person__head"> 257 <h3 class="v2-h3" id="team-1">Bindu Reddy</h3> 258 <p class="v2-label">CEO & Co-Founder</p> 259 <ul class="v2-social"> 260 <li><a href="https://x.com/bindureddy" target="_blank" rel="noopener" aria-label="Bindu Reddy: X/Twitter"><svg class="v2-icon " width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M18 6 6 18" /><path d="m6 6 12 12" /></svg></a></li> 261 <li><a href="https://linkedin.com/in/bindureddy/" target="_blank" rel="noopener" aria-label="Bindu Reddy: LinkedIn"><svg class="v2-icon " width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 262</ul> 263 </div> 264 <div class="v2-person__bio"> 265 <p>Bindu Reddy is the CEO and Co-Founder of Abacus.AI. Before starting Abacus.AI, she was the General Manager for AI Verticals at AWS, AI. Her organization created and launched Amazon Personalize and Amazon Forecast, the first of their kind AI services that enable organizations to create custom deep-learning models easily. Prior to that, she was the CEO and co-founder of Post Intelligence, a deep-learning company that created services for social media influencers that was acquired by Uber. Bindu was previously at Google, where she was the Head of Product for Google Apps, including Docs, Spreadsheets, Slides, Sites and Blogger. Bindu has a Masters Degree from Dartmouth and B.Tech degree from Indian Institute of Technology, Mumbai.</p> 266 <p>Prior to AWS, Bindu founded and led Post Intelligence as CEO, a deep-learning company focused on AI-powered services for social media influencers. Under her leadership, the company developed innovative AI solutions that optimized content strategy and engagement, ultimately leading to its acquisition by Uber in 2017.</p> 267 <p>Her impact at Google was equally transformative. As Head of Product for Google Apps from 2005 to 2009, Bindu directed the product strategy and development of some of Google's most widely used productivity tools - Docs, Spreadsheets, Slides, Sites, and Blogger. She played a crucial role in shaping the future of cloud-based collaboration tools used by hundreds of millions globally.</p> 268 <p>Bindu has an M.S. from Dartmouth and a B.Tech from the Indian Institute of Technology, Bombay. She shares her views on Abacus AI and the future of AGI on X. You can read more at <a href='/bindureddy'>/bindureddy</a></p> 269 </div> 270 </article> 271 <article class="v2-person about-team-card" aria-labelledby="team-2"> 272 <img class="v2-person__photo" src="/static/h6b93efa0/imgs/teamA2-new.webp" alt="Arvind Sundararajan" loading="lazy" decoding="async" > 273 <div class="v2-person__head"> 274 <h3 class="v2-h3" id="team-2">Arvind Sundararajan</h3> 275 <p class="v2-label">CTO & Co-Founder</p> 276 <ul class="v2-social"> 277 <li><a href="https://x.com/arvinds" target="_blank" rel="noopener" aria-label="Arvind Sundararajan: X/Twitter"><svg class="v2-icon " width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M18 6 6 18" /><path d="m6 6 12 12" /></svg></a></li> 278 <li><a href="https://linkedin.com/in/arvindsundararajan/" target="_blank" rel="noopener" aria-label="Arvind Sundararajan: LinkedIn">
278<svg class="v2-icon " width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 279</ul> 280 </div> 281 <div class="v2-person__bio"> 282 <p>Arvind Sundararajan is the CTO and Co-Founder of Abacus.AI. Before starting Abacus.AI, he was a senior technical lead at Uber's autonomous vehicles division where he led the Autonomy Systems team, responsible for wide ranging software initiatives across the autonomy stack spanning onboard software, ML, and infrastructure. Previously, he was the CTO and co-founder of Post Intelligence. Before Post Intelligence, he was at Google, where he was the technical lead for AdSense's machine learning and serving system, and the technical lead for GMail's backend system (part of the initial launch team). Arvind was the recipient of two founders awards at Google and has a M.S. (CS) degree from Stanford and a B.Tech degree from Indian Institute of Technology, Mumbai.</p> 283 <p>Most recently, Arvind served as a Senior Technical Leader at Uber's Advanced Technologies Group, leading the Autonomy Systems team for Uber's autonomous vehicles division. Before Uber, Arvind co-founded and served as CTO of Post Intelligence alongside Bindu Reddy, building the company from inception through its acquisition by Uber in 2017.</p> 284 <p>At Post Intelligence, he architected the deep-learning infrastructure that powered AI-driven social media analytics and content optimization. Arvind's foundational technical expertise was honed at Google, where his accomplishments included two key roles: Technical Lead for AdSense's machine learning and serving system, one of Google's primary revenue engines, and Technical Lead for Gmail's backend system, where he was part of the initial launch team that brought Gmail to the world. His exceptional contributions earned him two prestigious Google Founders Awards, recognizing work that significantly advanced the company's mission.</p> 285 <p>Arvind has an M.S. in Computer Science from Stanford University and a B.Tech in Computer Science from the Indian Institute of Technology, Bombay.</p> 286 </div> 287 </article> 288 <article class="v2-person about-team-card" aria-labelledby="team-3"> 289 <img class="v2-person__photo" src="/static/h59758d66/imgs/teamA12-new.webp" alt="Patrick Nussbaumer" loading="lazy" decoding="async" width="990" height="990"> 290 <div class="v2-person__head"> 291 <h3 class="v2-h3" id="team-3">Patrick Nussbaumer</h3> 292 <p class="v2-label">VP of Sales</p> 293 <ul class="v2-social"> 294 <li><a href="https://linkedin.com/in/patrick-nussbaumer-092951/" target="_blank" rel="noopener" aria-label="Patrick Nussbaumer: LinkedIn"><svg class="v2-icon " width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 295</ul> 296 </div> 297 <div class="v2-person__bio"> 298 <p>Patrick Nussbaumer serves as Senior Vice President of Worldwide Sales at Abacus.AI, where he leads the company's global sales organization encompassing Business Development, Revenue Operations, Inside Sales, and Channel Sales. His leadership drives Abacus.AI's go-to-market strategy and customer success across diverse industries and geographies.</p> 299 <p>With over 20 years of proven experience spanning sales, marketing, and finance, Patrick has established himself as a strategic sales leader who excels at building high-performing teams and executing complex initiatives that accelerate business growth. He brings an AI-first approach to sales and has created the world's first "agentic sales strategy" that is at the forefront of AI-human collaboration.</p> 300 <p>Patrick previously held leadership roles in Domino Data Labs, Data Robots, and Alteryx. He holds a B.S. in Electrical Engineering from the University of Illinois at Urbana-Champaign and an MBA from the Paul Merage School of Business at UC Irvine.</p> 301 </div> 302 </article>
303 <article class="v2-person about-team-card" aria-labelledby="team-4"> 304 <img class="v2-person__photo" src="/static/hf48f65dc/imgs/teamA13-new.webp" alt="Ajit Deshpande" loading="lazy" decoding="async" width="990" height="990"> 305 <div class="v2-person__head"> 306 <h3 class="v2-h3" id="team-4">Ajit Deshpande</h3> 307 <p class="v2-label">CSO & VP of Infrastructure Engineering</p> 308 <ul class="v2-social"> 309 <li><a href="https://linkedin.com/in/ajit-deshpande-b30434/" target="_blank" rel="noopener" aria-label="Ajit Deshpande: LinkedIn"><svg class="v2-icon " width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 310</ul> 311 </div> 312 <div class="v2-person__bio"> 313 <p>Ajit Deshpande serves as Chief Security Officer (CSO) and Vice President of Infrastructure Engineering at Abacus.AI, where he holds comprehensive responsibility for the company's security posture, data protection frameworks, cloud infrastructure, and compliance programs. As the leader of Abacus.AI's Information Security Committee and the company's designated Data Protection Officer (DPO), Ajit ensures that enterprise customers can trust the platform with their most sensitive data and mission-critical AI workloads.</p> 314 <p>Before Abacus.AI, Ajit held senior technical leadership positions at prominent technology companies. At Bleacher Report (Turner Sports), he served as Director and Senior Director of Engineering, overseeing technology infrastructure and engineering teams. Prior to that, he spent over a decade at LexisNexis Risk Solutions in progressively senior rolesâDirector of Systems Engineering, Senior Director of Technology, and Enterprise Architectâwhere he architected large-scale data systems for risk analytics and identity solutions. His career also includes technical roles at Seisint (later acquired by LexisNexis) and Keane, Inc., building a strong foundation in software engineering and enterprise systems.</p> 315 <p>His leadership ensures that Abacus.AI customers, which include many Fortune 500 enterprises, can deploy AI systems with confidence in their security, privacy, and compliance. Ajit holds a B.Tech degree from the Indian Institute of Technology, Bombay, and an M.S. degree from the University of Cincinnati.</p> 316 </div> 317 </article> 318 <article class="v2-person about-team-card" aria-labelledby="team-5"> 319 <img class="v2-person__photo" src="/static/hb4a3fd52/imgs/teamA14-new.webp" alt="Thodoris Petropoulos" loading="lazy" decoding="async" width="990" height="990"> 320 <div class="v2-person__head"> 321 <h3 class="v2-h3" id="team-5">Thodoris Petropoulos</h3> 322 <p class="v2-label">VP of Forward Deployed Engineering</p> 323 <ul class="v2-social"> 324 <li><a href="https://linkedin.com/in/thodoris-petropoulos/" target="_blank" rel="noopener" aria-label="Thodoris Petropoulos: LinkedIn"><svg class="v2-icon " width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 325</ul> 326 </div> 327 <div class="v2-person__bio"> 328 <p>Thodoris (Theo) Petropoulos leads Data Science and Forward Deployed Engineering at Abacus.AI, serving as the critical bridge between cutting-edge AI research and real-world enterprise applications. In this customer-facing leadership role, Theo is responsible for making sure our customers (including many Fortune 500 companies) are successful at leveraging Abacus.AI products to make AI work for them to provide valuable business outcomes.</p> 329 <p>With a deep passion for democratizing AI and making it accessible to people of all backgrounds and technical skill levels, Theo has built his career on the belief that AI should empower everyoneâfrom citizen data scientists to seasoned ML practitioners. Before joining Abacus.AI, Theo was a data science leader at DataRobot.</p> 330 <p>Theo has a Ph.D in Big Data and Business Strategy from the Athens University of Economics and Business.</p> 331 </div> 332 </article> 333 </div> 334 </div> 335</section> 336
337<section class="v2-section" aria-labelledby="about-investors"> 338 <div class="v2-wrap"> 339 <div class="v2-head"> 340 <h2 class="v2-h2 v2-head__title about-section-title" id="about-investors">Key Investors</h2> 341</div> 342 <ul class="v2-cells v2-cells--4 v2-co-backers" data-v2-reveal> 343 <li class="v2-backer about-investor-card"> 344 <img class="v2-backer__photo" src="/static/h53e97bb5/imgs/teamA5.webp" alt="Ram Shriram" loading="lazy" decoding="async" width="48" height="48"> 345 <div> 346 <h3 class="v2-backer__name">Ram Shriram</h3> 347 <p class="v2-backer__title">Partner, Sherpalo Ventures and Board Member, Google<br>Board Member, Abacus.AI</p> 348 <ul class="v2-social"> 349 <li><a href="https://en.wikipedia.org/wiki/Ram_Shriram" target="_blank" rel="noopener" aria-label="Ram Shriram: Wikipedia"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12.09 13.119c-.936 1.932-2.217 4.548-2.853 5.728-.616 1.074-1.127.931-1.532.029-1.406-3.321-4.293-9.144-5.651-12.409-.251-.601-.441-.987-.619-1.139-.181-.15-.554-.24-1.122-.271C.103 5.033 0 4.982 0 4.898v-.455l.052-.045c.924-.005 5.401 0 5.401 0l.051.045v.434c0 .119-.075.176-.225.176l-.564.031c-.485.029-.727.164-.727.436 0 .135.053.33.166.601 1.082 2.646 4.818 10.521 4.818 10.521l.136.046 2.411-4.81-.482-1.067-1.658-3.264s-.318-.654-.428-.872c-.728-1.443-.712-1.518-1.447-1.617-.207-.023-.313-.05-.313-.149v-.468l.06-.045h4.292l.113.037v.451c0 .105-.076.15-.227.15l-.308.047c-.792.061-.661.381-.136 1.422l1.582 3.252 1.758-3.504c.293-.64.233-.801.111-.947-.07-.084-.305-.22-.812-.24l-.201-.021c-.052 0-.098-.015-.145-.051-.045-.031-.067-.076-.067-.129v-.427l.061-.045c1.247-.008 4.043 0 4.043 0l.059.045v.436c0 .121-.059.178-.193.178-.646.03-.782.095-1.023.439-.12.186-.375.589-.646 1.039l-2.301 4.273-.065.135 2.792 5.712.17.048 4.396-10.438c.154-.422.129-.722-.064-.895-.197-.172-.346-.273-.857-.295l-.42-.016c-.061 0-.105-.014-.152-.045-.043-.029-.072-.075-.072-.119v-.436l.059-.045h4.961l.041.045v.437c0 .119-.074.18-.209.18-.648.03-1.127.18-1.443.421-.314.255-.557.616-.736 1.067 0 0-4.043 9.258-5.426 12.339-.525 1.007-1.053.917-1.503-.031-.571-1.171-1.773-3.786-2.646-5.71l.053-.036z"/></svg></a></li> 350</ul> 351 </div> 352 </li> 353 <li class="v2-backer about-investor-card"> 354 <img class="v2-backer__photo" src="/static/h6fd69b88/imgs/teamA4.webp" alt="Eric Schmidt" loading="lazy" decoding="async" width="48" height="48"> 355 <div> 356 <h3 class="v2-backer__name">Eric Schmidt</h3> 357 <p class="v2-backer__title">ex-CEO and Chairman, Google</p> 358 <ul class="v2-social"> 359 <li><a href="https://en.wikipedia.org/wiki/Eric_Schmidt" target="_blank" rel="noopener" aria-label="Eric Schmidt: Wikipedia"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12.09 13.119c-.936 1.932-2.217 4.548-2.853 5.728-.616 1.074-1.127.931-1.532.029-1.406-3.321-4.293-9.144-5.651-12.409-.251-.601-.441-.987-.619-1.139-.181-.15-.554-.24-1.122-.271C.103 5.033 0 4.982 0 4.898v-.455l.052-.045c.924-.005 5.401 0 5.401 0l.051.045v.434c0 .119-.075.176-.225.176l-.564.031c-.485.029-.727.164-.727.436 0 .135.053.33.166.601 1.082 2.646 4.818 10.521 4.818 10.521l.136.046 2.411-4.81-.482-1.067-1.658-3.264s-.318-.654-.428-.872c-.728-1.443-.712-1.518-1.447-1.617-.207-.023-.313-.05-.313-.149v-.468l.06-.045h4.292l.113.037v.451c0 .105-.076.15-.227.15l-.308.047c-.792.061-.661.381-.136 1.422l1.582 3.252 1.758-3.504c.293-.64.233-.801.111-.947-.07-.084-.305-.22-.812-.24l-.201-.021c-.052 0-.098-.015-.145-.051-.045-.031-.067-.076-.067-.129v-.427l.061-.045c1.247-.008 4.043 0 4.043 0l.059.045v.436c0 .121-.059.178-.193.178-.646.03-.782.095-1.023.439-.12.186-.375.589-.646 1.039l-2.301 4.273-.065.135 2.792 5.712.17.048 4.396-10.438c.154-.422.129-.722-.064-.895-.197-.172-.346-.273-.857-.295l-.42-.016c-.061 0-.105-.014-.152-.045-.043-.029-.072-.075-.072-.119v-.436l.059-.045h4.961l.041.045v.437c0 .119-.074.18-.209.18-.648.03-1.127.18-1.443.421-.314.255-.557.616-.736 1.067 0 0-4.043 9.258-5.426 12.339-.525 1.00
3597-1.053.917-1.503-.031-.571-1.171-1.773-3.786-2.646-5.71l.053-.036z"/></svg></a></li> 360 <li><a href="https://x.com/ericschmidt" target="_blank" rel="noopener" aria-label="Eric Schmidt: X/Twitter"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M18 6 6 18" /><path d="m6 6 12 12" /></svg></a></li> 361</ul> 362 </div> 363 </li> 364 <li class="v2-backer about-investor-card"> 365 <img class="v2-backer__photo" src="/static/habef2b05/imgs/teamS1.webp" alt="Mike Volpi" loading="lazy" decoding="async" width="48" height="48"> 366 <div> 367 <h3 class="v2-backer__name">Mike Volpi</h3> 368 <p class="v2-backer__title">Partner, Index Ventures<br>Board Member, Abacus.AI</p> 369 <ul class="v2-social"> 370 <li><a href="https://en.wikipedia.org/wiki/Mike_Volpi" target="_blank" rel="noopener" aria-label="Mike Volpi: Wikipedia"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12.09 13.119c-.936 1.932-2.217 4.548-2.853 5.728-.616 1.074-1.127.931-1.532.029-1.406-3.321-4.293-9.144-5.651-12.409-.251-.601-.441-.987-.619-1.139-.181-.15-.554-.24-1.122-.271C.103 5.033 0 4.982 0 4.898v-.455l.052-.045c.924-.005 5.401 0 5.401 0l.051.045v.434c0 .119-.075.176-.225.176l-.564.031c-.485.029-.727.164-.727.436 0 .135.053.33.166.601 1.082 2.646 4.818 10.521 4.818 10.521l.136.046 2.411-4.81-.482-1.067-1.658-3.264s-.318-.654-.428-.872c-.728-1.443-.712-1.518-1.447-1.617-.207-.023-.313-.05-.313-.149v-.468l.06-.045h4.292l.113.037v.451c0 .105-.076.15-.227.15l-.308.047c-.792.061-.661.381-.136 1.422l1.582 3.252 1.758-3.504c.293-.64.233-.801.111-.947-.07-.084-.305-.22-.812-.24l-.201-.021c-.052 0-.098-.015-.145-.051-.045-.031-.067-.076-.067-.129v-.427l.061-.045c1.247-.008 4.043 0 4.043 0l.059.045v.436c0 .121-.059.178-.193.178-.646.03-.782.095-1.023.439-.12.186-.375.589-.646 1.039l-2.301 4.273-.065.135 2.792 5.712.17.048 4.396-10.438c.154-.422.129-.722-.064-.895-.197-.172-.346-.273-.857-.295l-.42-.016c-.061 0-.105-.014-.152-.045-.043-.029-.072-.075-.072-.119v-.436l.059-.045h4.961l.041.045v.437c0 .119-.074.18-.209.18-.648.03-1.127.18-1.443.421-.314.255-.557.616-.736 1.067 0 0-4.043 9.258-5.426 12.339-.525 1.007-1.053.917-1.503-.031-.571-1.171-1.773-3.786-2.646-5.71l.053-.036z"/></svg></a></li> 371 <li><a href="https://x.com/mavolpi" target="_blank" rel="noopener" aria-label="Mike Volpi: X/Twitter"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M18 6 6 18" /><path d="m6 6 12 12" /></svg></a></li> 372</ul> 373 </div> 374 </li> 375 <li class="v2-backer about-investor-card"> 376 <img class="v2-backer__photo" src="/static/h9ed8414c/imgs/teamA7.webp" alt="Martin Chavez" loading="lazy" decoding="async" width="48" height="48"> 377 <div> 378 <h3 class="v2-backer__name">Martin Chavez</h3> 379 <p class="v2-backer__title">Partner, Sixth Street<br>Former CFO & CIO, Goldman Sachs<br>Board Member, Abacus.AI</p> 380 <ul class="v2-social"> 381 <li><a href="https://en.wikipedia.org/wiki/R._Martin_Chavez" target="_blank" rel="noopener" aria-label="Martin Chavez: Wikipedia"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12.09 13.119c-.936 1.932-2.217 4.548-2.853 5.728-.616 1.074-1.127.931-1.532.029-1.406-3.321-4.293-9.144-5.651-12.409-.251-.601-.441-.987-.619-1.139-.181-.15-.554-.24-1.122-.271C.103 5.033 0 4.982 0 4.898v-.455l.052-.045c.924-.005 5.401 0 5.401 0l.051.045v.434c0 .119-.075.176-.225.176l-.564.031c-.485.029-.727.164-.727.436 0 .135.053.33.166.601 1.082 2.646 4.818 10.521 4.818 10.521l.136.046 2.411-4.81-.482-1.067-1.658-3.264s-.318-.654-.428-.872c-.728-1.443-.712-1.518-1.447-1.617-.207-.023-.313-.05-.313-.149v-.468l.06-.045h4.292l.113.037v.451c0 .105-.076.15-.227.15l-.308.047c-.792.061-.661.381-.136 1.422l1.582 3.252 1.758-3.504c.293-.64.233-.801.111-.947-.07-.084-.305-.22-.812-.24l-.201-.021c-.052 0-.098-.015-.145-.051-.045-.031-.067-.076-.067-.129v-.427l.061-.045c1.247-.008 4.043 0 4.043 0l.059.045v.436c0 .121-.059.178-.193.178-.646.03-.782.095-1.023.439-.12.186-.375.589-.646 1.039l-2.301 4.273-.065.135 2.792 5.712.17.048 4.396-10.438c.154-.422.129-.722-.064-.895-.197-.172-.346-.273-.857-.295l-.42-.016c-.061 0-.105-.014-.152-.045-.043-.029-.072-.075-.072-.119v-.436l.059-.045h4.961l.041.045v.437c0 .119-.074.18-.209.18-.648.03-1.127.18-1.443.421-.314.255-.557.616-.736 1.067 0 0-4.043 9.258-5.426 12.339-.525 1.00
3817-1.053.917-1.503-.031-.571-1.171-1.773-3.786-2.646-5.71l.053-.036z"/></svg></a></li> 382</ul> 383 </div> 384 </li> 385 <li class="v2-backer about-investor-card"> 386 <img class="v2-backer__photo" src="/static/hbdd98a0b/imgs/teamA11B.webp" alt="Caryn Marooney" loading="lazy" decoding="async" width="48" height="48"> 387 <div> 388 <h3 class="v2-backer__name">Caryn Marooney</h3> 389 <p class="v2-backer__title">General Partner, Coatue<br>Board Member, Abacus.AI</p> 390 <ul class="v2-social"> 391 <li><a href="https://linkedin.com/in/caryn-marooney/" target="_blank" rel="noopener" aria-label="Caryn Marooney: LinkedIn"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 392</ul> 393 </div> 394 </li> 395 <li class="v2-backer about-investor-card"> 396 <img class="v2-backer__photo" src="/static/h50563656/imgs/teamA10.webp" alt="Tiger Global" loading="lazy" decoding="async" width="48" height="48"> 397 <div> 398 <h3 class="v2-backer__name">Tiger Global</h3> 399 <ul class="v2-social"> 400 <li><a href="https://www.tigerglobal.com" target="_blank" rel="noopener" aria-label="Tiger Global: Website"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="10" /><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" /><path d="M2 12h20" /></svg></a></li> 401</ul> 402 </div> 403 </li> 404 <li class="v2-backer about-investor-card"> 405 <img class="v2-backer__photo" src="/static/h38ca72b9/imgs/teamA6.webp" alt="Khosla Ventures" loading="lazy" decoding="async" width="48" height="48"> 406 <div> 407 <h3 class="v2-backer__name">Khosla Ventures</h3> 408 <ul class="v2-social"> 409 <li><a href="https://www.khoslaventures.com" target="_blank" rel="noopener" aria-label="Khosla Ventures: Website"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="10" /><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" /><path d="M2 12h20" /></svg></a></li> 410</ul> 411 </div> 412 </li> 413 <li class="v2-backer about-investor-card"> 414 <img class="v2-backer__photo" src="/static/h6faba06a/imgs/teamT2.webp" alt="Paul Buchheit" loading="lazy" decoding="async" width="48" height="48"> 415 <div> 416 <h3 class="v2-backer__name">Paul Buchheit</h3> 417 <ul class="v2-social"> 418 <li><a href="https://en.wikipedia.org/wiki/Paul_Buchheit" target="_blank" rel="noopener" aria-label="Paul Buchheit: Wikipedia"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12.09 13.119c-.936 1.932-2.217 4.548-2.853 5.728-.616 1.074-1.127.931-1.532.029-1.406-3.321-4.293-9.144-5.651-12.409-.251-.601-.441-.987-.619-1.139-.181-.15-.554-.24-1.122-.271C.103 5.033 0 4.982 0 4.898v-.455l.052-.045c.924-.005 5.401 0 5.401 0l.051.045v.434c0 .119-.075.176-.225.176l-.564.031c-.485.029-.727.164-.727.436 0 .135.053.33.166.601 1.082 2.646 4.818 10.521 4.818 10.521l.136.046 2.411-4.81-.482-1.067-1.658-3.264s-.318-.654-.428-.872c-.728-1.443-.712-1.518-1.447-1.617-.207-.023-.313-.05-.313-.149v-.468l.06-.045h4.292l.113.037v.451c0 .105-.076.15-.227.15l-.308.047c-.792.061-.661.381-.136 1.422l1.582 3.252 1.758-3.504c.293-.64.233-.801.111-.947-.07-.084-.305-.22-.812-.24l-.201-.021c-.052 0-.098-.015-.145-.051-.045-.031-.067-.076-.067-.129v-.427l.061-.045c1.247-.008 4.043 0 4.043 0l.059.045v.436c0 .121-.059.178-.193.178-.646.03-.782.095-1.023.439-.12.186-.375.589-.646 1.039l-2.301 4.273-.065.135 2.792 5.712.17.048 4.396-10.438c.154-.422.129-.722-.064-.895-.197-.172-.346-.273-.857-.295l-.42-.016c-.061 0-.105-.014-.152-.045-.043-.029-.072-.075-.072-.119v-.436l.059-.045h4.961l.041.045v.437c0 .119-.074.18-.209.18-.648.03-1.127.18-1.443.421-.314.255-.557.616-.736 1.067 0 0-4.043 9.258-5.426 12.339-.525 1.00
4187-1.053.917-1.503-.031-.571-1.171-1.773-3.786-2.646-5.71l.053-.036z"/></svg></a></li> 419</ul> 420 </div> 421 </li> 422 <li class="v2-backer about-investor-card"> 423 <img class="v2-backer__photo" src="/static/h29632792/imgs/teamT3.webp" alt="Jerry Yang" loading="lazy" decoding="async" width="48" height="48"> 424 <div> 425 <h3 class="v2-backer__name">Jerry Yang</h3> 426 <ul class="v2-social"> 427 <li><a href="https://en.wikipedia.org/wiki/Jerry_Yang" target="_blank" rel="noopener" aria-label="Jerry Yang: Wikipedia"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12.09 13.119c-.936 1.932-2.217 4.548-2.853 5.728-.616 1.074-1.127.931-1.532.029-1.406-3.321-4.293-9.144-5.651-12.409-.251-.601-.441-.987-.619-1.139-.181-.15-.554-.24-1.122-.271C.103 5.033 0 4.982 0 4.898v-.455l.052-.045c.924-.005 5.401 0 5.401 0l.051.045v.434c0 .119-.075.176-.225.176l-.564.031c-.485.029-.727.164-.727.436 0 .135.053.33.166.601 1.082 2.646 4.818 10.521 4.818 10.521l.136.046 2.411-4.81-.482-1.067-1.658-3.264s-.318-.654-.428-.872c-.728-1.443-.712-1.518-1.447-1.617-.207-.023-.313-.05-.313-.149v-.468l.06-.045h4.292l.113.037v.451c0 .105-.076.15-.227.15l-.308.047c-.792.061-.661.381-.136 1.422l1.582 3.252 1.758-3.504c.293-.64.233-.801.111-.947-.07-.084-.305-.22-.812-.24l-.201-.021c-.052 0-.098-.015-.145-.051-.045-.031-.067-.076-.067-.129v-.427l.061-.045c1.247-.008 4.043 0 4.043 0l.059.045v.436c0 .121-.059.178-.193.178-.646.03-.782.095-1.023.439-.12.186-.375.589-.646 1.039l-2.301 4.273-.065.135 2.792 5.712.17.048 4.396-10.438c.154-.422.129-.722-.064-.895-.197-.172-.346-.273-.857-.295l-.42-.016c-.061 0-.105-.014-.152-.045-.043-.029-.072-.075-.072-.119v-.436l.059-.045h4.961l.041.045v.437c0 .119-.074.18-.209.18-.648.03-1.127.18-1.443.421-.314.255-.557.616-.736 1.067 0 0-4.043 9.258-5.426 12.339-.525 1.007-1.053.917-1.503-.031-.571-1.171-1.773-3.786-2.646-5.71l.053-.036z"/></svg></a></li> 428</ul> 429 </div> 430 </li> 431 <li class="v2-backer about-investor-card"> 432 <img class="v2-backer__photo" src="/static/ha4b00a75/imgs/teamT4.webp" alt="Decibel Ventures" loading="lazy" decoding="async" width="48" height="48"> 433 <div> 434 <h3 class="v2-backer__name">Decibel Ventures</h3> 435 <ul class="v2-social"> 436 <li><a href="https://www.decibel.vc" target="_blank" rel="noopener" aria-label="Decibel Ventures: Website"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="10" /><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" /><path d="M2 12h20" /></svg></a></li> 437</ul> 438 </div> 439 </li> 440 <li class="v2-backer about-investor-card"> 441 <img class="v2-backer__photo" src="/static/h404f4f32/imgs/teamR22.webp" alt="Avichal Garg" loading="lazy" decoding="async" width="48" height="48"> 442 <div> 443 <h3 class="v2-backer__name">Avichal Garg</h3> 444 <ul class="v2-social"> 445 <li><a href="https://linkedin.com/in/avichalgarg/" target="_blank" rel="noopener" aria-label="Avichal Garg: LinkedIn"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 446</ul> 447 </div> 448 </li> 449 <li class="v2-backer about-investor-card"> 450 <img class="v2-backer__photo" src="/static/heabb4441/imgs/teamT9.webp" alt="Chet Kapoor" loading="lazy" decoding="async" width="48" height="48"> 451 <div> 452 <h3 class="v2-backer__name">Chet Kapoor</h3> 453 <ul class="v2-social"> 454 <li><a href="https://linkedin.com/in/chetkapoor/" target="_blank" rel="noopener" aria-label="Chet Kapoor: LinkedIn"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
454<path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 455</ul> 456 </div> 457 </li> 458 <li class="v2-backer about-investor-card"> 459 <img class="v2-backer__photo" src="/static/h5703d314/imgs/teamR21.webp" alt="Deepchand Nishar" loading="lazy" decoding="async" width="48" height="48"> 460 <div> 461 <h3 class="v2-backer__name">Deepchand Nishar</h3> 462 <ul class="v2-social"> 463 <li><a href="https://linkedin.com/in/deepnishar/" target="_blank" rel="noopener" aria-label="Deepchand Nishar: LinkedIn"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 464</ul> 465 </div> 466 </li> 467 <li class="v2-backer about-investor-card"> 468 <img class="v2-backer__photo" src="/static/h4a7473c6/imgs/teamR32.webp" alt="Don Burnette" loading="lazy" decoding="async" width="48" height="48"> 469 <div> 470 <h3 class="v2-backer__name">Don Burnette</h3> 471 <ul class="v2-social"> 472 <li><a href="https://linkedin.com/in/don-burnette/" target="_blank" rel="noopener" aria-label="Don Burnette: LinkedIn"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 473</ul> 474 </div> 475 </li> 476 <li class="v2-backer about-investor-card"> 477 <img class="v2-backer__photo" src="/static/hc4bef67a/imgs/teamR23.webp" alt="Elad Gil" loading="lazy" decoding="async" width="48" height="48"> 478 <div> 479 <h3 class="v2-backer__name">Elad Gil</h3> 480 <ul class="v2-social"> 481 <li><a href="https://linkedin.com/in/eladgil/" target="_blank" rel="noopener" aria-label="Elad Gil: LinkedIn"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 482</ul> 483 </div> 484 </li> 485 <li class="v2-backer about-investor-card"> 486 <img class="v2-backer__photo" src="/static/h4c6e7320/img
486s/teamT6.webp" alt="Erica Schultz" loading="lazy" decoding="async" width="48" height="48"> 487 <div> 488 <h3 class="v2-backer__name">Erica Schultz</h3> 489 <ul class="v2-social"> 490 <li><a href="https://linkedin.com/in/erica-ruliffson-schultz-45ab631/" target="_blank" rel="noopener" aria-label="Erica Schultz: LinkedIn"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 491</ul> 492 </div> 493 </li> 494 <li class="v2-backer about-investor-card"> 495 <img class="v2-backer__photo" src="/static/h4173ac5d/imgs/teamT7.webp" alt="Jeannette zu Fürstenberg" loading="lazy" decoding="async" width="48" height="48"> 496 <div> 497 <h3 class="v2-backer__name">Jeannette zu Fürstenberg</h3> 498 <ul class="v2-social"> 499 <li><a href="https://linkedin.com/in/jeannette-zu-f%C3%BCrstenberg-a4227a17a/" target="_blank" rel="noopener" aria-label="Jeannette zu Fürstenberg: LinkedIn"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 500</ul> 501 </div> 502 </li> 503 <li class="v2-backer about-investor-card"> 504 <img class="v2-backer__photo" src="/static/h1e2c4a4b/imgs/teamR31.webp" alt="Keval Desai" loading="lazy" decoding="async" width="48" height="48"> 505 <div> 506 <h3 class="v2-backer__name">Keval Desai</h3> 507 <ul class="v2-social"> 508 <li><a href="https://linkedin.com/in/kevaldesai/" target="_blank" rel="noopener" aria-label="Keval Desai: LinkedIn"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 509</ul> 510 </div> 511 </li> 512 <li class="v2-backer about-investor-card"> 513 <img class="v2-backer__photo" src="/static/h40fe494e/imgs/teamT5.webp" alt="Mariam Naficy" loading="lazy" decoding="async" width="48" height="48"> 514 <div> 515 <h3 class="v2-backer__name">Mariam Naficy</h3> 516 <ul class="v2-social"> 517 <li><a href="https://linkedin.com/in/mariam-naficy-23290/" target="_blank" rel="noopener" aria-label="Mariam Naficy: LinkedIn"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 518</ul> 519 </div> 520 </li> 521 <li class="v2-backer about-investor-card"> 522 <img class="v2-backer__photo" src="/static/h12eb7833/imgs/teamT8.webp" alt="Neha Narkhede" loading="lazy" decoding="async" width="48" height="48"> 523 <div> 524 <h3 class="v2-backer__name">Neha Narkhede</h3> 525 <ul class="v2-social"> 526 <li><a href="https://linkedin.com/in/nehanarkhede/" target="_blank" rel="noopener" aria-label="Neha Narkhede: LinkedIn"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 527</ul> 528 </div> 529 </li>
530 <li class="v2-backer about-investor-card"> 531 <img class="v2-backer__photo" src="/static/ha143ff4a/imgs/teamR33.webp" alt="Prasanna Srikhanta" loading="lazy" decoding="async" width="48" height="48"> 532 <div> 533 <h3 class="v2-backer__name">Prasanna Srikhanta</h3> 534 <ul class="v2-social"> 535 <li><a href="https://x.com/prasanna" target="_blank" rel="noopener" aria-label="Prasanna Srikhanta: X/Twitter"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M18 6 6 18" /><path d="m6 6 12 12" /></svg></a></li> 536</ul> 537 </div> 538 </li> 539 <li class="v2-backer about-investor-card"> 540 <img class="v2-backer__photo" src="/static/h331e45b5/imgs/teamT10.webp" alt="Xuezhao Lan" loading="lazy" decoding="async" width="48" height="48"> 541 <div> 542 <h3 class="v2-backer__name">Xuezhao Lan</h3> 543 <ul class="v2-social"> 544 <li><a href="https://linkedin.com/in/xuezhao-lan-50aa1a1/" target="_blank" rel="noopener" aria-label="Xuezhao Lan: LinkedIn"><svg class="v2-icon " width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></a></li> 545</ul> 546 </div> 547 </li> 548 </ul> 549 </div> 550</section> 551 552<section class="v2-section v2-section--fill" aria-labelledby="featured-title"> 553 <div class="v2-wrap"> 554 <div class="v2-head v2-head--center"> 555 <div class="v2-head__bar"><h2 class="v2-label" id="featured-title">Featured on</h2></div> 556 </div><ul class="v2-cells v2-cells--4 v2-logos"><li><img src="/static/hecc63f6d/imgs/homepage4/logo_yahoo.webp" alt="Yahoo!" loading="lazy" width="348" height="96"></li><li><img class="is-tall" src="/static/h68e02bb0/imgs/homepage4/logo_nbc.webp" alt="NBC" loading="lazy" width="148" height="144"></li><li><img src="/static/h9710c8b7/imgs/homepage4/logo_techcrunch.webp" alt="TechCrunch" loading="lazy" width="656" height="96"></li><li>
556<img class="is-tall" src="/static/he144cc11/imgs/homepage4/logo_zdnet.webp" alt="ZDNet" loading="lazy" width="54" height="36"></li><li><img src="/static/h8f41cc92/imgs/homepage4/logo_tnw.webp" alt="TNW" loading="lazy" width="336" height="80"></li><li><img src="/static/h2655129d/imgs/homepage4/logo_venturebeat.webp" alt="VentureBeat" loading="lazy" width="624" height="80"></li><li><img src="/static/h6fcb6afb/imgs/homepage4/logo_silicon.webp" alt="SeekingAlpha" loading="lazy" width="548" height="120"></li><li><img src="/static/h712acf60/imgs/homepage4/logo_knowtechie.webp" alt="KnowTechie" loading="lazy" width="488" height="80"></li> 557</ul> 558 <ul class="v2-badges"> 559 <li><a href="/press"><img src="/static/h07883e4a/imgs/eweekbadge_2025.webp" alt="eWeek 100 Best AI Companies 2025" loading="lazy" width="689" height="1044"></a></li> 560 <li><a href="/press"><img src="/static/h1c6ccfd5/imgs/cbinsightbadge.webp" alt="CB Insights AI 100" loading="lazy" width="348" height="532"></a></li> 561 <li><a href="/press"><img src="/static/hac7ca0ee/imgs/gatbadge.webp" alt="Gartner Cool Vendor 2021" loading="lazy" width="350" height="532"></a></li> 562 <li><a href="https://www.forbes.com/lists/americas-best-startup-employers/" target="_blank" rel="noopener"><img src="/static/h32e179a2/imgs/forbes-badge.webp" alt="Forbes America's Best Startup Employers 2024" loading="lazy" width="154" height="259"></a></li> 563 </ul> 564 </div> 565</section> 566<section class="v2-band" aria-labelledby="about-cta"> 567 <div class="v2-wrap v2-band__inner"> 568 <h2 class="v2-h1 v2-band__title" id="about-cta">Put the world's best super assistant to work today</h2> 569 <div class="v2-choices"> 570 <div class="v2-choice"><p class="v2-label">ChatLLM</p><a class="v2-btn v2-btn--primary v2-btn--lg" href="https://apps.abacus.ai/chatllm/?isSignUp=1">Sign Up<svg class="v2-icon " width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M5 12h14" /><path d="m12 5 7 7-7 7" /></svg></a></div> 571 </div> 572 </div> 573</section> 574 575 </main><div class="ns2"><footer class="ns2-footer"> 576 <div class="ns2-container ns2-footer-inner"> 577 <div class="ns2-footer-brand"> 578 <a href="/"><img src="/static/h60348627/imgs/logo_text80.webp" alt="Abacus.AI" width="176" height="24"></a> 579 <p>The AI super assistant for professionals and enterprises</p><ul class="ns2-social" aria-label="Abacus.AI on social media"> 580 <li><a href="https://x.com/abacusai" target="_blank" rel="noopener" aria-label="X/Twitter"><img src="/static/h4b38de75/imgs/xtwitter1.webp" alt="" width="18" height="18" loading="lazy"></a></li> 581 <li><a href="https://www.linkedin.com/company/abacusai" target="_blank" rel="noopener" aria-label="LinkedIn"><img src="/static/h4c144b97/imgs/linkedin_logo.webp" alt="" width="18" height="18" loading="lazy"></a></li> 582 <li><a href="https://www.facebook.com/share/1ENnhS8rT6/" target="_blank" rel="noopener" aria-label="Facebook"><img src="/static/h424a85fa/imgs/facebook_white.webp" alt="" width="18" height="18" loading="lazy"></a></li> 583 <li><a href="https://www.instagram.com/abacus.ai?igsh=MzBmNHBveXNoMmwz" target="_blank" rel="noopener" aria-label="Instagram"><img src="/static/h5e4e50f0/imgs/instagram_white.webp" alt="" width="18" height="18" loading="lazy"></a></li> 584 <li><a href="https://youtube.com/@abacusai5193?si=lEmZ4ilp6u3mDxCV" target="_blank" rel="noopener" aria-label="YouTube"><img src="/static/h03844bcc/imgs/youtube_white.webp" alt="" width="18" height="18" loading="lazy"></a></li> 585 </ul> 586 <p class="ns2-footer-copy">© 2026 Abacus.AI. All Rights Reserved</p> 587 </div> 588 <nav class="ns2-footer-cols" aria-label="Footer"> 589 <div><p class="ns2-footer-h">Products</p> 590 <a href="/teams/chatllm">ChatLLM</a><a href="/teams/agent">Abacus AI Agent</a> 591 <a href="/teams/supercomputer">SuperComputer</a><a href="/teams/studio">Studio</a></div> 592 <div><p class="ns2-footer-h">Company</p> 593 <a href="/about">About</a><a href="/casestudies">Customers</a> 594 <a href="/press">Press</a><a href="/jobs">Jobs</a></div> 595 <div><p class="ns2-footer-h">Legal</p> 596 <a href="/terms">Terms</a><a href="/privacy">Privacy</a> 597 <a href="/security">Security</a></div> 598 </nav> 599 </div> 600</footer></div>
601 <div class="v2-consent" id="v2-consent" role="region" aria-label="privacy settings" hidden> 602 <p>We use cookies for login and stats. Learn more in our <a href="/privacy-policy">privacy settings</a>.</p> 603 <div class="v2-consent__actions"> 604 <button type="button" class="v2-btn v2-btn--secondary v2-btn--sm" data-consent="deny">Deny</button> 605 <button type="button" class="v2-btn v2-btn--primary v2-btn--sm" data-consent="accept">Accept</button> 606 </div> 607</div> 608 609
610<script> 611(function () { 612 var page = (window.location.pathname.replace(/\/+$/, '').split('/').pop() || 'home') 613 .toLowerCase().replace(/[^a-z0-9_-]/g, '').slice(0, 32) || 'home'; 614 function tagSignupLink(ev) { 615 var link = ev.target && ev.target.closest ? ev.target.closest('a[href]') : null; 616 if (!link || link.href.indexOf('isSignUp=1') === -1 || /[?&]src=/.test(link.href)) { 617 return; 618 } 619 var placement = link.closest('header, nav') ? 'header' : 'body'; 620 link.href += '&src=' + page + '-' + placement; 621 } 622 document.addEventListener('click', tagSignupLink, true); 623 document.addEventListener('auxclick', tagSignupLink, true); 624})(); 625</script>
625 626
626<script> 627(function () { 628 // The shared pricing modal builds its CTA for the React sign-in page; on treatment pages that CTA goes to the site's 629 // own /app/signup instead (treatment-styled sign-up page; same query, token as signupToken). Absolute on the product 630 // subdomains (chatllm.abacus.ai and the others serve the product page for EVERY path, /app/signup included, so a 631 // relative link there just reloads the landing page): abacus_homepage_url is the main site's origin on those hosts 632 // and empty on the main host, the same prefix ns2Cta uses. 633 var ns2Main = ""; 634 function toNs2Signup(url) { 635 return url.replace(/^https?:\/\/[^/?#]+\/chatllm\/?\?isSignUp=1&?/, ns2Main + '/app/signup?').replace(/([?&])token=/, '$1signupToken='); 636 } 637 // Attribution (users.signup_source). Treatment pages tag their CTAs explicitly (data-ns2-params.src); pages that only 638 // carry the treatment header have no page src, so they get one from the path like the control site's _signup_src.html 639 // (which only tags isSignUp=1 links and so no longer sees these). The app's sign-in page reads ?src= too, so the 640 // header's Log in link and the modal's model-logo links, which lead into the app, are tagged as well: two thirds of 641 // the treatment's sign-ups were arriving through paths like these with no tag at all. 642 var pageSlug = (window.location.pathname.replace(/\/+$/, '').split('/').pop() || 'home').toLowerCase().replace(/[^a-z0-9_-]/g, '').slice(0, 32) || 'home'; 643 function withSrc(url, placement) { 644 if (/[?&]src=/.test(url)) { return url; } 645 var base = url.replace(/[?&]$/, ''); 646 return base + (base.indexOf('?') === -1 ? '?' : '&') + 'src=' + pageSlug + '_ns2_' + placement; 647 } 648 // Effective theme (v6 dark mode): the stored choice on <html data-ns2-theme>, else the system setting. 649 var root = document.documentElement, sysDark = matchMedia('(prefers-color-scheme: dark)'); 650 function theme() { return root.getAttribute('data-ns2-theme') || (sysDark.matches ? 'dark' : 'light'); }
651 // Links into the app (the header's Log in, the modal's model logos) lead to the app's sign-in page, which takes this 652 // site's look for the experiment's visitors in the theme they have here; the app cannot read the stored choice, so the 653 // link carries it (the app's sign-up page passes the same hint on to the card page). Re-applied when the toggle flips. 654 function withTheme(url) { 655 var base = url.replace(/([?&])ns2_theme=[^&#]*&?/, '$1').replace(/[?&]$/, ''); 656 return base + (base.indexOf('?') === -1 ? '?' : '&') + 'ns2_theme=' + theme(); 657 } 658 function openModal(prompt, params) { 659 var opened = typeof openPricingModal === 'function' && openPricingModal(prompt || '', params); 660 var modal = opened && document.getElementById('hp-new-pricing-modal'); 661 if (modal) { 662 Array.prototype.forEach.call(modal.querySelectorAll('a[href*="isSignUp=1"]'), function (a) { a.href = withSrc(toNs2Signup(a.getAttribute('href')), 'modal'); }); 663 Array.prototype.forEach.call(modal.querySelectorAll('a[href*="/chatllm/"]:not([href*="isSignUp=1"])'), function (a) { a.href = withTheme(withSrc(a.getAttribute('href'), 'modal_logo')); }); 664 } 665 return opened; 666 } 667 // The pricing modal opens from the CTAs only on the homepage, where the control homepage has one too. On every 668 // other page (product pages, campaign slugs, isv, FAQs) the CTA follows its href to the sign-up page, as the control 669 // pages' CTAs do: with the modal in between, two fifths of the clicks on those pages went no further. 670 var modalCtas = false; 671 document.addEventListener('click', function (e) { 672 var cta = e.target.closest ? e.target.closest('[data-ns2-cta]') : null; 673 if (!cta) { return; } 674 var params = JSON.parse(cta.getAttribute('data-ns2-params') || '{}'); 675 if (!params.src) { params.src = pageSlug + '_ns2_' + (cta.closest('header') ? 'header' : 'body'); cta.href = withSrc(cta.getAttribute('href'), 'header'); } 676 if (modalCtas && openModal('', params)) { e.preventDefault(); } 677 }); 678 function tagAppLinks() { 679 Array.prototype.forEach.call(document.querySelectorAll('a[data-ns2-app-link]'), function (a) { 680 a.href = withTheme(withSrc(a.getAttribute('href'), a.getAttribute('data-ns2-app-link'))); 681 }); 682 } 683 tagAppLinks(); 684 // Links to the blog carry the experiment the same way (src=<page>_ns2_<header|footer|body>): blog.abacus.ai's page 685 // cache serves one HTML to everyone and can't read the arm, so its plugin (wordpress/abacus-v2-blog) shows this look 686 // to visitors who arrive with an _ns2_ src. Only the experiment's pages run this script, so only they tag them. 687 Array.prototype.forEach.call(document.querySelectorAll('a[href^="https://blog.abacus.ai"]'), function (a) { 688 var href = a.getAttribute('href'), cut = href.indexOf('#'), hash = cut === -1 ? '' : href.slice(cut); 689 var placement = a.closest('.ns2-header') ? 'header' : a.closest('.ns2-footer') ? 'footer' : 'body';
690 a.href = withSrc(href.slice(0, href.length - hash.length), placement) + hash; 691 }); 692 693 // Header dropdowns: open on hover and on click (a click while hover-opened pins it), Escape / outside click / 694 // focus leaving it closes it. Opening one closes the others, so a pinned menu can't stay under a hovered one. 695 var ddClosers = []; 696 Array.prototype.forEach.call(document.querySelectorAll('[data-ns2-dd]'), function (dd) { 697 var btn = dd.querySelector('button'), hoverOpen = false; 698 function set(open) { 699 if (open) { ddClosers.forEach(function (close) { if (close !== closeDd) { close(); } }); } 700 dd.classList.toggle('is-open', open); btn.setAttribute('aria-expanded', open ? 'true' : 'false'); 701 } 702 function closeDd() { if (dd.classList.contains('is-open')) { set(false); } hoverOpen = false; } 703 ddClosers.push(closeDd); 704 dd.addEventListener('mouseenter', function () { if (!dd.classList.contains('is-open')) { set(true); hoverOpen = true; } }); 705 dd.addEventListener('mouseleave', function () { if (hoverOpen) { set(false); } hoverOpen = false; }); 706 btn.addEventListener('click', function () { if (hoverOpen) { hoverOpen = false; return; } set(!dd.classList.contains('is-open')); }); 707 document.addEventListener('keydown', function (e) { 708 if (e.key === 'Escape' && dd.classList.contains('is-open')) { var inside = dd.contains(document.activeElement); set(false); hoverOpen = false; if (inside) { btn.focus(); } } 709 }); 710 dd.addEventListener('focusout', function (e) { if (!dd.contains(e.relatedTarget)) { set(false); } }); 711 document.addEventListener('click', function (e) { if (!dd.contains(e.target)) { set(false); hoverOpen = false; } }); 712 }); 713 714 // Theme toggle (v6): flips the effective theme and remembers the choice. 715 function labelToggles() { 716 Array.prototype.forEach.call(document.querySelectorAll('[data-ns2-theme-toggle]'), function (b) { 717 b.setAttribute('aria-label', b.getAttribute(theme() === 'dark' ? 'data-ns2-label-light' : 'data-ns2-label-dark')); 718 }); 719 } 720 labelToggles(); 721 if (sysDark.addEventListener) { sysDark.addEventListener('change', labelToggles); } 722 document.addEventListener('click', function (e) { 723 if (!e.target.closest || !e.target.closest('[data-ns2-theme-toggle]')) { return; } 724 var next = theme() === 'dark' ? 'light' : 'dark'; 725 root.setAttribute('data-ns2-theme', next); 726 try { localStorage.setItem('ns2-theme', next); } catch (err) {} 727 labelToggles(); 728 tagAppLinks(); 729 }); 730 731 // Copy buttons (RouteLLM quickstart). 732 document.addEventListener('click', function (e) { 733 var b = e.target.closest ? e.target.closest('[data-ns2-copy]') : null, src = b && document.getElementById(b.getAttribute('data-ns2-copy')); 734 if (!src || !navigator.clipboard) { return; } 735 navigator.clipboard.writeText(src.textContent).then(function () { 736 var label = b.textContent; 737 b.textContent = b.getAttribute('data-ns2-copied'); 738 setTimeout(function () { b.textContent = label; }, 1500); 739 }); 740 }); 741 742 // Prompt composers: chips fill the field; submit opens the sign-up popup carrying prompt (+ mode). 743 Array.prototype.forEach.call(document.querySelectorAll('[data-ns2-composer]'), function (form) { 744 var field = form.querySelector('textarea, input[type="text"]'); 745 var params = JSON.parse(form.getAttribute('data-ns2-params') || '{}'); 746 var modes = form.querySelectorAll('[data-ns2-mode]'); 747 Array.prototype.forEach.call(modes, function (m) { 748 m.addEventListener('click', function () { 749 Array.prototype.forEach.call(modes, function (o) { o.setAttribute('aria-pressed', o === m ? 'true' : 'false'); }); 750 }); 751 }); 752 function submit() { 753 var p = Object.assign({}, params), pressed = form.querySelector('[data-ns2-mode][aria-pressed="true"]'); 754 if (pressed) { p.mode = pressed.getAttribute('data-ns2-mode'); } 755 openModal(field.value.trim(), p); 756 } 757 form.addEventListener('submit', function (e) { e.preventDefault(); submit(); }); 758 Array.prototype.forEach.call(form.querySelectorAll('[data-ns2-attach]'), function (b) { b.addEventListener('click', submit); }); 759 if (field.tagName === 'TEXTAREA') { 760 field.addEventListener('keydown', function (e) { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); submit(); } }); 761 } 762 // v15: the example prompts type themselves into the placeholder (40ms a character, a 1.8s hold, a quick erase), 763 // pausing while the field is focused or holds text. Reduced motion: the first example stays as the placeholder. 764 var examples = []; 765 try { examples = JSON.parse(form.getAttribute('data-ns2-examples') || '[]'); } catch (e) {} 766 if (examples.length) { 767 if (matchMedia('(prefers-reduced-motion: reduce)').matches) { field.setAttribute('placeholder', examples[0]); } 768 else { 769 var ei = 0, pos = 0, erasing = false, timer = 0; 770 // Focus clears whatever was mid-type (a blank field to type into); leaving it empty restarts on the next example. 771 field.addEventListener('focus', function () { field.setAttribute('placeholder', ''); }); 772 field.addEventListener('blur', function () { if (!field.value) { ei++; pos = 0; erasing = false; } }); 773 function tick() { 774 if (document.activeElement === field || field.value) { timer = setTimeout(tick, 400); return; } 775 var text = examples[ei % examples.length]; 776 if (!erasing) { 777 pos++; field.setAttribute('placeholder', text.slice(0, pos)); 778 if (pos >= text.length) { 779 // v18: on the homepage the stage plays this prompt's flow (model + tool light up, packets, result); v27: 780 // on the Agent page the card re-runs as this idea. Either returns the hold that lets it finish. 781 var hold = form.ns2Play && form.ns2Play(ei % examples.length); 782 erasing = true; timer = setTimeout(tick, hold || 1800); return; 783 } 784 timer = setTimeout(tick, 34 + Math.random() * 30); 785 } else { 786 pos = Math.max(0, pos - 3); field.setAttribute('placeholder', text.slice(0, pos)); 787 if (pos === 0) { erasing = false; ei++; timer = setTimeout(tick, 350); return; } 788 timer = setTimeout(tick, 16); 789 } 790 } 791 timer = setTimeout(tick, 900); 792 } 793 } 794 }); 795 796 // Example filters + "See all examples". 797 Array.prototype.forEach.call(document.querySelectorAll('.ns2-tabs'), function (tabs) { 798 var section = tabs.parentNode, moreBtn = section.querySelector('[data-ns2-more-btn]'); 799 var expanded = false;
800 // v16.1: one grid; a tab shows every matching card, "All" shows the first set or, once expanded, everything. 801 function apply(key) { 802 Array.prototype.forEach.call(section.querySelectorAll('[data-ns2-examples] [data-cat]'), function (card) { 803 var extra = card.hasAttribute('data-ns2-extra'); 804 card.hidden = key === 'all' ? (extra && !expanded) : card.getAttribute('data-cat') !== key; 805 }); 806 if (moreBtn) { moreBtn.hidden = key !== 'all'; } 807 } 808 tabs.addEventListener('click', function (e) { 809 var tab = e.target.closest('[data-ns2-filter]'); 810 if (!tab) { return; } 811 Array.prototype.forEach.call(tabs.children, function (t) { t.setAttribute('aria-pressed', t === tab ? 'true' : 'false'); }); 812 apply(tab.getAttribute('data-ns2-filter')); 813 }); 814 if (moreBtn) { 815 moreBtn.addEventListener('click', function () { 816 expanded = !expanded; 817 apply('all'); 818 moreBtn.setAttribute('aria-expanded', expanded ? 'true' : 'false'); 819 }); 820 } 821 }); 822 823 // v34 (ChatLLM page): the fundamentals carousel. Prev / next and the dots scroll to a screen; the selected one 824 // (is-active, full size) and its dot follow the scroll. 825 Array.prototype.forEach.call(document.querySelectorAll('[data-ns2-screens]'), function (box) { 826 var rail = box.querySelector('.ns2-screens-rail'), tiles = rail.children, dots = box.querySelectorAll('[data-ns2-screens-go]'); 827 var prev = box.querySelector('[data-ns2-screens-prev]'), next = box.querySelector('[data-ns2-screens-next]'); 828 function at() { 829 if (!tiles.length) { return 0; } 830 var step = tiles.length > 1 ? tiles[1].offsetLeft - tiles[0].offsetLeft : tiles[0].offsetWidth; 831 return Math.max(0, Math.min(tiles.length - 1, Math.round(rail.scrollLeft / step))); 832 } 833 function go(k) { 834 k = Math.max(0, Math.min(tiles.length - 1, k)); 835 rail.scrollTo({left: tiles[k].offsetLeft - tiles[0].offsetLeft, behavior: 'smooth'}); 836 } 837 function update() {
838 var k = at(); 839 Array.prototype.forEach.call(tiles, function (tile, i) { 840 tile.classList.toggle('is-active', i === k); 841 if (Math.abs(i - k) <= 2) { tile.querySelector('img').loading = 'eager'; } // the neighbours peek in: load them now 842 }); 843 Array.prototype.forEach.call(dots, function (dot, i) { dot.setAttribute('aria-pressed', i === k ? 'true' : 'false'); }); 844 if (prev) { prev.disabled = k === 0; } 845 if (next) { next.disabled = k === tiles.length - 1; } 846 } 847 if (prev) { prev.addEventListener('click', function () { go(at() - 1); }); } 848 if (next) { next.addEventListener('click', function () { go(at() + 1); }); } 849 Array.prototype.forEach.call(dots, function (dot, i) { dot.addEventListener('click', function () { go(i); }); }); 850 rail.addEventListener('scroll', update, {passive: true}); 851 rail.addEventListener('keydown', function (e) { 852 if (e.key === 'ArrowLeft') { e.preventDefault(); go(at() - 1); } 853 if (e.key === 'ArrowRight') { e.preventDefault(); go(at() + 1); } 854 }); 855 update(); 856 }); 857 858 // Product rows (homepage): a screenshot opens full screen in the lightbox, which pages through all of them (prev / 859 // next, â / â); Escape, the backdrop or the close button closes it. Try Now is a data-ns2-cta: the lightbox closes 860 // here, then the document handler above opens the sign-up popup. v27 (exp_ns2_revamp_2, product pages): an example 861 // card plays its replay video in the same lightbox, in this window, from a click anywhere on the card (is-video). 862 var lb = document.getElementById('ns2-lightbox'); 863 if (lb) { 864 var lbImg = lb.querySelector('.ns2-lightbox-img'), lbVideo = lb.querySelector('.ns2-lightbox-video'), lbText = lb.querySelector('.ns2-lightbox-text'); 865 var lbTitle = lb.querySelector('.ns2-lightbox-title'), lbCount = lb.querySelector('.ns2-lightbox-count'), lbOpener = null, lbIndex = 0; 866 var lbStill = matchMedia('(prefers-reduced-motion: reduce)').matches; 867 var shots = Array.prototype.slice.call(document.querySelectorAll('[data-ns2-zoom]')); 868 function lbOpen(opener) { 869 lbOpener = opener; 870 lb.hidden = false; 871 document.body.style.overflow = 'hidden'; 872 lb.querySelector('[data-ns2-lb-close]').focus(); 873 } 874 function lbClose() { 875 if (lb.hidden) { return; } 876 lb.hidden = true; 877 if (lb.classList.contains('is-video')) { lbVideo.pause(); lbVideo.removeAttribute('src'); lbVideo.load(); } 878 lb.classList.remove('is-video'); 879 document.body.style.overflow = ''; 880 if (lbOpener) { lbOpener.focus(); } 881 lbOpener = null; 882 } 883 function lbShow(i, animate) { 884 lbIndex = (i + shots.length) % shots.length; 885 var img = shots[lbIndex].querySelector('img'); 886 lbImg.src = img.currentSrc || img.src; 887 lbImg.setAttribute('width', img.getAttribute('width')); 888 lbImg.setAttribute('height', img.getAttribute('height')); 889 lbImg.alt = img.alt; 890 lbTitle.textContent = shots[lbIndex].getAttribute('data-title'); 891 lbCount.textContent = (lbIndex + 1) + ' / ' + shots.length; 892 if (animate && !lbStill && lbImg.animate) { lbImg.animate([{opacity: 0.4}, {opacity: 1}], {duration: 220, easing: 'ease-out'}); }
893 [lbIndex - 1, lbIndex + 1].forEach(function (n) { // warm the neighbours so paging feels instant 894 var ni = shots[(n + shots.length) % shots.length].querySelector('img'); 895 new Image().src = ni.currentSrc || ni.src; 896 }); 897 } 898 shots.forEach(function (b, i) { 899 b.addEventListener('click', function () { lbShow(i, false); lbOpen(b); }); 900 }); 901 Array.prototype.forEach.call(document.querySelectorAll('[data-ns2-video]'), function (card) { 902 function play() { 903 lb.classList.add('is-video'); 904 lbTitle.textContent = card.getAttribute('data-title'); 905 lbText.textContent = card.getAttribute('data-text') || ''; 906 lbCount.textContent = ''; 907 lbVideo.src = card.getAttribute('data-ns2-video'); 908 lbOpen(card); 909 var playing = lbVideo.play(); 910 if (playing && playing.catch) { playing.catch(function () {}); } 911 } 912 card.addEventListener('click', function (e) { if (!e.target.closest('a')) { play(); } }); 913 card.addEventListener('keydown', function (e) { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); play(); } }); 914 }); 915 lb.addEventListener('click', function (e) { 916 if (e.target.closest('[data-ns2-lb-prev]')) { lbShow(lbIndex - 1, true); } 917 else if (e.target.closest('[data-ns2-lb-next]')) { lbShow(lbIndex + 1, true); } 918 else if (e.target === lb || e.target.closest('[data-ns2-lb-close], [data-ns2-cta]')) { lbClose(); } 919 }); 920 document.addEventListener('keydown', function (e) { 921 if (lb.hidden) { return; } 922 if (e.key === 'Escape') { lbClose(); } 923 else if (shots.length && !lb.classList.contains('is-video')) { 924 if (e.key === 'ArrowLeft') { lbShow(lbIndex - 1, true); } 925 else if (e.key === 'ArrowRight') { lbShow(lbIndex + 1, true); } 926 } 927 }); 928 } 929 930 // Motion (v5, treatment templates only): one IntersectionObserver reveals sections and cards once (.ns2-in, 60ms 931 // stagger via --ns2-d) and plays each proof card once (.ns2-play; the choreography is CSS keyframes). Counters 932 // ([data-ns2-count], optional data-ns2-from / data-ns2-at ms) count up once. Reduced motion, or no observer: nothing 933 // is hidden and everything shows its final state. 934 var main = document.querySelector('body.ns2 main'); 935 var still = !('IntersectionObserver' in window) || matchMedia('(prefers-reduced-motion: reduce)').matches; 936 function count(el) { 937 var to = +el.getAttribute('data-ns2-count'), from = +(el.getAttribute('data-ns2-from') || 0); 938 var dec = to === Math.floor(to) ? 0 : 1; // v34: "1.5M" counts with one decimal 939 var text = el.textContent, digits = to.toFixed(dec).length, t0 = 0; 940 function show(n) { 941 var v = n.toFixed(dec); 942 while (v.length < digits) { v = '\u2007' + v; } // figure spaces keep the width steady 943 el.textContent = text.replace(/\d+(\.\d+)?/, v); 944 } 945 function frame(t) { 946 t0 = t0 || t; 947 var k = Math.min(1, (t - t0) / 600); 948 show(from + (to - from) * (1 - Math.pow(1 - k, 3))); 949 if (k < 1) { requestAnimationFrame(frame); } 950 } 951 show(from); 952 setTimeout(function () { requestAnimationFrame(frame); }, +(el.getAttribute('data-ns2-at') || 0)); 953 } 954 if (main && !still) { 955 document.documentElement.classList.add('ns2-motion'); 956 // v26: no entrance on the hero text. It must be complete at first paint; on prod the deferred scripts land well 957 // after the paint, so anything that hides and re-shows it reads as a second load. 958 // v18-v20: the homepage stage. When a typed prompt finishes, its models (left ticker) and tools (right ticker) 959 // light up and lean toward the prompt box, a wire is drawn from each (redrawn every frame, so parallax and the 960 // tickers never leave one hanging) and a packet rides it in; then the box's contents give way to the artifact 961 // card in place: the trace ticks (Reading Salesforce and Zendesk â Scoring the accounts â Dashboard live) while 962 // the deliverable draws itself as a miniature; then everything fades back for the next prompt. Both tickers pause 963 // while a flow plays. Geometry is measured at play time, so resizes are fine. 964 var stageForm = main.querySelector('.ns2-hero [data-ns2-flows]'); 965 if (stageForm) { 966 var stageHero = main.querySelector('.ns2-hero'), wires = stageHero.querySelector('.ns2-wires'); 967 var artifact = stageHero.querySelector('[data-ns2-artifact]'), mini = artifact.querySelector('.ns2-mini'); 968 var traceItems = artifact.querySelectorAll('.ns2-trace li'); 969 var kinds = [], steps = [], nodes = [[], []], stageTimers = [], stageActive = false, stagePaths = [];
970 try { 971 kinds = JSON.parse(stageForm.getAttribute('data-ns2-flows')); 972 steps = JSON.parse(stageForm.getAttribute('data-ns2-flow-steps')); 973 nodes = [JSON.parse(stageForm.getAttribute('data-ns2-flow-models')), JSON.parse(stageForm.getAttribute('data-ns2-flow-tools'))]; 974 } catch (e) {} 975 function stageLater(fn, ms) { stageTimers.push(setTimeout(fn, ms)); } 976 function stageReset() { // instant: everything back to rest (the tickers drift again) 977 stageTimers.forEach(clearTimeout); stageTimers = []; stageActive = false; stagePaths = []; 978 stageHero.classList.remove('is-playing'); 979 tracks.forEach(function (tr) { tr.hold = false; tr.glide = null; }); 980 Array.prototype.forEach.call(stageHero.querySelectorAll('.ns2-orbit .is-lit'), function (el) { el.classList.remove('is-lit'); }); 981 stageForm.classList.remove('is-thinking', 'is-away'); 982 artifact.className = artifact.className.replace(/\bis-(in|drawn|done|step\d+)\b/g, '').replace(/\s+/g, ' ').trim(); 983 artifact.hidden = true; mini.setAttribute('data-kind', ''); 984 Array.prototype.forEach.call(traceItems, function (li) { li.className = ''; }); 985 while (wires.firstChild) { wires.removeChild(wires.firstChild); } 986 } 987 function stageEnd() { // gentle: the card fades, the box comes back, the wires and chips dim, then reset 988 artifact.classList.remove('is-in'); 989 Array.prototype.forEach.call(wires.querySelectorAll('path'), function (p) { p.classList.remove('is-on'); }); 990 Array.prototype.forEach.call(stageHero.querySelectorAll('.ns2-orbit .is-lit'), function (el) { el.classList.remove('is-lit'); }); 991 stageLater(function () { stageForm.classList.remove('is-away'); }, 260); 992 stageLater(stageReset, 800); 993 } 994 function heroRect() { return stageHero.getBoundingClientRect(); } 995 // The two tickers: each track drifts up slowly (px per second) and wraps every `cycle` px (one copy of its list); 996 // before a flow, `steer` glides a track so a target chip sits level with the box, then holds until stageEnd. 997 var tracks = Array.prototype.map.call(stageHero.querySelectorAll('.ns2-orbit-track'), function (el, k) { 998 var ul = el.querySelector('ul'); 999 return {el: el, y: 0, speed: k ? 9 : 13, cycle: function () { return ul.getBoundingClientRect().height; }, hold: false, glide: null}; 1000 }); 1001 var lastT = 0; 1002 function drift(t) { 1003 var dt = lastT ? Math.min(0.05, (t - lastT) / 1000) : 0; lastT = t; 1004 tracks.forEach(function (tr) { 1005 var c = tr.cycle(); 1006 if (tr.glide) { // ease toward the target offset, then hold 1007 var g = tr.glide, q = Math.min(1, (t - g.t0) / g.ms), e = 1 - Math.pow(1 - q, 3); 1008 tr.y = g.from + (g.to - g.from) * e; 1009 if (q >= 1) { tr.glide = null; tr.hold = true; if (g.done) { g.done(); } } 1010 } else if (!tr.hold && c) { tr.y += tr.speed * dt; } 1011 if (c) { tr.y = ((tr.y % c) + c) % c; } 1012 tr.el.style.translate = '0 ' + (-tr.y).toFixed(2) + 'px'; 1013 }); 1014 requestAnimationFrame(drift); 1015 } 1016 requestAnimationFrame(drift); 1017 function copiesOf(id) { return stageHero.querySelectorAll('[data-ns2-node="' + id + '"]'); } 1018 function steer(tr, ids, done) { // glide so the chips `ids` (of this track) centre on the box, wrapping the short way 1019 var fr = stageForm.getBoundingClientRect(), c = tr.cycle(), targetY = fr.top + fr.height / 2; 1020 // each chip's centre in track space (its first copy, unscrolled), reduced into one cycle 1021 var ys = ids.map(function (id) { 1022 var r = copiesOf(id)[0].getBoundingClientRect(); 1023 return (((r.top + r.height / 2 + tr.y - fr.top) % c) + c) % c; // relative to the box's top, 0..c 1024 }); 1025 // a group's midpoint, taken the short way round the cycle so a group near the wrap doesn't split 1026 var base = ys[0], mid = ys.reduce(function (a, y) { var d = ((y - base) % c + c) % c; if (d > c / 2) { d -= c; } return a + d; }, 0) / ys.length + base; 1027 var want = mid - fr.height / 2, delta = ((want - tr.y) % c + c) % c; // want: offset that puts mid at the box centre 1028 if (delta > c / 2) { delta -= c; } // the other way is shorter 1029 tr.glide = {from: tr.y, to: tr.y + delta, t0: performance.now(), ms: Math.min(1100, 500 + Math.abs(delta) * 2), done: done}; 1030 } 1031 function pick(id) { // the copy of a chip nearest the box (after steering it is on screen) 1032 var best = null, fr = stageForm.getBoundingClientRect(); 1033 Array.prototype.forEach.call(copiesOf(id), function (n) { 1034 var d = Math.abs(n.getBoundingClientRect().top - fr.top); 1035 if (!best || d < best.d) { best = {n: n, d: d}; } 1036 }); 1037 return best && best.n; 1038 } 1039 function wireD(node, hr, fr) { // from the chip's inner edge to the box's side, spread a little vertically 1040 var r = node.getBoundingClientRect(), fromLeft = r.left < fr.left; 1041 var x0 = (fromLeft ? r.right : r.left) - hr.left, y0 = r.top + r.height / 2 - hr.top; 1042 var x1 = (fromLeft ? fr.left : fr.right) - hr.left, y1 = fr.top + fr.height / 2 - hr.top + (node.ns2Spread || 0), cx = (x0 + x1) / 2; 1043 return 'M' + x0 + ' ' + y0 + ' C' + cx + ' ' + y0 + ' ' + cx + ' ' + y1 + ' ' + x1 + ' ' + y1; 1044 } 1045 function follow() { // keep every wire attached to its (moving) chip while the flow plays 1046 if (!stageActive) { return; } 1047 var hr = heroRect(), fr = stageForm.getBoundingClientRect(); 1048 stagePaths.forEach(function (w) { w.path.setAttribute('d', wireD(w.node, hr, fr)); }); 1049 requestAnimationFrame(follow); 1050 } 1051 function ride(path, dot, ms, done) { // the packet rides the wire (translate only) 1052 var t0 = 0; 1053 function step(t) { 1054 t0 = t0 || t;
1055 var q = Math.min(1, (t - t0) / ms), e = q < 0.5 ? 2 * q * q : 1 - Math.pow(-2 * q + 2, 2) / 2; 1056 var p = path.getPointAtLength(path.getTotalLength() * e); 1057 dot.setAttribute('transform', 'translate(' + p.x.toFixed(1) + ' ' + p.y.toFixed(1) + ')'); 1058 if (q < 1) { requestAnimationFrame(step); } else if (done) { done(); } 1059 } 1060 requestAnimationFrame(step); 1061 } 1062 function build(i) { // the box's contents give way; the artifact card takes its place 1063 var hr = heroRect(), fr = stageForm.getBoundingClientRect(); 1064 artifact.style.left = (fr.left - hr.left) + 'px'; artifact.style.top = (fr.top - hr.top) + 'px'; 1065 artifact.style.width = fr.width + 'px'; artifact.style.height = fr.height + 'px'; 1066 var flowSteps = steps[i] || [], n = Math.min(flowSteps.length, traceItems.length); 1067 Array.prototype.forEach.call(traceItems, function (li, k) { 1068 li.className = ''; li.hidden = k >= n; li.querySelector('span').textContent = flowSteps[k] || ''; 1069 }); 1070 mini.setAttribute('data-kind', kinds[i] || 'doc'); 1071 stageForm.classList.add('is-away'); 1072 artifact.hidden = false; 1073 requestAnimationFrame(function () { artifact.classList.add('is-in'); }); 1074 // v34: one tick per step (a 4-step flow runs a little longer). Step k busy at stepAt(k); the miniature gets 1075 // is-step{k+1} as each step starts, is-drawn with the second, is-done with the last. 1076 stageLater(function () { traceItems[0].className = 'is-busy'; artifact.classList.add('is-step1'); }, 250); 1077 for (var k = 1; k < n; k++) { 1078 (function (k) { 1079 stageLater(function () { 1080 traceItems[k - 1].className = 'is-done'; traceItems[k].className = 'is-busy'; artifact.classList.add('is-step' + (k + 1)); 1081 if (k === 1) { artifact.classList.add('is-drawn'); } 1082 }, stepAt(k)); 1083 })(k); 1084 } 1085 stageLater(function () { traceItems[n - 1].className = 'is-done'; artifact.classList.add('is-done'); }, stepAt(n - 1) + 600); 1086 stageLater(stageEnd, stepAt(n - 1) + 2600); 1087 } 1088 function stepAt(k) { return k === 1 ? 1000 : 1000 + (k - 1) * 1300; } // the trace schedule: 1000, 2300, 3600 ⦠1089 function holdFor(i) { return 9400 + Math.max(0, (steps[i] || []).length - 3) * 1300; } 1090 stageForm.ns2Play = function (i) { 1091 if (document.hidden || !stageHero.querySelector('.ns2-orbit').offsetParent) { return false; } // narrow window: no stage 1092 var want = [(nodes[0][i] || []).map(function (k) { return 'm' + k; }), (nodes[1][i] || []).map(function (k) { return 't' + k; })]; 1093 if (!want[0].length && !want[1].length) { return false; } 1094 stageReset(); 1095 stageActive = true; 1096 stageHero.classList.add('is-playing'); 1097 // 1) both columns glide so their chips sit level with the box; 2) then the wires draw and the packets ride 1098 var settled = 0, need = 0; 1099 function wired() { 1100 var hr = heroRect(), fr = stageForm.getBoundingClientRect(), ns = 'http://www.w3.org/2000/svg'; 1101 var picked = want[0].concat(want[1]).map(pick).filter(Boolean), pending = picked.length, perSide = {left: 0, right: 0}; 1102 wires.setAttribute('viewBox', '0 0 ' + hr.width + ' ' + hr.height); 1103 wires.setAttribute('width', hr.width); wires.setAttribute('height', hr.height); 1104 picked.forEach(function (node, k) { 1105 var side = node.getBoundingClientRect().left < fr.left ? 'left' : 'right'; 1106 node.ns2Spread = (perSide[side]++ - 0.5) * 22; // several wires on one side land a little apart 1107 var path = document.createElementNS(ns, 'path'), dot = document.createElementNS(ns, 'circle'); 1108 path.setAttribute('d', wireD(node, hr, fr)); path.setAttribute('pathLength', '1'); dot.setAttribute('r', '5'); 1109 wires.appendChild(path); wires.appendChild(dot); 1110 stagePaths.push({node: node, path: path}); 1111 stageLater(function () { 1112 node.classList.add('is-lit');
1113 path.classList.add('is-on'); dot.classList.add('is-on'); 1114 ride(path, dot, 750, function () { 1115 dot.classList.remove('is-on'); 1116 if (--pending === 0) { 1117 stageForm.classList.add('is-thinking'); 1118 stageLater(function () { stageForm.classList.remove('is-thinking'); build(i); }, 550); 1119 } 1120 }); 1121 }, k * 180); 1122 }); 1123 requestAnimationFrame(follow); 1124 } 1125 tracks.forEach(function (tr, k) { 1126 if (!want[k].length) { tr.hold = true; return; } 1127 need++; 1128 steer(tr, want[k], function () { if (++settled === need) { wired(); } }); 1129 }); 1130 return holdFor(i); 1131 }; 1132 document.addEventListener('visibilitychange', function () { if (document.hidden) { stageReset(); } }); 1133 } 1134 // v27: the Agent hero. When a typed idea finishes, the proof card re-runs as that task: its contents fade, the 1135 // quoted prompt, steps and frame label become the task's (data-ns2-tasks, in the card's own order), and the 1136 // choreography (.ns2-play) restarts; a card whose height changes (a one- vs two-line idea) glides to it, so the 1137 // hero text eases rather than jumps. The task the card already shows (the first, at load) only holds. 1138 var taskCard = main.querySelector('.ns2-hero .ns2-proof--task'), taskForm = main.querySelector('.ns2-hero [data-ns2-composer]'); 1139 if (taskCard && taskForm) { 1140 var taskBody = taskCard.querySelector('.ns2-task'), tasks = [], taskAt = 0; 1141 try { tasks = JSON.parse(taskBody.getAttribute('data-ns2-tasks') || '[]'); } catch (e) {} 1142 var taskLines = taskBody.querySelectorAll('.ns2-checks li'), taskLabel = taskBody.querySelector('.ns2-browser-bar span'); 1143 taskForm.ns2Play = function (i) { 1144 var task = tasks[i]; 1145 if (!task) { return false; } 1146 if (i === taskAt) { return 1800; } 1147 taskAt = i; 1148 taskCard.classList.add('is-swapping'); 1149 setTimeout(function () { 1150 var from = taskCard.offsetHeight; 1151 taskBody.querySelector('.ns2-task-prompt').textContent = 'â' + task.prompt + 'â'; 1152 Array.prototype.forEach.call(taskLines, function (li, k) { li.lastElementChild.textContent = task.steps[k] || task.note; }); 1153 taskLabel.textContent = task.label; 1154 taskCard.classList.remove('ns2-play', 'is-swapping'); 1155 void taskCard.offsetWidth; // a fresh run of the keyframes 1156 taskCard.classList.add('ns2-play'); 1157 var to = taskCard.offsetHeight; 1158 if (to !== from && taskCard.animate) { 1159 taskCard.style.overflow = 'hidden'; 1160 taskCard.animate([{height: from + 'px'}, {height: to + 'px'}], {duration: 220, easing: 'ease-out'}).onfinish = function () { taskCard.style.overflow = ''; }; 1161 } 1162 }, 240); 1163 return 4800; 1164 }; 1165 } 1166 // v9, pointer devices only: the hero glow leans toward the cursor; proof cards, screenshots and pillar cards tilt 1167 // toward it (perspective transform on the element, reset on leave). 1168 if (matchMedia('(hover: hover) and (pointer: fine)').matches) { 1169 var hero = main.querySelector('.ns2-hero'); 1170 if (hero) { 1171 hero.addEventListener('mousemove', function (e) { 1172 var r = hero.getBoundingClientRect(); 1173 hero.style.setProperty('--ns2-mx', ((e.clientX - r.left) / r.width - 0.5).toFixed(3)); 1174 hero.style.setProperty('--ns2-my', ((e.clientY - r.top) / r.height - 0.5).toFixed(3)); 1175 }); 1176 hero.addEventListener('mouseleave', function () { hero.style.removeProperty('--ns2-mx'); hero.style.removeProperty('--ns2-my'); }); 1177 } 1178 // v10 spotlight: a light follows the pointer across the card under it (--ns2-sx/--ns2-sy in px, ns2.css draws it). 1179 main.addEventListener('mousemove', function (e) { 1180 var card = e.target.closest ? e.target.closest('.ns2-card, .ns2-pricecard, .ns2-enterprise') : null; 1181 if (!card) { return; } 1182 var r = card.getBoundingClientRect(); 1183 card.style.setProperty('--ns2-sx', (e.clientX - r.left) + 'px'); 1184 card.style.setProperty('--ns2-sy', (e.clientY - r.top) + 'px'); 1185 }); 1186 // v13: catalog tiles play their preview video on hover (the source loads on first hover only). 1187 Array.prototype.forEach.call(main.querySelectorAll('[data-ns2-hover-video]'), function (v) { 1188 var tile = v.parentNode; 1189 tile.addEventListener('mouseenter', function () { 1190 if (!v.getAttribute('src')) { v.setAttribute('src', v.getAttribute('data-ns2-hover-video')); } 1191 var p = v.play(); if (p && p.catch) { p.catch(function () {}); } 1192 tile.classList.add('is-playing'); 1193 }); 1194 tile.addEventListener('mouseleave', function () { v.pause(); tile.classList.remove('is-playing'); }); 1195 }); 1196 Array.prototype.forEach.call(main.querySelectorAll('.ns2-proof, .ns2-shot, .ns2-card--pillar'), function (el) { 1197 el.classList.add('ns2-tilt'); 1198 el.addEventListener('mousemove', function (e) { 1199 var r = el.getBoundingClientRect(), x = (e.clientX - r.left) / r.width - 0.5, y = (e.clientY - r.top) / r.height - 0.5; 1200 el.style.setProperty('--ns2-rx', (-y * 6).toFixed(2) + 'deg'); 1201 el.style.setProperty('--ns2-ry', (x * 8).toFixed(2) + 'deg'); 1202 }); 1203 el.addEventListener('mouseleave', function () { el.style.removeProperty('--ns2-rx'); el.style.removeProperty('--ns2-ry'); }); 1204 }); 1205 } 1206 var io = new IntersectionObserver(function (entries) {
1207 entries.forEach(function (en) { 1208 if (!en.isIntersecting) { return; } 1209 var el = en.target; 1210 io.unobserve(el); 1211 el.classList.add('ns2-in'); 1212 if (el.hasAttribute('data-ns2-play')) { setTimeout(function () { el.classList.add('ns2-play'); }, 120); } 1213 Array.prototype.forEach.call(el.querySelectorAll('[data-ns2-count]'), count); 1214 }); 1215 }, {threshold: 0.15}); 1216 var groups = main.querySelectorAll('.ns2-section .ns2-head, .ns2-grid, .ns2-split, .ns2-rows, .ns2-frow, .ns2-enterprise, .ns2-faq, .ns2-banner, .ns2-stats, .ns2-band-rows, .ns2-pricecard'); 1217 // Stagger: 60ms between cards; a section's eyebrow leads its heading by a beat (150ms). 1218 Array.prototype.forEach.call(groups, function (el) { 1219 var gap = el.classList.contains('ns2-head') ? 150 : 60; 1220 el.setAttribute('data-ns2-reveal', ''); 1221 Array.prototype.forEach.call(el.children, function (c, i) { c.style.setProperty('--ns2-d', Math.min(i, 8) * gap + 'ms'); }); 1222 io.observe(el); 1223 }); 1224 Array.prototype.forEach.call(main.querySelectorAll('[data-ns2-play]'), function (card) { 1225 var cmd = card.querySelector('.ns2-term-cmd'); 1226 if (cmd) { // typewriter: every character stays in the DOM (no reflow), shown one by one at 40ms 1227 var chars = cmd.textContent.trim().split(''); 1228 cmd.textContent = ''; 1229 chars.forEach(function (ch, i) { 1230 var sp = document.createElement('span'); 1231 sp.textContent = ch; 1232 sp.style.animationDelay = i * 40 + 'ms'; 1233 cmd.appendChild(sp); 1234 }); 1235 card.style.setProperty('--ns2-typed', chars.length * 40 + 'ms'); 1236 } 1237 io.observe(card); 1238 }); 1239 } 1240 1241 // Pricing popup (markup untouched; body.ns2-pop restyles it light in ns2.css): Escape closes it, focus moves to the 1242 // card on open and back to the opener on close, Tab stays inside. getElementById = the first popup on the page. 1243 document.body.classList.add('ns2-pop'); 1244 function initPopup() { 1245 var modal = document.getElementById('hp-new-pricing-modal'), card = modal && modal.firstElementChild, opener = null; 1246 if (!card || modal.hasAttribute('data-ns2-pop')) { return; } 1247 modal.setAttribute('data-ns2-pop', ''); 1248 card.setAttribute('role', 'dialog'); 1249 card.setAttribute('aria-modal', 'true'); 1250 card.setAttribute('tabindex', '-1'); 1251 var title = card.querySelector('h2'); 1252 if (title) { card.setAttribute('aria-label', title.textContent.trim()); } 1253 var closeBtn = card.querySelector('.hp-new-pricing-close'); // its icon-only button has no name today 1254 if (closeBtn && !closeBtn.hasAttribute('aria-label')) { closeBtn.setAttribute('aria-label', "Close"); } 1255 function isOpen() { return modal.style.display === 'flex'; } 1256 new MutationObserver(function () { 1257 if (isOpen() && !opener) { opener = document.activeElement || document.body; card.focus(); } 1258 else if (!isOpen() && opener) { if (opener.focus) { opener.focus(); } opener = null; } 1259 }).observe(modal, {attributes: true, attributeFilter: ['style']}); 1260 document.addEventListener('keydown', function (e) { 1261 if (!isOpen()) { return; } 1262 if (e.key === 'Escape') { 1263 if (typeof closePricingModal === 'function') { closePricingModal(); } else { modal.style.display = 'none'; } 1264 return; 1265 } 1266 if (e.key !== 'Tab') { return; } 1267 var f = Array.prototype.filter.call(card.querySelectorAll('a[href], button'), function (el) { return el.offsetParent !== null; }); 1268 var active = document.activeElement; 1269 if (!f.length) { return; } 1270 if (e.shiftKey && (active === f[0] || active === card || !card.contains(active))) { e.preventDefault(); f[f.length - 1].focus(); } 1271 else if (!e.shiftKey && (active === f[f.length - 1] || !card.contains(active))) { e.preventDefault(); f[0].focus(); } 1272 }); 1273 } 1274 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initPopup); } else { initPopup(); } 1275})(); 1276</script>
1276 1277
1277<script type="module" src="/static/h47c3adea/v2/js/motion.js"></script>
1277 1278
1278<script type="module" src="/static/h48e9a12b/v2/js/consent.js"></script>
1278 1279 1280</body> 1281</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.