Heroku
tcp/443 tcp/80
Exposing Swagger/OpenAPI documentation is primarily a risk if your API has underlying security flaws, as it gives attackers a precise roadmap to find them.
Those detail every endpoint, parameter, and data model, making it easier to discover and exploit vulnerabilities like broken access control or injection points.
While a perfectly secure API mitigates the danger, protecting your documentation is a critical layer of defense that forces attackers to work without a map.
Severity: info
Fingerprint: 5733ddf49ff49cd1bf890109bf890109bf890109bf890109bf890109bf890109
Public Swagger UI/API detected at path: /api-docs/swagger.json
Exposing Swagger/OpenAPI documentation is primarily a risk if your API has underlying security flaws, as it gives attackers a precise roadmap to find them.
Those detail every endpoint, parameter, and data model, making it easier to discover and exploit vulnerabilities like broken access control or injection points.
While a perfectly secure API mitigates the danger, protecting your documentation is a critical layer of defense that forces attackers to work without a map.
Severity: info
Fingerprint: 5733ddf49ff49cd1bf890109bf890109bf890109bf890109bf890109bf890109
Public Swagger UI/API detected at path: /api-docs/swagger.json
Exposing Swagger/OpenAPI documentation is primarily a risk if your API has underlying security flaws, as it gives attackers a precise roadmap to find them.
Those detail every endpoint, parameter, and data model, making it easier to discover and exploit vulnerabilities like broken access control or injection points.
While a perfectly secure API mitigates the danger, protecting your documentation is a critical layer of defense that forces attackers to work without a map.
Severity: info
Fingerprint: 5733ddf49ff49cd1bf890109bf890109bf890109bf890109bf890109bf890109
Public Swagger UI/API detected at path: /api-docs/swagger.json
Exposing Swagger/OpenAPI documentation is primarily a risk if your API has underlying security flaws, as it gives attackers a precise roadmap to find them.
Those detail every endpoint, parameter, and data model, making it easier to discover and exploit vulnerabilities like broken access control or injection points.
While a perfectly secure API mitigates the danger, protecting your documentation is a critical layer of defense that forces attackers to work without a map.
Severity: info
Fingerprint: 5733ddf49ff49cd1bf890109bf890109bf890109bf890109bf890109bf890109
Public Swagger UI/API detected at path: /api-docs/swagger.json
Open service 15.197.149.68:80 · askcolette.ai
2026-01-10 00:18
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 6196
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Sat, 10 Jan 2026 00:19:40 GMT
Etag: W/"1834-19ba48a3e50"
Last-Modified: Fri, 09 Jan 2026 20:54:42 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(self), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=9HqYa3KM1nU6mUq%2FqftzPI30P%2FWvGs7g9wOw7bWgVFU%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1768004380"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=9HqYa3KM1nU6mUq%2FqftzPI30P%2FWvGs7g9wOw7bWgVFU%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1768004380"
Server: Heroku
Strict-Transport-Security: max-age=15552000; includeSubDomains
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 3c65eae0-4dea-4c1c-976a-afb755cfeabf
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts - optimized loading -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<!-- Preload Inter font file to prevent CLS -->
<link rel="preload" href="https://fonts.gstatic.com/s/inter/v18/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZ9hiJ-Ek-_EeA.woff2" as="font" type="font/woff2" crossorigin>
<!-- Non-render-blocking font stylesheet -->
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet"></noscript>
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-0JbCljqm.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-BCQkYpw3.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root"></div>
<!-- Elegant loading state - outside root so React doesn't immediately wipe it -->
<!-- Matches LoadingSpinner component: size="xl" variant="elegant" -->
<div id="app-loading" style="
position: fixed;
inset: 0;
z-index: 9999;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 16px;
background-color: #000;
color: rgba(255,255,255,0.6);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<!-- Elegant single-ring spinner - matches xl size (80px = w-20) -->
<div style="position: relative; width: 80px; height: 80px;">
<!-- Single smooth rotating ring -->
<div style="
position: absolute;
inset: 0;
border-radius: 50%;
background: conic-gradient(from 0deg, transparent 0%, rgba(16, 185, 129, 0.8) 25%, rgba(16, 185, 129, 0.4) 50%, transparent 75%);
animation: spin-slow 3s linear infinite;
"></div>
<!-- Inner mask for ring effect -->
<div style="
pos
Open service 15.197.149.68:443 · www.askcolette.ai
2026-01-09 21:13
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 6196
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Fri, 09 Jan 2026 21:13:45 GMT
Etag: W/"1834-19ba48a3e50"
Last-Modified: Fri, 09 Jan 2026 20:54:42 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(self), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=1eeiW2x%2BDVizz6guEbrxLrfgqSlhpvvM8Qzr87vNpiY%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1767993225"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=1eeiW2x%2BDVizz6guEbrxLrfgqSlhpvvM8Qzr87vNpiY%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1767993225"
Server: Heroku
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: d5f15844-89dc-4c26-825e-7a5fb6e4240d
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts - optimized loading -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<!-- Preload Inter font file to prevent CLS -->
<link rel="preload" href="https://fonts.gstatic.com/s/inter/v18/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZ9hiJ-Ek-_EeA.woff2" as="font" type="font/woff2" crossorigin>
<!-- Non-render-blocking font stylesheet -->
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet"></noscript>
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-0JbCljqm.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-BCQkYpw3.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root"></div>
<!-- Elegant loading state - outside root so React doesn't immediately wipe it -->
<!-- Matches LoadingSpinner component: size="xl" variant="elegant" -->
<div id="app-loading" style="
position: fixed;
inset: 0;
z-index: 9999;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 16px;
background-color: #000;
color: rgba(255,255,255,0.6);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<!-- Elegant single-ring spinner - matches xl size (80px = w-20) -->
<div style="position: relative; width: 80px; height: 80px;">
<!-- Single smooth rotating ring -->
<div style="
position: absolute;
inset: 0;
border-radius: 50%;
background: conic-gradient(from 0deg, transparent 0%, rgba(16, 185, 129, 0.8) 25%, rgba(16, 185, 129, 0.4) 50%, transparent 75%);
animation: spin-slow 3s linear infinite;
"></div>
<!-- Inner mask for ring effect -->
<div style="
pos
Open service 3.33.241.96:443 · askcolette.ai
2026-01-09 20:10
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 5621
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Fri, 09 Jan 2026 20:10:12 GMT
Etag: W/"15f5-19ba3e66cd0"
Last-Modified: Fri, 09 Jan 2026 17:55:46 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(self), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=VphyuGjNGQ17gul9QXw73BQP%2B8WMNODMKzP2nV3xfwI%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1767989412"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=VphyuGjNGQ17gul9QXw73BQP%2B8WMNODMKzP2nV3xfwI%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1767989412"
Server: Heroku
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 443708fa-1e0b-40d2-9193-31bed995a589
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-DCh1e90_.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-CRifuhfr.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root"></div>
<!-- Elegant loading state - outside root so React doesn't immediately wipe it -->
<!-- Matches LoadingSpinner component: size="xl" variant="elegant" -->
<div id="app-loading" style="
position: fixed;
inset: 0;
z-index: 9999;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 16px;
background-color: #000;
color: rgba(255,255,255,0.6);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<!-- Elegant single-ring spinner - matches xl size (80px = w-20) -->
<div style="position: relative; width: 80px; height: 80px;">
<!-- Single smooth rotating ring -->
<div style="
position: absolute;
inset: 0;
border-radius: 50%;
background: conic-gradient(from 0deg, transparent 0%, rgba(16, 185, 129, 0.8) 25%, rgba(16, 185, 129, 0.4) 50%, transparent 75%);
animation: spin-slow 3s linear infinite;
"></div>
<!-- Inner mask for ring effect -->
<div style="
position: absolute;
inset: 3px;
border-radius: 50%;
background: #000;
"></div>
<!-- Subtle static glow -->
<div style="
position: absolute;
inset: -10%;
border-radius: 50%;
opacity: 0.3;
background: radial-gradient(circle, rgba(16, 185, 129, 0.3) 0%, transparent 60%);
"></div>
</div>
<style>
@keyframes spin-slow { to { transform: rotate(360deg); } }
</style>
</div>
Open service 3.33.241.96:80 · www.askcolette.ai
2026-01-09 19:17
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 5621
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Fri, 09 Jan 2026 19:18:46 GMT
Etag: W/"15f5-19ba3e66cd0"
Last-Modified: Fri, 09 Jan 2026 17:55:46 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(self), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=uBau%2FhOfaB3ValzY7mJW1EAkwJW00Vq521SWQnRKEXg%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1767986326"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=uBau%2FhOfaB3ValzY7mJW1EAkwJW00Vq521SWQnRKEXg%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1767986326"
Server: Heroku
Strict-Transport-Security: max-age=15552000; includeSubDomains
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 542b7ceb-d22e-40dc-9a4d-cbef6d2254e8
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-DCh1e90_.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-CRifuhfr.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root"></div>
<!-- Elegant loading state - outside root so React doesn't immediately wipe it -->
<!-- Matches LoadingSpinner component: size="xl" variant="elegant" -->
<div id="app-loading" style="
position: fixed;
inset: 0;
z-index: 9999;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 16px;
background-color: #000;
color: rgba(255,255,255,0.6);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<!-- Elegant single-ring spinner - matches xl size (80px = w-20) -->
<div style="position: relative; width: 80px; height: 80px;">
<!-- Single smooth rotating ring -->
<div style="
position: absolute;
inset: 0;
border-radius: 50%;
background: conic-gradient(from 0deg, transparent 0%, rgba(16, 185, 129, 0.8) 25%, rgba(16, 185, 129, 0.4) 50%, transparent 75%);
animation: spin-slow 3s linear infinite;
"></div>
<!-- Inner mask for ring effect -->
<div style="
position: absolute;
inset: 3px;
border-radius: 50%;
background: #000;
"></div>
<!-- Subtle static glow -->
<div style="
position: absolute;
inset: -10%;
border-radius: 50%;
opacity: 0.3;
background: radial-gradient(circle, rgba(16, 185, 129, 0.3) 0%, transparent 60%);
"></div>
</div>
<style>
@keyframes spin-slow { to { transform: rotate(360deg); } }
</style>
</div>
Open service 3.33.241.96:80 · www.askcolette.ai
2026-01-02 23:01
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Fri, 02 Jan 2026 23:01:10 GMT
Etag: W/"12b7-19b80e03158"
Last-Modified: Fri, 02 Jan 2026 22:42:15 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(self), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=5JyAEIlU4Bl9b%2BDhpURR5UBHclZLtLFlah5epqiME0s%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1767394870"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=5JyAEIlU4Bl9b%2BDhpURR5UBHclZLtLFlah5epqiME0s%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1767394870"
Server: Heroku
Strict-Transport-Security: max-age=15552000; includeSubDomains
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: a368f364-7f64-4b47-8b38-42b3e05b42ea
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-KHQ_Q7_X.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-CcfrGrAm.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {
Open service 15.197.149.68:80 · askcolette.ai
2026-01-02 20:29
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Fri, 02 Jan 2026 20:29:16 GMT
Etag: W/"12b7-19b80179db0"
Last-Modified: Fri, 02 Jan 2026 19:03:10 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(self), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=Ao8k98Stuex6sxYhINcxlhW%2BbhpOAhQ3IvnqXMnIpJk%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1767385756"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=Ao8k98Stuex6sxYhINcxlhW%2BbhpOAhQ3IvnqXMnIpJk%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1767385756"
Server: Heroku
Strict-Transport-Security: max-age=15552000; includeSubDomains
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 0b82df04-99f6-4d9c-a22b-9b72b48a475e
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-BdMZlz1I.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-Cr3OugMo.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {
Open service 3.33.241.96:443 · askcolette.ai
2026-01-02 18:08
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Fri, 02 Jan 2026 18:08:17 GMT
Etag: W/"12b7-19b7f9cdfd0"
Last-Modified: Fri, 02 Jan 2026 16:49:06 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(self), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=PbzrXGnOc53bAdO%2B0AD8TVvJT7pD41h9ZtzELhlHa3M%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1767377297"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=PbzrXGnOc53bAdO%2B0AD8TVvJT7pD41h9ZtzELhlHa3M%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1767377297"
Server: Heroku
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 40992eae-cd98-44f7-ab28-db55622dfe4f
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-D8OkDpVj.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-BeFVvuD4.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {
Open service 15.197.149.68:443 · www.askcolette.ai
2026-01-02 14:52
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Fri, 02 Jan 2026 14:52:36 GMT
Etag: W/"12b7-19b7f236a10"
Last-Modified: Fri, 02 Jan 2026 14:36:26 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(self), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=thq2PLtI2IAxAWhj35AoERJvjHuBP71k2bnYCcFgDKs%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1767365556"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=thq2PLtI2IAxAWhj35AoERJvjHuBP71k2bnYCcFgDKs%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1767365556"
Server: Heroku
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 24b04087-fced-4e47-8746-3600271a10c3
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-uMYoyi5-.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-BeFVvuD4.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {
Open service 3.33.241.96:80 · www.askcolette.ai
2025-12-23 07:56
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Tue, 23 Dec 2025 07:56:25 GMT
Etag: W/"12b7-19b47fed268"
Last-Modified: Mon, 22 Dec 2025 21:37:21 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=hZWkulhced69d%2FWadI1oDYhtvSK34jehP3fAV1qmwNI%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1766476585"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=hZWkulhced69d%2FWadI1oDYhtvSK34jehP3fAV1qmwNI%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1766476585"
Server: Heroku
Strict-Transport-Security: max-age=15552000; includeSubDomains
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 02ccf53c-3d38-4632-b205-a91d05fb8e21
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-Di__vqSj.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-D3q5VliL.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {
Open service 15.197.149.68:80 · askcolette.ai
2025-12-23 02:48
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Tue, 23 Dec 2025 02:48:52 GMT
Etag: W/"12b7-19b47fed268"
Last-Modified: Mon, 22 Dec 2025 21:37:21 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=kcVvjYymkmILoZP0Vake3Mg23N3Fxl6it7BZQrgqQrA%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1766458132"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=kcVvjYymkmILoZP0Vake3Mg23N3Fxl6it7BZQrgqQrA%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1766458132"
Server: Heroku
Strict-Transport-Security: max-age=15552000; includeSubDomains
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 875eb5c0-d5bf-49be-8482-33644742ee69
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-Di__vqSj.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-D3q5VliL.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {
Open service 3.33.241.96:443 · askcolette.ai
2025-12-22 20:33
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Mon, 22 Dec 2025 20:33:30 GMT
Etag: W/"12b7-19b46608bb8"
Last-Modified: Mon, 22 Dec 2025 14:04:51 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=d%2FyTOY8hgFtEfmp8uNbUnwbk6dcWv%2Fe7vy6SSXVqNG8%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1766435610"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=d%2FyTOY8hgFtEfmp8uNbUnwbk6dcWv%2Fe7vy6SSXVqNG8%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1766435610"
Server: Heroku
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: c7ce8843-63aa-4dd7-b467-2689588775db
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-rozS-YC7.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-CTSQ_Uj7.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {
Open service 15.197.149.68:443 · www.askcolette.ai
2025-12-22 16:56
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Mon, 22 Dec 2025 16:56:45 GMT
Etag: W/"12b7-19b46608bb8"
Last-Modified: Mon, 22 Dec 2025 14:04:51 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=PsVmxXHX%2BVsoLSUGfppfkPDiif%2Fru%2BoSgxO7MrkCgh4%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1766422605"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=PsVmxXHX%2BVsoLSUGfppfkPDiif%2Fru%2BoSgxO7MrkCgh4%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1766422605"
Server: Heroku
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: d2995964-d86b-4712-8e00-e479fb2a1415
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-rozS-YC7.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-CTSQ_Uj7.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {
Open service 15.197.149.68:80 · askcolette.ai
2025-12-21 08:07
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Sun, 21 Dec 2025 08:08:03 GMT
Etag: W/"12b7-19b3c21b668"
Last-Modified: Sat, 20 Dec 2025 14:20:01 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=JfsH9xZtpVD%2FeNc%2Bit%2FVd00JG%2BZxDyjwspqUa6IpoZU%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1766304483"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=JfsH9xZtpVD%2FeNc%2Bit%2FVd00JG%2BZxDyjwspqUa6IpoZU%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1766304483"
Server: Heroku
Strict-Transport-Security: max-age=15552000; includeSubDomains
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 70badbf9-6127-408f-ba51-897124f9be81
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-BjTbq3WU.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-CTSQ_Uj7.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {
Open service 3.33.241.96:443 · askcolette.ai
2025-12-21 02:54
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Sun, 21 Dec 2025 02:54:33 GMT
Etag: W/"12b7-19b3c21b668"
Last-Modified: Sat, 20 Dec 2025 14:20:01 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=8LMo6gHB4Npc419jiBnDAw6b5FVTT7nrYRkKGrrqPCA%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1766285673"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=8LMo6gHB4Npc419jiBnDAw6b5FVTT7nrYRkKGrrqPCA%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1766285673"
Server: Heroku
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 26042986-8746-41ce-93f7-5f3f8ef9c952
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-BjTbq3WU.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-CTSQ_Uj7.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {
Open service 3.33.241.96:80 · www.askcolette.ai
2025-12-20 21:09
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Sat, 20 Dec 2025 21:09:46 GMT
Etag: W/"12b7-19b3c21b668"
Last-Modified: Sat, 20 Dec 2025 14:20:01 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=DIz5V11xEALGd9HAJb7lyRmCx0EZ3MTqtMi%2FrC6OOws%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1766264986"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=DIz5V11xEALGd9HAJb7lyRmCx0EZ3MTqtMi%2FrC6OOws%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1766264986"
Server: Heroku
Strict-Transport-Security: max-age=15552000; includeSubDomains
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 189008b7-c640-4bb4-aa6e-e8632e4e1dd0
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-BjTbq3WU.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-CTSQ_Uj7.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {
Open service 15.197.149.68:443 · www.askcolette.ai
2025-12-20 17:40
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Sat, 20 Dec 2025 17:40:07 GMT
Etag: W/"12b7-19b3c21b668"
Last-Modified: Sat, 20 Dec 2025 14:20:01 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=K7bNr52Gw8kqeUXNhtKnx4kLFqwWpe5EQLXGCQMlif0%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1766252407"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=K7bNr52Gw8kqeUXNhtKnx4kLFqwWpe5EQLXGCQMlif0%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1766252407"
Server: Heroku
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: a41bafcf-5f18-4ccd-b6e8-0cb0d5f83e26
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-BjTbq3WU.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-CTSQ_Uj7.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {
Open service 15.197.149.68:443 · www.askcolette.ai
2025-12-19 06:30
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Fri, 19 Dec 2025 06:30:22 GMT
Etag: W/"12b7-19b31b67600"
Last-Modified: Thu, 18 Dec 2025 13:46:40 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=iC3K1FwzW%2FumUB7lQo7kO5mSA3%2B6iaq6Zkm6MDpDLvI%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1766125822"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=iC3K1FwzW%2FumUB7lQo7kO5mSA3%2B6iaq6Zkm6MDpDLvI%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1766125822"
Server: Heroku
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: c83644c6-3d15-401e-99e9-d262caa4df10
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-BzmouOYq.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DrAoCzuX.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {
Open service 15.197.149.68:80 · askcolette.ai
2025-12-19 06:08
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Fri, 19 Dec 2025 06:08:39 GMT
Etag: W/"12b7-19b31b67600"
Last-Modified: Thu, 18 Dec 2025 13:46:40 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=ToghOMCyJx3DUe7c2VQwfOlL%2Bx5kb6PnOc820Bt54W0%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1766124519"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=ToghOMCyJx3DUe7c2VQwfOlL%2Bx5kb6PnOc820Bt54W0%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1766124519"
Server: Heroku
Strict-Transport-Security: max-age=15552000; includeSubDomains
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: 31fb0529-fd1c-4958-92bc-78f6cf93c573
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-BzmouOYq.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DrAoCzuX.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {
Open service 3.33.241.96:443 · askcolette.ai
2025-12-19 05:36
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=0
Content-Length: 4791
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' https://maps.googleapis.com;style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;connect-src 'self' https://maps.googleapis.com https://*.googleapis.com https://*.supabase.co wss://*.supabase.co https://*.sentry.io https://*.ingest.us.sentry.io https://*.ingest.sentry.io https://api.mapbox.com https://events.mapbox.com;img-src 'self' data: https: https://*.googleapis.com https://*.gstatic.com blob:;font-src 'self' https: data: https://fonts.gstatic.com;worker-src 'self' blob:;base-uri 'self';form-action 'self';frame-ancestors 'self';object-src 'none';script-src-attr 'none';upgrade-insecure-requests
Content-Type: text/html; charset=UTF-8
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Date: Fri, 19 Dec 2025 05:36:23 GMT
Etag: W/"12b7-19b31b67600"
Last-Modified: Thu, 18 Dec 2025 13:46:40 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Origin-Agent-Cluster: ?1
Permissions-Policy: geolocation=(self), microphone=(), camera=()
Referrer-Policy: strict-origin-when-cross-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=6HHxIAJJT7raHMvEJAVeILOM1cbsUp5ZjypLDIkye0w%3D\u0026sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6\u0026ts=1766122583"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=6HHxIAJJT7raHMvEJAVeILOM1cbsUp5ZjypLDIkye0w%3D&sid=929419e7-33ea-4e2f-85f0-7d8b7cd5cbd6&ts=1766122583"
Server: Heroku
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Vary: Origin, Accept-Encoding
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Dns-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: d71264bd-0c0a-4a3e-98c0-7006a868a2a7
X-Xss-Protection: 1; mode=block
Connection: close
Page title: Ask Colette - AI Operations Assistant for Restaurants
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon-ac.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Ask Colette - AI Operations Assistant for Restaurants</title>
<meta name="description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#000000" />
<!-- iOS PWA Support -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Colette" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500;1,600&display=swap" rel="stylesheet">
<!-- Open Graph -->
<meta property="og:url" content="https://askcolette.ai" />
<meta property="og:title" content="Ask Colette - AI Operations Assistant for Restaurants" />
<meta property="og:description" content="Your AI operations assistant, fluent in Toast, R365, MarginEdge and more. Transform how you run your restaurant." />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://askcolette.ai/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@askcolette" />
<meta name="twitter:image" content="https://askcolette.ai/og-image.png" />
<script type="module" crossorigin src="/assets/index-BzmouOYq.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DrAoCzuX.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #000;">
<div id="root">
<!-- Loading state shown while JS loads - prevents black screen -->
<div id="app-loading" style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
color: rgba(255,255,255,0.7);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
">
<div style="
width: 48px;
height: 48px;
border: 3px solid rgba(255,255,255,0.1);
border-top-color: rgba(16,185,129,0.8);
border-radius: 50%;
animation: spin 1s linear infinite;
"></div>
<p style="margin-top: 16px; font-size: 14px;">Loading...</p>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
</div>
</div>
<!-- Fallback: If app doesn't load in 10s, offer cache clear -->
<script>
setTimeout(function() {
var root = document.getElementById('root');
var loading = document.getElementById('app-loading');
// If loading indicator still visible after 10s, something is wrong
if (loading && loading.parentElement === root) {
loading.innerHTML = '<div style="text-align:center;padding:2rem;">' +
'<p style="color:#ef4444;margin-bottom:1rem;">App failed to load</p>' +
'<button onclick="clearCachesAndReload()" style="' +
'padding:0.5rem 1rem;background:#3b82f6;color:white;' +
'border:none;border-radius:0.375rem;cursor:pointer;font-size:1rem;' +
'">Clear Cache & Reload</button>' +
'</div>';
}
}, 10000);
function clearCachesAndReload() {
if ('caches' in window) {