Asmitha-28 commited on
Commit
1d63d0f
·
verified ·
1 Parent(s): 17d3301

Upload dashboard/web/index.html with huggingface_hub

Browse files
Files changed (1) hide show
  1. dashboard/web/index.html +542 -543
dashboard/web/index.html CHANGED
@@ -1,543 +1,542 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>AetherFlow AI | SupportMind Engine</title>
7
- <meta name="description" content="AI-powered B2B SaaS ticket routing with MC Dropout uncertainty quantification">
8
- <link rel="preconnect" href="https://fonts.googleapis.com">
9
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
10
- <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet" />
11
- <link rel="stylesheet" href="/dashboard/style.css?v=3">
12
- </head>
13
- <body>
14
- <!-- Animated Background -->
15
- <div class="bg-grid"></div>
16
- <div class="bg-glow bg-glow-1"></div>
17
- <div class="bg-glow bg-glow-2"></div>
18
- <div class="bg-glow bg-glow-3"></div>
19
-
20
- <!-- Navigation -->
21
- <nav class="navbar" id="navbar">
22
- <div class="nav-brand">
23
- <span class="brand-text">AetherFlow <span class="brand-sub">AI</span></span>
24
- <span class="brand-badge">SupportMind v1.0</span>
25
- </div>
26
- <div class="nav-links">
27
- <a href="#demo" class="nav-link">Live Demo</a>
28
- <a href="#architecture" class="nav-link">Architecture</a>
29
- <a href="#benchmarks" class="nav-link">Benchmarks</a>
30
- <a href="#api-section" class="nav-link">API</a>
31
- </div>
32
- <div class="nav-actions">
33
- <button class="btn-ghost" style="padding: 8px 16px; font-size: 13px;">Demo Mode</button>
34
- <button class="btn-primary" style="padding: 8px 20px; font-size: 13px;">Get Started</button>
35
- </div>
36
- </nav>
37
-
38
- <!-- Hero Section -->
39
- <header class="hero" id="hero">
40
- <div class="hero-container">
41
- <div class="hero-content">
42
- <div class="hero-eyebrow">
43
- <span class="status-dot"></span>
44
- Uncertainty-Aware Neural Engine
45
- </div>
46
- <h1 class="hero-title">
47
- AI that <span class="gradient-text italic">knows</span> when it doesn't know
48
- </h1>
49
- <p class="hero-subtitle">
50
- MC Dropout uncertainty quantification on DistilBERT. Three-tier routing:
51
- <strong>Route</strong> · <strong>Clarify</strong> · <strong>Escalate</strong>.
52
- Optimize support workflows with surgical precision.
53
- </p>
54
- <div class="hero-actions">
55
- <a href="#demo" class="btn btn-primary">
56
- Try Live Demo
57
- <span class="material-symbols-outlined btn-icon">arrow_forward</span>
58
- </a>
59
- <a href="#architecture" class="btn btn-ghost">View Architecture</a>
60
- </div>
61
- </div>
62
-
63
- <!-- Hero Visual (Pipeline Preview) -->
64
- <div class="hero-visual">
65
- <div class="pipeline-card glass-panel shimmer-border">
66
- <div class="pipeline-header">
67
- <div class="window-controls">
68
- <div class="dot dot-red"></div>
69
- <div class="dot dot-amber"></div>
70
- <div class="dot dot-green"></div>
71
- </div>
72
- <span class="pipeline-status">pipeline_status: active</span>
73
- </div>
74
- <div class="pipeline-tiers">
75
- <div class="tier-card active">
76
- <div class="tier-info">
77
- <div class="tier-icon"><span class="material-symbols-outlined">account_tree</span></div>
78
- <div>
79
- <div class="tier-name">Tier 1: Auto-Route</div>
80
- <div class="tier-meta">Confidence &gt; 0.92</div>
81
- </div>
82
- </div>
83
- <span class="material-symbols-outlined tier-indicator" style="color: var(--green)">check_circle</span>
84
- </div>
85
- <div class="tier-card" style="background: rgba(192, 193, 255, 0.05); border-color: var(--primary);">
86
- <div class="tier-info">
87
- <div class="tier-icon" style="background: rgba(192, 193, 255, 0.4)"><span class="material-symbols-outlined">psychology</span></div>
88
- <div>
89
- <div class="tier-name" style="font-style: italic; color: var(--primary)">Tier 2: Clarification</div>
90
- <div class="tier-meta" style="color: var(--primary)">Ambiguity Detected</div>
91
- </div>
92
- </div>
93
- <div style="width: 48px; height: 6px; background: rgba(192, 193, 255, 0.2); border-radius: 10px; overflow: hidden;">
94
- <div style="width: 66%; height: 100%; background: var(--primary)"></div>
95
- </div>
96
- </div>
97
- <div class="tier-card">
98
- <div class="tier-info">
99
- <div class="tier-icon" style="background: rgba(248, 113, 113, 0.15); color: var(--red)"><span class="material-symbols-outlined">support_agent</span></div>
100
- <div>
101
- <div class="tier-name">Tier 3: Escalate</div>
102
- <div class="tier-meta">Human Protocol</div>
103
- </div>
104
- </div>
105
- <span class="material-symbols-outlined tier-indicator" style="color: #444">sync_alt</span>
106
- </div>
107
- </div>
108
- </div>
109
- </div>
110
- </div>
111
- </header>
112
-
113
- <!-- Stats Grid -->
114
- <div class="hero-stats">
115
- <div class="stat-card glass-panel" data-value="57.3" data-suffix="%">
116
- <div class="stat-label">OOD Routing Accuracy</div>
117
- <div class="stat-value"><span class="counter">0</span>%</div>
118
- <div class="stat-delta positive"><span class="material-symbols-outlined" style="font-size: 14px">trending_up</span> 100% on auto-routed</div>
119
- </div>
120
- <div class="stat-card glass-panel" data-value="100.0" data-suffix="%">
121
- <div class="stat-label">Auto-Route Precision</div>
122
- <div class="stat-value"><span class="counter">0</span>%</div>
123
- <div class="stat-delta positive">Zero false auto-routes</div>
124
- </div>
125
- <div class="stat-card glass-panel" data-value="97.9" data-suffix="%">
126
- <div class="stat-label">Safe Failure Rate</div>
127
- <div class="stat-value"><span class="counter">0</span>%</div>
128
- <div class="stat-delta positive">Flagged for human review</div>
129
- </div>
130
- <div class="stat-card glass-panel" data-value="45" data-suffix="ms">
131
- <div class="stat-label">Pipeline Latency</div>
132
- <div class="stat-value"><span class="counter">0</span>ms</div>
133
- <div class="stat-delta" style="color: #666">DistilBERT Optimized</div>
134
- </div>
135
- </div>
136
-
137
- <!-- Live Demo Section -->
138
- <section class="section" id="demo">
139
- <div class="section-header">
140
- <span class="section-badge">Interactive</span>
141
- <h2 class="section-title">Live Ticket Router</h2>
142
- <p class="section-desc">Type a support ticket and watch the confidence-gated router decide in real-time</p>
143
- </div>
144
-
145
- <div class="demo-container">
146
- <div class="demo-input-panel glass-panel">
147
- <label class="input-label">Support Ticket Text</label>
148
- <textarea id="ticket-input" class="ticket-textarea" rows="4" placeholder="e.g., We have been having issues with the export function since last Tuesday's update..."></textarea>
149
- <div class="demo-presets">
150
- <span class="preset-label">Try:</span>
151
- <button class="preset-btn" data-text="My invoice from last month shows $299 but my plan is $199. Please fix this billing error immediately.">Billing</button>
152
- <button class="preset-btn" data-text="The API endpoint /v2/export returns a 500 error when batch size exceeds 1000 records. Stack trace attached.">Technical</button>
153
- <button class="preset-btn" data-text="Hey, we have been having issues with the export function since last Tuesday's update. Also our invoice from last month looks incorrect.">Ambiguous</button>
154
- <button class="preset-btn" data-text="Our launch is in 30 minutes and export is not working. The client is waiting on this before signing.">Launch Risk</button>
155
- <button class="preset-btn" data-text="Could you please help resolve this? This is becoming difficult for our onboarding team and we are disappointed with repeated delays.">Polite Risk</button>
156
- <button class="preset-btn" data-text="No rush, but can you tell me how to update the invoice email before tomorrow?">No Rush</button>
157
- </div>
158
- <button id="route-btn" class="btn btn-primary btn-full" onclick="routeTicket()">
159
- Route Ticket
160
- </button>
161
- </div>
162
-
163
- <div class="demo-results-panel glass-panel" id="results-panel">
164
- <div class="result-placeholder" id="result-placeholder">
165
- <div class="placeholder-icon">🎯</div>
166
- <p>Enter a ticket and click "Route Ticket" to see the confidence-gated decision</p>
167
- </div>
168
-
169
- <div class="result-content" id="result-content" style="display:none">
170
- <!-- Action Badge -->
171
- <div class="action-badge-container">
172
- <div class="action-badge" id="action-badge">ROUTE</div>
173
- <div class="action-queue" id="action-queue"></div>
174
- </div>
175
-
176
- <!-- Confidence & Margin & Entropy Gauges -->
177
- <div class="gauge-row">
178
- <div class="gauge-container">
179
- <label class="gauge-label">Confidence</label>
180
- <div class="gauge-track">
181
- <div class="gauge-fill" id="conf-fill" style="width:0%"></div>
182
- <div class="gauge-zones">
183
- <div class="zone zone-red" style="width:55%"></div>
184
- <div class="zone zone-yellow" style="width:25%"></div>
185
- <div class="zone zone-green" style="width:20%"></div>
186
- </div>
187
- </div>
188
- <div class="gauge-value" id="conf-value">0.0000</div>
189
- </div>
190
- <div class="gauge-container">
191
- <label class="gauge-label">Top-2 Margin</label>
192
- <div class="gauge-track margin-track">
193
- <div class="gauge-fill margin-fill" id="margin-fill" style="width:0%; background: linear-gradient(90deg, var(--accent), var(--primary));"></div>
194
- </div>
195
- <div class="gauge-value" id="margin-value">0.0000</div>
196
- </div>
197
- <div class="gauge-container">
198
- <label class="gauge-label">Shannon Entropy</label>
199
- <div class="gauge-track entropy-track">
200
- <div class="gauge-fill entropy-fill" id="ent-fill" style="width:0%"></div>
201
- </div>
202
- <div class="gauge-value" id="ent-value">0.0000</div>
203
- </div>
204
- </div>
205
-
206
- <!-- Probability Distribution -->
207
- <div class="prob-chart" id="prob-chart"></div>
208
-
209
- <!-- Clarification Question (if action=clarify) -->
210
- <div class="clarification-box" id="clarification-box" style="display:none">
211
- <div class="clarify-header">💡 Suggested Clarification Question</div>
212
- <div class="clarify-question" id="clarify-question"></div>
213
- <div class="clarify-options" id="clarify-options"></div>
214
- <div class="clarify-gain" id="clarify-gain"></div>
215
- </div>
216
-
217
- <!-- Additional Signals -->
218
- <div class="signals-grid">
219
- <div class="signal-card">
220
- <div class="signal-label" style="display: flex; flex-direction: column;">
221
- SLA Breach Risk
222
- <span style="font-size: 9px; color: var(--yellow); margin-top: 2px;">*Demo fallback: 4.5 hrs avg</span>
223
- </div>
224
- <div class="signal-value" id="sla-value"></div>
225
- <div class="signal-bar"><div class="signal-fill" id="sla-fill"></div></div>
226
- </div>
227
- <div class="signal-card">
228
- <div class="signal-label">Sentiment</div>
229
- <div class="signal-value" id="sentiment-value"></div>
230
- <div class="signal-subvalue" id="sentiment-score">—</div>
231
- </div>
232
- <div class="signal-card">
233
- <div class="signal-label">Urgency</div>
234
- <div class="signal-value" id="urgency-value"></div>
235
- <div class="signal-subvalue" id="urgency-score">—</div>
236
- </div>
237
- <div class="signal-card">
238
- <div class="signal-label">Latency</div>
239
- <div class="signal-value" id="latency-value">—</div>
240
- </div>
241
- </div>
242
-
243
- <div class="signal-evidence-grid" id="signal-evidence-grid">
244
- <div class="evidence-panel">
245
- <div class="evidence-header">
246
- <span class="material-symbols-outlined">priority_high</span>
247
- Urgency Evidence
248
- </div>
249
- <div class="evidence-list" id="urgency-evidence-list"></div>
250
- </div>
251
- <div class="evidence-panel">
252
- <div class="evidence-header">
253
- <span class="material-symbols-outlined">psychology</span>
254
- Sentiment Evidence
255
- </div>
256
- <div class="evidence-list" id="sentiment-evidence-list"></div>
257
- </div>
258
- </div>
259
-
260
- <div class="result-reason" id="result-reason"></div>
261
-
262
- <!-- Decision explanation -->
263
- <div class="explanation-box" id="explanation-box" style="display:none">
264
- <div class="explain-header">
265
- <span class="material-symbols-outlined">analytics</span>
266
- Decision Evidence
267
- </div>
268
- <div class="explain-text" id="explain-text"></div>
269
- <div class="explain-legend">
270
- <span class="legend-item"><span class="highlight-box pos"></span> Increases confidence</span>
271
- <span class="legend-item"><span class="highlight-box neg"></span> Decreases confidence</span>
272
- </div>
273
- </div>
274
-
275
- <button id="explain-btn" class="btn btn-ghost btn-full" style="margin-top: 10px; display: none;" onclick="explainDecision()">
276
- <span class="material-symbols-outlined btn-icon">query_stats</span>
277
- Analyze Decision
278
- </button>
279
- </div>
280
-
281
- </div>
282
- </div>
283
- </section>
284
-
285
- <!-- Architecture Section -->
286
- <section class="section section-dark" id="architecture">
287
- <div class="section-header">
288
- <span class="section-badge">Technical</span>
289
- <h2 class="section-title">System Architecture</h2>
290
- <p class="section-desc">Three-stage pipeline with MC Dropout confidence gating</p>
291
- </div>
292
-
293
- <div class="arch-pipeline">
294
- <div class="arch-stage glass-panel">
295
- <div class="stage-number">1</div>
296
- <div class="stage-title">Feature Extraction</div>
297
- <div class="stage-details">
298
- <span class="tech-tag">DistilBERT</span>
299
- <span class="tech-tag">VADER</span>
300
- </div>
301
- <p class="stage-desc">768-dim embedding + sentiment + urgency</p>
302
- </div>
303
- <div class="arch-arrow">→</div>
304
- <div class="arch-stage glass-panel stage-highlight">
305
- <div class="stage-number">2</div>
306
- <div class="stage-title">Confidence-Gated Router</div>
307
- <div class="stage-details">
308
- <span class="tech-tag">MC Dropout</span>
309
- <span class="tech-tag">Shannon Entropy</span>
310
- </div>
311
- <p class="stage-desc">3-tier decision gate (20 stochastic passes)</p>
312
- </div>
313
- <div class="arch-arrow">→</div>
314
- <div class="arch-stage glass-panel">
315
- <div class="stage-number">3</div>
316
- <div class="stage-title">Intelligence Layer</div>
317
- <div class="stage-details">
318
- <span class="tech-tag">XGBoost SLA</span>
319
- <span class="tech-tag">Churn Signal</span>
320
- </div>
321
- <p class="stage-desc">SLA breach prediction (AUC 0.83)</p>
322
- </div>
323
- </div>
324
-
325
- <!-- MC Dropout Visualization -->
326
- <div class="mc-dropout-viz glass-panel">
327
- <h3 class="viz-title">Monte Carlo Dropout 20 Stochastic Forward Passes</h3>
328
- <p class="viz-desc">Each pass randomly deactivates different neurons, producing a distribution of predictions instead of a single overconfident output.</p>
329
- <div class="dropout-grid" id="dropout-grid"></div>
330
- <div class="dropout-legend">
331
- <span><span class="legend-dot" style="background:#6366f1"></span> Active neuron</span>
332
- <span><span class="legend-dot" style="background:#1e1b4b; border:1px solid #4338ca"></span> Dropped out</span>
333
- </div>
334
- </div>
335
-
336
- <!-- Competitor Comparison -->
337
- <div class="competitor-table-wrap">
338
- <h3 class="viz-title">Competitor Architecture Gap</h3>
339
- <table class="competitor-table">
340
- <thead>
341
- <tr>
342
- <th>Platform</th>
343
- <th>AI Feature</th>
344
- <th>Handles Ambiguity?</th>
345
- <th>Clarification?</th>
346
- <th>Entropy Output?</th>
347
- </tr>
348
- </thead>
349
- <tbody>
350
- <tr><td>Zoho Desk</td><td>Zia Field Predictions</td><td class="cell-no">Binary fail</td><td class="cell-no">No</td><td class="cell-no">No</td></tr>
351
- <tr><td>Freshdesk</td><td>Freddy Auto Triage</td><td class="cell-no">Majority-class default</td><td class="cell-no">No</td><td class="cell-no">No</td></tr>
352
- <tr><td>Zendesk</td><td>Intelligent Triage</td><td class="cell-no">General queue fallback</td><td class="cell-no">No</td><td class="cell-partial">Static only</td></tr>
353
- <tr><td>Salesforce</td><td>Einstein Classification</td><td class="cell-no">Fails on unstructured</td><td class="cell-no">No</td><td class="cell-no">No</td></tr>
354
- <tr class="row-highlight"><td><strong>SupportMind</strong></td><td>Confidence-Gated Router</td><td class="cell-yes">3-tier gate</td><td class="cell-yes">47 templates</td><td class="cell-yes">Real-time Shannon</td></tr>
355
- </tbody>
356
- </table>
357
- </div>
358
- </section>
359
-
360
- <!-- Benchmarks Section -->
361
- <section class="section" id="benchmarks">
362
- <div class="section-header">
363
- <span class="section-badge">Results</span>
364
- <h2 class="section-title">Honest Dual-Evaluation</h2>
365
- <p class="section-desc">Transparent benchmarks: in-distribution synthetic data + out-of-distribution hand-crafted tickets</p>
366
- </div>
367
-
368
- <!-- OOD Transparency Note -->
369
- <div class="glass-panel" style="margin-bottom: 32px; padding: 20px 24px; border-left: 3px solid var(--yellow);">
370
- <div style="font-size: 13px; color: var(--on-surface-variant); line-height: 1.7;">
371
- <strong style="color: var(--yellow);">Why two sets of numbers?</strong>
372
- The <strong>In-Distribution</strong> set (100% accuracy) confirms the model learned its training distribution.
373
- The <strong>Out-of-Distribution</strong> set (57.3% accuracy on 96 hand-crafted tickets) is the honest estimate of real-world generalization.
374
- On OOD data, the model auto-routed only <strong>2.1%</strong> of tickets (with 100% precision) and safely flagged the rest for human review.
375
- </div>
376
- </div>
377
-
378
- <div class="benchmark-grid">
379
- <div class="bench-card glass-panel">
380
- <div class="bench-metric">Overall Routing Accuracy</div>
381
- <div class="bench-compare">
382
- <div class="bench-bar-group">
383
- <div class="bench-label">In-Distribution (synthetic)</div>
384
- <div class="bench-bar"><div class="bench-fill baseline" style="width:100%"><span>100.0%</span></div></div>
385
- </div>
386
- <div class="bench-bar-group">
387
- <div class="bench-label">Out-of-Distribution (OOD)</div>
388
- <div class="bench-bar"><div class="bench-fill ours" style="width:57.3%"><span>57.3%</span></div></div>
389
- </div>
390
- </div>
391
- <div class="bench-delta" style="color: var(--on-surface-variant); font-size: 11px;">OOD = honest generalization estimate</div>
392
- </div>
393
- <div class="bench-card glass-panel">
394
- <div class="bench-metric">Precision on Auto-Routed</div>
395
- <div class="bench-compare">
396
- <div class="bench-bar-group">
397
- <div class="bench-label">In-Distribution</div>
398
- <div class="bench-bar"><div class="bench-fill baseline" style="width:100%"><span>100.0%</span></div></div>
399
- </div>
400
- <div class="bench-bar-group">
401
- <div class="bench-label">Out-of-Distribution</div>
402
- <div class="bench-bar"><div class="bench-fill ours" style="width:100%"><span>100.0%</span></div></div>
403
- </div>
404
- </div>
405
- <div class="bench-delta positive">Zero false auto-routes on novel data</div>
406
- </div>
407
- <div class="bench-card glass-panel">
408
- <div class="bench-metric">OOD Routing Gate Distribution</div>
409
- <div class="bench-compare">
410
- <div class="bench-bar-group">
411
- <div class="bench-label" style="color: var(--green)">Auto-Routed (safe)</div>
412
- <div class="bench-bar"><div class="bench-fill ours" style="width:2.1%; min-width: 32px;"><span>2.1%</span></div></div>
413
- </div>
414
- <div class="bench-bar-group">
415
- <div class="bench-label" style="color: var(--yellow)">Clarify (flagged)</div>
416
- <div class="bench-bar"><div class="bench-fill" style="width:51%; background: var(--yellow);"><span>51.0%</span></div></div>
417
- </div>
418
- <div class="bench-bar-group">
419
- <div class="bench-label" style="color: var(--red)">Escalated (flagged)</div>
420
- <div class="bench-bar"><div class="bench-fill" style="width:46.9%; background: var(--red);"><span>46.9%</span></div></div>
421
- </div>
422
- </div>
423
- <div class="bench-delta positive">97.9% safely flagged for human review</div>
424
- </div>
425
- <div class="bench-card glass-panel">
426
- <div class="bench-metric">OOD Ambiguous Accuracy</div>
427
- <div class="bench-compare">
428
- <div class="bench-bar-group">
429
- <div class="bench-label">Hand-crafted ambiguous tickets</div>
430
- <div class="bench-bar"><div class="bench-fill ours" style="width:30%"><span>30.0%</span></div></div>
431
- </div>
432
- </div>
433
- <div class="bench-delta" style="color: var(--on-surface-variant); font-size: 11px;">Model correctly defers these to clarification</div>
434
- </div>
435
- </div>
436
-
437
- <!-- Real-Time System Insights -->
438
- <div class="glass-panel" style="margin-top: 40px; padding: 30px; border-top: 1px solid rgba(192, 193, 255, 0.2); background: linear-gradient(180deg, rgba(10, 10, 18, 0.4) 0%, rgba(10, 10, 18, 0.8) 100%);">
439
- <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 32px;">
440
- <div>
441
- <h3 class="viz-title" style="margin: 0; font-size: 18px; letter-spacing: 1px; color: #fff;">System Health & Performance</h3>
442
- <p style="font-size: 12px; color: var(--on-surface-variant); margin-top: 4px;">Real-time telemetry from the SupportMind Engine</p>
443
- </div>
444
- <div id="live-indicator" class="flex items-center gap-2" style="background: rgba(34, 197, 94, 0.1); padding: 6px 12px; border-radius: 20px; border: 1px solid rgba(34, 197, 94, 0.2);">
445
- <span class="status-dot" style="background: #22c55e; box-shadow: 0 0 10px #22c55e;"></span>
446
- <span style="font-size: 11px; font-weight: 600; color: #22c55e; text-transform: uppercase; letter-spacing: 0.5px;">Live Telemetry</span>
447
- </div>
448
- </div>
449
-
450
- <div class="grid grid-cols-1 md:grid-cols-4 gap-6">
451
- <div class="insight-card glass-panel" style="padding: 20px; background: rgba(255,255,255,0.02);">
452
- <div class="insight-label" style="font-size: 11px; text-transform: uppercase; color: var(--primary); margin-bottom: 12px; font-weight: 600;">Active Model Engine</div>
453
- <div id="live-model" class="insight-value" style="font-family: 'JetBrains Mono', monospace; font-size: 13px; color: #fff;">Syncing...</div>
454
- <div style="margin-top: 12px; font-size: 10px; color: var(--green);">● GPU Optimized Fallback</div>
455
- </div>
456
-
457
- <div class="insight-card glass-panel" style="padding: 20px; background: rgba(255,255,255,0.02); grid-column: span 2;">
458
- <div class="insight-label" style="font-size: 11px; text-transform: uppercase; color: var(--primary); margin-bottom: 12px; font-weight: 600;">Routing Efficiency Distribution</div>
459
- <div id="live-dist" class="insight-value">
460
- <div style="display: flex; gap: 4px; height: 12px; border-radius: 6px; overflow: hidden; background: rgba(255,255,255,0.05);">
461
- <div id="dist-route" style="width: 0%; background: linear-gradient(90deg, #22c55e, #4ade80); transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);"></div>
462
- <div id="dist-clarify" style="width: 0%; background: linear-gradient(90deg, #f59e0b, #fbbf24); transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);"></div>
463
- <div id="dist-escalate" style="width: 0%; background: linear-gradient(90deg, #ef4444, #f87171); transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);"></div>
464
- </div>
465
- <div style="display: flex; justify-content: space-between; font-size: 10px; margin-top: 10px; font-weight: 500;">
466
- <span style="color: #4ade80;">Auto-Route</span>
467
- <span style="color: #fbbf24;">Clarify</span>
468
- <span style="color: #f87171;">Escalate</span>
469
- </div>
470
- </div>
471
- </div>
472
-
473
- <div class="insight-card glass-panel" style="padding: 20px; background: rgba(255,255,255,0.02); text-align: right;">
474
- <div class="insight-label" style="font-size: 11px; text-transform: uppercase; color: var(--primary); margin-bottom: 4px; font-weight: 600;">Lifetime Triage</div>
475
- <div id="live-total" class="insight-value" style="font-size: 32px; font-weight: 800; color: #fff; font-family: 'Inter', sans-serif;">0</div>
476
- <div style="font-size: 10px; color: var(--on-surface-variant);">Tickets Orchestrated</div>
477
- </div>
478
- </div>
479
- </div>
480
-
481
- </section>
482
-
483
- <!-- API Section -->
484
- <section class="section section-dark" id="api-section">
485
- <div class="section-header">
486
- <span class="section-badge">Developer</span>
487
- <h2 class="section-title">API Reference</h2>
488
- <p class="section-desc">RESTful API with FastAPI — complete documentation at <code>/docs</code></p>
489
- </div>
490
- <div class="api-grid">
491
- <div class="api-card">
492
- <div class="api-method post">POST</div>
493
- <code class="api-path">/route</code>
494
- <p class="api-desc">Main routing endpoint — returns 3-tier confidence-gated decision</p>
495
- </div>
496
- <div class="api-card">
497
- <div class="api-method post">POST</div>
498
- <code class="api-path">/clarify</code>
499
- <p class="api-desc">Get best clarification question for uncertain ticket</p>
500
- </div>
501
- <div class="api-card">
502
- <div class="api-method post">POST</div>
503
- <code class="api-path">/sla/predict</code>
504
- <p class="api-desc">Predict SLA breach risk at ticket creation</p>
505
- </div>
506
- <div class="api-card">
507
- <div class="api-method post">POST</div>
508
- <code class="api-path">/churn/signal</code>
509
- <p class="api-desc">Extract churn signal from thread history</p>
510
- </div>
511
- <div class="api-card">
512
- <div class="api-method get">GET</div>
513
- <code class="api-path">/metrics</code>
514
- <p class="api-desc">Live system health and routing statistics</p>
515
- </div>
516
- <div class="api-card">
517
- <div class="api-method get">GET</div>
518
- <code class="api-path">/health</code>
519
- <p class="api-desc">Health check for deployment pipelines</p>
520
- </div>
521
- </div>
522
- </section>
523
-
524
- <!-- Footer -->
525
- <footer class="footer">
526
- <div class="footer-content" style="max-width: 1200px; display: flex; justify-content: space-between; align-items: center;">
527
- <div style="text-align: left;">
528
- <div class="footer-brand" style="font-size: 24px; color: #fff;">AetherFlow</div>
529
- <div class="footer-author">© 2026 AetherFlow Technologies. Intelligence through Clarity.</div>
530
- </div>
531
- <div class="footer-tech" style="display: flex; gap: 24px;">
532
- <span>Privacy Policy</span>
533
- <span>Terms of Service</span>
534
- <span>Security</span>
535
- <span>Status</span>
536
- <span>Contact</span>
537
- </div>
538
- </div>
539
- </footer>
540
-
541
- <script src="/dashboard/app.js?v=6"></script>
542
- </body>
543
- </html>
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>AetherFlow AI | SupportMind Engine</title>
7
+ <meta name="description" content="AI-powered B2B SaaS ticket routing with MC Dropout uncertainty quantification">
8
+ <link rel="preconnect" href="https://fonts.googleapis.com">
9
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
10
+ <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet" />
11
+ <link rel="stylesheet" href="/dashboard/style.css?v=3">
12
+ </head>
13
+ <body>
14
+ <!-- Animated Background -->
15
+ <div class="bg-grid"></div>
16
+ <div class="bg-glow bg-glow-1"></div>
17
+ <div class="bg-glow bg-glow-2"></div>
18
+ <div class="bg-glow bg-glow-3"></div>
19
+
20
+ <!-- Navigation -->
21
+ <nav class="navbar" id="navbar">
22
+ <div class="nav-brand">
23
+ <span class="brand-text">AetherFlow <span class="brand-sub">AI</span></span>
24
+ <span class="brand-badge">SupportMind v1.0</span>
25
+ </div>
26
+ <div class="nav-links">
27
+ <a href="#demo" class="nav-link">Live Demo</a>
28
+ <a href="#architecture" class="nav-link">Architecture</a>
29
+ <a href="#benchmarks" class="nav-link">Benchmarks</a>
30
+ <a href="#api-section" class="nav-link">API</a>
31
+ </div>
32
+ <div class="nav-actions">
33
+ <a href="#demo" class="btn-ghost" style="padding: 8px 16px; font-size: 13px; text-decoration: none;">Demo Mode</a>
34
+ <a href="/docs" class="btn-primary" style="padding: 8px 20px; font-size: 13px; text-decoration: none;">API Docs</a>
35
+ </div>
36
+ </nav>
37
+
38
+ <!-- Hero Section -->
39
+ <header class="hero" id="hero">
40
+ <div class="hero-container">
41
+ <div class="hero-content">
42
+ <div class="hero-eyebrow">
43
+ <span class="status-dot"></span>
44
+ B2B SaaS Support Routing Demo
45
+ </div>
46
+ <h1 class="hero-title">
47
+ Support AI that <span class="gradient-text italic">knows</span> when to ask
48
+ </h1>
49
+ <p class="hero-subtitle">
50
+ Confidence-gated ticket routing with uncertainty scoring, multi-intent detection,
51
+ and SLA risk signals. Three-tier routing:
52
+ <strong>Route</strong> &middot; <strong>Clarify</strong> &middot; <strong>Escalate</strong>.
53
+ Built to reduce unsafe auto-routing on ambiguous customer tickets.
54
+ </p>
55
+ <div class="hero-actions">
56
+ <a href="#demo" class="btn btn-primary">
57
+ Try Live Demo
58
+ <span class="material-symbols-outlined btn-icon">arrow_forward</span>
59
+ </a>
60
+ <a href="#architecture" class="btn btn-ghost">View Architecture</a>
61
+ </div>
62
+ </div>
63
+
64
+ <!-- Hero Visual (Pipeline Preview) -->
65
+ <div class="hero-visual">
66
+ <div class="pipeline-card glass-panel shimmer-border">
67
+ <div class="pipeline-header">
68
+ <div class="window-controls">
69
+ <div class="dot dot-red"></div>
70
+ <div class="dot dot-amber"></div>
71
+ <div class="dot dot-green"></div>
72
+ </div>
73
+ <span class="pipeline-status">pipeline_status: active</span>
74
+ </div>
75
+ <div class="pipeline-tiers">
76
+ <div class="tier-card active">
77
+ <div class="tier-info">
78
+ <div class="tier-icon"><span class="material-symbols-outlined">account_tree</span></div>
79
+ <div>
80
+ <div class="tier-name">Tier 1: Auto-Route</div>
81
+ <div class="tier-meta">Confidence &gt; 0.92</div>
82
+ </div>
83
+ </div>
84
+ <span class="material-symbols-outlined tier-indicator" style="color: var(--green)">check_circle</span>
85
+ </div>
86
+ <div class="tier-card" style="background: rgba(192, 193, 255, 0.05); border-color: var(--primary);">
87
+ <div class="tier-info">
88
+ <div class="tier-icon" style="background: rgba(192, 193, 255, 0.4)"><span class="material-symbols-outlined">psychology</span></div>
89
+ <div>
90
+ <div class="tier-name" style="font-style: italic; color: var(--primary)">Tier 2: Clarification</div>
91
+ <div class="tier-meta" style="color: var(--primary)">Ambiguity Detected</div>
92
+ </div>
93
+ </div>
94
+ <div style="width: 48px; height: 6px; background: rgba(192, 193, 255, 0.2); border-radius: 10px; overflow: hidden;">
95
+ <div style="width: 66%; height: 100%; background: var(--primary)"></div>
96
+ </div>
97
+ </div>
98
+ <div class="tier-card">
99
+ <div class="tier-info">
100
+ <div class="tier-icon" style="background: rgba(248, 113, 113, 0.15); color: var(--red)"><span class="material-symbols-outlined">support_agent</span></div>
101
+ <div>
102
+ <div class="tier-name">Tier 3: Escalate</div>
103
+ <div class="tier-meta">Human Protocol</div>
104
+ </div>
105
+ </div>
106
+ <span class="material-symbols-outlined tier-indicator" style="color: #444">sync_alt</span>
107
+ </div>
108
+ </div>
109
+ </div>
110
+ </div>
111
+ </div>
112
+ </header>
113
+
114
+ <!-- Stats Grid -->
115
+ <div class="hero-stats">
116
+ <div class="stat-card glass-panel" data-value="57.3" data-suffix="%">
117
+ <div class="stat-label">OOD Routing Accuracy</div>
118
+ <div class="stat-value"><span class="counter">0</span>%</div>
119
+ <div class="stat-delta positive"><span class="material-symbols-outlined" style="font-size: 14px">trending_up</span> 100% on auto-routed</div>
120
+ </div>
121
+ <div class="stat-card glass-panel" data-value="100.0" data-suffix="%">
122
+ <div class="stat-label">Auto-Route Precision</div>
123
+ <div class="stat-value"><span class="counter">0</span>%</div>
124
+ <div class="stat-delta positive">Zero false auto-routes</div>
125
+ </div>
126
+ <div class="stat-card glass-panel" data-value="97.9" data-suffix="%">
127
+ <div class="stat-label">Safe Failure Rate</div>
128
+ <div class="stat-value"><span class="counter">0</span>%</div>
129
+ <div class="stat-delta positive">Flagged for human review</div>
130
+ </div>
131
+ <div class="stat-card glass-panel" data-value="45" data-suffix="ms">
132
+ <div class="stat-label">Pipeline Latency</div>
133
+ <div class="stat-value"><span class="counter">0</span>ms</div>
134
+ <div class="stat-delta" style="color: #666">DistilBERT Optimized</div>
135
+ </div>
136
+ </div>
137
+
138
+ <!-- Live Demo Section -->
139
+ <section class="section" id="demo">
140
+ <div class="section-header">
141
+ <span class="section-badge">Interactive</span>
142
+ <h2 class="section-title">Live Ticket Router</h2>
143
+ <p class="section-desc">Type a support ticket and watch the confidence-gated router decide in real-time</p>
144
+ </div>
145
+
146
+ <div class="demo-container">
147
+ <div class="demo-input-panel glass-panel">
148
+ <label class="input-label">Support Ticket Text</label>
149
+ <textarea id="ticket-input" class="ticket-textarea" rows="4" placeholder="e.g., We have been having issues with the export function since last Tuesday's update..."></textarea>
150
+ <div class="demo-presets">
151
+ <span class="preset-label">Try:</span>
152
+ <button class="preset-btn" data-text="My invoice from last month shows $299 but my plan is $199. Please fix this billing error immediately.">Billing</button>
153
+ <button class="preset-btn" data-text="The API endpoint /v2/export returns a 500 error when batch size exceeds 1000 records. Stack trace attached.">Technical</button>
154
+ <button class="preset-btn" data-text="Hey, we have been having issues with the export function since last Tuesday's update. Also our invoice from last month looks incorrect.">Ambiguous</button>
155
+ <button class="preset-btn" data-text="Our launch is in 30 minutes and export is not working. The client is waiting on this before signing.">Launch Risk</button>
156
+ <button class="preset-btn" data-text="Could you please help resolve this? This is becoming difficult for our onboarding team and we are disappointed with repeated delays.">Polite Risk</button>
157
+ <button class="preset-btn" data-text="No rush, but can you tell me how to update the invoice email before tomorrow?">No Rush</button>
158
+ </div>
159
+ <button id="route-btn" class="btn btn-primary btn-full" onclick="routeTicket()">Route Ticket</button>
160
+ </div>
161
+
162
+ <div class="demo-results-panel glass-panel" id="results-panel">
163
+ <div class="result-placeholder" id="result-placeholder">
164
+ <div class="placeholder-icon">AI</div>
165
+ <p>Enter a ticket to see whether SupportMind routes, clarifies, or escalates.</p>
166
+ </div>
167
+
168
+ <div class="result-content" id="result-content" style="display:none">
169
+ <!-- Action Badge -->
170
+ <div class="action-badge-container">
171
+ <div class="action-badge" id="action-badge">ROUTE</div>
172
+ <div class="action-queue" id="action-queue"></div>
173
+ </div>
174
+
175
+ <!-- Confidence & Margin & Entropy Gauges -->
176
+ <div class="gauge-row">
177
+ <div class="gauge-container">
178
+ <label class="gauge-label">Confidence</label>
179
+ <div class="gauge-track">
180
+ <div class="gauge-fill" id="conf-fill" style="width:0%"></div>
181
+ <div class="gauge-zones">
182
+ <div class="zone zone-red" style="width:55%"></div>
183
+ <div class="zone zone-yellow" style="width:25%"></div>
184
+ <div class="zone zone-green" style="width:20%"></div>
185
+ </div>
186
+ </div>
187
+ <div class="gauge-value" id="conf-value">0.0000</div>
188
+ </div>
189
+ <div class="gauge-container">
190
+ <label class="gauge-label">Top-2 Margin</label>
191
+ <div class="gauge-track margin-track">
192
+ <div class="gauge-fill margin-fill" id="margin-fill" style="width:0%; background: linear-gradient(90deg, var(--accent), var(--primary));"></div>
193
+ </div>
194
+ <div class="gauge-value" id="margin-value">0.0000</div>
195
+ </div>
196
+ <div class="gauge-container">
197
+ <label class="gauge-label">Shannon Entropy</label>
198
+ <div class="gauge-track entropy-track">
199
+ <div class="gauge-fill entropy-fill" id="ent-fill" style="width:0%"></div>
200
+ </div>
201
+ <div class="gauge-value" id="ent-value">0.0000</div>
202
+ </div>
203
+ </div>
204
+
205
+ <!-- Probability Distribution -->
206
+ <div class="prob-chart" id="prob-chart"></div>
207
+
208
+ <!-- Clarification Question (if action=clarify) -->
209
+ <div class="clarification-box" id="clarification-box" style="display:none">
210
+ <div class="clarify-header">Clarification: Suggested Clarification Question</div>
211
+ <div class="clarify-question" id="clarify-question"></div>
212
+ <div class="clarify-options" id="clarify-options"></div>
213
+ <div class="clarify-gain" id="clarify-gain"></div>
214
+ </div>
215
+
216
+ <!-- Additional Signals -->
217
+ <div class="signals-grid">
218
+ <div class="signal-card">
219
+ <div class="signal-label" style="display: flex; flex-direction: column;">
220
+ SLA Breach Risk
221
+ <span style="font-size: 9px; color: var(--yellow); margin-top: 2px;">*Demo fallback: 4.5 hrs avg</span>
222
+ </div>
223
+ <div class="signal-value" id="sla-value">-</div>
224
+ <div class="signal-bar"><div class="signal-fill" id="sla-fill"></div></div>
225
+ </div>
226
+ <div class="signal-card">
227
+ <div class="signal-label">Sentiment</div>
228
+ <div class="signal-value" id="sentiment-value">-</div>
229
+ <div class="signal-subvalue" id="sentiment-score">-</div>
230
+ </div>
231
+ <div class="signal-card">
232
+ <div class="signal-label">Urgency</div>
233
+ <div class="signal-value" id="urgency-value">-</div>
234
+ <div class="signal-subvalue" id="urgency-score">-</div>
235
+ </div>
236
+ <div class="signal-card">
237
+ <div class="signal-label">Latency</div>
238
+ <div class="signal-value" id="latency-value">-</div>
239
+ </div>
240
+ </div>
241
+
242
+ <div class="signal-evidence-grid" id="signal-evidence-grid">
243
+ <div class="evidence-panel">
244
+ <div class="evidence-header">
245
+ <span class="material-symbols-outlined">priority_high</span>
246
+ Urgency Evidence
247
+ </div>
248
+ <div class="evidence-list" id="urgency-evidence-list"></div>
249
+ </div>
250
+ <div class="evidence-panel">
251
+ <div class="evidence-header">
252
+ <span class="material-symbols-outlined">psychology</span>
253
+ Sentiment Evidence
254
+ </div>
255
+ <div class="evidence-list" id="sentiment-evidence-list"></div>
256
+ </div>
257
+ </div>
258
+
259
+ <div class="result-reason" id="result-reason"></div>
260
+
261
+ <!-- Decision explanation -->
262
+ <div class="explanation-box" id="explanation-box" style="display:none">
263
+ <div class="explain-header">
264
+ <span class="material-symbols-outlined">analytics</span>
265
+ Decision Evidence
266
+ </div>
267
+ <div class="explain-text" id="explain-text"></div>
268
+ <div class="explain-legend">
269
+ <span class="legend-item"><span class="highlight-box pos"></span> Increases confidence</span>
270
+ <span class="legend-item"><span class="highlight-box neg"></span> Decreases confidence</span>
271
+ </div>
272
+ </div>
273
+
274
+ <button id="explain-btn" class="btn btn-ghost btn-full" style="margin-top: 10px; display: none;" onclick="explainDecision()">
275
+ <span class="material-symbols-outlined btn-icon">query_stats</span>
276
+ Analyze Decision
277
+ </button>
278
+ </div>
279
+
280
+ </div>
281
+ </div>
282
+ </section>
283
+
284
+ <!-- Architecture Section -->
285
+ <section class="section section-dark" id="architecture">
286
+ <div class="section-header">
287
+ <span class="section-badge">Technical</span>
288
+ <h2 class="section-title">System Architecture</h2>
289
+ <p class="section-desc">Three-stage pipeline with MC Dropout confidence gating</p>
290
+ </div>
291
+
292
+ <div class="arch-pipeline">
293
+ <div class="arch-stage glass-panel">
294
+ <div class="stage-number">1</div>
295
+ <div class="stage-title">Feature Extraction</div>
296
+ <div class="stage-details">
297
+ <span class="tech-tag">DistilBERT</span>
298
+ <span class="tech-tag">VADER</span>
299
+ </div>
300
+ <p class="stage-desc">768-dim embedding + sentiment + urgency</p>
301
+ </div>
302
+ <div class="arch-arrow">-></div>
303
+ <div class="arch-stage glass-panel stage-highlight">
304
+ <div class="stage-number">2</div>
305
+ <div class="stage-title">Confidence-Gated Router</div>
306
+ <div class="stage-details">
307
+ <span class="tech-tag">MC Dropout</span>
308
+ <span class="tech-tag">Shannon Entropy</span>
309
+ </div>
310
+ <p class="stage-desc">3-tier decision gate (20 stochastic passes)</p>
311
+ </div>
312
+ <div class="arch-arrow">-></div>
313
+ <div class="arch-stage glass-panel">
314
+ <div class="stage-number">3</div>
315
+ <div class="stage-title">Intelligence Layer</div>
316
+ <div class="stage-details">
317
+ <span class="tech-tag">XGBoost SLA</span>
318
+ <span class="tech-tag">Churn Signal</span>
319
+ </div>
320
+ <p class="stage-desc">SLA breach prediction (AUC 0.83)</p>
321
+ </div>
322
+ </div>
323
+
324
+ <!-- MC Dropout Visualization -->
325
+ <div class="mc-dropout-viz glass-panel">
326
+ <h3 class="viz-title">Monte Carlo Dropout - 20 Stochastic Forward Passes</h3>
327
+ <p class="viz-desc">Each pass randomly deactivates different neurons, producing a distribution of predictions instead of a single overconfident output.</p>
328
+ <div class="dropout-grid" id="dropout-grid"></div>
329
+ <div class="dropout-legend">
330
+ <span><span class="legend-dot" style="background:#6366f1"></span> Active neuron</span>
331
+ <span><span class="legend-dot" style="background:#1e1b4b; border:1px solid #4338ca"></span> Dropped out</span>
332
+ </div>
333
+ </div>
334
+
335
+ <!-- Competitor Comparison -->
336
+ <div class="competitor-table-wrap">
337
+ <h3 class="viz-title">Competitor Architecture Gap</h3>
338
+ <table class="competitor-table">
339
+ <thead>
340
+ <tr>
341
+ <th>Platform</th>
342
+ <th>AI Feature</th>
343
+ <th>Handles Ambiguity?</th>
344
+ <th>Clarification?</th>
345
+ <th>Entropy Output?</th>
346
+ </tr>
347
+ </thead>
348
+ <tbody>
349
+ <tr><td>Zoho Desk</td><td>Zia Field Predictions</td><td class="cell-no">Binary fail</td><td class="cell-no">No</td><td class="cell-no">No</td></tr>
350
+ <tr><td>Freshdesk</td><td>Freddy Auto Triage</td><td class="cell-no">Majority-class default</td><td class="cell-no">No</td><td class="cell-no">No</td></tr>
351
+ <tr><td>Zendesk</td><td>Intelligent Triage</td><td class="cell-no">General queue fallback</td><td class="cell-no">No</td><td class="cell-partial">Static only</td></tr>
352
+ <tr><td>Salesforce</td><td>Einstein Classification</td><td class="cell-no">Fails on unstructured</td><td class="cell-no">No</td><td class="cell-no">No</td></tr>
353
+ <tr class="row-highlight"><td><strong>SupportMind</strong></td><td>Confidence-Gated Router</td><td class="cell-yes">3-tier gate</td><td class="cell-yes">47 templates</td><td class="cell-yes">Real-time Shannon</td></tr>
354
+ </tbody>
355
+ </table>
356
+ </div>
357
+ </section>
358
+
359
+ <!-- Benchmarks Section -->
360
+ <section class="section" id="benchmarks">
361
+ <div class="section-header">
362
+ <span class="section-badge">Results</span>
363
+ <h2 class="section-title">Honest Dual-Evaluation</h2>
364
+ <p class="section-desc">Transparent benchmarks: in-distribution synthetic data + out-of-distribution hand-crafted tickets</p>
365
+ </div>
366
+
367
+ <!-- OOD Transparency Note -->
368
+ <div class="glass-panel" style="margin-bottom: 32px; padding: 20px 24px; border-left: 3px solid var(--yellow);">
369
+ <div style="font-size: 13px; color: var(--on-surface-variant); line-height: 1.7;">
370
+ <strong style="color: var(--yellow);">Why two sets of numbers?</strong>
371
+ The <strong>In-Distribution</strong> set (100% accuracy) confirms the model learned its training distribution.
372
+ The <strong>Out-of-Distribution</strong> set (57.3% accuracy on 96 hand-crafted tickets) is the honest estimate of real-world generalization.
373
+ On OOD data, the model auto-routed only <strong>2.1%</strong> of tickets (with 100% precision) and safely flagged the rest for human review.
374
+ </div>
375
+ </div>
376
+
377
+ <div class="benchmark-grid">
378
+ <div class="bench-card glass-panel">
379
+ <div class="bench-metric">Overall Routing Accuracy</div>
380
+ <div class="bench-compare">
381
+ <div class="bench-bar-group">
382
+ <div class="bench-label">In-Distribution (synthetic)</div>
383
+ <div class="bench-bar"><div class="bench-fill baseline" style="width:100%"><span>100.0%</span></div></div>
384
+ </div>
385
+ <div class="bench-bar-group">
386
+ <div class="bench-label">Out-of-Distribution (OOD)</div>
387
+ <div class="bench-bar"><div class="bench-fill ours" style="width:57.3%"><span>57.3%</span></div></div>
388
+ </div>
389
+ </div>
390
+ <div class="bench-delta" style="color: var(--on-surface-variant); font-size: 11px;">OOD = honest generalization estimate</div>
391
+ </div>
392
+ <div class="bench-card glass-panel">
393
+ <div class="bench-metric">Precision on Auto-Routed</div>
394
+ <div class="bench-compare">
395
+ <div class="bench-bar-group">
396
+ <div class="bench-label">In-Distribution</div>
397
+ <div class="bench-bar"><div class="bench-fill baseline" style="width:100%"><span>100.0%</span></div></div>
398
+ </div>
399
+ <div class="bench-bar-group">
400
+ <div class="bench-label">Out-of-Distribution</div>
401
+ <div class="bench-bar"><div class="bench-fill ours" style="width:100%"><span>100.0%</span></div></div>
402
+ </div>
403
+ </div>
404
+ <div class="bench-delta positive">Zero false auto-routes on novel data</div>
405
+ </div>
406
+ <div class="bench-card glass-panel">
407
+ <div class="bench-metric">OOD Routing Gate Distribution</div>
408
+ <div class="bench-compare">
409
+ <div class="bench-bar-group">
410
+ <div class="bench-label" style="color: var(--green)">Auto-Routed (safe)</div>
411
+ <div class="bench-bar"><div class="bench-fill ours" style="width:2.1%; min-width: 32px;"><span>2.1%</span></div></div>
412
+ </div>
413
+ <div class="bench-bar-group">
414
+ <div class="bench-label" style="color: var(--yellow)">Clarify (flagged)</div>
415
+ <div class="bench-bar"><div class="bench-fill" style="width:51%; background: var(--yellow);"><span>51.0%</span></div></div>
416
+ </div>
417
+ <div class="bench-bar-group">
418
+ <div class="bench-label" style="color: var(--red)">Escalated (flagged)</div>
419
+ <div class="bench-bar"><div class="bench-fill" style="width:46.9%; background: var(--red);"><span>46.9%</span></div></div>
420
+ </div>
421
+ </div>
422
+ <div class="bench-delta positive">97.9% safely flagged for human review</div>
423
+ </div>
424
+ <div class="bench-card glass-panel">
425
+ <div class="bench-metric">OOD Ambiguous Accuracy</div>
426
+ <div class="bench-compare">
427
+ <div class="bench-bar-group">
428
+ <div class="bench-label">Hand-crafted ambiguous tickets</div>
429
+ <div class="bench-bar"><div class="bench-fill ours" style="width:30%"><span>30.0%</span></div></div>
430
+ </div>
431
+ </div>
432
+ <div class="bench-delta" style="color: var(--on-surface-variant); font-size: 11px;">Model correctly defers these to clarification</div>
433
+ </div>
434
+ </div>
435
+
436
+ <!-- Real-Time System Insights -->
437
+ <div class="glass-panel" style="margin-top: 40px; padding: 30px; border-top: 1px solid rgba(192, 193, 255, 0.2); background: linear-gradient(180deg, rgba(10, 10, 18, 0.4) 0%, rgba(10, 10, 18, 0.8) 100%);">
438
+ <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 32px;">
439
+ <div>
440
+ <h3 class="viz-title" style="margin: 0; font-size: 18px; letter-spacing: 1px; color: #fff;">System Health & Performance</h3>
441
+ <p style="font-size: 12px; color: var(--on-surface-variant); margin-top: 4px;">Real-time telemetry from the SupportMind Engine</p>
442
+ </div>
443
+ <div id="live-indicator" class="flex items-center gap-2" style="background: rgba(34, 197, 94, 0.1); padding: 6px 12px; border-radius: 20px; border: 1px solid rgba(34, 197, 94, 0.2);">
444
+ <span class="status-dot" style="background: #22c55e; box-shadow: 0 0 10px #22c55e;"></span>
445
+ <span style="font-size: 11px; font-weight: 600; color: #22c55e; text-transform: uppercase; letter-spacing: 0.5px;">Live Telemetry</span>
446
+ </div>
447
+ </div>
448
+
449
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-6">
450
+ <div class="insight-card glass-panel" style="padding: 20px; background: rgba(255,255,255,0.02);">
451
+ <div class="insight-label" style="font-size: 11px; text-transform: uppercase; color: var(--primary); margin-bottom: 12px; font-weight: 600;">Active Model Engine</div>
452
+ <div id="live-model" class="insight-value" style="font-family: 'JetBrains Mono', monospace; font-size: 13px; color: #fff;">Syncing...</div>
453
+ <div style="margin-top: 12px; font-size: 10px; color: var(--green);">Status: GPU Optimized Fallback</div>
454
+ </div>
455
+
456
+ <div class="insight-card glass-panel" style="padding: 20px; background: rgba(255,255,255,0.02); grid-column: span 2;">
457
+ <div class="insight-label" style="font-size: 11px; text-transform: uppercase; color: var(--primary); margin-bottom: 12px; font-weight: 600;">Routing Efficiency Distribution</div>
458
+ <div id="live-dist" class="insight-value">
459
+ <div style="display: flex; gap: 4px; height: 12px; border-radius: 6px; overflow: hidden; background: rgba(255,255,255,0.05);">
460
+ <div id="dist-route" style="width: 0%; background: linear-gradient(90deg, #22c55e, #4ade80); transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);"></div>
461
+ <div id="dist-clarify" style="width: 0%; background: linear-gradient(90deg, #f59e0b, #fbbf24); transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);"></div>
462
+ <div id="dist-escalate" style="width: 0%; background: linear-gradient(90deg, #ef4444, #f87171); transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);"></div>
463
+ </div>
464
+ <div style="display: flex; justify-content: space-between; font-size: 10px; margin-top: 10px; font-weight: 500;">
465
+ <span style="color: #4ade80;">Auto-Route</span>
466
+ <span style="color: #fbbf24;">Clarify</span>
467
+ <span style="color: #f87171;">Escalate</span>
468
+ </div>
469
+ </div>
470
+ </div>
471
+
472
+ <div class="insight-card glass-panel" style="padding: 20px; background: rgba(255,255,255,0.02); text-align: right;">
473
+ <div class="insight-label" style="font-size: 11px; text-transform: uppercase; color: var(--primary); margin-bottom: 4px; font-weight: 600;">Lifetime Triage</div>
474
+ <div id="live-total" class="insight-value" style="font-size: 32px; font-weight: 800; color: #fff; font-family: 'Inter', sans-serif;">0</div>
475
+ <div style="font-size: 10px; color: var(--on-surface-variant);">Tickets Orchestrated</div>
476
+ </div>
477
+ </div>
478
+ </div>
479
+
480
+ </section>
481
+
482
+ <!-- API Section -->
483
+ <section class="section section-dark" id="api-section">
484
+ <div class="section-header">
485
+ <span class="section-badge">Developer</span>
486
+ <h2 class="section-title">API Reference</h2>
487
+ <p class="section-desc">RESTful API with FastAPI - complete documentation at <code>/docs</code></p>
488
+ </div>
489
+ <div class="api-grid">
490
+ <div class="api-card">
491
+ <div class="api-method post">POST</div>
492
+ <code class="api-path">/route</code>
493
+ <p class="api-desc">Main routing endpoint - returns 3-tier confidence-gated decision</p>
494
+ </div>
495
+ <div class="api-card">
496
+ <div class="api-method post">POST</div>
497
+ <code class="api-path">/clarify</code>
498
+ <p class="api-desc">Get best clarification question for uncertain ticket</p>
499
+ </div>
500
+ <div class="api-card">
501
+ <div class="api-method post">POST</div>
502
+ <code class="api-path">/sla/predict</code>
503
+ <p class="api-desc">Predict SLA breach risk at ticket creation</p>
504
+ </div>
505
+ <div class="api-card">
506
+ <div class="api-method post">POST</div>
507
+ <code class="api-path">/churn/signal</code>
508
+ <p class="api-desc">Extract churn signal from thread history</p>
509
+ </div>
510
+ <div class="api-card">
511
+ <div class="api-method get">GET</div>
512
+ <code class="api-path">/metrics</code>
513
+ <p class="api-desc">Live system health and routing statistics</p>
514
+ </div>
515
+ <div class="api-card">
516
+ <div class="api-method get">GET</div>
517
+ <code class="api-path">/health</code>
518
+ <p class="api-desc">Health check for deployment pipelines</p>
519
+ </div>
520
+ </div>
521
+ </section>
522
+
523
+ <!-- Footer -->
524
+ <footer class="footer">
525
+ <div class="footer-content" style="max-width: 1200px; display: flex; justify-content: space-between; align-items: center;">
526
+ <div style="text-align: left;">
527
+ <div class="footer-brand" style="font-size: 24px; color: #fff;">AetherFlow</div>
528
+ <div class="footer-author">(c) 2026 AetherFlow Technologies. Intelligence through Clarity.</div>
529
+ </div>
530
+ <div class="footer-tech" style="display: flex; gap: 24px;">
531
+ <span>Privacy Policy</span>
532
+ <span>Terms of Service</span>
533
+ <span>Security</span>
534
+ <span>Status</span>
535
+ <span>Contact</span>
536
+ </div>
537
+ </div>
538
+ </footer>
539
+
540
+ <script src="/dashboard/app.js?v=6"></script>
541
+ </body>
542
+ </html>