1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <!-- Google tag (gtag.js) -->
vendor: 68 bytes, lines 5-6
5 6 <script async src="https://www.googletagmanager.com/gtag/js?id=
6G-FJRR6QK3P9
vendor: 16 bytes, lines 6-7
6"></script> 7
7<script> 8
vendor: 146 bytes, lines 8-12
8window.dataLayer = window.dataLayer || []; 9 function gtag(){dataLayer.push(arguments);} 10 gtag('js', new Date()); 11 12 gtag('config', '
12G-FJRR6QK3P9
vendor: 8 bytes, lines 12-13
12'); 13
13</script>
13 14 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 15 16 <!-- Primary Meta Tags --> 17 <title>Re:WayAI | Speech-to-Text That Knows Who's Talking</title> 18 <meta name="title" content="Re:WayAI | Speech-to-Text That Knows Who's Talking"> 19 <meta name="description" content="State-of-the-art speaker diarization and attribution through one API. Real names on every transcript line, 25 European languages, real-time streaming. Audio is deleted right after processing and never leaves our ISO 27001 certified data center."> 20 <meta name="keywords" content="speaker diarization, speaker attribution, speech to text API, transcription API, who said what, voice enrollment, speaker recognition, real-time transcription, meeting transcription, ISO 27001 transcription"> 21 <meta name="author" content="Re:WayAI"> 22 <meta name="robots" content="index, follow"> 23 <link rel="canonical" href="https://rewayai.ai/"> 24 25 <!-- Open Graph / Facebook --> 26 <meta property="og:type" content="website"> 27 <meta property="og:url" content="https://rewayai.ai/"> 28 <meta property="og:title" content="Re:WayAI | Speech-to-Text That Knows Who's Talking"> 29 <meta property="og:description" content="Speaker-attributed transcripts through one API. Audio deleted right after processing â it never leaves our ISO 27001 certified data center."> 30 <meta property="og:image" content="https://rewayai.ai/img/logo.png"> 31 <meta property="og:site_name" content="Re:WayAI"> 32 <meta property="og:locale" content="en_US"> 33 34 <!-- Twitter --> 35 <meta property="twitter:card" content="summary_large_image"> 36 <meta property="twitter:url" content="https://rewayai.ai/"> 37 <meta property="twitter:title" content="Re:WayAI | Speech-to-Text That Knows Who's Talking"> 38 <meta property="twitter:description" content="Speaker-attributed transcripts through one API. Audio deleted right after processing â it never leaves our ISO 27001 certified data center."> 39 <meta property="twitter:image" content="https://rewayai.ai/img/logo.png"> 40 41 <!-- Favicon --> 42 <link rel="icon" type="image/x-icon" href="/img/favicon.ico"> 43 <link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png"> 44 <link rel="icon" type="image/png" sizes="16x16" href="/img/favicon-16x16.png"> 45 <link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png"> 46 47 <!-- Preconnect for performance --> 48 <link rel="preconnect" href="https://fonts.googleapis.com"> 49 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 50 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap"> 51 52 <!-- Structured Data --> 53
53<script type="application/ld+json"> 54 { 55 "@context": "https://schema.org", 56 "@type": "Organization", 57 "name": "Re:WayAI", 58 "alternateName": "RewayAI", 59 "url": "https://rewayai.ai", 60 "logo": "https://rewayai.ai/img/logo.png", 61 "sameAs": [ 62 "https://linkedin.com/company/rewayai", 63 "https://github.com/rewayai" 64 ], 65 "contactPoint": { 66 "@type": "ContactPoint", 67 "email": "[email protected]", 68 "contactType": "customer service", 69 "availableLanguage": "en" 70 }, 71 "description": "Speech-to-text platform with state-of-the-art speaker diarization and attribution. Audio is deleted immediately after processing and never leaves our ISO 27001 certified data center." 72 } 73 </script>
73 74
74<script type="application/ld+json"> 75 { 76 "@context": "https://schema.org", 77 "@type": "SoftwareApplication", 78 "name": "Re:WayAI Speech API", 79 "applicationCategory": "DeveloperApplication", 80 "operatingSystem": "Web", 81 "url": "https://rewayai.ai/", 82 "description": "Transcription API with extremely accurate speaker diarization and attribution: voice enrollment, real-time streaming and transcript Q&A. Pay-per-minute pricing, 50 hours of free transcription.", 83 "offers": { 84 "@type": "Offer", 85 "price": "0", 86 "priceCurrency": "USD", 87 "description": "Free to start â new accounts receive 50 hours of free transcription." 88 } 89 } 90 </script>
90 91 92 <style> 93 :root { 94 --accent: #22c55e; 95 --accent-light: #4ade80; 96 --accent-dim: rgba(34, 197, 94, 0.55); 97 --bg: #030712; 98 --bg-raise: #0b1120; 99 --ink: #f3f6fb; 100 --ink-mid: #a3aec2; 101 --ink-dim: #5d6b84; 102 --line: rgba(148, 163, 184, 0.14); 103 --line-strong: rgba(148, 163, 184, 0.24); 104 --panel: rgba(148, 163, 184, 0.05); 105 --sans: 'Inter', -apple-system, sans-serif; 106 --mono: 'JetBrains Mono', 'SFMono-Regular', Consolas, monospace; 107 --s1: #4ade80; 108 --s2: #7dd3fc; 109 --s3: #f0abfc; 110 } 111 112 * { margin: 0; padding: 0; box-sizing: border-box; } 113 html { scroll-behavior: smooth; } 114 body { 115 font-family: var(--sans); 116 background: var(--bg); 117 color: var(--ink); 118 line-height: 1.6; 119 -webkit-font-smoothing: antialiased; 120 overflow-x: hidden; 121 } 122 ::selection { background: rgba(34, 197, 94, 0.3); } 123 .container { width: 100%; max-width: 1140px; margin: 0 auto; padding: 0 24px; } 124 a { color: inherit; } 125 img { max-width: 100%; } 126 .mono { 127 font-family: var(--mono); 128 font-size: 12px; 129 font-weight: 500; 130 letter-spacing: 0.14em; 131 text-transform: uppercase; 132 color: var(--accent); 133 } 134 svg.ic { width: 22px; height: 22px; stroke: var(--accent); stroke-width: 1.75; fill: none; stroke-linecap: round; stroke-linejoin: round; } 135 136 /* ---------- buttons ---------- */ 137 .btn { 138 display: inline-flex; align-items: center; gap: 8px; 139 padding: 11px 20px; border-radius: 10px; 140 font-weight: 600; font-size: 14.5px; text-decoration: none; 141 border: 1px solid transparent; 142 transition: all .18s ease; 143 white-space: nowrap; 144 } 145 .btn-primary { 146 background: var(--accent); color: #03130a; 147 box-shadow: 0 0 0 1px rgba(34,197,94,.4), 0 8px 24px -8px rgba(34,197,94,.5); 148 } 149 .btn-primary:hover { background: var(--accent-light); transform: translateY(-1px); box-shadow: 0 0 0 1px rgba(34,197,94,.5), 0 12px 28px -8px rgba(34,197,94,.55); } 150 .btn-ghost { border-color: var(--line-strong); color: var(--ink); background: rgba(148,163,184,0.04); } 151 .btn-ghost:hover { border-color: var(--accent-dim); color: var(--accent-light); } 152 .btn-lg { padding: 14px 26px; font-size: 15.5px; border-radius: 12px; } 153 154 /* ---------- header ---------- */ 155 .header { 156 position: sticky; top: 0; z-index: 50; 157 background: rgba(3, 7, 18, 0.72); 158 backdrop-filter: blur(14px); 159 border-bottom: 1px solid var(--line); 160 } 161 .navbar { display: flex; align-items: center; justify-content: space-between; height: 64px; gap: 16px; } 162 .logo { display: flex; align-items: center; gap: 10px; text-decoration: none; } 163 .logo img { height: 28px; width: auto; } 164 .logo-text { font-size: 19px; font-weight: 700; letter-spacing: -0.01em; } 165 .highlight { color: var(--accent); } 166 .nav-links { display: flex; align-items: center; gap: 26px; list-style: none; } 167 .nav-links a { color: var(--ink-mid); text-decoration: none; font-size: 14px; font-weight: 500; transition: color .15s; } 168 .nav-links a:hover { color: var(--ink); } 169 .nav-cta { display: flex; align-items: center; gap: 14px; } 170 .nav-cta .signin { color: var(--ink-mid); text-decoration: none; font-size: 14px; font-weight: 500; } 171 .nav-cta .signin:hover { color: var(--ink); } 172 .nav-cta .btn { padding: 8px 16px; font-size: 13.5px; } 173 174 /* ---------- hero ---------- */ 175 .hero { position: relative; padding: 96px 0 80px; } 176 .hero::before { 177 content: ""; position: absolute; inset: 0; pointer-events: none; 178 background: 179 radial-gradient(52% 42% at 50% -6%, rgba(34,197,94,.13), transparent 70%), 180 radial-gradient(30% 30% at 85% 30%, rgba(125,211,252,.05), transparent 70%); 181 } 182 .hero::after { 183 content: ""; position: absolute; inset: 0 0 40% 0; pointer-events: none; 184 background-image: 185 linear-gradient(var(--line) 1px, transparent 1px), 186 linear-gradient(90deg, var(--line) 1px, transparent 1px); 187 background-size: 56px 56px; 188 mask-image: radial-gradient(60% 55% at 50% 0%, rgba(0,0,0,.5), transparent 78%); 189 -webkit-mask-image: radial-gradient(60% 55% at 50% 0%, rgba(0,0,0,.5), transparent 78%); 190 } 191 .hero-inner { position: relative; text-align: center; max-width: 780px; margin: 0 auto; } 192 .hero .eyebrow { 193 display: inline-flex; align-items: center; gap: 10px; margin-bottom: 26px; 194 font-family: var(--mono); font-size: 11.5px; font-weight: 500; 195 letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-mid); 196 padding: 7px 14px; border: 1px solid var(--line-strong); border-radius: 999px; 197 background: rgba(148,163,184,0.05); 198 } 199 .hero .eyebrow .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 10px var(--accent); } 200 h1 { 201 font-size: 62px; line-height: 1.04; font-weight: 800; letter-spacing: -0.035em; 202 background: linear-gradient(180deg, #fff 30%, #94a3b8); 203 -webkit-background-clip: text; background-clip: text; color: transparent; 204 margin-bottom: 22px; 205 } 206 h1 .accent { 207 background: linear-gradient(120deg, var(--accent-light), var(--accent)); 208 -webkit-background-clip: text; background-clip: text; color: transparent; 209 } 210 .hero p.sub { font-size: 18px; color: var(--ink-mid); max-width: 620px; margin: 0 auto 34px; } 211 .hero-actions { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; } 212 .hero-note { 213 margin-top: 18px; font-size: 13px; color: var(--ink-dim); 214 display: flex; gap: 18px; justify-content: center; flex-wrap: wrap; 215 } 216 .hero-note span::before { content: "· "; color: var(--accent); font-weight: 700; } 217 218 /* ---------- hero demo panel ---------- */ 219 .demo-wrap { position: relative; max-width: 880px; margin: 64px auto 0; } 220 .demo-wrap::before { 221 content: ""; position: absolute; inset: -1px;
221 border-radius: 17px; z-index: 0; 222 background: linear-gradient(160deg, rgba(34,197,94,.4), rgba(148,163,184,.12) 35%, rgba(148,163,184,.08)); 223 } 224 .demo { 225 position: relative; z-index: 1; 226 background: linear-gradient(180deg, #0a1120, #070d1a); 227 border-radius: 16px; overflow: hidden; 228 box-shadow: 0 40px 80px -32px rgba(0,0,0,.8); 229 } 230 .demo-head { 231 display: flex; align-items: center; justify-content: space-between; 232 padding: 13px 18px; border-bottom: 1px solid var(--line); 233 } 234 .demo-head .file { font-family: var(--mono); font-size: 12.5px; color: var(--ink-mid); display: flex; align-items: center; gap: 9px; } 235 .demo-head .file .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 8px var(--accent); animation: pulse 2.2s infinite; } 236 @keyframes pulse { 50% { opacity: .35; } } 237 .demo-head .badge { 238 font-family: var(--mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; 239 color: var(--accent-light); background: rgba(34,197,94,.1); 240 border: 1px solid rgba(34,197,94,.28); border-radius: 6px; padding: 3px 9px; 241 } 242 /* diarization timeline */ 243 .tl { padding: 18px 18px 6px; } 244 .tl-track { display: flex; gap: 3px; height: 34px; align-items: flex-end; } 245 .tl-track i { flex: 1; border-radius: 2px; opacity: .9; } 246 .tl-legend { display: flex; gap: 20px; padding: 10px 2px 4px; font-family: var(--mono); font-size: 11px; color: var(--ink-dim); } 247 .tl-legend b { font-weight: 500; } 248 .tl-legend i { display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 7px; } 249 /* transcript */ 250 .demo-body { padding: 10px 18px 20px; } 251 .tc-row { display: flex; gap: 14px; padding: 11px 6px; border-radius: 10px; } 252 .tc-row + .tc-row { border-top: 1px solid rgba(148,163,184,.07); } 253 .tc-time { font-family: var(--mono); font-size: 11.5px; color: var(--ink-dim); padding-top: 4px; white-space: nowrap; } 254 .tc-speaker { font-weight: 700; font-size: 13.5px; margin-bottom: 1px; display: flex; align-items: center; gap: 8px; } 255 .tc-s1 { color: var(--s1); } .tc-s2 { color: var(--s2); } .tc-s3 { color: var(--s3); } 256 .tc-text { color: var(--ink-mid); font-size: 14.5px; line-height: 1.55; } 257 .tc-tag { 258 font-family: var(--mono); font-size: 9.5px; font-weight: 500; letter-spacing: .08em; 259 text-transform: uppercase; color: var(--ink-dim); 260 border: 1px solid var(--line-strong); border-radius: 5px; padding: 1px 7px; 261 } 262 .cursor { display: inline-block; width: 8px; height: 15px; vertical-align: -2px; background: var(--accent); animation: blink 1s steps(1) infinite; } 263 @keyframes blink { 50% { opacity: 0; } } 264 /* editor chrome on the demo window */ 265 .demo-tools { display: flex; align-items: center; gap: 8px; } 266 .demo-tools .tool { 267 width: 24px; height: 24px; border-radius: 6px; 268 display: flex; align-items: center; justify-content: center; 269 border: 1px solid var(--line-strong); color: var(--ink-dim); 270 } 271 .demo-tools .tool svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; } 272 .demo-tools .export { 273 font-family: var(--mono); font-size: 11px; letter-spacing: .06em; 274 color: var(--ink-mid); border: 1px solid var(--line-strong); 275 border-radius: 6px; padding: 3px 9px; white-space: nowrap; 276 } 277 .demo-tools .export b { color: var(--accent-light); font-weight: 500; } 278 .tc-edit { color: var(--ink); border-bottom: 1px dashed var(--accent); } 279 .tc-note { 280 display: inline-block; margin-top: 7px; 281 font-family: var(--mono); font-size: 10.5px; letter-spacing: .04em; color: var(--ink-dim); 282 border: 1px dashed var(--line-strong); border-radius: 6px; padding: 2px 9px; 283 } 284 .tc-note b { color: var(--accent-light); font-weight: 500; } 285 286 /* ---------- claims strip ---------- */ 287 .claims { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
288 .claims-grid { display: grid; grid-template-columns: repeat(4, 1fr); } 289 .claim { padding: 38px 30px; } 290 .claim + .claim { border-left: 1px solid var(--line); } 291 .claim .k { margin-bottom: 12px; display: block; } 292 .claim .v { font-size: 30px; font-weight: 800; letter-spacing: -0.02em; line-height: 1.1; margin-bottom: 8px; } 293 .claim p { font-size: 13.5px; color: var(--ink-dim); line-height: 1.55; } 294 295 /* ---------- sections ---------- */ 296 section { padding: 104px 0; } 297 .section-head { max-width: 660px; margin-bottom: 56px; } 298 .section-head.center { margin-left: auto; margin-right: auto; text-align: center; } 299 .section-head .mono { display: block; margin-bottom: 14px; } 300 .section-head.sub { margin-top: 72px; margin-bottom: 0; } 301 h2 { font-size: 40px; font-weight: 800; letter-spacing: -0.03em; line-height: 1.12; margin-bottom: 16px; } 302 .section-head p { color: var(--ink-mid); font-size: 16.5px; } 303 304 /* ---------- how it works ---------- */ 305 .steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; counter-reset: step; } 306 .step { 307 position: relative; padding: 26px 22px 24px; 308 background: var(--panel); border: 1px solid var(--line); border-radius: 14px; 309 } 310 .step .n { 311 font-family: var(--mono); font-size: 12px; color: var(--accent); 312 letter-spacing: .12em; display: block; margin-bottom: 34px; 313 } 314 .step .n::after { 315 content: ""; position: absolute; top: 34px; left: 62px; right: 22px; 316 height: 1px; background: linear-gradient(90deg, var(--line-strong), transparent); 317 } 318 .step:last-child .n::after { display: none; } 319 .step h3 { font-size: 16.5px; font-weight: 700; margin-bottom: 7px; } 320 .step p { font-size: 13.5px; color: var(--ink-dim); line-height: 1.6; } 321 .step code { font-family: var(--mono); font-size: 12px; color: var(--ink-mid); } 322 323 /* ---------- code / developers ---------- */ 324 .dev { border-top: 1px solid var(--line); background: linear-gradient(180deg, rgba(11,17,32,.6), transparent 60%); } 325 .dev-inner { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: 56px; align-items: start; } 326 .dev-points { list-style: none; margin: 26px 0 30px; } 327 .dev-points li { 328 color: var(--ink-mid); font-size: 15px; margin-bottom: 13px; 329 padding-left: 30px; position: relative; 330 } 331 .dev-points li strong { color: var(--ink); font-weight: 600; } 332 .dev-points li::before { 333 content: ""; position: absolute; left: 2px; top: 7px; 334 width: 12px; height: 7px; 335 border-left: 2px solid var(--accent); border-bottom: 2px solid var(--accent); 336 transform: rotate(-45deg); 337 } 338 /* benchmark */ 339 .delta { 340 display: inline-block; padding: 1px 6px; 341 font-family: var(--mono); font-size: 10.5px; font-weight: 600; letter-spacing: .02em; 342 color: var(--accent-light); background: rgba(34,197,94,.1); 343 border: 1px solid rgba(34,197,94,.28); border-radius: 5px; 344 white-space: nowrap; 345 } 346 .bench-note { font-size: 12.5px; color: var(--ink-dim); margin-top: 16px; line-height: 1.7; max-width: 760px; } 347 348 /* DER drawn to scale */ 349 .derviz { 350 margin-top: 22px; padding: 18px 22px 20px; 351 border: 1px solid var(--line-strong); border-radius: 14px; 352 background: #060b16; 353 box-shadow: 0 30px 60px -30px rgba(0,0,0,.7); 354 } 355 .derviz-head { 356 display: flex; align-items: baseline; justify-content: space-between; 357 gap: 12px; flex-wrap: wrap; margin-bottom: 4px; 358 } 359 .derviz-head .t { 360 font-family: var(--mono); font-size: 11px; font-weight: 500; 361 letter-spacing: .12em; text-transform: uppercase; color: var(--ink-dim); 362 } 363 .derviz-head .k { font-size: 12px; color: var(--ink-dim); } 364 .dv-group { padding: 12px 0 6px; } 365 .dv-group + .dv-group { border-top: 1px solid var(--line); } 366 .dv-bench { font-size: 13.5px; font-weight: 600; color: var(--ink); margin-bottom: 7px; } 367 .dv-bench .sc { font-size: 12px; font-weight: 400; color: var(--ink-dim); margin-left: 8px; } 368 .dv-row { 369 display: grid; grid-template-columns: 168px 1fr; 370 align-items: center; gap: 14px; padding: 3px 6px 3px 0; border-radius: 6px; 371 } 372 .dv-row:hover { background: rgba(148,163,184,.05); } 373 .dv-label { 374 font-size: 12.5px; color: var(--ink-mid); text-align: right; 375 white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 376 } 377 .dv-row.ours .dv-label { color: var(--ink); font-weight: 600; } 378 .dv-track { display: flex; align-items: center; gap: 8px; min-width: 0; } 379 .dv-track i { display: block; height: 11px; background: #5d6b84; border-radius: 0 4px 4px 0; } 380 .dv-row.ours .dv-track i { background: var(--accent); box-shadow: 0 0 12px rgba(34,197,94,.35); } 381 .dv-track b { font-family: var(--mono); font-size: 11.5px; font-weight: 500; color: var(--ink-mid); white-space: nowrap; } 382 .dv-track b.best, .dv-row.ours .dv-track b { color: var(--ink); font-weight: 600; } 383 @media (max-width: 640px) { 384 .dv-row { grid-template-columns: 104px 1fr; gap: 10px; } 385 .dv-label { font-size: 11px; } 386 } 387 388 /* voice library card */ 389 .voice-card { 390 border: 1px solid var(--line-strong); border-radius: 14px; overflow: hidden; 391 background: #060b16; 392 box-shadow: 0 30px 60px -30px rgba(0,0,0,.7); 393 } 394 .voice-head { 395 display: flex; align-items: center; justify-content: space-between; 396 padding: 14px 20px; border-bottom: 1px solid var(--line); 397 } 398 .voice-head .t { font-family: var(--mono); font-size: 12.5px; color: var(--ink-mid); } 399 .voice-head .badge { 400 font-family: var(--mono); font-size: 10.5px; letter-spacing: .1em; text-transform: uppercase; 401 color: var(--accent-light); background: rgba(34,197,94,.1); 402 border: 1px solid rgba(34,197,94,.28); border-radius: 6px; padding: 3px 9px; 403 } 404 .v-row { display: flex; align-items: center; gap: 14px; padding: 14px 20px; } 405 .v-row + .v-row { border-top: 1px solid rgba(148,163,184,.07); } 406 .v-init { 407 width: 36px; height: 36px; border-radius: 50%; flex-shrink: 0; 408 display: flex; align-items: center; justify-content: center; 409 font-size: 12.5px; font-weight: 700; 410 } 411 .v-name { font-weight: 600; font-size: 14.5px; line-height: 1.3; } 412 .v-meta { font-family: var(--mono); font-size: 11.5px; color: var(--ink-dim); } 413 .v-status { margin-left: auto; display: flex; align-items: center; gap: 7px; font-family: var(--mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--accent-light); } 414 .v-status i { width: 7px; height: 7px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 8px var(--accent); } 415 .voice-foot { 416 padding: 13px 20px; border-top: 1px solid var(--line); 417 font-family: var(--mono); font-size: 12px; color: var(--ink-dim); 418 }
419 .voice-foot b { color: var(--accent-light); font-weight: 500; } 420 421 /* ---------- features ---------- */ 422 .features-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; } 423 .feature { 424 padding: 28px 26px; border: 1px solid var(--line); border-radius: 14px; 425 background: var(--panel); 426 transition: border-color .2s ease, background .2s ease; 427 } 428 .feature:hover { border-color: rgba(34,197,94,.35); background: rgba(34,197,94,.035); } 429 .feature .fic { 430 width: 42px; height: 42px; border-radius: 10px; margin-bottom: 18px; 431 display: flex; align-items: center; justify-content: center; 432 background: rgba(34,197,94,.09); border: 1px solid rgba(34,197,94,.22); 433 } 434 .feature h3 { font-size: 16.5px; font-weight: 700; margin-bottom: 8px; letter-spacing: -0.01em; } 435 .feature p { font-size: 14px; color: var(--ink-dim); line-height: 1.65; } 436 437 /* ---------- security ---------- */ 438 .security { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--bg-raise); position: relative; overflow: hidden; } 439 .security::before { 440 content: ""; position: absolute; inset: 0; pointer-events: none; 441 background: radial-gradient(40% 50% at 15% 20%, rgba(34,197,94,.07), transparent 70%); 442 } 443 .sec-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; position: relative; } 444 .sec-card { padding: 30px 28px; background: var(--bg); border: 1px solid var(--line); border-radius: 14px; } 445 .sec-card .fic { 446 width: 42px; height: 42px; border-radius: 10px; margin-bottom: 18px; 447 display: flex; align-items: center; justify-content: center; 448 background: rgba(34,197,94,.09); border: 1px solid rgba(34,197,94,.22); 449 } 450 .sec-card h3 { font-size: 16.5px; font-weight: 700; margin-bottom: 8px; } 451 .sec-card p { font-size: 14px; color: var(--ink-dim); line-height: 1.65; } 452 .sec-badges { 453 margin-top: 40px; display: flex; flex-wrap: wrap; gap: 12px; position: relative; 454 } 455 .sec-badges span { 456 font-family: var(--mono); font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; 457 color: var(--ink-mid); border: 1px solid var(--line-strong); 458 border-radius: 999px; padding: 8px 16px; background: rgba(148,163,184,.04); 459 } 460 .sec-badges span::before { content: "â "; color: var(--accent); } 461 .onprem { 462 position: relative; margin-top: 16px; 463 display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; 464 padding: 26px 28px; border: 1px solid var(--line-strong); border-radius: 14px; 465 background: rgba(3, 7, 18, 0.55); 466 } 467 .onprem h3 { font-size: 16.5px; font-weight: 700; margin-bottom: 6px; } 468 .onprem p { font-size: 14px; color: var(--ink-dim); max-width: 560px; } 469 470 /* ---------- pricing ---------- */ 471 .price-card { 472 position: relative; border-radius: 18px; overflow: hidden; 473 border: 1px solid rgba(34,197,94,.28); 474 background: 475 radial-gradient(60% 100% at 100% 0%, rgba(34,197,94,.09), transparent 60%), 476 var(--bg-raise); 477 display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 44px; 478 padding: 52px 56px; align-items: center; 479 } 480 .price-card h3 { font-size: 27px; font-weight: 800; letter-spacing: -0.02em; margin-bottom: 12px; } 481 .price-card .lead { color: var(--ink-mid); font-size: 15.5px; margin-bottom: 24px; } 482 .price-points { list-style: none; } 483 .price-points li { color: var(--ink-mid); font-size: 14.5px; margin-bottom: 11px; padding-left: 28px; position: relative; } 484 .price-points li::before { 485 content: ""; position: absolute; left: 2px; top: 7px; width: 11px; height: 6px; 486 border-left: 2px solid var(--accent); border-bottom: 2px solid var(--accent); transform: rotate(-45deg); 487 } 488 .price-cta { text-align: center; padding: 34px 30px; border: 1px solid var(--line); border-radius: 14px; background: rgba(3,7,18,.5); } 489 .price-cta .k { display: block; margin-bottom: 12px; }
490 .price-cta .big { font-size: 52px; font-weight: 800; letter-spacing: -0.03em; line-height: 1; color: var(--accent-light); } 491 .price-cta .big small { font-size: 26px; font-weight: 700; color: var(--accent-light); } 492 .price-cta .sub { color: var(--ink-dim); font-size: 13.5px; margin: 12px 0 24px; } 493 494 /* ---------- pricing: rate table + tiers ---------- */ 495 .rate-table { border: 1px solid var(--line); border-radius: 14px; overflow: hidden; margin-top: 18px; background: var(--bg-raise); } 496 .rate-row { display: grid; grid-template-columns: 1.6fr 0.7fr 0.7fr; gap: 12px; padding: 16px 24px; border-top: 1px solid var(--line); align-items: baseline; } 497 .rate-row:first-child { border-top: none; } 498 .rate-row.head { background: rgba(3,7,18,.5); color: var(--ink-dim); font-size: 12px; text-transform: uppercase; letter-spacing: .08em; } 499 .rate-row .n { font-size: 14.5px; } 500 .rate-row .n small { display: block; color: var(--ink-dim); font-size: 12.5px; margin-top: 2px; } 501 .rate-row .p { font-weight: 700; color: var(--accent-light); font-size: 15px; } 502 .rate-row .pm { color: var(--ink-dim); font-size: 13px; } 503 .rate-note { color: var(--ink-dim); font-size: 13px; margin-top: 10px; } 504 .tier-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 36px; } 505 @media (max-width: 900px) { .tier-grid { grid-template-columns: 1fr; } .rate-row { grid-template-columns: 1fr; gap: 2px; } } 506 .tier-card { 507 border: 1px solid var(--line); border-radius: 16px; padding: 30px 28px; 508 background: var(--bg-raise); display: flex; flex-direction: column; 509 transition: border-color .22s ease, box-shadow .22s ease, transform .22s ease; 510 } 511 /* The green highlight follows the mouse: Starter (.featured) holds it by default, but as 512 soon as ANY card in the grid is hovered, the hovered card takes it and the default lets go. */ 513 .tier-card.featured, .tier-card:hover { 514 border-color: rgba(34,197,94,.45); 515 background: radial-gradient(80% 60% at 50% 0%, rgba(34,197,94,.08), transparent 70%), var(--bg-raise); 516 } 517 .tier-card:hover { transform: translateY(-3px); box-shadow: 0 16px 36px -18px rgba(34,197,94,.35); } 518 .tier-grid:hover .tier-card.featured:not(:hover) { 519 border-color: var(--line); 520 background: var(--bg-raise); 521 } 522 .tier-card .k { display: block; margin-bottom: 10px; } 523 .tier-card .amount { font-size: 34px; font-weight: 800; letter-spacing: -0.02em; color: var(--ink); } 524 .tier-card .amount em { font-style: normal; color: var(--accent-light); } 525 .tier-card .per { color: var(--ink-dim); font-size: 13px; margin-bottom: 18px; } 526 .tier-card ul { list-style: none; margin-bottom: 24px; } 527 .tier-card li { color: var(--ink-mid); font-size: 13.5px; margin-bottom: 9px; padding-left: 24px; position: relative; } 528 .tier-card li::before { content: ""; position: absolute; left: 2px; top: 6px; width: 10px; height: 5px; border-left: 2px solid var(--accent); border-bottom: 2px solid var(--accent); transform: rotate(-45deg); } 529 .tier-card .btn { margin-top: auto; text-align: center; } 530 531 /* ---------- contact form ---------- */ 532 .contact-wrap { max-width: 680px; margin: 0 auto; } 533 .contact-card { 534 position: relative; border-radius: 18px; overflow: hidden; margin-top: 32px; 535 border: 1px solid rgba(34,197,94,.22); 536 background: 537 radial-gradient(70% 90% at 50% 0%, rgba(34,197,94,.07), transparent 65%), 538 var(--bg-raise); 539 padding: 38px 40px; 540 } 541 .contact-form { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 16px; } 542 .contact-form .full { grid-column: 1 / -1; } 543 .contact-form label { display: block; } 544 .contact-form .lbl { 545 display: block; font-family: var(--mono); font-size: 11px; font-weight: 500; 546 letter-spacing: .12em; text-transform: uppercase; color: var(--ink-dim); margin-bottom: 7px; 547 }
548 .contact-form .lbl b { color: var(--accent); font-weight: 500; } 549 .contact-form input, .contact-form textarea { 550 width: 100%; background: rgba(3,7,18,.6); border: 1px solid var(--line); border-radius: 10px; 551 color: var(--ink); font-family: var(--sans); font-size: 14.5px; padding: 13px 15px; outline: none; 552 transition: border-color .18s ease, box-shadow .18s ease; 553 } 554 .contact-form input::placeholder, .contact-form textarea::placeholder { color: var(--ink-dim); } 555 .contact-form input:focus, .contact-form textarea:focus { 556 border-color: rgba(34,197,94,.6); box-shadow: 0 0 0 3px rgba(34,197,94,.12); 557 } 558 .contact-form textarea { min-height: 130px; resize: vertical; } 559 .contact-form .btn { justify-content: center; width: 100%; } 560 .contact-status { grid-column: 1 / -1; font-size: 13.5px; min-height: 0; } 561 .contact-status.err { color: #f87171; } 562 .contact-fine { grid-column: 1 / -1; color: var(--ink-dim); font-size: 12.5px; text-align: center; margin-top: 2px; } 563 .contact-success { display: none; text-align: center; padding: 28px 10px; } 564 .contact-success .tick { 565 width: 56px; height: 56px; margin: 0 auto 18px; border-radius: 50%; 566 border: 1.5px solid rgba(34,197,94,.5); background: rgba(34,197,94,.1); 567 display: flex; align-items: center; justify-content: center; 568 } 569 .contact-success .tick svg { width: 26px; height: 26px; stroke: var(--accent-light); } 570 .contact-success h3 { font-size: 21px; font-weight: 800; letter-spacing: -0.01em; margin-bottom: 8px; } 571 .contact-success p { color: var(--ink-mid); font-size: 14.5px; } 572 @media (max-width: 640px) { .contact-form { grid-template-columns: 1fr; } .contact-card { padding: 28px 22px; } } 573 574 /* ---------- footer ---------- */ 575 .footer { border-top: 1px solid var(--line); padding: 42px 0; } 576 .footer-inner { display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; } 577 .footer p { color: var(--ink-dim); font-size: 13px; } 578 .footer-links { display: flex; gap: 24px; list-style: none; } 579 .footer-links a { color: var(--ink-mid); font-size: 13px; text-decoration: none; } 580 .footer-links a:hover { color: var(--accent); } 581 582 /* ---------- reveal ---------- */ 583 .reveal { opacity: 0; transform: translateY(16px); transition: opacity .6s ease, transform .6s ease; } 584 .reveal.in { opacity: 1; transform: none; } 585 @media (prefers-reduced-motion: reduce) { 586 .reveal { opacity: 1; transform: none; transition: none; } 587 .demo-head .file .dot, .cursor { animation: none; } 588 html { scroll-behavior: auto; } 589 } 590 591 /* ---------- responsive ---------- */ 592 @media (max-width: 980px) { 593 h1 { font-size: 46px; } 594 .claims-grid { grid-template-columns: 1fr 1fr; } 595 .claim:nth-child(3) { border-left: none; } 596 .claim { border-top: 1px solid var(--line); } 597 .claim:nth-child(-n+2) { border-top: none; } 598 .steps { grid-template-columns: 1fr 1fr; } 599 .step .n::after { display: none; } 600 .dev-inner { grid-template-columns: 1fr; } 601 .features-grid, .sec-grid { grid-template-columns: 1fr 1fr; } 602 .price-card { grid-template-columns: 1fr; padding: 36px; } 603 .nav-links { display: none; } 604 } 605 @media (max-width: 620px) { 606 h1 { font-size: 36px; } 607 h2 { font-size: 30px; } 608 section { padding: 72px 0; } 609 .claims-grid, .steps, .features-grid, .sec-grid { grid-template-columns: 1fr; } 610 .claim + .claim { border-left: none; } 611 .claim { border-top: 1px solid var(--line); } 612 .claim:first-child { border-top: none; } 613 .nav-cta .signin { display: none; } 614 .tc-time { display: none; } 615 .demo-tools .tool, .demo-tools .badge { display: none; } 616 } 617 </style> 618</head> 619<body> 620 <header class="header"> 621 <div class="container"> 622 <nav class="navbar"> 623 <a href="/" class="logo" aria-label="Re:WayAI home">
624 <span class="logo-text">RE:<span class="highlight">WayAI</span></span> 625 </a> 626 <ul class="nav-links"> 627 <li><a href="#how">How it works</a></li> 628 <li><a href="#accuracy">Accuracy</a></li> 629 <li><a href="#features">Features</a></li> 630 <li><a href="#voices">Voices</a></li> 631 <li><a href="#security">Security</a></li> 632 <li><a href="#pricing">Pricing</a></li> 633 <li><a href="#contact">Contact</a></li> 634 </ul> 635 <div class="nav-cta"> 636 <a href="/app/login" class="signin">Sign in</a> 637 <a href="/app/register" class="btn btn-primary">Start free</a> 638 </div> 639 </nav> 640 </div> 641 </header> 642 643 <main> 644 <!-- ======== hero ======== --> 645 <section class="hero"> 646 <div class="container"> 647 <div class="hero-inner"> 648 <span class="eyebrow"><span class="dot"></span>Speech-to-text · Diarization · LLM speaker attribution</span> 649 <h1>The speech API that knows <span class="accent">who's talking</span></h1> 650 <p class="sub"> 651 Re:WayAI turns real-world conversations into structured, speaker-attributed 652 transcripts. State-of-the-art diarization, LLM speaker attribution and 653 your own private library of enrolled voices â one API call away. 654 </p> 655 <div class="hero-actions"> 656 <a href="/app/register" class="btn btn-primary btn-lg">Start building free</a> 657 <a href="#contact" class="btn btn-ghost btn-lg">Book a demo</a> 658 </div> 659 <div class="hero-note"> 660 <span>50 hours free transcription</span> 661 <span>No credit card</span> 662 <span>Audio deleted after processing</span> 663 </div> 664 </div> 665 666 <div class="demo-wrap reveal"> 667 <div class="demo" aria-hidden="true"> 668 <div class="demo-head"> 669 <span class="file"><span class="dot"></span>board-meeting.mp3 · 47:12</span> 670 <div class="demo-tools"> 671 <span class="badge">3 speakers detected</span> 672 <span class="tool" title="Edit transcript"><svg viewBox="0 0 24 24"><path d="M17 3l4 4L8 20l-5 1 1-5z"/></svg></span> 673 <span class="tool" title="Add note"><svg viewBox="0 0 24 24"><path d="M21 12a8 8 0 0 1-11.6 7.2L4 21l1.8-5.4A8 8 0 1 1 21 12z"/></svg></span> 674 <span class="export">Export â¾ <b>DOCX · PDF</b></span> 675 </div> 676 </div> 677 <div class="tl"> 678 <div class="tl-track"> 679 <i style="height:60%;background:var(--s1)"></i><i style="height:82%;background:var(--s1)"></i><i style="height:44%;background:var(--s1)"></i> 680 <i style="height:70%;background:var(--s2)"></i><i style="height:92%;background:var(--s2)"></i><i style="height:58%;background:var(--s2)"></i><i style="height:78%;background:var(--s2)"></i><i style="height:38%;background:var(--s2)"></i> 681 <i style="height:52%;background:var(--s3)"></i><i style="height:74%;background:var(--s3)"></i> 682 <i style="height:88%;background:var(--s2)"></i><i style="height:64%;background:var(--s2)"></i> 683 <i style="height:46%;background:var(--s1)"></i><i style="height:72%;background:var(--s1)"></i><i style="height:56%;background:var(--s1)"></i> 684 <i style="height:80%;background:var(--s3)"></i><i style="height:62%;background:var(--s3)"></i><i style="height:40%;background:var(--s3)"></i> 685 <i style="height:68%;background:var(--s2)"></i><i style="height:90%;background:var(--s2)"></i> 686 <i style="height:50%;background:var(--s1)"></i><i style="height:76%;background:var(--s1)"></i> 687 <i style="height:58%;background:var(--s3)"></i><i style="height:84%;background:var(--s2)"></i> 688 </div> 689 <div class="tl-legend"> 690 <b><i style="background:var(--s1)"></i>Sarah Chen</b> 691 <b><i style="background:var(--s2)"></i>Marcus Webb</b> 692 <b><i style="background:var(--s3)"></i>Elena Novak</b> 693 </div> 694 </div> 695 <div class="demo-body"> 696 <div class="tc-row">
697 <span class="tc-time">00:12.4</span> 698 <div> 699 <div class="tc-speaker tc-s1">Sarah Chen <span class="tc-tag">host · 0.92</span></div> 700 <div class="tc-text">Welcome everyone â let's get started with the Q3 numbers.</div> 701 </div> 702 </div> 703 <div class="tc-row"> 704 <span class="tc-time">00:19.1</span> 705 <div> 706 <div class="tc-speaker tc-s2">Marcus Webb <span class="tc-tag">enrolled voice</span> <span class="tc-tag">edited</span></div> 707 <div class="tc-text">Thanks Sarah. Revenue landed <span class="tc-edit">12%</span> above forecast, driven mostly by the API business.</div> 708 <span class="tc-note"><b>NOTE</b> · verify vs Q3 deck, slide 4</span> 709 </div> 710 </div> 711 <div class="tc-row"> 712 <span class="tc-time">00:31.8</span> 713 <div> 714 <div class="tc-speaker tc-s3">Elena Novak</div> 715 <div class="tc-text">Before we move on â does that include the enterprise renewals from June? <span class="cursor"></span></div> 716 </div> 717 </div> 718 </div> 719 </div> 720 </div> 721 </div> 722 </section> 723 724 <!-- ======== claims strip ======== --> 725 <div class="claims"> 726 <div class="container"> 727 <div class="claims-grid"> 728 <div class="claim"> 729 <span class="k mono">Accuracy</span> 730 <div class="v">25% fewer errors</div> 731 <p>Relatively lower diarization error rate than pyannote community-1, the state-of-the-art open-source model, across four public benchmarks.</p> 732 </div> 733 <div class="claim"> 734 <span class="k mono">Languages</span> 735 <div class="v">25</div> 736 <p>European languages in batch, 40 languages & regional variants in real-time streaming â same pipeline, same speaker accuracy.</p> 737 </div> 738 <div class="claim"> 739 <span class="k mono">Audio retained</span> 740 <div class="v">0 bytes</div> 741 <p>Source audio is deleted the moment processing completes. Deleted, not archived.</p> 742 </div> 743 <div class="claim"> 744 <span class="k mono">To start</span> 745 <div class="v">50 hours</div> 746 <p>Free speaker-attributed transcription on every new account. Per-minute billing after that.</p> 747 </div> 748 </div> 749 </div> 750 </div> 751 752 <!-- ======== how it works ======== --> 753 <section id="how"> 754 <div class="container"> 755 <div class="section-head center reveal"> 756 <span class="mono">How it works</span> 757 <h2>From raw audio to named speakers</h2> 758 <p>One job, four stages. Each stage returns its results as soon as it finishes â you never wait for the whole pipeline to read the transcript.</p> 759 </div> 760 <div class="steps reveal"> 761 <div class="step"> 762 <span class="n">01 / INGEST</span> 763 <h3>Upload or stream</h3> 764 <p>Send any common audio or video format â conversion is handled. Or stream <code>16 kHz PCM</code> over a WebSocket for real time.</p> 765 </div> 766 <div class="step">
767 <span class="n">02 / TRANSCRIBE</span> 768 <h3>Accurate speech recognition</h3> 769 <p>Word-level timestamps in 25 European languages, batch or streaming, built for conversational speech.</p> 770 </div> 771 <div class="step"> 772 <span class="n">03 / DIARIZE</span> 773 <h3>Who spoke when</h3> 774 <p>State-of-the-art segmentation by voice â robust to overlap, crosstalk and distant microphones.</p> 775 </div> 776 <div class="step"> 777 <span class="n">04 / LLM ATTRIBUTION</span> 778 <h3>Real names</h3> 779 <p>An LLM reads the conversation and names each speaker â with confidence and quoted evidence â or matches voices you've enrolled.</p> 780 </div> 781 </div> 782 </div> 783 </section> 784 785 <!-- ======== accuracy ======== --> 786 <section id="accuracy" class="dev"> 787 <div class="container"> 788 <div class="section-head reveal"> 789 <span class="mono">Accuracy</span> 790 <h2>Measured, not promised</h2> 791 <p>Diarization error rate (DER) across four public benchmark corpora â real meetings and in-the-wild media. Identical audio, identical scoring for every system.</p> 792 </div> 793 <div class="derviz reveal"> 794 <div class="derviz-head"> 795 <span class="t">Diarization error rate, drawn to scale</span> 796 <span class="k">bar length = DER · shorter is better · one shared scale</span> 797 </div> 798 <div class="dv-group"> 799 <div class="dv-bench">NOTSOFAR‑1 <span class="sc">office meetings, single room microphone</span></div> 800 <div class="dv-row"><span class="dv-label">pyannote community‑1</span><div class="dv-track"><i style="width:50.3%"></i><b>27.67%</b></div></div> 801 <div class="dv-row ours"><span class="dv-label">Re:WayAI</span><div class="dv-track"><i style="width:37.1%"></i><b>20.43%</b> <span class="delta">−26% vs open source</span></div></div> 802 </div> 803 <div class="dv-group"> 804 <div class="dv-bench">ICSI <span class="sc">natural research meetings, up to ~10 speakers</span></div> 805 <div class="dv-row"><span class="dv-label">AWS Transcribe</span><div class="dv-track"><i style="width:83.6%"></i><b>46%</b></div></div> 806 <div class="dv-row"><span class="dv-label">pyannote community‑1</span><div class="dv-track"><i style="width:56.1%"></i><b>30.84%</b></div></div> 807 <div class="dv-row ours"><span class="dv-label">Re:WayAI</span><div class="dv-track"><i style="width:42.5%"></i><b>23.35%</b> <span class="delta">best</span></div></div> 808 </div> 809 <div class="dv-group"> 810 <div class="dv-bench">AMI <span class="sc">project meetings, headset mix</span></div> 811 <div class="dv-row"><span class="dv-label">Deepgram nova‑3</span><div class="dv-track"><i style="width:63.6%"></i><b>35%</b></div></div> 812 <div class="dv-row"><span class="dv-label">AWS Transcribe</span><div class="dv-track"><i style="width:52.7%"></i><b>29%</b></div></div> 813 <div class="dv-row"><span class="dv-label">pyannote community‑1</span><div class="dv-track"><i style="width:31.0%"></i><b>17.05%</b></div></div> 814 <div class="dv-row"><span class="dv-label">pyannoteAI precision‑2</span><div class="dv-track"><i style="width:23.5%"></i><b>12.9%</b></div></div> 815 <div class="dv-row ours"><span class="dv-label">Re:WayAI</span><div class="dv-track"><i style="width:23.4%"></i><b>12.85%</b> <span class="delta">best</span></div></div> 816 </div> 817 <div class="dv-group"> 818 <div class="dv-bench">VoxConverse <span class="sc">in-the-wild media: debates, talk shows, interviews</span></div> 819 <div class="dv-row"><span class="dv-label">Deepgram nova‑3</span><div class="dv-track">
819<i style="width:65.5%"></i><b>36%</b></div></div> 820 <div class="dv-row"><span class="dv-label">AWS Transcribe</span><div class="dv-track"><i style="width:23.6%"></i><b>13%</b></div></div> 821 <div class="dv-row"><span class="dv-label">pyannote community‑1</span><div class="dv-track"><i style="width:20.3%"></i><b>11.14%</b></div></div> 822 <div class="dv-row"><span class="dv-label">pyannoteAI precision‑2</span><div class="dv-track"><i style="width:15.5%"></i><b class="best">8.5%</b></div></div> 823 <div class="dv-row ours"><span class="dv-label">Re:WayAI</span><div class="dv-track"><i style="width:15.7%"></i><b>8.62%</b> <span class="delta">2nd best</span></div></div> 824 </div> 825 <div class="dv-group"> 826 <div class="dv-bench">Overall <span class="sc">average across all four</span></div> 827 <div class="dv-row"><span class="dv-label">pyannote community‑1</span><div class="dv-track"><i style="width:39.4%"></i><b>21.68%</b></div></div> 828 <div class="dv-row ours"><span class="dv-label">Re:WayAI</span><div class="dv-track"><i style="width:29.7%"></i><b>16.31%</b> <span class="delta">−25% vs open source</span></div></div> 829 </div> 830 </div> 831 <p class="bench-note reveal"> 832 DER â diarization error rate; best result per benchmark in bold. The green badge is our 833 rank among the systems evaluated on that benchmark, or â where pyannote community‑1 is 834 the only other system evaluated â our relative error reduction against it. Our numbers: internal 835 evaluation, July 2026, identical audio and scoring for every system. precision‑2 as 836 published in the <a href="https://github.com/pyannote/pyannote-audio" target="_blank" rel="noopener">pyannote‑audio benchmark</a>; 837 AWS and Deepgram via <a href="https://github.com/argmaxinc/OpenBench/blob/main/BENCHMARKS.md" target="_blank" rel="noopener">OpenBench</a>. 838 Bottom line: <strong style="color:var(--ink);">25% relatively fewer diarization 839 errors</strong> than the best open-source model. 840 </p> 841 842 <div class="section-head sub reveal"> 843 <p><strong style="color:var(--ink);">cpWER</strong> is the strictest public metric for 844 speaker-attributed transcription: a word counts as correct only if it is both transcribed 845 correctly <em>and</em> attributed to the right speaker. Measured against nine commercial 846 APIs on the same public benchmarks.</p> 847 </div> 848 <div class="derviz reveal"> 849 <div class="derviz-head"> 850 <span class="t">Speaker-attributed accuracy (cpWER), drawn to scale</span> 851 <span class="k">bar length = cpWER · shorter is better · one shared scale</span> 852 </div> 853 <div class="dv-group"> 854 <div class="dv-bench">NOTSOFAR‑1 dev <span class="sc">office meetings, development set</span></div> 855 <div class="dv-row"><span class="dv-label">Google</span><div class="dv-track"><i style="width:89.0%"></i><b>75.63%</b></div></div> 856 <div class="dv-row"><span class="dv-label">Speechmatics</span><div class="dv-track"><i style="width:74.6%"></i><b>63.38%</b></div></div> 857 <div class="dv-row"><span class="dv-label">Deepgram</span><div class="dv-track"><i style="width:73.6%"></i><b>62.55%</b></div></div> 858 <div class="dv-row"><span class="dv-label">
858Mistral Voxtral</span><div class="dv-track"><i style="width:72.3%"></i><b>61.42%</b></div></div> 859 <div class="dv-row"><span class="dv-label">Grok</span><div class="dv-track"><i style="width:69.3%"></i><b>58.92%</b></div></div> 860 <div class="dv-row"><span class="dv-label">Gladia</span><div class="dv-track"><i style="width:66.0%"></i><b>56.12%</b></div></div> 861 <div class="dv-row"><span class="dv-label">ElevenLabs</span><div class="dv-track"><i style="width:60.3%"></i><b>51.29%</b></div></div> 862 <div class="dv-row"><span class="dv-label">AssemblyAI</span><div class="dv-track"><i style="width:56.7%"></i><b>48.22%</b></div></div> 863 <div class="dv-row"><span class="dv-label">Azure</span><div class="dv-track"><i style="width:53.4%"></i><b class="best">45.38%</b></div></div> 864 <div class="dv-row ours"><span class="dv-label">Re:WayAI</span><div class="dv-track"><i style="width:56.3%"></i><b>47.89%</b> <span class="delta">2nd best</span></div></div> 865 </div> 866 <div class="dv-group"> 867 <div class="dv-bench">NOTSOFAR‑1 test <span class="sc">office meetings, single room microphone</span></div> 868 <div class="dv-row"><span class="dv-label">Google</span><div class="dv-track"><i style="width:75.1%"></i><b>63.83%</b></div></div> 869 <div class="dv-row"><span class="dv-label">Speechmatics</span><div class="dv-track"><i style="width:66.5%"></i><b>56.53%</b></div></div> 870 <div class="dv-row"><span class="dv-label">Grok</span><div class="dv-track"><i style="width:61.6%"></i><b>52.35%</b></div></div> 871 <div class="dv-row"><span class="dv-label">
871Mistral Voxtral</span><div class="dv-track"><i style="width:61.1%"></i><b>51.91%</b></div></div> 872 <div class="dv-row"><span class="dv-label">Deepgram</span><div class="dv-track"><i style="width:56.8%"></i><b>48.24%</b></div></div> 873 <div class="dv-row"><span class="dv-label">Gladia</span><div class="dv-track"><i style="width:56.2%"></i><b>47.81%</b></div></div> 874 <div class="dv-row"><span class="dv-label">ElevenLabs</span><div class="dv-track"><i style="width:52.2%"></i><b>44.37%</b></div></div> 875 <div class="dv-row"><span class="dv-label">AssemblyAI</span><div class="dv-track"><i style="width:43.6%"></i><b>37.02%</b></div></div> 876 <div class="dv-row"><span class="dv-label">Azure</span><div class="dv-track"><i style="width:42.0%"></i><b class="best">35.68%</b></div></div> 877 <div class="dv-row ours"><span class="dv-label">Re:WayAI</span><div class="dv-track"><i style="width:50.6%"></i><b>43.03%</b> <span class="delta">3rd best</span></div></div> 878 </div> 879 <div class="dv-group"> 880 <div class="dv-bench">AMI <span class="sc">project meetings, headset mix</span></div> 881 <div class="dv-row"><span class="dv-label">Google</span><div class="dv-track"><i style="width:55.2%"></i><b>46.96%</b></div></div> 882 <div class="dv-row"><span class="dv-label">ElevenLabs</span><div class="dv-track"><i style="width:42.5%"></i><b>36.14%</b></div></div> 883 <div class="dv-row"><span class="dv-label">
883Mistral Voxtral</span><div class="dv-track"><i style="width:41.0%"></i><b>34.86%</b></div></div> 884 <div class="dv-row"><span class="dv-label">Gladia</span><div class="dv-track"><i style="width:40.4%"></i><b>34.34%</b></div></div> 885 <div class="dv-row"><span class="dv-label">Grok</span><div class="dv-track"><i style="width:37.8%"></i><b>32.10%</b></div></div> 886 <div class="dv-row"><span class="dv-label">Deepgram</span><div class="dv-track"><i style="width:34.4%"></i><b>29.28%</b></div></div> 887 <div class="dv-row"><span class="dv-label">Azure</span><div class="dv-track"><i style="width:32.2%"></i><b>27.39%</b></div></div> 888 <div class="dv-row"><span class="dv-label">AssemblyAI</span><div class="dv-track"><i style="width:32.2%"></i><b>27.36%</b></div></div> 889 <div class="dv-row"><span class="dv-label">Speechmatics</span><div class="dv-track"><i style="width:24.5%"></i><b class="best">20.82%</b></div></div> 890 <div class="dv-row ours"><span class="dv-label">Re:WayAI</span><div class="dv-track"><i style="width:34.0%"></i><b>28.89%</b> <span class="delta">4th best</span></div></div> 891 </div> 892 <div class="dv-group"> 893 <div class="dv-bench">DiPCo <span class="sc">dinner parties, close-talk mix</span></div> 894 <div class="dv-row"><span class="dv-label">Google</span><div class="dv-track"><i style="width:66.4%"></i><b>56.40%</b></div></div> 895 <div class="dv-row"><span class="dv-label">ElevenLabs</span><div class="dv-track"><i style="width:57.4%"></i><b>48.78%</b></div></div> 896 <div class="dv-row"><span class="dv-label">Gladia</span><div class="dv-track"><i style="width:49.3%"></i><b>41.90%</b></div></div> 897 <div class="dv-row"><span class="dv-label">Grok</span><div class="dv-track"><i style="width:48.9%"></i><b>41.60%</b></div></div> 898 <div class="dv-row"><span class="dv-label">Deepgram</span><div class="dv-track"><i style="width:45.1%"></i><b>38.31%</b></div></div> 899 <div class="dv-row"><span class="dv-label">
899Mistral Voxtral</span><div class="dv-track"><i style="width:44.8%"></i><b>38.04%</b></div></div> 900 <div class="dv-row"><span class="dv-label">Speechmatics</span><div class="dv-track"><i style="width:43.4%"></i><b>36.88%</b></div></div> 901 <div class="dv-row"><span class="dv-label">AssemblyAI</span><div class="dv-track"><i style="width:39.4%"></i><b>33.48%</b></div></div> 902 <div class="dv-row"><span class="dv-label">Azure</span><div class="dv-track"><i style="width:39.1%"></i><b class="best">33.23%</b></div></div> 903 <div class="dv-row ours"><span class="dv-label">Re:WayAI</span><div class="dv-track"><i style="width:46.1%"></i><b>39.21%</b> <span class="delta">6th best</span></div></div> 904 </div> 905 <div class="dv-group"> 906 <div class="dv-bench">Overall <span class="sc">average across all four</span></div> 907 <div class="dv-row"><span class="dv-label">Google</span><div class="dv-track"><i style="width:71.4%"></i><b>60.70%</b></div></div> 908 <div class="dv-row"><span class="dv-label">
908Mistral Voxtral</span><div class="dv-track"><i style="width:54.8%"></i><b>46.56%</b></div></div> 909 <div class="dv-row"><span class="dv-label">Grok</span><div class="dv-track"><i style="width:54.4%"></i><b>46.24%</b></div></div> 910 <div class="dv-row"><span class="dv-label">ElevenLabs</span><div class="dv-track"><i style="width:53.1%"></i><b>45.14%</b></div></div> 911 <div class="dv-row"><span class="dv-label">Gladia</span><div class="dv-track"><i style="width:53.0%"></i><b>45.04%</b></div></div> 912 <div class="dv-row"><span class="dv-label">Deepgram</span><div class="dv-track"><i style="width:52.5%"></i><b>44.60%</b></div></div> 913 <div class="dv-row"><span class="dv-label">Speechmatics</span><div class="dv-track"><i style="width:52.2%"></i><b>44.40%</b></div></div> 914 <div class="dv-row"><span class="dv-label">AssemblyAI</span><div class="dv-track"><i style="width:43.0%"></i><b>36.52%</b></div></div> 915 <div class="dv-row"><span class="dv-label">Azure</span><div class="dv-track"><i style="width:41.7%"></i><b class="best">35.42%</b></div></div> 916 <div class="dv-row ours"><span class="dv-label">Re:WayAI</span><div class="dv-track"><i style="width:46.7%"></i><b>39.75%</b> <span class="delta">3rd best</span></div></div> 917 </div> 918 </div> 919 <p class="bench-note reveal"> 920 cpWER â best result per benchmark in bold. Competitor numbers as 921 published on <a href="https://www.assemblyai.com/benchmarks" target="_blank" rel="noopener">AssemblyAI’s benchmarks page</a> 922 (July 2026; Soniox omitted). Re:WayAI: internal evaluation on the same public 923 corpora, same Whisper-normalizer protocol. 924 Bottom line: <strong style="color:var(--ink);">third of ten systems overall</strong> â 925 behind only Azure and AssemblyAI. 926 </p> 927 </div> 928 </section> 929 930 <!-- ======== features ======== --> 931 <section id="features"> 932 <div class="container"> 933 <div class="section-head reveal"> 934 <span class="mono">Capabilities</span> 935 <h2>Built for the hard part: the speakers</h2> 936 <p>Anyone can transcribe. We also get the speakers right.</p> 937 </div> 938 <div class="features-grid reveal"> 939 <div class="feature"> 940 <div class="fic"><svg class="ic" viewBox="0 0 24 24"><path d="M3 10v4M7 6v12M11 9v6M15 4v16M19 8v8"/></svg></div> 941 <h3>Overlap-robust diarization</h3> 942 <p>Segmentation that holds up on interruptions, crosstalk and distant-microphone recordings â not just clean studio audio.</p> 943 </div> 944 <div class="feature"> 945 <div class="fic"><svg class="ic" viewBox="0 0 24 24"><path d="M12 2l2.4 4.9 5.4.8-3.9 3.8.9 5.4-4.8-2.5-4.8 2.5.9-5.4L4.2 7.7l5.4-.8z"/></svg></div> 946 <h3>LLM speaker attribution</h3> 947 <p>An LLM reads the conversation and puts real names on speakers â each with a confidence score and the quoted evidence behind it.</p> 948 </div> 949 <div class="feature"> 950 <div class="fic"><svg class="ic" viewBox="0 0 24 24"><path d="M12 3a4.5 4.5 0 0 1 4.4 5.5A4 4 0 0 1 18 16h-1M12 3a4.5 4.5 0 0 0-4.4 5.5A4 4 0 0 0 6 16h1M12 3v18M9 21h6"/></svg></div> 951 <h3>Advanced LLM capabilities</h3> 952 <p>The LLM stage goes beyond naming: it repairs diarization slips, cleans segment boundaries and turns raw output into a readable transcript.</p> 953 </div> 954 <div class="feature"> 955 <div class="fic"><svg class="ic" viewBox="0 0 24 24"><path d="M13 2L4 14h6l-1 8 9-12h-6l1-8z"/></svg></div> 956 <h3>Real-time streaming</h3> 957 <p>Live transcription over a WebSocket with partial results as words are spoken â straight from a microphone or a call.</p> 958 </div> 959 <div class="feature"> 960 <div class="fic">
960<svg class="ic" viewBox="0 0 24 24"><path d="M21 12a8 8 0 0 1-11.6 7.2L4 21l1.8-5.4A8 8 0 1 1 21 12z"/><path d="M9 11h6M9 14h3"/></svg></div> 961 <h3>Transcript Q&A</h3> 962 <p>Ask questions about any finished transcript â “what did we decide on pricing?” â and the answer is grounded strictly in what was said.</p> 963 </div> 964 <div class="feature"> 965 <div class="fic"><svg class="ic" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18"/></svg></div> 966 <h3>25 European languages</h3> 967 <p>English plus 24 more, through the same pipeline â same diarization, same attribution, same accuracy.</p> 968 </div> 969 <div class="feature"> 970 <div class="fic"><svg class="ic" viewBox="0 0 24 24"><path d="M17 3l4 4L8 20l-5 1 1-5z"/><path d="M14 6l4 4"/></svg></div> 971 <h3>Transcript editor</h3> 972 <p>Fix a word, rename a speaker, pin a note to any segment â with the source video playing right next to the transcript.</p> 973 </div> 974 <div class="feature"> 975 <div class="fic"><svg class="ic" viewBox="0 0 24 24"><path d="M12 3v10M8 9l4 4 4-4M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"/></svg></div> 976 <h3>One-click exports</h3> 977 <p>Hand a clean DOCX or PDF to the humans â and JSON with word-level timings to the machines. Same job, both worlds.</p> 978 </div> 979 </div> 980 </div> 981 </section> 982 983 <!-- ======== voices ======== --> 984 <section id="voices"> 985 <div class="container dev-inner"> 986 <div class="reveal"> 987 <span class="mono">Voice enrollment</span> 988 <h2 style="margin-top:14px;">Your own database of voices</h2> 989 <p style="color:var(--ink-mid); font-size:16px;"> 990 Enroll a voice once with ~10 seconds of audio. From then on, that person is 991 recognized by name in every recording you send â before the LLM even has to guess. 992 </p> 993 <ul class="dev-points"> 994 <li><strong>Private by design</strong> â your voice library belongs to your account alone; it is never shared or matched against anyone else's audio</li> 995 <li><strong>Messy samples welcome</strong> â enrollment audio is diarized first, and the dominant speaker becomes the profile</li> 996 </ul> 997 <a href="/app/register" class="btn btn-ghost">Build your voice library</a> 998 </div> 999 <div class="voice-card reveal" aria-hidden="true"> 1000 <div class="voice-head"> 1001 <span class="t">Voice library</span> 1002 <span class="badge">Private to your account</span> 1003 </div> 1004 <div class="v-row"> 1005 <div class="v-init" style="background:rgba(74,222,128,.12); border:1px solid rgba(74,222,128,.3); color:var(--s1);">SC</div> 1006 <div> 1007 <div class="v-name">Sarah Chen</div> 1008 <div class="v-meta">enrolled 14 s · 2026-05-02</div> 1009 </div> 1010 <span class="v-status"><i></i>ready</span> 1011 </div> 1012 <div class="v-row"> 1013 <div class="v-init" style="background:rgba(125,211,252,.12); border:1px solid rgba(125,211,252,.3); color:var(--s2);">MW</div> 1014 <div> 1015 <div class="v-name">Marcus Webb</div> 1016 <div class="v-meta">enrolled 11 s · 2026-05-02</div> 1017 </div> 1018 <span class="v-status"><i></i>ready</span> 1019 </div> 1020 <div class="v-row"> 1021 <div class="v-init" style="background:rgba(240,171,252,.12); border:1px solid rgba(240,171,252,.3); color:var(--s3);">EN</div> 1022 <div> 1023 <div class="v-name">
1023Elena Novak</div> 1024 <div class="v-meta">enrolled 18 s · 2026-06-19</div> 1025 </div> 1026 <span class="v-status"><i></i>ready</span> 1027 </div> 1028 <div class="voice-foot"> 1029 jobs.create(…, enrollment_ids=[3, 7]) <b>→ matched on this job only</b> 1030 </div> 1031 </div> 1032 </div> 1033 </section> 1034 1035 <!-- ======== security ======== --> 1036 <section id="security" class="security"> 1037 <div class="container"> 1038 <div class="section-head reveal"> 1039 <span class="mono">Privacy & security</span> 1040 <h2>Your audio never outlives the job</h2> 1041 <p>Voice recordings are some of the most sensitive data there is. The pipeline is built around 1042 that fact â GDPR compliant and ISO 27001 certified, not audited into shape afterwards.</p> 1043 </div> 1044 <div class="sec-grid reveal"> 1045 <div class="sec-card"> 1046 <div class="fic"><svg class="ic" viewBox="0 0 24 24"><path d="M4 7h16M10 11v6M14 11v6M6 7l1 13a2 2 0 0 0 2 1.8h6A2 2 0 0 0 17 20l1-13M9 7V5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2"/></svg></div> 1047 <h3>Audio deleted immediately</h3> 1048 <p>Source audio is deleted the moment processing completes. We never retain, reuse or train on your recordings â there is nothing left to leak.</p> 1049 </div> 1050 <div class="sec-card"> 1051 <div class="fic"><svg class="ic" viewBox="0 0 24 24"><path d="M12 3l8 3v5c0 5-3.4 8.4-8 10-4.6-1.6-8-5-8-10V6z"/><path d="M9 12l2 2 4-4"/></svg></div> 1052 <h3>ISO 27001, our own data center</h3> 1053 <p>Re:WayAI is ISO 27001 certified. Every job runs inside our own certified data center â your audio never leaves it, and no third-party cloud or AI API ever touches it.</p> 1054 </div> 1055 <div class="sec-card"> 1056 <div class="fic"><svg class="ic" viewBox="0 0 24 24"><rect x="4" y="10" width="16" height="10" rx="2"/><path d="M8 10V7a4 4 0 0 1 8 0v3"/></svg></div> 1057 <h3>Transcripts stay yours</h3> 1058 <p>Finished transcripts are stored for you until you delete them â review, edit, annotate, export to PDF or DOCX, or remove them at any time via the console or the API.</p> 1059 </div> 1060 </div> 1061 <div class="onprem reveal"> 1062 <div> 1063 <span class="mono" style="display:block; margin-bottom:8px;">On-premise</span> 1064 <h3>Audio can't leave the building at all?</h3> 1065 <p>The entire pipeline â models included â can be installed on your own hardware and run fully offline, behind your firewall.</p> 1066 </div> 1067 <a href="#contact" class="btn btn-ghost">Talk to us</a> 1068 </div> 1069 <div class="sec-badges reveal"> 1070 <span>ISO 27001 certified</span> 1071 <span>GDPR compliant</span> 1072 <span>EU data processing</span> 1073 <span>Encrypted in transit</span> 1074 <span>No training on your data</span> 1075 <span>On-premise available</span> 1076 </div> 1077 </div> 1078 </section> 1079 1080 <!-- ======== pricing ======== --> 1081 <section id="pricing"> 1082 <div class="container"> 1083 <div class="section-head reveal"> 1084 <span class="mono">Pricing</span> 1085 <h2>Transparent pricing, pay as you go</h2> 1086 <p>We run our own hardware in our own ISO 27001 data center â no big-cloud markup 1087 baked into every minute. That's exactly why we can undercut the big transcription APIs.</p> 1088 </div> 1089 <div class="price-card reveal"> 1090 <div> 1091 <h3>Speaker-attributed transcript with speaker names</h3> 1092 <p class="lead"> 1093 The full pipeline in one API call: transcription, speaker diarization and 1094 LLM speaker naming â one price, billed per minute of audio. 1095 </p> 1096 <ul class="price-points"> 1097 <li>No subscriptions, no minimums â pay only for audio you process</li> 1098 <li>Or run any stage on its own: every job is billed per stage</li> 1099 <li>Live rates in the console, metered usage API included</li> 1100 </ul> 1101 </div> 1102 <div class="price-cta">
1103 <span class="k mono">Understand conversation</span> 1104 <div class="big"><small>from</small> $0.095<small>/hour</small></div> 1105 <p class="sub">transcript · speakers · names</p> 1106 <a href="#pricing-plans" class="btn btn-primary btn-lg">See pricing plans</a> 1107 </div> 1108 </div> 1109 <div class="rate-table reveal"> 1110 <div class="rate-row head"><span class="n">Component â run only what you need</span><span>price</span><span>per minute</span></div> 1111 <div class="rate-row"><span class="n">Speech-to-text (batch)<small>25 European languages</small></span><span class="p">$0.025/hour</span><span class="pm">$0.00042/min</span></div> 1112 <div class="rate-row"><span class="n">Speech-to-text (real-time streaming)<small>40 languages & regional variants · same price as batch</small></span><span class="p">$0.025/hour</span><span class="pm">$0.00042/min</span></div> 1113 <div class="rate-row"><span class="n">Speaker diarization<small>who spoke when, enrolled-voice recognition included</small></span><span class="p">$0.06/hour</span><span class="pm">$0.001/min</span></div> 1114 <div class="rate-row"><span class="n">LLM speaker naming & every other AI prompt<small>real names from the conversation · transcript Q&A billed per audio hour, never per token</small></span><span class="p">$0.01/hour</span><span class="pm">$0.00017/min</span></div> 1115 </div> 1116 <div class="tier-grid reveal" id="pricing-plans"> 1117 <div class="tier-card featured"> 1118 <span class="k mono">Starter</span> 1119 <div class="amount"><em>50 hours</em> free</div> 1120 <p class="per">then pay as you go â $0.19/hour all-in (2à Growth rates)</p> 1121 <ul> 1122 <li>50 hours of full speaker-attributed transcription on us</li> 1123 <li>Batch API, real-time streaming & transcript Q&A</li> 1124 <li>25 languages batch · 40 languages & variants streaming</li> 1125 <li>GDPR compliant, ISO 27001 certified</li> 1126 <li>No credit card to start</li> 1127 </ul> 1128 <a href="/app/register" class="btn btn-primary">Start free</a> 1129 </div> 1130 <div class="tier-card"> 1131 <span class="k mono">Growth</span> 1132 <div class="amount">from <em>$0.095/hour</em></div> 1133 <p class="per">all-in â the rates in the table above</p> 1134 <ul> 1135 <li>50% off Starter on every stage, committed volume</li> 1136 <li>Monthly or annual commitment, invoiced</li> 1137 <li>Priority support</li> 1138 <li>Same privacy guarantees: GDPR, ISO 27001</li> 1139 </ul> 1140 <a href="#contact" class="btn btn-ghost">Speak with our experts</a> 1141 </div> 1142 <div class="tier-card"> 1143 <span class="k mono">Enterprise</span> 1144 <div class="amount">Custom</div> 1145 <p class="per">fully negotiable â built around your workload</p> 1146 <ul> 1147 <li>On-premise: the whole pipeline behind your firewall</li> 1148 <li>Custom SLAs (guaranteed uptime & response times) and dedicated support</li> 1149 <li>Unlimited scale, custom integrations</li> 1150 <li>Zero data retention by design</li> 1151 </ul> 1152 <a href="#contact" class="btn btn-ghost">Speak with our experts</a> 1153 </div> 1154 </div> 1155 </div> 1156 </section> 1157 1158 <!-- ======== contact ======== --> 1159 <section id="contact"> 1160 <div class="container"> 1161 <div class="contact-wrap"> 1162 <div class="section-head center reveal">
1163 <span class="mono">Contact</span> 1164 <h2>Speak with our experts</h2> 1165 <p>Volume pricing, on-premise deployment, or just not sure which stages you need â 1166 tell us about your workload and we'll get back to you within one business day.</p> 1167 </div> 1168 <div class="contact-card reveal"> 1169 <form class="contact-form" id="contact-form" novalidate> 1170 <label> 1171 <span class="lbl">Name <b>*</b></span> 1172 <input type="text" name="name" placeholder="Your Name" required maxlength="200" autocomplete="name"> 1173 </label> 1174 <label> 1175 <span class="lbl">Work email <b>*</b></span> 1176 <input type="email" name="email" placeholder="[email protected]" required maxlength="200" autocomplete="email"> 1177 </label> 1178 <label> 1179 <span class="lbl">Company</span> 1180 <input type="text" name="company" placeholder="Company Inc." maxlength="200" autocomplete="organization"> 1181 </label> 1182 <label> 1183 <span class="lbl">Monthly audio volume</span> 1184 <input type="text" name="monthly_volume" placeholder="e.g. 500 hours" maxlength="200"> 1185 </label> 1186 <label class="full"> 1187 <span class="lbl">Your message <b>*</b></span> 1188 <textarea name="message" placeholder="What are you building? Which stages do you need â transcription, diarization, speaker naming?" required maxlength="5000"></textarea> 1189 </label> 1190 <div class="contact-status full" id="contact-status" role="status"></div> 1191 <button type="submit" class="btn btn-primary btn-lg full" id="contact-submit">Send message</button> 1192 <p class="contact-fine">We'll reply within one business day â you'll get an email confirmation right away.</p> 1193 </form> 1194 <div class="contact-success" id="contact-success"> 1195 <div class="tick"><svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 12.5l5 5L20 6.5"/></svg></div> 1196 <h3>Message sent</h3> 1197 <p>Thanks â we'll get back to you within one business day.<br>A confirmation is on its way to your inbox.</p> 1198 </div> 1199 </div> 1200 </div> 1201 </div> 1202 </section> 1203 1204 </main> 1205 1206 <footer class="footer"> 1207 <div class="container footer-inner"> 1208 <p>©
1208<script>document.write(new Date().getFullYear())</script>
1208 Re:WayAI. All rights reserved.</p> 1209 <ul class="footer-links"> 1210 <li><a href="/app/login">Sign in</a></li> 1211 <li><a href="/terms.html">Terms & Privacy</a></li> 1212 <li><a href="#contact">Contact</a></li> 1213 </ul> 1214 </div> 1215 </footer> 1216 1217
1217<script> 1218 // scroll reveal 1219 if ('IntersectionObserver' in window) { 1220 var io = new IntersectionObserver(function (entries) { 1221 entries.forEach(function (e) { 1222 if (e.isIntersecting) { e.target.classList.add('in'); io.unobserve(e.target); } 1223 }); 1224 }, { rootMargin: '0px 0px -8% 0px' }); 1225 document.querySelectorAll('.reveal').forEach(function (el) { io.observe(el); }); 1226 } else { 1227 document.querySelectorAll('.reveal').forEach(function (el) { el.classList.add('in'); }); 1228 } 1229 1230 // "Speak with our experts" form â POST /api/contact 1231 (function () { 1232 var form = document.getElementById('contact-form'); 1233 if (!form) return; 1234 var status = document.getElementById('contact-status'); 1235 var btn = document.getElementById('contact-submit'); 1236 form.addEventListener('submit', function (ev) { 1237 ev.preventDefault(); 1238 if (!form.reportValidity()) return; 1239 var payload = {}; 1240 ['name', 'email', 'company', 'monthly_volume', 'message'].forEach(function (k) { 1241 var v = form.elements[k].value.trim(); 1242 if (v) payload[k] = v; 1243 }); 1244 btn.disabled = true; btn.textContent = 'Sendingâ¦'; 1245 status.className = 'contact-status full'; 1246 status.textContent = ''; 1247 fetch('/api/contact', { 1248 method: 'POST', 1249 headers: { 'Content-Type': 'application/json' }, 1250 body: JSON.stringify(payload) 1251 }).then(function (r) { 1252 if (!r.ok) throw new Error('http ' + r.status); 1253 return r.json(); 1254 }).then(function () { 1255 form.style.display = 'none'; 1256 document.getElementById('contact-success').style.display = 'block'; 1257 }).catch(function () { 1258 status.className = 'contact-status full err'; 1259 status.textContent = "Something went wrong â please email us directly at [email protected]."; 1260 btn.disabled = false; btn.textContent = 'Send message'; 1261 }); 1262 }); 1263 })(); 1264 </script>
1264 1265</body> 1266</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.