PageSourceSearch

https://novaco.ai/

html novaco.ai collected 2026-10-05 12:44:15 UTC 8,695 bytes, 163 lines download raw bytes

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.