1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 <link rel="preconnect" href="https://ccbsyqtoavtudkknlvcm.supabase.co" crossorigin> 7 <link rel="dns-prefetch" href="https://ccbsyqtoavtudkknlvcm.supabase.co"> 8 <link rel="icon" type="image/png" sizes="32x32" href="/Novaco_Favicon.png?v=5"> 9 <link rel="icon" type="image/png" sizes="192x192" href="/Novaco_Favicon.png?v=5"> 10 <link rel="shortcut icon" href="/Novaco_Favicon.png?v=5"> 11 <link rel="apple-touch-icon" sizes="180x180" href="/Novaco_Favicon.png?v=5"> 12 <link rel="manifest" href="/site.webmanifest"> 13 <title>Novaco â Virtual Workforce for Automotive Dealers</title> 14 <meta name="description" content="Novaco adds real working capacity to automotive retailers â handling conversations, bookings and customer requests automatically."> 15 <meta name="author" content="Novaco" /> 16 17 18 19 <meta property="og:type" content="website" /> 20 21 <meta name="twitter:card" content="summary_large_image" /> 22 <meta name="twitter:site" content="@Novaco" /> 23 <meta property="og:title" content="Novaco â Virtual Workforce for Automotive Dealers"> 24 <meta name="twitter:title" content="Novaco â Virtual Workforce for Automotive Dealers"> 25 <meta property="og:description" content="Novaco adds real working capacity to automotive retailers â handling conversations, bookings and customer requests automatically."> 26 <meta name="twitter:description" content="Novaco adds real working capacity to automotive retailers â handling conversations, bookings and customer requests automatically."> 27 <meta property="og:image" content="https://pub-bb2e103a32db4e198524a2e9ed8f35b4.r2.dev/acd7dbb0-f8c0-427d-9de3-e047c24e09eb/id-preview-2fb39675--56601b8b-c22c-430c-a04f-641959900c8e.lovable.app-1774629190281.png"> 28 <meta name="twitter:image" content="https://pub-bb2e103a32db4e198524a2e9ed8f35b4.r2.dev/acd7dbb0-f8c0-427d-9de3-e047c24e09eb/id-preview-2fb39675--56601b8b-c22c-430c-a04f-641959900c8e.lovable.app-1774629190281.png"> 29 30 <!-- Self-referencing canonical + hreflang, emitted before the app boots so crawlers 31 never see a page without a user-selected canonical. React (Helmet) overwrites 32 these with the same values once the route renders. --> 33
33<script> 34 (function () { 35 var SITE = "https://novaco.ai"; 36 var LANGS = ["en", "nl", "fr", "de", "it", "es", "pt", "ar"]; 37 var DEFAULT_LANG = "en"; 38 39 var path = window.location.pathname.replace(/\/+$/, ""); 40 var parts = path.split("/").filter(Boolean); 41 var lang = LANGS.indexOf(parts[0]) !== -1 ? parts.shift() : DEFAULT_LANG; 42 var rest = parts.length ? "/" + parts.join("/") : ""; 43 44 // Pages that must never be canonicalised/indexed. 45 if (/^\/(demo|admin|scan|unsubscribe|linkedin-banner|stand-design|login)(\/|$)/.test(path)) { 46 var robots = document.createElement("meta"); 47 robots.setAttribute("name", "robots"); 48 robots.setAttribute("content", "noindex,nofollow"); 49 document.head.appendChild(robots); 50 return; 51 } 52 53 document.documentElement.setAttribute("lang", lang); 54 55 function link(rel, href, hreflang) { 56 var el = document.createElement("link"); 57 el.setAttribute("rel", rel); 58 el.setAttribute("href", href); 59 el.setAttribute("data-early-seo", ""); 60 if (hreflang) el.setAttribute("hreflang", hreflang); 61 document.head.appendChild(el); 62 } 63 64 var canonical = SITE + "/" + lang + rest; 65 link("canonical", canonical); 66 for (var i = 0; i < LANGS.length; i++) { 67 link("alternate", SITE + "/" + LANGS[i] + rest, LANGS[i]); 68 } 69 link("alternate", SITE + "/" + DEFAULT_LANG + rest, "x-default"); 70 71 var ogUrl = document.createElement("meta"); 72 ogUrl.setAttribute("property", "og:url"); 73 ogUrl.setAttribute("content", canonical); 74 ogUrl.setAttribute("data-early-seo", ""); 75 document.head.appendChild(ogUrl); 76 })(); 77 </script>
77 78
78<script type="module" crossorigin src="/assets/index-Be_2bHJP.js"></script>
78 79 <link rel="stylesheet" crossorigin href="/assets/index-CIKp7DF7.css">
80<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
80</head> 81 82 83 <body> 84 <style> 85 #boot-splash{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#f7fbfb 0%,#edf7f2 100%);z-index:9999;transition:opacity .35s ease,visibility .35s ease} 86 #boot-splash.hide{opacity:0;visibility:hidden;pointer-events:none} 87 #boot-splash .boot-card{display:flex;flex-direction:column;align-items:center;gap:14px;padding:24px 28px;border-radius:24px;background:rgba(255,255,255,.72);border:1px solid rgba(0,64,79,.08);box-shadow:0 12px 40px rgba(0,64,79,.08);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)} 88 #boot-splash .logo{width:96px;height:96px;display:block} 89 #boot-splash .status{font:500 13px/1.4 Inter,system-ui,sans-serif;color:rgba(0,64,79,.72)} 90 #boot-splash .spinner{width:38px;height:38px;border:3px solid rgba(0,64,79,.10);border-top-color:#07cc61;border-right-color:#00404f;border-radius:999px;animation:boot-spin .8s linear infinite} 91 #boot-splash .progress{position:relative;overflow:hidden;width:160px;height:4px;border-radius:999px;background:rgba(0,64,79,.08)} 92 #boot-splash .progress::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,#07cc61 0%,#13a870 50%,#00404f 100%);animation:boot-slide 1.25s ease-in-out infinite} 93 @keyframes boot-spin{to{transform:rotate(360deg)}} 94 @keyframes boot-slide{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}} 95 @media (prefers-reduced-motion:reduce){#boot-splash,#boot-splash .spinner,#boot-splash .progress::after{animation:none;transition:none}} 96 </style> 97 <div id="autochat-root"></div> 98 <div id="autochat-chat-overlay"></div> 99 <div id="boot-splash" aria-live="polite" aria-busy="true"> 100 <div class="boot-card"> 101 <img class="logo" src="/Novaco_Favicon_192.png" alt="Novaco" width="96" height="96" /> 102 <div class="spinner" role="status" aria-label="Loading"></div> 103 <div class="status">Loading your virtual workforceâ¦</div> 104 <div class="progress" aria-hidden="true"></div> 105 </div> 106 </div> 107 <div id="root"></div> 108
108<script> 109 (function(){ 110 window.__hideBootSplash = function(){ 111 var splash = document.getElementById('boot-splash'); 112 if (!splash || splash.classList.contains('hide')) return; 113 splash.classList.add('hide'); 114 window.setTimeout(function(){ splash.remove(); }, 350); 115 }; 116 117 window.setTimeout(function(){ 118 if (window.__hideBootSplash) window.__hideBootSplash(); 119 }, 10000); 120 })(); 121 </script>
121 122 123
123<script> 124 (function(){ 125 if (/\/demo\//.test(window.location.pathname)) return; 126 127 var loaded = false; 128 var pathLang = window.location.pathname.split("/")[1]; 129 var supportedLangs = ["en","nl","fr","de","it","es","pt","ar"]; 130 var locale = supportedLangs.indexOf(pathLang) !== -1 ? pathLang : "en"; 131 var autochatConfig = { 132 assistantId: "a29919b3-c2fa-4df5-b1be-997c321e4544", 133 accessToken: "ec66d9d4efbf468b2e6b22528fd0fcf0c5d3564c162f034ca2f529596c75ace34acb6e4fd67cb6e5ca045712aa08e2b73a63d2c5b6e22ed0e67a5563", 134 locale: locale, 135 }; 136 137 function loadAutochat() { 138 if (loaded) return; 139 loaded = true; 140 var s = document.createElement("script"); 141 s.src = "https://static.chatclient.autochat.ai/release/autochat.js"; 142 s.async = true; 143 s.defer = true; 144 s.addEventListener("load", function(){ 145 window.autochat = autochat; 146 autochat.init(autochatConfig); 147 }); 148 document.body.appendChild(s); 149 } 150 151 window.__loadAutochat = loadAutochat; 152 153 // Load on first real interaction (chat opens instantly when user actually wants it), 154 // or as a hard fallback after 8s so the widget eventually appears for passive viewers. 155 window.addEventListener("pointerdown", loadAutochat, { once: true, passive: true }); 156 window.addEventListener("touchstart", loadAutochat, { once: true, passive: true }); 157 window.addEventListener("keydown", loadAutochat, { once: true }); 158 window.addEventListener("scroll", loadAutochat, { once: true, passive: true }); 159 window.setTimeout(loadAutochat, 8000); 160 })() 161 </script>
161 162 </body> 163</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.