PageSourceSearch

https://rewayai.ai/

html rewayai.ai collected 2026-10-05 14:05:24 UTC 84,101 bytes, 1,266 lines download raw bytes

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 &amp; 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&nbsp;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 &middot; shorter is better &middot; one shared scale</span>
797                    </div>
798                    <div class="dv-group">
799                        <div class="dv-bench">NOTSOFAR&#8209;1 <span class="sc">office meetings, single room microphone</span></div>
800                        <div class="dv-row"><span class="dv-label">pyannote community&#8209;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">&minus;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&#8209;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&#8209;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&#8209;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&#8209;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&#8209;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&#8209;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&#8209;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&#8209;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">&minus;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&#8209;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&#8209;2 as
836                    published in the <a href="https://github.com/pyannote/pyannote-audio" target="_blank" rel="noopener">pyannote&#8209;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 &middot; shorter is better &middot; one shared scale</span>
852                    </div>
853                    <div class="dv-group">
854                        <div class="dv-bench">NOTSOFAR&#8209;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&#8209;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&rsquo;s benchmarks page</a>
922                    (July&nbsp;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&amp;A</h3>
962                        <p>Ask questions about any finished transcript — &ldquo;what did we decide on pricing?&rdquo; — 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 &middot; 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 &middot; 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 &middot; 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(&hellip;, enrollment_ids=[3, 7]) <b>&rarr; 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 &amp; 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 &amp; 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 &amp; every other AI prompt<small>real names from the conversation · transcript Q&amp;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 &amp; transcript Q&amp;A</li>
1124                            <li>25 languages batch · 40 languages &amp; 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 &amp; 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>&copy; 
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 &amp; 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.