1<!DOCTYPE html> 2<html lang="en" suppressHydrationWarning translate="no" data-opus9-prerender="1" data-prerender-path="/about"> 3 4<head> 5 <meta charset="UTF-8" /> 6 <meta name="google" content="notranslate" /> 7
7<script> 8 (function () { 9 try { 10 document.documentElement.classList.add('notranslate'); 11 } catch (e) { /* ignore */ } 12 })(); 13 (function () { 14 try { 15 var standalone = window.matchMedia('(display-mode: standalone)').matches || !!(window.navigator.standalone); 16 document.documentElement.setAttribute('data-display-mode', standalone ? 'standalone' : 'browser'); 17 } catch (e) { /* ignore */ } 18 })(); 19 (function () { 20 try { 21 var lang = localStorage.getItem('opus9_language'); 22 if (lang && typeof lang === 'string' && lang.length >= 2) { 23 document.documentElement.lang = lang; 24 } 25 } catch (e) { /* ignore storage access errors */ } 26 })(); 27 (function () { 28 try { 29 var k = 'vite-ui-theme'; 30 var v = localStorage.getItem(k) || 'system'; 31 if (v === 'system') { 32 v = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; 33 } 34 var el = document.documentElement; 35 el.classList.remove('light', 'dark'); 36 el.classList.add(v); 37 } catch (e) { /* ignore storage/SSR errors */ } 38 })(); 39 (function () { 40 try { 41 var path = window.location.pathname || '/'; 42 var isAuthRoute = path === '/login' || path === '/signup' || path === '/auth'; 43 // Public marketing sites: /edi (EdiSite), /api (ApiSite) â not listed here. 44 // EDI ops (/edi/overview, /edi/partners, â¦) and /edi/partner-portal use React ProtectedRoute. 45 var protectedPathRe = /^\/(dashboard|admin|broker|carrier|customer|financials|crm|shipments|settings|it-support|owner-operator|api-portal)(\/|$)/; 46 var ediOpsProtectedRe = /^\/edi\/(overview|transactions|partners|mappings|errors|connections|compliance|alerts|acknowledgments|settings|documents|logs|validation-logs|mapping|partner-mapping|partner-portal)(\/|$)/; 47 var isPublicMarketing = !isAuthRoute && !protectedPathRe.test(path) && !ediOpsProtectedRe.test(path); 48 if (isPublicMarketing) { 49 document.documentElement.setAttribute('data-portal', 'website'); 50 document.documentElement.setAttribute('data-website-nav-in-header', 'true'); 51 } 52 if (isAuthRoute || (!protectedPathRe.test(path) && !ediOpsProtectedRe.test(path))) return; 53 54 var hasSessionToken = Object.keys(localStorage).some(function (key) { 55 if (!key.endsWith('-auth-token')) return false; 56 var value = localStorage.getItem(key); 57 return typeof value === 'string' && value.length > 0; 58 }); 59 60 if (!hasSessionToken) { 61 var returnTo = encodeURIComponent(path + (window.location.search || '')); 62 window.location.replace('/login?returnTo=' + returnTo); 63 } 64 } catch (e) { /* ignore storage access/SSR errors */ } 65 })(); 66 </script>
66 67 <!-- 68 Hosting in a subfolder (e.g. example.com/website/)? 69 Build with: VITE_BASE_PATH=/website/ npm run build 70 Then deploy the contents of 'dist' into that subfolder. 71 Ensure your server serves index.html for all routes (SPA fallback). 72 --> 73 <!-- Responsive viewport: device width, pinch-zoom allowed (max 5x), safe-area for notches / PWA --> 74 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5, viewport-fit=cover" /> 75 <link rel="stylesheet" href="./seo-shell.css" /> 76 <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> 77 <meta http-equiv="Pragma" content="no-cache" /> 78 <meta http-equiv="Expires" content="0" /> 79 <meta name="build-version" content="v3.2.0-20261001210711" /> 80 81 <!-- Title ⤠~60â70 chars; description ⤠~150â160 chars (SERP budgets) --> 82 <title>About Opus9 | Simplify & Modernize Logistics</title> 83 <meta name="description" content="Opus9 is simplifying and modernizing logistics with an AI-assisted platform built by freight brokerage professionals, with a free core workspace." /> 84 <meta name="author" content="Opus9, Inc." /> 85 <link rel="canonical" href="https://www.opus9.com/about" /> 86 87 <!-- Calm UI chrome â must match the light and dark canvas tokens in src/index.css. --> 88 <meta name="theme-color" content="#f3f4f6" media="(prefers-color-scheme: light)" /> 89 <meta name="theme-color" content="#0f1015" media="(prefers-color-scheme: dark)" /> 90 <meta name="color-scheme" content="light dark" /> 91 <meta name="keywords" 92 content="AI logistics platform, brokerage-built logistics, free core platform, freight broker software, carrier platform, shipper logistics, logistics service providers, freight operations, dispatch, shipment visibility, EDI, supply chain platform" /> 93 <meta name="geo.region" content="US" /> 94 <meta name="robots" content="index,follow" /> 95 96 <!-- Organization structured data (JSON-LD) for branded search and knowledge panel eligibility --> 97 98 <!-- WebSite schema for sitelinks search box eligibility --> 99 100 101 <!-- Relative paths so favicon works when hosted in a subfolder (e.g. /website/) --> 102 <link rel="icon" href="./favicon.ico" sizes="48x48" /> 103 <link rel="icon" type="image/png" sizes="32x32" href="./favicon.png?v=20260404" /> 104 <link rel="icon" type="image/png" sizes="48x48" href="./favicon-48.png?v=20260404" /> 105 <link rel="icon" type="image/svg+xml" href="./icons/favicon.svg?v=20260404" /> 106 <link rel="apple-touch-icon" href="./apple-touch-icon.png?v=20260404" /> 107 <link rel="apple-touch-icon" sizes="192x192" href="./pwa-icon-192.png?v=20260404" /> 108 <link rel="apple-touch-icon" sizes="512x512" href="./pwa-icon-512.png?v=20260404" /> 109 <link rel="manifest" href="/manifest.webmanifest" /> 110 111 <!-- PWA / Add to Home Screen: open as standalone app (no browser UI on iOS/Android) --> 112 <meta name="mobile-web-app-capable" content="yes" /> 113 <meta name="apple-mobile-web-app-capable" content="yes" /> 114 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> 115 <meta name="apple-mobile-web-app-title" content="Opus9" /> 116 117 <!-- Apple Splash Screens (iOS) --> 118 <link rel="apple-touch-startup-image" href="./pwa-icon-512.png" /> 119 <meta name="apple-mobile-web-app-orientations" content="portrait-any" /> 120 121 <meta property="og:site_name" content="Opus9" /> 122 <meta property="og:locale" content="en_US" /> 123 <meta property="og:type" content="website" /> 124 <meta property="og:url" content="https://www.opus9.com/about" /> 125 126 <link rel="dns-prefetch" href="https://fonts.googleapis.com" /> 127 <link rel="preconnect" href="https://fonts.googleapis.com" /> 128 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 129 <!-- Non-blocking Google Fonts (preload + swap) to reduce render-blocking CSS --> 130 <link rel="preload" as="style" 131 href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800&family=Plus+Jakarta+Sans:wght@700;800&family=Space+Grotesk:wght@600;700&family=Manrope:wght@400;500;600;700&display=swap" 132 onload="this.onload=null;this.rel='stylesheet'" /> 133 <noscript> 134 <link 135 href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;
135800&family=Plus+Jakarta+Sans:wght@700;800&family=Space+Grotesk:wght@600;700&family=Manrope:wght@400;500;600;700&display=swap" 136 rel="stylesheet" /> 137 </noscript> 138 139 <style> 140 *, 141 *::before, 142 *::after { 143 box-sizing: border-box; 144 margin: 0; 145 padding: 0; 146 } 147 148 /* 149 Boot canvas â variables MUST match src/index.css (:root / .dark) 150 and website overrides in src/styles/tokens/portal-map.css. 151 */ 152 :root { 153 --palette-background: 210 40% 98.0392%; 154 --palette-text: 220.9091 39.2857% 10.9804%; 155 --background: var(--palette-background); 156 --foreground: var(--palette-text); 157 } 158 159 html.dark { 160 --background: 224 18% 7%; 161 --foreground: 210 20% 96%; 162 } 163 164 html[data-portal="website"]:not(.dark) { 165 --background: 216 38% 97%; 166 --foreground: 222 47% 11%; 167 } 168 169 html[data-portal="website"].dark { 170 --background: 222 47% 11%; 171 --foreground: 210 40% 98%; 172 } 173 174 html { 175 line-height: 1.5; 176 } 177 178 html, 179 body, 180 #root, 181 #app-loading { 182 background-color: hsl(var(--background)); 183 color: hsl(var(--foreground)); 184 } 185 186 body { 187 font-family: Manrope, Inter, system-ui, -apple-system, sans-serif; 188 min-height: 100vh; 189 -webkit-font-smoothing: antialiased; 190 overflow-x: hidden; 191 max-width: 100vw; 192 } 193 194 #app-loading { 195 position: fixed; 196 inset: 0; 197 z-index: 9999; 198 display: flex; 199 flex-direction: column; 200 align-items: center; 201 justify-content: flex-start; 202 padding-top: calc(20vh + env(safe-area-inset-top, 0px)); 203 transition: opacity 0.3s ease-out, visibility 0.3s ease-out; 204 } 205 206 #app-loading.hidden { 207 opacity: 0; 208 visibility: hidden; 209 pointer-events: none; 210 } 211 212 #app-loading .app-shell-logo { 213 width: 64px; 214 height: 64px; 215 margin-bottom: 16px; 216 } 217 218 #app-loading .app-shell-tagline { 219 font-size: 18px; 220 font-weight: 800; 221 letter-spacing: -0.03em; 222 color: hsl(var(--foreground)); 223 margin-bottom: 32px; 224 } 225 226 #app-loading .app-shell-skeleton { 227 width: min(90vw, 480px); 228 height: 120px; 229 background: linear-gradient(90deg, #e2e8f0 0%, #f1f5f9 50%, #e2e8f0 100%); 230 background-size: 200% 100%; 231 background-position: 100% 0; 232 animation: shimmer 1.2s ease-in-out infinite; 233 border-radius: 12px; 234 } 235 236 @keyframes shimmer { 237 to { 238 background-position: -100% 0; 239 } 240 } 241 242 #root { 243 min-height: 100vh; 244 min-height: 100dvh; 245 } 246 247 /* 248 Static shell is loading-only (#app-loading). Permanent page content is owned by React. 249 No-JS SEO copy lives in <noscript> â do not put tall marketing sections in #root 250 (bootstrap clears #root, and deep links must not flash Home shell content). 251 */ 252 noscript.opus9-noscript { 253 display: block; 254 max-width: 42rem; 255 margin: 0 auto; 256 padding: calc(1.5rem + env(safe-area-inset-top, 0px)) 1rem calc(2rem + env(safe-area-inset-bottom, 0px)); 257 font-family: Manrope, system-ui, sans-serif; 258 color: hsl(var(--foreground)); 259 line-height: 1.65; 260 } 261 262 noscript.opus9-noscript h1 { 263 font-size: 1.75rem; 264 font-weight: 900; 265 letter-spacing: -0.03em; 266 margin-bottom: 0.75rem; 267 } 268 269 noscript.opus9-noscript h2 { 270 font-size: 1.25rem; 271 font-weight: 800; 272 margin: 1.25rem 0 0.5rem; 273 } 274 275 noscript.opus9-noscript p { 276 margin: 0 0 0.75rem; 277 color: rgba(15, 23, 42, 0.8); 278 } 279 280 noscript.opus9-noscript a { 281 color: #1d4ed8; 282 font-weight: 600; 283 } 284 285 #opus9-seo-links { 286 max-width: 42rem; 287 margin: 0 auto; 288 padding: 1.25rem 1rem 2rem; 289 font-family: Manrope, system-ui, sans-serif; 290 line-height: 1.65; 291 } 292 293 #opus9-seo-links a { 294 color: #1d4ed8; 295 font-weight: 600; 296 } 297 298 @media (max-width: 640px) { 299 #app-loading .app-shell-tagline { 300 font-size: 16px; 301 } 302 303 #app-loading .app-shell-skeleton { 304 width: min(92vw, 480px); 305 height: 96px; 306 } 307 308 noscript.opus9-noscript, 309 #opus9-seo-links { 310 padding-left: 1rem; 311 padding-right: 1rem; 312 } 313 314 noscript.opus9-noscript h1 { 315 font-size: 1.5rem; 316 } 317 } 318 319 @media (min-width: 768px) { 320 #app-loading .app-shell-logo { 321 width: 72px; 322 height: 72px; 323 } 324 325 #opus9-seo-links { 326 max-width: 56rem; 327 } 328 } 329 330 @media (prefers-reduced-motion: reduce) { 331 #app-loading .app-shell-skeleton { 332 animation: none; 333 } 334 } 335 </style> 336
336<script> 337 (function () { 338 function syncThemeColor() { 339 try { 340 var rgb = getComputedStyle(document.documentElement).backgroundColor; 341 var match = rgb && rgb.match(/rgba?\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)/); 342 if (!match) return; 343 var hex = '#' + [match[1], match[2], match[3]].map(function (value) { 344 return Math.round(Number(value)).toString(16).padStart(2, '0'); 345 }).join(''); 346 document.querySelectorAll('meta[name="theme-color"]').forEach(function (meta) { 347 meta.setAttribute('content', hex); 348 }); 349 } catch (e) { /* ignore */ } 350 } 351 syncThemeColor(); 352 try { 353 new MutationObserver(syncThemeColor).observe(document.documentElement, { 354 attributes: true, 355 attributeFilter: ['class', 'data-portal'], 356 }); 357 } catch (e) { /* ignore */ } 358 })(); 359 </script>
359 360 361
361<script> 362 (function () { 363 'use strict'; 364 var maxWait = 18000; 365 var isHidden = false; 366 var SW_RECOVERY_KEY = 'o9_sw_recovery_v1'; 367 368 function isE2EMode() { 369 try { 370 var meta = document.querySelector('meta[name="opus9-e2e"]'); 371 if (meta && meta.getAttribute('content') === '1') return true; 372 if (window.location.search.indexOf('e2e=1') !== -1) return true; 373 if (localStorage.getItem('__E2E_TEST_USER_ROLE__')) return true; 374 if (sessionStorage.getItem('opus9:e2e-active')) return true; 375 } catch (e) { /* ignore */ } 376 return false; 377 } 378 379 function hideLoading() { 380 if (isHidden) return; 381 isHidden = true; 382 var el = document.getElementById('app-loading'); 383 if (el) { 384 el.classList.add('hidden'); 385 setTimeout(function () { el.remove(); }, 300); 386 } 387 } 388 389 function showLoadError() { 390 var el = document.getElementById('app-loading'); 391 if (!el || isHidden) return; 392 el.innerHTML = 393 '<div style="text-align:center;padding:24px;max-width:420px;">' + 394 '<p style="color:#64748b;margin-bottom:12px;line-height:1.5;">Unable to load the application. This often happens right after a deploy when an old cached copy is still active.</p>' + 395 '<div style="display:flex;flex-direction:column;gap:10px;align-items:center;">' + 396 '<button type="button" id="o9-retry-load" style="padding:12px 24px;background:#3b82f6;color:#fff;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;width:100%;max-width:280px;">Retry</button>' + 397 '<button type="button" id="o9-clear-cache-reload" style="padding:12px 24px;background:#fff;color:#0f172a;border:1px solid #cbd5e1;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;width:100%;max-width:280px;">Clear cache & reload</button>' + 398 '</div></div>'; 399 var retryBtn = document.getElementById('o9-retry-load'); 400 var clearBtn = document.getElementById('o9-clear-cache-reload'); 401 if (retryBtn) retryBtn.addEventListener('click', function () { window.location.reload(); }); 402 if (clearBtn) clearBtn.addEventListener('click', function () { forceClearCacheAndReload(); }); 403 } 404 405 function forceClearCacheAndReload() { 406 try { sessionStorage.removeItem(SW_RECOVERY_KEY); } catch (e) { } 407 try { sessionStorage.removeItem('o9_boot_recovery_v1'); } catch (e) { } 408 try { sessionStorage.removeItem('o9_boot_mounted_v1'); } catch (e) { } 409 try { sessionStorage.removeItem('o9_chunk_recovery'); } catch (e) { } 410 411 var pending = 0; 412 var reloaded = false; 413 function doReload() { 414 if (reloaded) return; 415 reloaded = true; 416 try { 417 var params = new URLSearchParams(window.location.search || ''); 418 params.delete('__o9_recover'); 419 params.set('__o9_recover', String(Date.now())); 420 var qs = params.toString(); 421 window.location.replace(window.location.origin + window.location.pathname + (qs ? '?' + qs : '') + window.location.hash); 422 } catch (e) { 423 window.location.reload(); 424 } 425 } 426 function tryReload() { 427 if (pending > 0) return; 428 doReload(); 429 } 430 if ('serviceWorker' in navigator) { 431 pending++; 432 navigator.serviceWorker.getRegistrations().then(function (regs) { 433 var inner = regs.length; 434 if (inner === 0) { pending--; tryReload(); return; } 435 regs.forEach(function (r) { 436 r.unregister().then(function () { inner--; if (inner === 0) { pending--; tryReload(); } }) 437 .catch(function () { inner--; if (inner === 0) { pending--; tryReload(); } }); 438 }); 439 }).catch(function () { pending--; tryReload(); }); 440 } 441 if ('caches' in window) { 442 pending++; 443 caches.keys().then(function (names) { 444 var inner = names.length; 445 if (inner === 0) { pending--; tryReload(); return; }
446 names.forEach(function (n) { 447 caches.delete(n).then(function () { inner--; if (inner === 0) { pending--; tryReload(); } }) 448 .catch(function () { inner--; if (inner === 0) { pending--; tryReload(); } }); 449 }); 450 }).catch(function () { pending--; tryReload(); }); 451 } 452 if (pending === 0) doReload(); 453 } 454 455 /** 456 * Clear stale service worker caches then reload once. 457 * Handles cases where a Workbox SW serves old cached JS that crashes before 458 * window.__appScriptLoaded is set (e.g. after a deploy with breaking changes). 459 */ 460 function clearSwAndReload() { 461 var alreadyTried = false; 462 try { alreadyTried = !!sessionStorage.getItem(SW_RECOVERY_KEY); } catch (e) { } 463 if (alreadyTried) return false; // only try once per session 464 try { sessionStorage.setItem(SW_RECOVERY_KEY, '1'); } catch (e) { } 465 466 var reloaded = false; 467 var pending = 0; 468 469 // Use a cache-busting URL so the browser HTTP cache is bypassed too, 470 // not just the service worker cache. 471 function doReload() { 472 if (reloaded) return; 473 reloaded = true; 474 try { 475 var search = window.location.search || ''; 476 var params = new URLSearchParams(search); 477 params.delete('__o9_recover'); 478 params.set('__o9_recover', String(Date.now())); 479 if (params.get('e2e') !== '1' && isE2EMode()) { 480 params.set('e2e', '1'); 481 } 482 var qs = params.toString(); 483 var url = window.location.origin + window.location.pathname + (qs ? '?' + qs : ''); 484 window.location.replace(url); 485 } catch (e) { 486 window.location.reload(); 487 } 488 } 489 490 function tryReload() { 491 if (pending > 0) return; 492 doReload(); 493 } 494 495 if ('serviceWorker' in navigator) { 496 pending++; 497 navigator.serviceWorker.getRegistrations().then(function (regs) { 498 var inner = regs.length; 499 if (inner === 0) { pending--; tryReload(); return; } 500 regs.forEach(function (r) { 501 r.unregister().then(function () { 502 inner--; 503 if (inner === 0) { pending--; tryReload(); } 504 }).catch(function () { 505 inner--; 506 if (inner === 0) { pending--; tryReload(); } 507 }); 508 }); 509 }).catch(function () { pending--; tryReload(); }); 510 } 511 512 if ('caches' in window) { 513 pending++; 514 caches.keys().then(function (names) { 515 var inner = names.length; 516 if (inner === 0) { pending--; tryReload(); return; } 517 names.forEach(function (n) { 518 caches.delete(n).then(function () { 519 inner--; 520 if (inner === 0) { pending--; tryReload(); } 521 }).catch(function () { 522 inner--; 523 if (inner === 0) { pending--; tryReload(); } 524 }); 525 }); 526 }).catch(function () { pending--; tryReload(); }); 527 } 528 529 if (pending === 0) doReload(); 530 return true; 531 } 532 533 function init() { 534 // If the entry script never runs (blocked network, wrong path, stale SW cache), 535 // attempt a SW cache clear + reload once before showing the error UI. 536 // Also fires if the script loaded but React never mounted (crash before mount). 537 // Disabled in E2E/CI â recovery reloads strip auth/query state and flake Playwright. 538 if (!isE2EMode()) { 539 setTimeout(function () { 540 var rootMounted = !!( 541 document.getElementById('root') && 542 document.getElementById('root').querySelector('[data-testid="react-root"]') 543 ); 544 if (!window.__appScriptLoaded || !rootMounted) { 545 // First attempt: clear stale SW caches and do a cache-busting reload 546 var willReload = clearSwAndReload(); 547 if (!willReload) { 548 // Already tried SW recovery; show user-facing error 549 showLoadError(); 550 } 551 } 552 }, maxWait); 553 } 554 // Recover from a stuck boot: overlay was dismissed but React never mounted
554into #root 555 if (!isE2EMode()) { 556 setTimeout(function () { 557 var root = document.getElementById('root'); 558 if (!root || root.querySelector('[data-testid="react-root"]')) return; 559 if (!root.innerHTML || root.innerHTML.trim() === '') { 560 root.innerHTML = 561 '<div style="display:flex;align-items:center;justify-content:center;min-height:100vh;font-family:system-ui,Inter,sans-serif;padding:24px;background:hsl(220 14% 96%);">' + 562 '<div style="text-align:center;max-width:420px;">' + 563 '<h1 style="font-size:20px;margin-bottom:12px;color:#0f172a;">Application did not load</h1>' + 564 '<p style="color:#64748b;margin-bottom:20px;line-height:1.5;">Try refreshing. If this persists after a deploy, use <strong>Clear cache & reload</strong> below or unregister the service worker in DevTools (Application tab), then reload.</p>' + 565 '<div style="display:flex;flex-direction:column;gap:10px;align-items:center;">' + 566 '<button type="button" id="o9-root-retry" style="padding:12px 24px;background:#3b82f6;color:#fff;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;width:100%;max-width:280px;">Reload</button>' + 567 '<button type="button" id="o9-root-clear-cache" style="padding:12px 24px;background:#fff;color:#0f172a;border:1px solid #cbd5e1;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;width:100%;max-width:280px;">Clear cache & reload</button>' + 568 '</div></div></div>'; 569 hideLoading(); 570 var rootRetry = document.getElementById('o9-root-retry'); 571 var rootClear = document.getElementById('o9-root-clear-cache'); 572 if (rootRetry) rootRetry.addEventListener('click', function () { window.location.reload(); }); 573 if (rootClear) rootClear.addEventListener('click', function () { forceClearCacheAndReload(); }); 574 } 575 }, 22000); 576 } 577 } 578 579 if (document.readyState === 'loading') { 580 document.addEventListener('DOMContentLoaded', init); 581 } else { 582 init(); 583 } 584 })(); 585 </script>
585 586 587 588 <meta property="og:image" content="https://www.opus9.com/og/corporate-about.png" /> 589 <meta property="og:image:width" content="1200" /> 590 <meta property="og:image:height" content="630" /> 591 <meta property="og:image:alt" content="About Opus9 â Opus9" /> 592 <meta name="twitter:card" content="summary_large_image" /> 593 <meta name="twitter:site" content="@opus9" /> 594 <meta name="twitter:image" content="https://www.opus9.com/og/corporate-about.png" /> 595 <meta name="twitter:image:alt" content="About Opus9 â Opus9" /> 596 <meta property="og:title" content="About Opus9 | Simplify & Modernize Logistics" /> 597 <meta name="twitter:title" content="About Opus9 | Simplify & Modernize Logistics" /> 598 <meta property="og:description" content="Opus9 is simplifying and modernizing logistics with an AI-assisted platform built by freight brokerage professionals, with a free core workspace." /> 599 <meta name="twitter:description" content="Opus9 is simplifying and modernizing logistics with an AI-assisted platform built by freight brokerage professionals, with a free core workspace." /> 600
600<script type="module" crossorigin src="/assets/index-DOSukPAO.js"></script>
600 601 <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-CNC7AqOf.js"> 602 <link rel="modulepreload" crossorigin href="/assets/vendor-query-BcxJewYy.js"> 603 <link rel="modulepreload" crossorigin href="/assets/vendor-supabase-2T87MG0C.js"> 604
604<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","@id":"https://www.opus9.com/#organization","name":"Opus9, Inc.","legalName":"Opus9, Inc.","alternateName":"Opus9","url":"https://www.opus9.com","logo":"https://www.opus9.com/pwa-icon-512.png","image":"https://www.opus9.com/og/corporate.png","description":"Brokerage-built AI-powered logistics platform with a free core offering for freight operations.","industry":"Logistics Technology","sameAs":["https://www.linkedin.com/company/opus9","https://twitter.com/opus9","https://www.facebook.com/opus9"],"knowsAbout":["Brokerage-built, AI-powered logistics platform","Free core platform for freight operations","Freight brokerage building long-term logistics technology","Connected platform for brokers, carriers, shippers, and logistics service providers","Full truckload (FTL) brokerage","Less-than-truckload (LTL)","Intermodal and rail","Air and ocean freight arranged through licensed third-party providers (on request)","Cross-border requests reviewed case by case","Warehousing and transloading through partners (on request)","AI-powered logistics platform","Freight operations and dispatch workflows","CRM and partner intelligence","Role-based portals (broker, carrier, shipper)","AI-assisted dispatch and shipment-matching workflows (planned; humans approve)","EDI (X12/EDIFACT) and REST APIs"],"areaServed":"United States freight brokerage; international air and ocean requests reviewed and arranged through licensed providers.","contactPoint":{"@type":"ContactPoint","contactType":"sales","url":"https://www.opus9.com/contact","availableLanguage":["English"]}}</script>
604 605
605<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","@id":"https://www.opus9.com/#website","url":"https://www.opus9.com","name":"Opus9","description":"Brokerage-built AI-powered logistics platform with a free core offering for freight operations.","publisher":{"@id":"https://www.opus9.com/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.opus9.com/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}</script>
605 606
606<script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","@id":"https://www.opus9.com/#software","name":"Opus9","applicationCategory":"BusinessApplication","applicationSubCategory":"Logistics Platform","operatingSystem":"Web","url":"https://www.opus9.com","description":"Brokerage-built AI-powered logistics platform with a free core offering for freight operations. Help brokers, carriers, shippers, and logistics service providers manage freight, dispatch, visibility, documents, and financial workflows from one connected platform.","offers":{"@type":"Offer","price":"0","priceCurrency":"USD","description":"Free core platform access; freight services and premium offerings quoted separately."},"provider":{"@id":"https://www.opus9.com/#organization"},"featureList":["AI-powered logistics platform","Freight operations and dispatch workflows","CRM and partner intelligence","Role-based portals (broker, carrier, shipper)","AI-assisted dispatch and shipment-matching workflows (planned; humans approve)","EDI (X12/EDIFACT) and REST APIs"]}</script>
606 607
607<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.opus9.com/"},{"@type":"ListItem","position":2,"name":"About","item":"https://www.opus9.com/about"}]}</script>
607 608</head> 609 610<body> 611 <div id="app-loading" data-testid="app-loading-shell" data-legacy-testid="error-unauthorized" 612 aria-label="Loading application" role="status"> 613 <img class="app-shell-logo" src="./logo-opus9.svg" alt="Opus9" width="64" height="64" /> 614 <p class="app-shell-tagline">AI-powered logistics platform</p> 615 <div class="app-shell-skeleton" aria-hidden="true"></div> 616 </div> 617 <!-- 618 Mount target only. bootstrap.tsx clears #root before createRoot. 619 Do not put permanent marketing content here â it vanishes on boot and flashes Home on deep links. 620 Canonical post-mount copy: React pages (e.g. HomeMultimodalFreight via homeMultimodalCopy.ts). 621 --> 622 <div id="root" data-static-shell="mount-target"></div> 623 <!-- Crawlable links for scanners that skip JS and <noscript>. Removed after React paints. --> 624 <nav id="opus9-seo-links" data-testid="opus9-seo-links" aria-label="Freight resources"> 625 <p> 626 <a href="/">Home</a> · 627 <a href="/quote">Freight quotes</a> · 628 <a href="/platform/tms">TMS</a> · 629 <a href="/solutions/full-truckload">Full truckload</a> · 630 <a href="/solutions/ltl-freight">LTL freight</a> · 631 <a href="/help">Help center</a> · 632 <a href="/about">About Opus9</a> · 633 <a href="/contact">Contact</a> 634 </p> 635 <p> 636 Official references: 637 <a href="https://www.fmcsa.dot.gov/" rel="noopener noreferrer">FMCSA</a> · 638 <a href="https://safer.fmcsa.dot.gov/" rel="noopener noreferrer">FMCSA SAFER</a> · 639 <a href="https://www.bts.gov/topics/freight-transportation" rel="noopener noreferrer">BTS freight statistics</a> 640 </p> 641 </nav> 642 <!-- No-JS / non-executing crawlers: mirror of src/lib/website/homeMultimodalCopy.ts --> 643 <noscript id="opus9-prerender-noscript"> 644 <article> 645 <h1>About Opus9 | Simplify & Modernize Logistics</h1> 646 <p>Opus9 is simplifying and modernizing logistics with an AI-assisted platform built by freight brokerage professionals, with a free core workspace.</p> 647 <p>Brokerage-built AI-powered logistics platform with a free core offering for freight operations. Help brokers, carriers, shippers, and logistics service providers manage freight, dispatch, visibility, documents, and financial workflows from one connected platform.</p> 648 <p><strong>What Opus9 is:</strong> Brokerage-built, AI-powered logistics platform; Free core platform for freight operations; Freight brokerage building long-term logistics technology; Connected platform for brokers, carriers, shippers, and logistics service providers</p> 649 <p><strong>Who we serve:</strong> Freight brokers, Shippers and logistics service providers, Carriers and owner-operators, Drivers, EDI and API integration partners</p> 650 651 <nav aria-label="Primary"><a href="/">Home</a> · <a href="/products">Products</a> · <a href="/industries">Industries</a> · <a href="/platform/tms">TMS</a> · <a href="/platform/crm">CRM</a> · <a href="/learn/tms">TMS Learning</a> · <a href="/services">Solutions</a> · <a href="/contact">Contact</a> · <a href="https://www.fmcsa.dot.gov/" rel="noopener noreferrer">FMCSA</a> · <a href="https://safer.fmcsa.dot.gov/" rel="noopener noreferrer">FMCSA SAFER</a> · <a href="https://www.bts.gov/topics/freight-transportation" rel="noopener noreferrer">BTS freight statistics</a></nav> 652 <p>JavaScript is required for the full Opus9 application experience. Canonical page: <a href="https://www.opus9.com/about">https://www.opus9.com/about</a></p> 653 </article> 654 </noscript> 655 <!-- Vite replaces this script path at build time using the configured base --> 656</body> 657 658</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.