Spaces:
Sleeping
Sleeping
| <html lang="en"> | |
| <head> | |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>HELPDESK.AI Presentation</title> | |
| <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet"> | |
| <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet"> | |
| <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> | |
| <style> | |
| body { | |
| margin: 0; | |
| padding: 0; | |
| background-color: #000; | |
| overflow-x: hidden; | |
| } | |
| .page-wrapper { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 40px; | |
| padding: 40px 0; | |
| width: 100%; | |
| } | |
| .slide-wrapper { | |
| width: 100%; | |
| display: flex; | |
| justify-content: center; | |
| overflow: hidden; | |
| transition: height 0.3s ease; | |
| } | |
| .slide-container { | |
| position: relative; | |
| width: 1280px; | |
| height: 720px; | |
| overflow: hidden; | |
| background-color: #101827; | |
| font-family: 'Inter', sans-serif; | |
| color: white; | |
| box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5); | |
| page-break-after: always; | |
| flex-shrink: 0; | |
| transform-origin: top center; | |
| transition: transform 0.3s ease; | |
| } | |
| /* Presentation Mode FAB */ | |
| #mobile-toggle { | |
| position: fixed; | |
| bottom: 30px; | |
| right: 30px; | |
| width: 60px; | |
| height: 60px; | |
| background: #10B981; | |
| color: white; | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| box-shadow: 0 10px 30px rgba(16, 185, 129, 0.4); | |
| cursor: pointer; | |
| z-index: 9999; | |
| border: none; | |
| transition: all 0.3s ease; | |
| } | |
| #mobile-toggle:hover { | |
| transform: scale(1.1); | |
| background: #059669; | |
| } | |
| #mobile-toggle i { | |
| font-size: 24px; | |
| } | |
| body.presentation-mode #mobile-toggle { | |
| opacity: 0.2; | |
| bottom: 20px; | |
| right: 20px; | |
| width: 40px; | |
| height: 40px; | |
| background: #334155; | |
| } | |
| body.presentation-mode #mobile-toggle:hover { | |
| opacity: 1; | |
| } | |
| /* Presentation Mode Styles & Advanced Animations */ | |
| body.presentation-mode { | |
| display: block; | |
| padding: 0; | |
| width: 100vw; | |
| height: 100vh; | |
| overflow: hidden; | |
| background-color: #000; | |
| } | |
| body.presentation-mode .page-wrapper { | |
| position: fixed; | |
| inset: 0; | |
| overflow: hidden; | |
| background-color: #000; | |
| display: block; | |
| padding: 0; | |
| width: 100vw; | |
| height: 100vh; | |
| z-index: 9998; | |
| } | |
| body.presentation-mode .slide-container { | |
| opacity: 0; | |
| visibility: hidden; | |
| pointer-events: none; | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%) rotate(var(--rotation, 0deg)) scale(var(--scale-factor, 1)); | |
| transform-origin: center center; | |
| width: 1280px; | |
| height: 720px; | |
| background: #0A0F1C; | |
| border-radius: 12px; | |
| overflow: hidden; | |
| transition: transform 0.8s cubic-bezier(0.16, 1, 0.3, 1), | |
| opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1), | |
| visibility 0.6s; | |
| z-index: 1; | |
| box-shadow: 0 50px 100px rgba(0, 0, 0, 0.5); | |
| will-change: transform, opacity; | |
| } | |
| body.presentation-mode .slide-container.active { | |
| opacity: 1; | |
| visibility: visible; | |
| pointer-events: auto; | |
| z-index: 10; | |
| transform: translate(-50%, -50%) rotate(var(--rotation, 0deg)) scale(var(--scale-factor, 1)); | |
| } | |
| /* Directional States using rotation-aware offsets */ | |
| body.presentation-mode .slide-container.slide-next { | |
| transform: translate(50%, -50%) rotate(var(--rotation, 0deg)) scale(var(--scale-factor, 0.8)); | |
| opacity: 0; | |
| } | |
| body.presentation-mode .slide-container.slide-prev { | |
| transform: translate(-150%, -50%) rotate(var(--rotation, 0deg)) scale(var(--scale-factor, 0.8)); | |
| opacity: 0; | |
| } | |
| body.presentation-mode .slide-container.exit-left { | |
| transform: translate(-150%, -50%) rotate(var(--rotation, 0deg)) scale(var(--scale-factor, 0.9)); | |
| opacity: 0; | |
| filter: blur(10px); | |
| } | |
| body.presentation-mode .slide-container.exit-right { | |
| transform: translate(50%, -50%) rotate(var(--rotation, 0deg)) scale(var(--scale-factor, 0.9)); | |
| opacity: 0; | |
| filter: blur(10px); | |
| } | |
| /* All child DIVs start invisible before staggering */ | |
| body.presentation-mode .slide-container>div { | |
| opacity: 0; | |
| animation-fill-mode: forwards; | |
| } | |
| /* Child 1: Background Decor fades gently */ | |
| body.presentation-mode .slide-container.active>div:nth-of-type(1) { | |
| animation: fadeDecor 1.2s cubic-bezier(0.22, 1, 0.36, 1) forwards; | |
| } | |
| /* Child 2: Header Slides Down slightly delayed */ | |
| body.presentation-mode .slide-container.active>div:nth-of-type(2) { | |
| animation: slideHeader 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.1s; | |
| } | |
| /* Children 3+: Main Content block stagger upward beautifully */ | |
| body.presentation-mode .slide-container.active>div:nth-of-type(3) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.2s; | |
| } | |
| body.presentation-mode .slide-container.active>div:nth-of-type(4) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.3s; | |
| } | |
| body.presentation-mode .slide-container.active>div:nth-of-type(5) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.4s; | |
| } | |
| body.presentation-mode .slide-container.active>div:nth-of-type(6) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.5s; | |
| } | |
| body.presentation-mode .slide-container.active>div:nth-of-type(7) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.6s; | |
| } | |
| body.presentation-mode .slide-container.active>div:nth-of-type(n+8) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.7s; | |
| } | |
| /* Internal Staggering for Grids and Wrappers */ | |
| body.presentation-mode .slide-container.active .obj-card:nth-of-type(1) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.2s; | |
| opacity: 0; | |
| } | |
| body.presentation-mode .slide-container.active .obj-card:nth-of-type(2) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.3s; | |
| opacity: 0; | |
| } | |
| body.presentation-mode .slide-container.active .obj-card:nth-of-type(3) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.4s; | |
| opacity: 0; | |
| } | |
| body.presentation-mode .slide-container.active .obj-card:nth-of-type(4) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.5s; | |
| opacity: 0; | |
| } | |
| body.presentation-mode .slide-container.active .obj-card:nth-of-type(5) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.6s; | |
| opacity: 0; | |
| } | |
| body.presentation-mode .slide-container.active .dev-card:nth-of-type(1) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.2s; | |
| opacity: 0; | |
| } | |
| body.presentation-mode .slide-container.active .dev-card:nth-of-type(2) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.4s; | |
| opacity: 0; | |
| } | |
| body.presentation-mode .slide-container.active .dev-card:nth-of-type(3) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.6s; | |
| opacity: 0; | |
| } | |
| body.presentation-mode .slide-container.active .engine-card:nth-of-type(1) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.2s; | |
| opacity: 0; | |
| } | |
| body.presentation-mode .slide-container.active .engine-card:nth-of-type(2) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.3s; | |
| opacity: 0; | |
| } | |
| body.presentation-mode .slide-container.active .engine-card:nth-of-type(3) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.4s; | |
| opacity: 0; | |
| } | |
| body.presentation-mode .slide-container.active .engine-card:nth-of-type(4) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.5s; | |
| opacity: 0; | |
| } | |
| body.presentation-mode .slide-container.active .engine-card:nth-of-type(5) { | |
| animation: morphUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| animation-delay: 0.6s; | |
| opacity: 0; | |
| } | |
| /* Animation Keyframes */ | |
| @keyframes containerFade { | |
| from { | |
| opacity: 0; | |
| } | |
| to { | |
| opacity: 1; | |
| } | |
| } | |
| @keyframes fadeDecor { | |
| from { | |
| opacity: 0; | |
| } | |
| to { | |
| opacity: 1; | |
| } | |
| } | |
| @keyframes slideHeader { | |
| from { | |
| opacity: 0; | |
| transform: translateY(-40px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| @keyframes morphUp { | |
| from { | |
| opacity: 0; | |
| transform: translateY(40px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| /* Restore baseline for printing */ | |
| @media print { | |
| body.presentation-mode .slide-container>div { | |
| opacity: 1 ; | |
| animation: none ; | |
| transform: none ; | |
| } | |
| } | |
| #presentation-hint { | |
| position: fixed; | |
| bottom: 20px; | |
| right: 20px; | |
| background: rgba(16, 185, 129, 0.9); | |
| color: white; | |
| padding: 10px 20px; | |
| border-radius: 8px; | |
| font-family: 'Space Grotesk', sans-serif; | |
| z-index: 1000; | |
| box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); | |
| transition: opacity 0.3s, visibility 0.3s; | |
| } | |
| body.presentation-mode #presentation-hint { | |
| opacity: 0; | |
| visibility: hidden; | |
| pointer-events: none; | |
| } | |
| body { | |
| font-family: 'Space Grotesk', sans-serif; | |
| } | |
| /* Slide 1 Specific Styling */ | |
| .slide-1 .title { | |
| margin: 0; | |
| font-size: 96px; | |
| font-weight: 700; | |
| color: #10B981; | |
| text-align: center; | |
| letter-spacing: -2px; | |
| line-height: 1.1; | |
| } | |
| .slide-1 .subtitle { | |
| margin: 0; | |
| font-size: 32px; | |
| font-weight: 400; | |
| color: #FFFFFF; | |
| text-align: center; | |
| letter-spacing: 0.5px; | |
| opacity: 0.9; | |
| } | |
| @media print { | |
| body { | |
| background-color: #0A0F1C; | |
| } | |
| .page-wrapper { | |
| padding: 0; | |
| gap: 0; | |
| } | |
| .slide-container { | |
| box-shadow: none; | |
| } | |
| #presentation-hint { | |
| display: none ; | |
| } | |
| } | |
| </style> | |
| </head> | |
| <body class=""> | |
| <div class="page-wrapper" id="master-container"> | |
| <div class="slide-wrapper"> | |
| <div class="slide-container slide-1"> | |
| <!-- Background Decor - Top Right Circuit --> | |
| <div | |
| style="position: absolute; top: 0; right: 0; width: 400px; height: 400px; opacity: 0.1; z-index: 1;"> | |
| <svg fill="none" height="100%" viewBox="0 0 400 400" width="100%"> | |
| <path d="M400 0H200L200 50L150 50L150 150L250 150L250 100L400 100V0Z" fill="#10B981"></path> | |
| <circle cx="150" cy="150" fill="#10B981" r="10"></circle> | |
| <circle cx="200" cy="50" fill="#10B981" r="5"></circle> | |
| </svg> | |
| </div> | |
| <!-- Background Decor - Bottom Left Circuit --> | |
| <div | |
| style="position: absolute; bottom: 0; left: 0; width: 400px; height: 300px; opacity: 0.05; z-index: 1;"> | |
| <svg fill="none" height="100%" viewBox="0 0 400 300" width="100%"> | |
| <path d="M0 300H150L150 250L100 250L100 150L50 150L50 300H0Z" fill="#10B981"></path> | |
| <circle cx="100" cy="150" fill="#10B981" r="8"></circle> | |
| </svg> | |
| </div> | |
| <!-- Center Glow Effect --> | |
| <div | |
| style="position: absolute; top: 160px; left: 340px; width: 600px; height: 300px; z-index: 2; opacity: 0.2;"> | |
| <svg height="100%" viewBox="0 0 600 300" width="100%"> | |
| <defs> | |
| <radialgradient cx="50%" cy="50%" fx="50%" fy="50%" id="glow" r="50%"> | |
| <stop offset="0%" stop-color="#10B981" stop-opacity="0.6"></stop> | |
| <stop offset="100%" stop-color="#0A0F1C" stop-opacity="0"></stop> | |
| </radialgradient> | |
| </defs> | |
| <ellipse cx="300" cy="150" fill="url(#glow)" rx="300" ry="150"></ellipse> | |
| </svg> | |
| </div> | |
| <!-- Main Title --> | |
| <div | |
| style="position: absolute; top: 220px; left: 140px; width: 1000px; height: 120px; z-index: 10; display: flex; align-items: center; justify-content: center;"> | |
| <p class="title">HELPDESK.AI</p> | |
| </div> | |
| <!-- Subtitle --> | |
| <div | |
| style="position: absolute; top: 350px; left: 140px; width: 1000px; height: 60px; z-index: 10; display: flex; align-items: center; justify-content: center;"> | |
| <p class="subtitle" style="font-size: 28px; letter-spacing: 0.5px;">AI-Powered Ticket Creation and | |
| Categorization from User Input</p> | |
| </div> | |
| <!-- Divider Line --> | |
| <div | |
| style="position: absolute; top: 440px; left: 490px; width: 300px; height: 2px; background-color: #10B981; z-index: 5; opacity: 0.5;"> | |
| </div> | |
| <!-- Bottom Metadata --> | |
| <div | |
| style="position: absolute; top: 580px; left: 140px; width: 1000px; height: 100px; z-index: 10; display: flex; flex-direction: column; align-items: center; justify-content: center;"> | |
| <p | |
| style="margin: 0; font-size: 20px; font-weight: 500; color: #94A3B8; text-align: center; letter-spacing: 1px; text-transform: uppercase;"> | |
| Infosys Springboard Virtual Internship 6.0 | <span style="color: #10B981;">Group 2</span> | |
| </p> | |
| <p | |
| style="margin: 10px 0 0 0; font-size: 18px; font-weight: 400; color: #64748B; text-align: center;"> | |
| AI & Machine Learning Track | March 2026 | |
| </p> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Slide 2: Problem Statement --> | |
| <div class="slide-wrapper"> | |
| <div class="slide-container slide-2"> | |
| <!-- Background Decor (subtle orbit lines) --> | |
| <div | |
| style="position: absolute; top: -100px; right: -100px; width: 600px; height: 600px; opacity: 0.05; z-index: 1; pointer-events: none;"> | |
| <svg fill="none" height="100%" viewBox="0 0 600 600" width="100%"> | |
| <circle cx="300" cy="300" r="100" stroke="#10B981" stroke-width="1"></circle> | |
| <circle cx="300" cy="300" r="200" stroke="#10B981" stroke-dasharray="10 5" stroke-width="0.5"> | |
| </circle> | |
| <circle cx="300" cy="300" r="280" stroke="#10B981" stroke-width="0.5"></circle> | |
| </svg> | |
| </div> | |
| <!-- Slide Title Section --> | |
| <div style="position: absolute; top: 60px; left: 80px; width: 1120px; z-index: 10;"> | |
| <p | |
| style="margin: 0; font-size: 56px; font-weight: 700; color: #FFFFFF; line-height: 1.1; letter-spacing: -1.5px;"> | |
| Problem Statement</p> | |
| <div | |
| style="width: 120px; height: 6px; background: linear-gradient(to right, #10B981, transparent); border-radius: 3px; margin-top: 15px;"> | |
| </div> | |
| <p | |
| style="margin: 15px 0 0 0; font-size: 20px; font-weight: 500; color: #64748B; text-transform: uppercase; letter-spacing: 2px;"> | |
| The Human-Process Bottleneck in ITSM</p> | |
| </div> | |
| <style> | |
| .slide-2 .problem-grid { | |
| position: absolute; | |
| top: 210px; | |
| left: 80px; | |
| width: 1120px; | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 40px; | |
| z-index: 10; | |
| } | |
| .slide-2 .p-card { | |
| background: rgba(17, 24, 39, 0.4); | |
| border: 1px solid rgba(255, 255, 255, 0.05); | |
| border-radius: 20px; | |
| padding: 40px; | |
| box-sizing: border-box; | |
| backdrop-filter: blur(10px); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .slide-2 .card-accent-g { | |
| border-top: 4px solid #10B981; | |
| } | |
| .slide-2 .card-accent-r { | |
| border-top: 4px solid #EF4444; | |
| } | |
| .slide-2 .card-hdr { | |
| display: flex; | |
| align-items: center; | |
| gap: 15px; | |
| margin-bottom: 30px; | |
| } | |
| .slide-2 .card-icon { | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 12px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 24px; | |
| } | |
| .slide-2 .icon-g { | |
| background: rgba(16, 185, 129, 0.1); | |
| color: #10B981; | |
| } | |
| .slide-2 .icon-r { | |
| background: rgba(239, 68, 68, 0.1); | |
| color: #EF4444; | |
| } | |
| .slide-2 .card-title { | |
| margin: 0; | |
| font-size: 26px; | |
| font-weight: 700; | |
| color: #FFF; | |
| } | |
| .slide-2 .p-list { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| } | |
| .slide-2 .p-list li { | |
| font-size: 19px; | |
| color: #94A3B8; | |
| margin-bottom: 22px; | |
| line-height: 1.6; | |
| padding-left: 28px; | |
| position: relative; | |
| } | |
| .slide-2 .p-list li::before { | |
| content: ""; | |
| position: absolute; | |
| left: 0; | |
| top: 12px; | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| } | |
| .slide-2 .bullet-g::before { | |
| background: #10B981; | |
| box-shadow: 0 0 10px #10B981; | |
| } | |
| .slide-2 .bullet-r::before { | |
| background: #EF4444; | |
| box-shadow: 0 0 10px #EF4444; | |
| } | |
| .slide-2 .ph { | |
| color: #FFF; | |
| font-weight: 700; | |
| background: rgba(16, 185, 129, 0.1); | |
| padding: 2px 6px; | |
| border-radius: 4px; | |
| } | |
| .slide-2 .ph-r { | |
| color: #FFF; | |
| font-weight: 700; | |
| background: rgba(239, 68, 68, 0.1); | |
| padding: 2px 6px; | |
| border-radius: 4px; | |
| } | |
| </style> | |
| <div class="problem-grid"> | |
| <!-- Left: The Process Friction --> | |
| <div class="p-card card-accent-g"> | |
| <div class="card-hdr"> | |
| <div class="card-icon icon-g"><i class="fa-solid fa-hand-holding-hand"></i></div> | |
| <p class="card-title">Manual Intervention</p> | |
| </div> | |
| <ul class="p-list"> | |
| <li class="bullet-g">Heavy reliance on human agents to <span class="ph">understand and | |
| interpret</span> complex, unstructured user complaints.</li> | |
| <li class="bullet-g">Extensive manual effort required to <span class="ph">categorize | |
| issues</span> into correct support domains and teams.</li> | |
| <li class="bullet-g">Subjective assignment of <span class="ph">priority levels</span>, | |
| leading to inconsistent and delayed routing.</li> | |
| </ul> | |
| </div> | |
| <!-- Right: The Downstream Crisis --> | |
| <div class="p-card card-accent-r"> | |
| <div class="card-hdr"> | |
| <div class="card-icon icon-r"><i class="fa-solid fa-triangle-exclamation"></i></div> | |
| <p class="card-title">Operational Impact</p> | |
| </div> | |
| <ul class="p-list"> | |
| <li class="bullet-r"><span class="ph-r">Significant Delays</span> in ticket resolution times | |
| and frequent breaches of agreed SLAs.</li> | |
| <li class="bullet-r">Critical <span class="ph-r">Human Errors</span> in classification | |
| resulting in misrouting and "ticket ping-pong."</li> | |
| <li class="bullet-r">Inability to <span class="ph-r">Scale Capacity</span> to meet growing | |
| enterprise support volumes efficiently.</li> | |
| </ul> | |
| </div> | |
| </div> | |
| <!-- Bottom Note --> | |
| <div | |
| style="position: absolute; bottom: 50px; left: 80px; width: 1120px; text-align: center; opacity: 0.4;"> | |
| <p | |
| style="margin: 0; font-size: 14px; font-weight: 600; color: #64748B; letter-spacing: 1px; text-transform: uppercase;"> | |
| A paradigm shift is required to automate intelligence at the point of entry.</p> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Slide 3: Project Objectives --> | |
| <div class="slide-wrapper"> | |
| <div class="slide-container slide-3"> | |
| <!-- Background Decoration --> | |
| <div | |
| style="position: absolute; top: 0; right: 0; width: 400px; height: 400px; opacity: 0.05; z-index: 1;"> | |
| <svg fill="none" height="100%" viewBox="0 0 400 400" width="100%"> | |
| <circle cx="200" cy="200" r="150" stroke="#10B981" stroke-dasharray="10 10" stroke-width="2"> | |
| </circle> | |
| <circle cx="200" cy="200" r="100" stroke="#10B981" stroke-width="1"></circle> | |
| <line stroke="#10B981" stroke-width="1" x1="200" x2="200" y1="50" y2="350"></line> | |
| <line stroke="#10B981" stroke-width="1" x1="50" x2="350" y1="200" y2="200"></line> | |
| </svg> | |
| </div> | |
| <!-- Slide Title --> | |
| <div style="position: absolute; top: 55px; left: 80px; width: 1120px; height: 80px; z-index: 10;"> | |
| <p style="margin: 0; font-size: 56px; font-weight: 700; color: #FFFFFF; line-height: 1.1;"> | |
| Project Objectives | |
| </p> | |
| </div> | |
| <style> | |
| .slide-3 .obj-grid { | |
| position: absolute; | |
| top: 160px; | |
| left: 80px; | |
| width: 1120px; | |
| display: grid; | |
| grid-template-columns: repeat(3, 1fr); | |
| gap: 25px; | |
| z-index: 10; | |
| } | |
| .slide-3 .obj-card { | |
| background-color: #111827; | |
| border: 1px solid #1F2937; | |
| border-top: 4px solid #10B981; | |
| border-radius: 12px; | |
| padding: 25px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); | |
| min-height: 200px; | |
| } | |
| .slide-3 .check-icon { | |
| width: 44px; | |
| height: 44px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| background-color: rgba(16, 185, 129, 0.1); | |
| border-radius: 10px; | |
| color: #10B981; | |
| font-size: 20px; | |
| } | |
| .slide-3 .obj-title { | |
| margin: 0; | |
| font-size: 19px; | |
| font-weight: 700; | |
| color: #FFFFFF; | |
| transition: color 0.3s; | |
| } | |
| .slide-3 .obj-text { | |
| margin: 0; | |
| font-size: 14.5px; | |
| line-height: 1.5; | |
| color: #CBD5E1; | |
| font-weight: 300; | |
| } | |
| .slide-3 .obj-card:hover { | |
| border-color: #10B981; | |
| transform: translateY(-5px); | |
| background-color: #1E293B; | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| .slide-3 .obj-card:hover .obj-title { | |
| color: #10B981; | |
| } | |
| </style> | |
| <!-- Objectives Grid --> | |
| <div class="obj-grid"> | |
| <!-- Obj 1 --> | |
| <div class="obj-card"> | |
| <div class="check-icon"><i class="fa-solid fa-microchip"></i></div> | |
| <p class="obj-title">AI Ticket Automation</p> | |
| <p class="obj-text">Completely automate ticket creation and multi-label triage using advanced | |
| Deep Learning models.</p> | |
| </div> | |
| <!-- Obj 2 --> | |
| <div class="obj-card"> | |
| <div class="check-icon"><i class="fa-solid fa-magnifying-glass-chart"></i></div> | |
| <p class="obj-title">Metadata Extraction</p> | |
| <p class="obj-text">Eliminate manual forms by dynamically extracting structured metadata via | |
| Named Entity Recognition.</p> | |
| </div> | |
| <!-- Obj 3 --> | |
| <div class="obj-card"> | |
| <div class="check-icon"><i class="fa-solid fa-clone"></i></div> | |
| <p class="obj-title">Flood Prevention</p> | |
| <p class="obj-text">Automatically block identical or redundant IT incidents using semantic | |
| similarity vector checks.</p> | |
| </div> | |
| <!-- Obj 4 --> | |
| <div class="obj-card"> | |
| <div class="check-icon"><i class="fa-solid fa-comments"></i></div> | |
| <p class="obj-title">L1 Self-Service</p> | |
| <p class="obj-text">Empower user resolution through a real-time conversational AI Chat interface | |
| resolving basic issues instantly.</p> | |
| </div> | |
| <!-- Obj 5 --> | |
| <div class="obj-card"> | |
| <div class="check-icon"><i class="fa-solid fa-eye"></i></div> | |
| <p class="obj-title">Visionary OCR Analysis</p> | |
| <p class="obj-text">Leverage Tesseract and Gemini to pull technical data and error codes | |
| directly from user screenshots.</p> | |
| </div> | |
| <!-- Obj 6 --> | |
| <div class="obj-card"> | |
| <div class="check-icon"><i class="fa-solid fa-server"></i></div> | |
| <p class="obj-title">Enterprise Scalability</p> | |
| <p class="obj-text">Deploy a robust, multi-tenant serverless architecture capable of handling | |
| high-volume operational loads.</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Slide 4: System Architecture — 3 Layers --> | |
| <div class="slide-wrapper"> | |
| <div class="slide-container slide-4"> | |
| <!-- Professional Blueprint Background --> | |
| <div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 0;"> | |
| <svg width="100%" height="100%"> | |
| <pattern id="blueprint-grid" x="0" y="0" width="80" height="80" patternUnits="userSpaceOnUse"> | |
| <path d="M 80 0 L 0 0 0 80" fill="none" stroke="rgba(16, 185, 129, 0.03)" | |
| stroke-width="1" /> | |
| </pattern> | |
| <rect width="100%" height="100%" fill="url(#blueprint-grid)" /> | |
| </svg> | |
| </div> | |
| <!-- Slide Title --> | |
| <div style="position: absolute; top: 40px; left: 80px; width: 1120px; z-index: 10;"> | |
| <p style="margin: 0; font-size: 40px; font-weight: 700; color: #FFFFFF; line-height: 1.1;">System | |
| Architecture</p> | |
| <div style="width: 60px; height: 3px; background: #10B981; margin-top: 10px; border-radius: 2px;"> | |
| </div> | |
| <p | |
| style="margin: 10px 0 0 0; color:#64748B; font-size: 14px; text-transform:uppercase; letter-spacing:2px; font-weight: 800;"> | |
| How the system Works</p> | |
| </div> | |
| <style> | |
| .slide-4 .arch-layout { | |
| position: absolute; | |
| top: 140px; | |
| left: 0; | |
| width: 1280px; | |
| height: 520px; | |
| display: grid; | |
| grid-template-columns: repeat(12, 1fr); | |
| grid-template-rows: repeat(10, 1fr); | |
| z-index: 15; | |
| font-family: 'Inter', sans-serif; | |
| } | |
| .slide-4 .node { | |
| background: #111827; | |
| border: 1.5px solid #1F2937; | |
| border-radius: 8px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 8px 16px; | |
| color: white; | |
| font-size: 13px; | |
| font-weight: 700; | |
| z-index: 20; | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); | |
| transition: border-color 0.3s; | |
| white-space: nowrap; | |
| width: 180px; | |
| margin: 0 auto; | |
| } | |
| .slide-4 .node:hover { | |
| border-color: #10B981; | |
| } | |
| .slide-4 .node i { | |
| margin-right: 12px; | |
| font-size: 16px; | |
| width: 20px; | |
| text-align: center; | |
| } | |
| /* Node Coordinates (Grid Placement) */ | |
| .node-user { | |
| grid-column: 6 / 8; | |
| grid-row: 1; | |
| border-top: 3px solid #3B82F6; | |
| } | |
| .node-api { | |
| grid-column: 6 / 8; | |
| grid-row: 3; | |
| border-top: 3px solid #10B981; | |
| } | |
| .node-engine { | |
| grid-column: 6 / 8; | |
| grid-row: 5; | |
| border: 2px solid #F59E0B; | |
| height: 50px; | |
| } | |
| .node-distil { | |
| grid-column: 3 / 5; | |
| grid-row: 7; | |
| background: #0F172A; | |
| } | |
| .node-ner { | |
| grid-column: 6 / 8; | |
| grid-row: 7; | |
| background: #0F172A; | |
| } | |
| .node-cosine { | |
| grid-column: 9 / 11; | |
| grid-row: 7; | |
| background: #0F172A; | |
| } | |
| .node-db { | |
| grid-column: 6 / 8; | |
| grid-row: 9; | |
| border-top: 3px solid #3ECF8E; | |
| } | |
| .node-admin { | |
| grid-column: 6 / 8; | |
| grid-row: 10.5; | |
| font-size: 11px; | |
| opacity: 0.6; | |
| height: 30px; | |
| } | |
| /* Path Labels */ | |
| .slide-4 .p-label { | |
| position: absolute; | |
| font-size: 9px; | |
| font-weight: 900; | |
| color: #475569; | |
| text-transform: uppercase; | |
| background: #0A0F1C; | |
| padding: 2px 6px; | |
| border: 1px solid #1E293B; | |
| border-radius: 4px; | |
| z-index: 25; | |
| transform: translate(-50%, -50%); | |
| } | |
| /* SVG Circuit Paths */ | |
| .slide-4 .circuit-path { | |
| stroke: #1E293B; | |
| stroke-width: 2; | |
| fill: none; | |
| } | |
| .slide-4 .pulse-ball { | |
| fill: #10B981; | |
| filter: drop-shadow(0 0 5px #10B981); | |
| } | |
| @keyframes pulse-move { | |
| 0% { | |
| offset-distance: 0%; | |
| opacity: 0; | |
| } | |
| 10% { | |
| opacity: 1; | |
| } | |
| 90% { | |
| opacity: 1; | |
| } | |
| 100% { | |
| offset-distance: 100%; | |
| opacity: 0; | |
| } | |
| } | |
| .slide-4 .anim-pulse { | |
| animation: pulse-move 4s linear infinite; | |
| } | |
| </style> | |
| <!-- SVG Circuit Connections --> | |
| <svg width="1280" height="600" style="position: absolute; top: 0; left: 0; z-index: 10;"> | |
| <defs> | |
| <marker id="dot" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="4" markerHeight="4"> | |
| <circle cx="5" cy="5" r="3" fill="#334155" /> | |
| </marker> | |
| </defs> | |
| <!-- 1. User to API (Direct Vertical) --> | |
| <path id="p1" class="circuit-path" d="M 640 185 L 640 240" marker-start="url(#dot)" /> | |
| <circle r="4" class="anim-pulse pulse-ball"> | |
| <animateMotion dur="3s" repeatCount="indefinite" path="M 640 185 L 640 240" /> | |
| </circle> | |
| <!-- 2. API to Engine (Direct Vertical) --> | |
| <path id="p2" class="circuit-path" d="M 640 290 L 640 340" marker-start="url(#dot)" /> | |
| <circle r="4" class="anim-pulse pulse-ball"> | |
| <animateMotion dur="3s" begin="1s" repeatCount="indefinite" path="M 640 290 L 640 340" /> | |
| </circle> | |
| <!-- 3. Engine to 3-Model Distribution (Orthogonal T-Junction) --> | |
| <path id="p3" class="circuit-path" d="M 640 400 L 640 430 H 375 V 450" marker-start="url(#dot)" /> | |
| <path id="p4" class="circuit-path" d="M 640 400 L 640 450" /> | |
| <path id="p5" class="circuit-path" d="M 640 400 L 640 430 H 905 V 450" /> | |
| <!-- Pulses for Models --> | |
| <circle r="3" class="anim-pulse pulse-ball" style="animation-delay: 2s;"> | |
| <animateMotion dur="4s" repeatCount="indefinite" path="M 640 400 L 640 430 H 375 V 450" /> | |
| </circle> | |
| <circle r="3" class="anim-pulse pulse-ball" style="animation-delay: 2s;"> | |
| <animateMotion dur="4s" repeatCount="indefinite" path="M 640 400 L 640 450" /> | |
| </circle> | |
| <circle r="3" class="anim-pulse pulse-ball" style="animation-delay: 2s;"> | |
| <animateMotion dur="4s" repeatCount="indefinite" path="M 640 400 L 640 430 H 905 V 450" /> | |
| </circle> | |
| <!-- 4. Models to DB (Converging Orthogonal) --> | |
| <path id="p6" class="circuit-path" d="M 375 500 V 530 H 640 V 550" /> | |
| <path id="p7" class="circuit-path" d="M 640 500 V 550" /> | |
| <path id="p8" class="circuit-path" d="M 905 500 V 530 H 640 V 550" /> | |
| <!-- 5. DB back to User (Large Professional Loop) --> | |
| <path id="pSync" class="circuit-path" d="M 550 580 H 120 V 165 H 550" stroke="#3B82F6" | |
| stroke-dasharray="5 5" opacity="0.3" /> | |
| <circle r="4" fill="#3B82F6" class="anim-pulse" style="animation-duration: 6s;"> | |
| <animateMotion dur="6s" repeatCount="indefinite" path="M 550 580 H 120 V 165 H 550" /> | |
| </circle> | |
| </svg> | |
| <!-- Labels Placement --> | |
| <div class="p-label" style="top: 215px; left: 640px;">Submits Issue</div> | |
| <div class="p-label" style="top: 315px; left: 640px;">Neural Processing</div> | |
| <div class="p-label" style="top: 430px; left: 375px;">Classification</div> | |
| <div class="p-label" style="top: 430px; left: 905px;">Deduplication</div> | |
| <div class="p-label" style="top: 370px; left: 120px; color:#3B82F6; border-color:#3B82F6;">Real-time | |
| State Sync</div> | |
| <!-- Nodes Placement --> | |
| <div class="arch-layout"> | |
| <div class="node node-user"><i class="fa-solid fa-laptop" style="color:#3B82F6;"></i>User (Frontend) | |
| </div> | |
| <div class="node node-api"><i class="fa-solid fa-microchip" style="color:#10B981;"></i>FastAPI | |
| Backend</div> | |
| <div class="node node-engine"><i class="fa-solid fa-brain" style="color:#F59E0B;"></i>AI Inference | |
| Engine</div> | |
| <div class="node node-distil">DistilBERT v3</div> | |
| <div class="node node-ner">NER Extraction</div> | |
| <div class="node node-cosine">Cosine Similarity</div> | |
| <div class="node node-db"><i class="fa-solid fa-database" style="color:#3ECF8E;"></i>Supabase DB | |
| </div> | |
| <div class="node node-admin" style="grid-row: 10;"><i class="fa-solid fa-gauge-high"></i>Admin | |
| Portal</div> | |
| </div> | |
| </div> | |
| </div><!-- end slide-4 --> | |
| <!-- Slide 5: Dataset Overview --> | |
| <div class="slide-wrapper"> | |
| <div class="slide-container slide-5"> | |
| <!-- Background Decor --> | |
| <div | |
| style="position: absolute; top: 0; right: 0; width: 400px; height: 300px; opacity: 0.05; z-index: 1;"> | |
| <svg fill="none" height="100%" viewBox="0 0 400 300" width="100%"> | |
| <path d="M400 0H200V100H100V200H0" stroke="#10B981" stroke-dasharray="20 10" stroke-width="2"> | |
| </path> | |
| </svg> | |
| </div> | |
| <!-- Slide Title & Main Metric --> | |
| <div | |
| style="position: absolute; top: 40px; left: 80px; width: 1120px; z-index: 10; display: flex; justify-content: space-between; align-items: baseline;"> | |
| <div> | |
| <p style="margin: 0; font-size: 52px; font-weight: 700; color: #FFFFFF; line-height: 1.1;"> | |
| Dataset Overview</p> | |
| <div style="width: 100px; height: 4px; background: #10B981; margin-top: 10px;"></div> | |
| </div> | |
| <div style="text-align: right;"> | |
| <p | |
| style="margin: 0; font-size: 16px; font-weight: 600; color: #10B981; text-transform: uppercase; letter-spacing: 2px;"> | |
| Total Population</p> | |
| <p style="margin: 0; font-size: 42px; font-weight: 700; color: #FFFFFF;">19,008 <span | |
| style="font-size: 18px; color: #64748B;">Tickets</span></p> | |
| </div> | |
| </div> | |
| <style> | |
| .slide-5 .core-definitions { | |
| position: absolute; | |
| top: 160px; | |
| left: 80px; | |
| width: 1120px; | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 15px; | |
| z-index: 10; | |
| } | |
| .slide-5 .def-box { | |
| background: rgba(30, 41, 59, 0.4); | |
| border: 1px solid rgba(255, 255, 255, 0.05); | |
| padding: 15px 20px; | |
| border-radius: 12px; | |
| display: flex; | |
| align-items: center; | |
| gap: 15px; | |
| } | |
| .slide-5 .def-tag { | |
| font-weight: 700; | |
| color: #10B981; | |
| font-size: 16px; | |
| min-width: 90px; | |
| } | |
| .slide-5 .def-text { | |
| color: #94A3B8; | |
| font-size: 14px; | |
| line-height: 1.4; | |
| margin: 0; | |
| } | |
| .slide-5 .chart-row { | |
| position: absolute; | |
| top: 350px; | |
| left: 80px; | |
| width: 1120px; | |
| display: grid; | |
| grid-template-columns: 1fr 1.5fr 1fr; | |
| gap: 20px; | |
| z-index: 10; | |
| align-items: stretch; | |
| height: 300px; | |
| } | |
| .slide-5 .chart-container { | |
| background: rgba(15, 23, 42, 0.6); | |
| border-radius: 16px; | |
| padding: 15px; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| text-align: center; | |
| overflow: hidden; | |
| position: relative; | |
| } | |
| .slide-5 .chart-container p { | |
| margin: 0 0 10px 0; | |
| font-size: 14px; | |
| font-weight: 600; | |
| color: #CBD5E1; | |
| text-transform: uppercase; | |
| letter-spacing: 1px; | |
| flex-shrink: 0; | |
| } | |
| .slide-5 .canvas-wrapper { | |
| position: relative; | |
| width: 100%; | |
| flex-grow: 1; | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| min-height: 0; | |
| } | |
| </style> | |
| <!-- Definitions --> | |
| <div class="core-definitions"> | |
| <div class="def-box"> | |
| <span class="def-tag">ACCESS</span> | |
| <p class="def-text">Identity & permissions focus (MFA, Password Resets, Role Changes).</p> | |
| </div> | |
| <div class="def-box"> | |
| <span class="def-tag">HARDWARE</span> | |
| <p class="def-text">Physical equipment issues (Battery, Monitor, Printers).</p> | |
| </div> | |
| <div class="def-box"> | |
| <span class="def-tag">NETWORK</span> | |
| <p class="def-text">Connectivity and remote access (VPN, DNS, WiFi).</p> | |
| </div> | |
| <div class="def-box"> | |
| <span class="def-tag">SOFTWARE</span> | |
| <p class="def-text">Application-level errors, installations, and license issues.</p> | |
| </div> | |
| </div> | |
| <!-- Charts Row --> | |
| <div class="chart-row"> | |
| <!-- Donut: Category --> | |
| <div class="chart-container"> | |
| <p>Category Distribution</p> | |
| <div class="canvas-wrapper"><canvas id="catChart"></canvas></div> | |
| </div> | |
| <!-- Bar: Priorities --> | |
| <div class="chart-container"> | |
| <p>Distribution of Ticket Priorities</p> | |
| <div class="canvas-wrapper"><canvas id="prioChart"></canvas></div> | |
| </div> | |
| <!-- Pie: Auto-Resolve --> | |
| <div class="chart-container"> | |
| <p>Auto-Resolved Tickets</p> | |
| <div class="canvas-wrapper"><canvas id="resolveChart"></canvas></div> | |
| </div> | |
| </div> | |
| <script> | |
| (function () { | |
| const setup = { | |
| font: { family: "'Space Grotesk', sans-serif", size: 11 }, | |
| color: '#94A3B8' | |
| }; | |
| // Category Donut | |
| new Chart(document.getElementById('catChart'), { | |
| type: 'doughnut', | |
| data: { | |
| labels: ['Software', 'Access', 'Network', 'Hardware'], | |
| datasets: [{ | |
| data: [29.2, 25.5, 25.3, 20.0], | |
| backgroundColor: ['#10B981', '#059669', '#34D399', '#6EE7B7'], | |
| borderWidth: 0, | |
| hoverOffset: 8 | |
| }] | |
| }, | |
| options: { | |
| responsive: true, maintainAspectRatio: false, | |
| plugins: { legend: { position: 'bottom', labels: { color: setup.color, font: setup.font, usePointStyle: true, padding: 12 } } }, | |
| cutout: '65%' | |
| } | |
| }); | |
| // Priority Bar | |
| new Chart(document.getElementById('prioChart'), { | |
| type: 'bar', | |
| data: { | |
| labels: ['Critical', 'Medium', 'Low', 'High'], | |
| datasets: [{ | |
| data: [5500, 5300, 4000, 4000], | |
| backgroundColor: ['#047857', '#059669', '#10B981', '#34D399'], | |
| borderRadius: 6 | |
| }] | |
| }, | |
| options: { | |
| responsive: true, maintainAspectRatio: false, | |
| plugins: { legend: { display: false } }, | |
| scales: { | |
| y: { grid: { color: 'rgba(255,255,255,0.05)' }, ticks: { color: setup.color, font: setup.font } }, | |
| x: { grid: { display: false }, ticks: { color: setup.color, font: setup.font } } | |
| } | |
| } | |
| }); | |
| // Resolve Pie | |
| new Chart(document.getElementById('resolveChart'), { | |
| type: 'pie', | |
| data: { | |
| labels: ['False', 'True'], | |
| datasets: [{ | |
| data: [64.5, 35.5], | |
| backgroundColor: ['#065F46', '#10B981'], | |
| borderWidth: 0 | |
| }] | |
| }, | |
| options: { | |
| responsive: true, maintainAspectRatio: false, | |
| plugins: { legend: { position: 'bottom', labels: { color: setup.color, font: setup.font, usePointStyle: true, padding: 12 } } } | |
| } | |
| }); | |
| })(); | |
| </script> | |
| </div> | |
| </div> | |
| <!-- Slide 6: Data Preprocessing & Pipeline Refined --> | |
| <div class="slide-wrapper"> | |
| <div class="slide-container slide-6"> | |
| <!-- Background Decor --> | |
| <div | |
| style="position: absolute; top: -50px; right: -50px; width: 400px; height: 400px; opacity: 0.05; z-index: 1;"> | |
| <svg fill="none" height="100%" viewBox="0 0 400 400" width="100%"> | |
| <path d="M0 400 L400 0 L400 400 Z" fill="url(#hexRefined)"></path> | |
| <defs> | |
| <linearGradient id="hexRefined" x1="0%" y1="100%" x2="100%" y2="0%"> | |
| <stop offset="0%" stop-color="#10B981" /> | |
| <stop offset="100%" stop-color="#0A0F1C" /> | |
| </linearGradient> | |
| </defs> | |
| </svg> | |
| </div> | |
| <!-- Slide Title --> | |
| <div style="position: absolute; top: 45px; left: 80px; width: 1120px; z-index: 10;"> | |
| <p style="margin: 0; font-size: 48px; font-weight: 700; color: #FFFFFF; line-height: 1.1;">Data | |
| Preprocessing & Pipeline</p> | |
| <div style="width: 80px; height: 4px; background: #10B981; margin-top: 15px; border-radius: 2px;"> | |
| </div> | |
| </div> | |
| <style> | |
| .slide-6 .main-pipeline { | |
| position: absolute; | |
| top: 140px; | |
| left: 80px; | |
| width: 1120px; | |
| display: grid; | |
| grid-template-columns: 1.1fr 0.9fr; | |
| gap: 40px; | |
| z-index: 10; | |
| align-items: stretch; | |
| height: 560px; | |
| } | |
| .slide-6 .step-stack { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| } | |
| .slide-6 .step-card { | |
| display: flex; | |
| align-items: center; | |
| gap: 20px; | |
| background: rgba(30, 41, 59, 0.4); | |
| padding: 15px 20px; | |
| border-radius: 12px; | |
| border-left: 4px solid #10B981; | |
| transition: transform 0.2s; | |
| } | |
| .slide-6 .step-card:hover { | |
| transform: translateX(8px); | |
| background: rgba(30, 41, 59, 0.6); | |
| } | |
| .slide-6 .sc-num { | |
| width: 32px; | |
| height: 32px; | |
| border-radius: 8px; | |
| background: #10B981; | |
| color: #FFF; | |
| display: grid; | |
| place-items: center; | |
| font-weight: 700; | |
| font-size: 14px; | |
| flex-shrink: 0; | |
| } | |
| .slide-6 .sc-info { | |
| flex-grow: 1; | |
| } | |
| .slide-6 .sc-title { | |
| margin: 0; | |
| font-size: 18px; | |
| font-weight: 700; | |
| color: #FFF; | |
| } | |
| .slide-6 .sc-desc { | |
| margin: 2px 0 0 0; | |
| font-size: 14px; | |
| color: #94A3B8; | |
| } | |
| .slide-6 .code-view { | |
| background: #0F172A; | |
| border-radius: 16px; | |
| padding: 30px; | |
| border: 1px solid rgba(255, 255, 255, 0.05); | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: center; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .slide-6 .cv-hdr { | |
| margin: 0 0 20px 0; | |
| font-size: 12px; | |
| font-weight: 700; | |
| color: #64748B; | |
| text-transform: uppercase; | |
| letter-spacing: 2px; | |
| } | |
| .slide-6 .cv-line { | |
| margin: 0; | |
| font-family: 'Courier New', monospace; | |
| font-size: 14px; | |
| color: #A7F3D0; | |
| line-height: 1.8; | |
| } | |
| .slide-6 .cv-comment { | |
| color: #576b81; | |
| font-style: italic; | |
| } | |
| .slide-6 .cv-pill { | |
| display: inline-block; | |
| padding: 2px 8px; | |
| border-radius: 4px; | |
| font-size: 11px; | |
| font-weight: 700; | |
| margin-left: 8px; | |
| } | |
| </style> | |
| <div class="main-pipeline"> | |
| <!-- Left: 6 Simple Steps --> | |
| <div class="step-stack"> | |
| <div class="step-card"> | |
| <div class="sc-num">01</div> | |
| <div class="sc-info"> | |
| <p class="sc-title">Data Deduplication</p> | |
| <p class="sc-desc">Removing 386 duplicate support tickets for evaluation integrity.</p> | |
| </div> | |
| </div> | |
| <div class="step-card"> | |
| <div class="sc-num">02</div> | |
| <div class="sc-info"> | |
| <p class="sc-title">Noise Reduction</p> | |
| <p class="sc-desc">Cleaning IT slang and standardizing mixed-case inputs.</p> | |
| </div> | |
| </div> | |
| <div class="step-card" style="border-color: #06B6D4;"> | |
| <div class="sc-num" style="background: #06B6D4;">03</div> | |
| <div class="sc-info"> | |
| <p class="sc-title">BIO Tag Alignment</p> | |
| <p class="sc-desc">Mapping word-level NER tags to DistilBERT subword offsets.</p> | |
| </div> | |
| </div> | |
| <div class="step-card"> | |
| <div class="sc-num">04</div> | |
| <div class="sc-info"> | |
| <p class="sc-title">Label Multi-Mapping</p> | |
| <p class="sc-desc">Encoding Category, Sub-Category, and Priority labels to unique IDs. | |
| </p> | |
| </div> | |
| </div> | |
| <div class="step-card"> | |
| <div class="sc-num">05</div> | |
| <div class="sc-info"> | |
| <p class="sc-title">Stratified 80/20 Split</p> | |
| <p class="sc-desc">Balanced training/test sets locked by label distribution.</p> | |
| </div> | |
| </div> | |
| <div class="step-card"> | |
| <div class="sc-num">06</div> | |
| <div class="sc-info"> | |
| <p class="sc-title">Tensor Conversion</p> | |
| <p class="sc-desc">Input formatting into PyTorch Tensors for GPU fine-tuning.</p> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Right: Transformation View --> | |
| <div class="code-view"> | |
| <p class="cv-hdr">Output Representation View</p> | |
| <p class="cv-line"><span class="cv-comment">// Original Input</span></p> | |
| <p class="cv-line" style="color: #FFF;">"wifi is entirely dead in conference room B"</p> | |
| <div style="height: 1px; background: rgba(255,255,255,0.05); margin: 20px 0;"></div> | |
| <p class="cv-line"><span class="cv-comment">// Tokenized State</span></p> | |
| <p class="cv-line">input_ids: [101, 7523, 2003, ... 3154, 102]</p> | |
| <p class="cv-line">attention_mask: [1, 1, 1, ... 1, 1]</p> | |
| <div style="height: 1px; background: rgba(255,255,255,0.05); margin: 20px 0;"></div> | |
| <p class="cv-line"><span class="cv-comment">// Resulting Labels</span></p> | |
| <p class="cv-line">label_id: 8 <span class="cv-pill" | |
| style="background: rgba(16, 185, 129, 0.1); color: #10B981;">NETWORK | WIFI</span></p> | |
| <p class="cv-line">ner_labels: [-100, 3, 0, ... 7, -100] <span class="cv-pill" | |
| style="background: rgba(6, 182, 212, 0.1); color: #06B6D4;">BIO-TAGGED</span></p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Slide 7: Model Development: Training & Evaluation --> | |
| <div class="slide-wrapper"> | |
| <div class="slide-container slide-7"> | |
| <!-- Background Decor --> | |
| <div | |
| style="position: absolute; top: 0; right: 0; width: 400px; height: 400px; opacity: 0.05; z-index: 1;"> | |
| <svg fill="none" height="100%" viewBox="0 0 400 400" width="100%"> | |
| <circle cx="200" cy="200" r="150" stroke="#F9AB00" stroke-dasharray="20 10" stroke-width="2"> | |
| </circle> | |
| <path d="M200 50V350 M50 200H350" stroke="#F9AB00" stroke-width="1"></path> | |
| <defs> | |
| <radialGradient id="colabGlow" cx="50%" cy="50%" r="50%"> | |
| <stop offset="0%" stop-color="#F9AB00" stop-opacity="0.2"></stop> | |
| <stop offset="100%" stop-color="#F9AB00" stop-opacity="0"></stop> | |
| </radialGradient> | |
| </defs> | |
| <circle cx="200" cy="200" r="100" fill="url(#colabGlow)"></circle> | |
| </svg> | |
| </div> | |
| <!-- Slide Title --> | |
| <div style="position: absolute; top: 40px; left: 80px; width: 1120px; z-index: 10;"> | |
| <p style="margin: 0; font-size: 44px; font-weight: 700; color: #FFFFFF; line-height: 1.1;">Model | |
| Development & Training Pipeline</p> | |
| <div style="width: 80px; height: 4px; background: #F9AB00; margin-top: 15px; border-radius: 2px;"> | |
| </div> | |
| </div> | |
| <style> | |
| .slide-7 .dev-grid { | |
| position: absolute; | |
| top: 140px; | |
| left: 80px; | |
| width: 1120px; | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 30px; | |
| z-index: 10; | |
| } | |
| .slide-7 .panel { | |
| background: rgba(30, 41, 59, 0.5); | |
| border-radius: 16px; | |
| border: 1px solid rgba(255, 255, 255, 0.05); | |
| padding: 25px; | |
| box-sizing: border-box; | |
| } | |
| .slide-7 .panel-title { | |
| margin: 0 0 15px 0; | |
| font-size: 22px; | |
| font-weight: 600; | |
| color: #FFF; | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .slide-7 .colab-banner { | |
| background: rgba(249, 171, 0, 0.1); | |
| border: 1px solid rgba(249, 171, 0, 0.3); | |
| border-radius: 12px; | |
| padding: 15px 20px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin-bottom: 25px; | |
| } | |
| .slide-7 .colab-btn { | |
| background: #F9AB00; | |
| color: #000; | |
| font-weight: 700; | |
| padding: 10px 20px; | |
| border-radius: 8px; | |
| text-decoration: none; | |
| font-size: 14px; | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| .slide-7 .step-list { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| } | |
| .slide-7 .step-item { | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 15px; | |
| margin-bottom: 20px; | |
| } | |
| .slide-7 .step-icon { | |
| width: 32px; | |
| height: 32px; | |
| background: rgba(16, 185, 129, 0.1); | |
| color: #10B981; | |
| border-radius: 8px; | |
| display: grid; | |
| place-items: center; | |
| font-size: 14px; | |
| flex-shrink: 0; | |
| } | |
| .slide-7 .step-text { | |
| color: #CBD5E1; | |
| font-size: 15px; | |
| line-height: 1.5; | |
| margin: 0; | |
| } | |
| .slide-7 .step-title { | |
| font-weight: 600; | |
| color: #FFF; | |
| display: block; | |
| margin-bottom: 2px; | |
| } | |
| .slide-7 .metric-box { | |
| background: rgba(15, 23, 42, 0.5); | |
| border: 1px solid rgba(255, 255, 255, 0.02); | |
| border-radius: 12px; | |
| padding: 20px; | |
| } | |
| .slide-7 .metric-title { | |
| font-size: 18px; | |
| font-weight: 600; | |
| color: #10B981; | |
| margin: 0 0 15px 0; | |
| border-bottom: 1px solid rgba(16, 185, 129, 0.2); | |
| padding-bottom: 10px; | |
| } | |
| .slide-7 .metric-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 15px; | |
| } | |
| .slide-7 .m-val { | |
| font-size: 28px; | |
| font-weight: 700; | |
| color: #FFF; | |
| margin: 0; | |
| } | |
| .slide-7 .m-lbl { | |
| font-size: 12px; | |
| color: #64748B; | |
| text-transform: uppercase; | |
| letter-spacing: 1px; | |
| margin: 5px 0 0 0; | |
| } | |
| </style> | |
| <!-- Colab Banner spans full width -- Top area --> | |
| <div style="position: absolute; top: 130px; left: 80px; width: 1120px; z-index: 10;"> | |
| <div class="colab-banner"> | |
| <div style="display: flex; align-items: center; gap: 15px;"> | |
| <img src="https://upload.wikimedia.org/wikipedia/commons/d/d0/Google_Colaboratory_SVG_Logo.svg" | |
| alt="Colab Logo" style="height: 32px;"> | |
| <div> | |
| <p style="margin: 0; font-size: 18px; font-weight: 600; color: #FFF;">Trained on Google | |
| Colab</p> | |
| <p style="margin: 2px 0 0 0; font-size: 14px; color: #94A3B8;">Full GPU-accelerated | |
| distilbert-base-uncased fine-tuning</p> | |
| </div> | |
| </div> | |
| <a href="https://colab.research.google.com/drive/1ZOGsP3ZNqgoEelVTKpZo3FHHEEvKJc2i?usp=sharing" | |
| class="colab-btn" target="_blank"> | |
| <i class="fa-solid fa-arrow-up-right-from-square"></i> Open Notebook | |
| </a> | |
| </div> | |
| </div> | |
| <div class="dev-grid" style="top: 230px;"> | |
| <!-- Left: Training Methodology --> | |
| <div class="panel"> | |
| <p class="panel-title"><i class="fa-solid fa-list-check" style="color: #3B82F6;"></i> | |
| Methodology & Execution</p> | |
| <ul class="step-list"> | |
| <li class="step-item"> | |
| <div class="step-icon"><i class="fa-solid fa-filter"></i></div> | |
| <p class="step-text"><span class="step-title">Strict Deduplication</span> Removed 386 | |
| absolute duplicates to prevent data leakage and ensure an honest, unbiased | |
| evaluation.</p> | |
| </li> | |
| <li class="step-item"> | |
| <div class="step-icon"><i class="fa-solid fa-layer-group"></i></div> | |
| <p class="step-text"><span class="step-title">Stratified Splitting</span> Performed an | |
| 80/20 train-test split locked by label_id for balanced category representation.</p> | |
| </li> | |
| <li class="step-item"> | |
| <div class="step-icon"><i class="fa-solid fa-brain"></i></div> | |
| <p class="step-text"><span class="step-title">Baseline Selection</span> Deployed | |
| <code>distilbert-base-uncased</code> for its exceptional speed-to-performance ratio | |
| in dual classification networks.</p> | |
| </li> | |
| <li class="step-item"> | |
| <div class="step-icon" style="background: rgba(249, 171, 0, 0.1); color: #F9AB00;"><i | |
| class="fa-solid fa-bolt"></i></div> | |
| <p class="step-text"><span class="step-title">Fine-Tuning Architecture</span> Utilized | |
| PyTorch and HuggingFace Trainer with AdamW optimizer, fp16 acceleration, and Epoch | |
| logging.</p> | |
| </li> | |
| </ul> | |
| </div> | |
| <!-- Right: Evaluation Metrics --> | |
| <div class="panel" style="display: flex; flex-direction: column; gap: 20px;"> | |
| <p class="panel-title" style="margin: 0;"><i class="fa-solid fa-chart-line" | |
| style="color: #10B981;"></i> Final Evaluation Results</p> | |
| <!-- Classifier Metrics --> | |
| <div class="metric-box"> | |
| <p class="metric-title">Text Classification Model</p> | |
| <div class="metric-grid"> | |
| <div> | |
| <p class="m-val">99.25%</p> | |
| <p class="m-lbl">Accuracy</p> | |
| </div> | |
| <div> | |
| <p class="m-val">99.26%</p> | |
| <p class="m-lbl">Weighted F1</p> | |
| </div> | |
| </div> | |
| <p style="margin: 15px 0 0 0; font-size: 13px; color: #94A3B8;">Trained on 6,946 | |
| deduplicated samples (Batch: 32, LR: 2e-5).</p> | |
| </div> | |
| <!-- NER Metrics --> | |
| <div class="metric-box" style="border-color: rgba(6, 182, 212, 0.3);"> | |
| <p class="metric-title" style="color: #06B6D4; border-color: rgba(6, 182, 212, 0.2);">Named | |
| Entity Recognition (NER)</p> | |
| <div class="metric-grid"> | |
| <div> | |
| <p class="m-val">90.00%</p> | |
| <p class="m-lbl">F1-Score</p> | |
| </div> | |
| <div> | |
| <p class="m-val">92.31%</p> | |
| <p class="m-lbl">Precision</p> | |
| </div> | |
| </div> | |
| <p style="margin: 15px 0 0 0; font-size: 13px; color: #94A3B8;">11 tag BIO scheme extraction | |
| (Batch: 16, LR: 5e-5).</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Slide 8: Named Entity Recognition (NER) --> | |
| <div class="slide-wrapper"> | |
| <div class="slide-container slide-8"> | |
| <!-- Background Decor --> | |
| <div | |
| style="position: absolute; top: 0; right: 0; width: 400px; height: 400px; opacity: 0.05; z-index: 1;"> | |
| <svg fill="none" height="100%" viewBox="0 0 400 400" width="100%"> | |
| <rect height="150" rx="20" stroke="#10B981" stroke-dasharray="10 10" stroke-width="2" | |
| width="150" x="200" y="50"></rect> | |
| <rect height="150" rx="20" stroke="#10B981" stroke-width="1" width="150" x="150" y="100"></rect> | |
| <circle cx="200" cy="200" fill="#10B981" r="5"></circle> | |
| </svg> | |
| </div> | |
| <!-- Slide Title --> | |
| <div style="position: absolute; top: 40px; left: 80px; width: 1120px; height: 80px; z-index: 10;"> | |
| <p style="margin: 0; font-size: 48px; font-weight: 700; color: #FFFFFF; line-height: 1.1;"> | |
| Named Entity Recognition (NER) | |
| </p> | |
| </div> | |
| <style> | |
| .slide-8 .ner-section { | |
| display: flex; | |
| align-items: center; | |
| margin-bottom: 60px; | |
| } | |
| .slide-8 .icon-sq { | |
| width: 50px; | |
| height: 50px; | |
| background-color: rgba(16, 185, 129, 0.1); | |
| border-radius: 12px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| border: 1px solid #10B981; | |
| margin-right: 30px; | |
| flex-shrink: 0; | |
| } | |
| .slide-8 .icon-sq i { | |
| font-size: 24px; | |
| color: #10B981; | |
| } | |
| .slide-8 .sec-title { | |
| margin: 0; | |
| font-size: 24px; | |
| font-weight: 600; | |
| color: #10B981; | |
| margin-bottom: 8px; | |
| } | |
| .slide-8 .sec-desc { | |
| margin: 0; | |
| font-size: 20px; | |
| font-weight: 300; | |
| color: #CBD5E1; | |
| line-height: 1.5; | |
| } | |
| </style> | |
| <!-- Content Area --> | |
| <div style="position: absolute; top: 180px; left: 80px; width: 560px; z-index: 10;"> | |
| <div class="ner-section"> | |
| <div class="icon-sq"><i class="fa-solid fa-brain"></i></div> | |
| <div> | |
| <p class="sec-title">The Approach</p> | |
| <p class="sec-desc">Transformer-based entity harvesting running in parallel with | |
| classification. | |
| </p> | |
| </div> | |
| </div> | |
| <div class="ner-section" style="margin-top: -10px;"> | |
| <div class="icon-sq"><i class="fa-solid fa-tags"></i></div> | |
| <div> | |
| <p class="sec-title">What it Extracts</p> | |
| <p class="sec-desc">Device Names, Hostnames, IP Addresses, OS Versions, Lab IDs, and Error | |
| Codes.</p> | |
| </div> | |
| </div> | |
| <div class="ner-section" style="margin-top: -10px;"> | |
| <div class="icon-sq"><i class="fa-solid fa-bolt"></i></div> | |
| <div> | |
| <p class="sec-title">Why it Matters</p> | |
| <p class="sec-desc">Eliminates the need for users to manually fill out 10 different dropdown | |
| menus.</p> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Terminal Window --> | |
| <div | |
| style="position: absolute; top: 180px; left: 700px; width: 500px; height: 400px; background-color: #1E293B; border-radius: 16px; box-shadow: 0 20px 50px rgba(0,0,0,0.5); z-index: 2; border: 1px solid #334155; overflow: hidden; font-family: 'Roboto Mono', monospace;"> | |
| <!-- Header --> | |
| <div | |
| style="height: 40px; background-color: #0F172A; display: flex; align-items: center; padding-left: 20px; border-bottom: 1px solid #334155;"> | |
| <div | |
| style="width: 12px; height: 12px; background-color: #EF4444; border-radius: 50%; margin-right: 10px;"> | |
| </div> | |
| <div | |
| style="width: 12px; height: 12px; background-color: #F59E0B; border-radius: 50%; margin-right: 10px;"> | |
| </div> | |
| <div style="width: 12px; height: 12px; background-color: #10B981; border-radius: 50%;"></div> | |
| </div> | |
| <!-- Body --> | |
| <div style="padding: 30px; line-height: 1.8; font-size: 18px;"> | |
| <p style="margin: 0; color: #64748B;">// Extracted Entities</p> | |
| <p style="margin: 0; color: #E2E8F0;">{</p> | |
| <p style="margin: 0; padding-left: 2ch;"><span style="color: #10B981;">"Device"</span>: <span | |
| style="color: #06B6D4;">"MacBook Pro M2"</span>,</p> | |
| <p style="margin: 0; padding-left: 2ch;"><span style="color: #10B981;">"IP"</span>: <span | |
| style="color: #06B6D4;">"192.168.1.14"</span>,</p> | |
| <p style="margin: 0; padding-left: 2ch;"><span style="color: #10B981;">"OS"</span>: <span | |
| style="color: #06B6D4;">"macOS 14.2"</span>,</p> | |
| <p style="margin: 0; padding-left: 2ch;"><span style="color: #10B981;">"Error"</span>: <span | |
| style="color: #06B6D4;">"ERR_CONNECTION..."</span></p> | |
| <p style="margin: 0; color: #E2E8F0;">}</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Slide 10: Integration & Deployment Tech Stack --> | |
| <div class="slide-wrapper"> | |
| <div class="slide-container slide-10"> | |
| <!-- Background Decor --> | |
| <div | |
| style="position: absolute; top: 0; right: 0; width: 400px; height: 400px; opacity: 0.05; z-index: 1;"> | |
| <svg fill="none" height="100%" viewBox="0 0 400 400" width="100%"> | |
| <path d="M400 0L200 200V400H400V0Z" fill="#10B981"></path> | |
| <circle cx="200" cy="200" r="150" stroke="#10B981" stroke-dasharray="20 10" stroke-width="1"> | |
| </circle> | |
| </svg> | |
| </div> | |
| <!-- Slide Title --> | |
| <div style="position: absolute; top: 40px; left: 80px; width: 1120px; z-index: 10;"> | |
| <p style="margin: 0; font-size: 48px; font-weight: 700; color: #FFFFFF; line-height: 1.1;"> | |
| Integration & Deployment</p> | |
| <div style="width: 80px; height: 4px; background: #10B981; margin-top: 15px; border-radius: 2px;"> | |
| </div> | |
| <p | |
| style="margin: 10px 0 0 0; font-size: 16px; font-weight: 500; color: #94A3B8; text-transform: uppercase; letter-spacing: 2px;"> | |
| Complete Technology Stack</p> | |
| </div> | |
| <style> | |
| .slide-10 .stack-grid { | |
| position: absolute; | |
| top: 180px; | |
| left: 80px; | |
| width: 1120px; | |
| height: 480px; | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| grid-template-rows: 1fr 1fr; | |
| gap: 30px; | |
| z-index: 10; | |
| } | |
| .slide-10 .stack-card { | |
| background: #111827; | |
| border: 1px solid #1F2937; | |
| border-radius: 16px; | |
| padding: 30px; | |
| box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .slide-10 .card-header { | |
| display: flex; | |
| align-items: center; | |
| border-bottom: 1px solid #1E293B; | |
| padding-bottom: 15px; | |
| margin-bottom: 25px; | |
| } | |
| .slide-10 .header-icon { | |
| width: 36px; | |
| height: 36px; | |
| background: rgba(16, 185, 129, 0.1); | |
| color: #10B981; | |
| border-radius: 8px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 16px; | |
| margin-right: 15px; | |
| } | |
| .slide-10 .card-title { | |
| font-size: 22px; | |
| font-weight: 700; | |
| color: #F8FAFC; | |
| margin: 0; | |
| } | |
| .slide-10 .logo-row { | |
| display: flex; | |
| justify-content: space-around; | |
| align-items: center; | |
| flex-grow: 1; | |
| } | |
| .slide-10 .tech-item { | |
| position: relative; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| cursor: pointer; | |
| width: 100px; | |
| height: 100px; | |
| } | |
| .slide-10 .tech-logo { | |
| font-size: 45px; | |
| transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); | |
| color: #64748B; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| height: 60px; | |
| } | |
| .slide-10 .tech-logo svg { | |
| width: 50px; | |
| height: 50px; | |
| } | |
| .slide-10 .tech-name { | |
| position: absolute; | |
| bottom: -10px; | |
| background: #1E293B; | |
| color: #10B981; | |
| font-size: 13px; | |
| font-weight: 700; | |
| padding: 4px 12px; | |
| border-radius: 20px; | |
| border: 1px solid #334155; | |
| opacity: 0; | |
| transform: translateY(10px); | |
| transition: all 0.3s ease; | |
| white-space: nowrap; | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5); | |
| pointer-events: none; | |
| } | |
| /* Hover Interactions */ | |
| .slide-10 .tech-item:hover .tech-logo { | |
| transform: scale(1.2) translateY(-10px); | |
| } | |
| .slide-10 .tech-item:hover .tech-name { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| /* Specific Brand Colors on Hover */ | |
| .slide-10 .tech-item.t-react:hover .tech-logo { | |
| color: #61DAFB; | |
| } | |
| .slide-10 .tech-item.t-vite:hover .tech-logo { | |
| color: #646CFF; | |
| } | |
| .slide-10 .tech-item.t-tailwind:hover .tech-logo { | |
| color: #06B6D4; | |
| } | |
| .slide-10 .tech-item.t-zustand:hover .tech-logo { | |
| color: #F7DF1E; | |
| } | |
| .slide-10 .tech-item.t-python:hover .tech-logo { | |
| color: #3776AB; | |
| } | |
| .slide-10 .tech-item.t-fastapi:hover .tech-logo { | |
| color: #009688; | |
| } | |
| .slide-10 .tech-item.t-pytorch:hover .tech-logo { | |
| color: #EE4C2C; | |
| } | |
| .slide-10 .tech-item.t-gemini:hover .tech-logo { | |
| color: #8E24AA; | |
| } | |
| .slide-10 .tech-item.t-supabase:hover .tech-logo { | |
| color: #3ECF8E; | |
| } | |
| .slide-10 .tech-item.t-postgres:hover .tech-logo { | |
| color: #336791; | |
| } | |
| .slide-10 .tech-item.t-vercel:hover .tech-logo { | |
| color: #FFFFFF; | |
| } | |
| .slide-10 .tech-item.t-hf:hover .tech-logo { | |
| color: #FFD21E; | |
| } | |
| .slide-10 .tech-item.t-github:hover .tech-logo { | |
| color: #FFFFFF; | |
| } | |
| </style> | |
| <div class="stack-grid"> | |
| <!-- Quadrant 1: Frontend --> | |
| <div class="stack-card"> | |
| <div class="card-header"> | |
| <div class="header-icon"><i class="fa-solid fa-laptop-code"></i></div> | |
| <p class="card-title">Frontend Experience</p> | |
| </div> | |
| <div class="logo-row"> | |
| <div class="tech-item t-react"> | |
| <div class="tech-logo"><i class="fa-brands fa-react"></i></div> | |
| <div class="tech-name">React 19</div> | |
| </div> | |
| <div class="tech-item t-vite"> | |
| <div class="tech-logo"> | |
| <svg viewBox="0 0 32 32" fill="currentColor"> | |
| <path | |
| d="M29.56 2.373L16.27 30.63a.833.833 0 0 1-1.5 0L1.516 2.373a.833.833 0 0 1 .792-1.189h26.467a.833.833 0 0 1 .786 1.189zM15.53 11v8.583a.5.5 0 0 0 .5.5h.001A.5.5 0 0 0 16.53 19.58V11a.5.5 0 0 0-.5-.5h-.001A.5.5 0 0 0 15.53 11zM15 22.5A1.5 1.5 0 1 0 16.5 21 1.5 1.5 0 0 0 15 22.5z" /> | |
| </svg> | |
| </div> | |
| <div class="tech-name">Vite</div> | |
| </div> | |
| <div class="tech-item t-tailwind"> | |
| <div class="tech-logo"> | |
| <svg viewBox="0 0 24 24" fill="currentColor"> | |
| <path | |
| d="M12.001,4.8c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624C13.666,10.618,15.027,12,18.001,12c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624C16.337,6.182,14.976,4.8,12.001,4.8z M6.001,12c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624c1.177,1.194,2.538,2.576,5.512,2.576c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624C10.337,13.382,8.976,12,6.001,12z" /> | |
| </svg> | |
| </div> | |
| <div class="tech-name">Tailwind CSS</div> | |
| </div> | |
| <div class="tech-item t-zustand"> | |
| <div class="tech-logo">🐻</div> | |
| <div class="tech-name">Zustand</div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Quadrant 2: Backend & AI --> | |
| <div class="stack-card"> | |
| <div class="card-header"> | |
| <div class="header-icon"><i class="fa-solid fa-microchip"></i></div> | |
| <p class="card-title">Backend & AI Inference</p> | |
| </div> | |
| <div class="logo-row"> | |
| <div class="tech-item t-python"> | |
| <div class="tech-logo"><i class="fa-brands fa-python"></i></div> | |
| <div class="tech-name">Python 3.12</div> | |
| </div> | |
| <div class="tech-item t-fastapi"> | |
| <div class="tech-logo"> | |
| <svg viewBox="0 0 24 24" fill="currentColor"> | |
| <path | |
| d="M11.996 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 11.996 0zm5.188 8.018l-5.694 5.693 2.08 2.081-4.161 4.162-4.162-4.162 2.08-2.08-5.693-5.694A8.966 8.966 0 0 1 12 3.004a8.966 8.966 0 0 1 5.184 5.014z" /> | |
| </svg> | |
| </div> | |
| <div class="tech-name">FastAPI</div> | |
| </div> | |
| <div class="tech-item t-pytorch"> | |
| <div class="tech-logo"> | |
| <svg viewBox="0 0 24 24" fill="currentColor"> | |
| <path | |
| d="M17.485 8.358c-.544-.648-1.127-1.168-1.748-1.561-.62-.394-1.261-.643-1.921-.749-.66-.105-1.32-.053-1.98.156-.66.21-1.306.568-1.936 1.074-1.638 1.34-2.858 3.235-3.66 5.688a2.535 2.535 0 0 1-.3.6c-.161.261-.341.516-.541.764-.816.985-1.714 1.768-2.693 2.35-.98.58-1.997.945-3.052 1.096l2.197 1.84c.544.646 1.127 1.166 1.748 1.559.62.392 1.261.642 1.92.748.66.105 1.321.053 1.981-.156.66-.21 1.306-.568 1.936-1.074 1.637-1.34 2.857-3.235 3.659-5.688.08-.22.18-.42.3-.6.162-.262.342-.516.541-.765.816-.985 1.715-1.768 2.694-2.35.98-.582 1.997-.946 3.051-1.096zm-9.049-5.68A14.28 14.28 0 0 0 5.4 7.64c-.6.9-1.28 1.73-2.04 2.491.76-.76 1.44-1.59 2.04-2.491A14.28 14.28 0 0 1 8.436 2.68L6.24.84zM18.6 16.36c.6-.9 1.28-1.731 2.04-2.49-.76.76-1.44 1.59-2.04 2.49a14.28 14.28 0 0 1-3.036 4.958l2.196 1.84a16.892 16.892 0 0 0 3.633-5.914..." /> | |
| </svg> | |
| </div> | |
| <div class="tech-name">PyTorch & HF</div> | |
| </div> | |
| <div class="tech-item t-gemini"> | |
| <div class="tech-logo"><i class="fa-solid fa-sparkles"></i></div> | |
| <div class="tech-name">Google Gemini</div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Quadrant 3: Database & Auth --> | |
| <div class="stack-card"> | |
| <div class="card-header"> | |
| <div class="header-icon"><i class="fa-solid fa-cloud"></i></div> | |
| <p class="card-title">Database & BaaS</p> | |
| </div> | |
| <div class="logo-row" style="justify-content: center; gap: 40px;"> | |
| <div class="tech-item t-supabase"> | |
| <div class="tech-logo"> | |
| <svg viewBox="0 0 24 24" fill="currentColor"> | |
| <path | |
| d="M12.6 1.488a.952.952 0 0 0-1.2 0L1.751 9.4A.947.947 0 0 0 2.35 11h6.702v10.998c0 .76 1.054 1.139 1.562.592l11.66-12.449A.947.947 0 0 0 21.65 8.5h-7.398V1.956c0-.395-.44-.652-.779-.468z" /> | |
| </svg> | |
| </div> | |
| <div class="tech-name">Supabase</div> | |
| </div> | |
| <div class="tech-item t-postgres"> | |
| <div class="tech-logo"> | |
| <i class="fa-solid fa-database"></i> | |
| </div> | |
| <div class="tech-name">PostgreSQL</div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Quadrant 4: Deployment & DevOps --> | |
| <div class="stack-card"> | |
| <div class="card-header"> | |
| <div class="header-icon"><i class="fa-solid fa-server"></i></div> | |
| <p class="card-title">Hosting & CI/CD</p> | |
| </div> | |
| <div class="logo-row" style="gap: 20px;"> | |
| <div class="tech-item t-vercel"> | |
| <div class="tech-logo"> | |
| <svg viewBox="0 0 24 24" fill="currentColor"> | |
| <path d="M24 22.525H0l12-21.05 12 21.05z" /> | |
| </svg> | |
| </div> | |
| <div class="tech-name">Vercel</div> | |
| </div> | |
| <div class="tech-item t-hf"> | |
| <div class="tech-logo">🤗</div> | |
| <div class="tech-name">Hugging Face</div> | |
| </div> | |
| <div class="tech-item t-github"> | |
| <div class="tech-logo"><i class="fa-brands fa-github"></i></div> | |
| <div class="tech-name">GitHub Actions</div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Slide 11: Live Platform Demo --> | |
| <div class="slide-wrapper"> | |
| <div class="slide-container slide-11"> | |
| <!-- Background Decor --> | |
| <div | |
| style="position: absolute; top: 0; right: 0; width: 400px; height: 400px; opacity: 0.05; z-index: 1;"> | |
| <svg fill="none" height="100%" viewBox="0 0 400 400" width="100%"> | |
| <circle cx="200" cy="200" r="180" stroke="#10B981" stroke-dasharray="20 10" stroke-width="2"> | |
| </circle> | |
| <path d="M200 20V380 M20 200H380" stroke="#10B981" stroke-width="1"></path> | |
| </svg> | |
| </div> | |
| <!-- Slide Title --> | |
| <div | |
| style="position: absolute; top: 30px; left: 80px; width: 1120px; z-index: 10; display: flex; justify-content: space-between; align-items: flex-end;"> | |
| <div> | |
| <p style="margin: 0; font-size: 48px; font-weight: 700; color: #FFFFFF; line-height: 1.1;">Live | |
| Platform Demo</p> | |
| <div | |
| style="width: 80px; height: 4px; background: #10B981; margin-top: 15px; border-radius: 2px;"> | |
| </div> | |
| </div> | |
| <div | |
| style="display: flex; align-items: center; background: rgba(16, 185, 129, 0.1); border: 1px solid rgba(16, 185, 129, 0.3); padding: 8px 20px; border-radius: 30px;"> | |
| <i class="fa-regular fa-clock" style="color: #10B981; margin-right: 10px; font-size: 18px;"></i> | |
| <p style="margin: 0; font-size: 20px; font-weight: 600; color: #10B981;">~3.5 Minutes</p> | |
| </div> | |
| </div> | |
| <!-- Premium Browser Mockup (1000x562 -> perfectly fits 16:9 video) --> | |
| <div | |
| style="position: absolute; top: 120px; left: 140px; width: 1000px; height: 562px; background-color: #000000; border-radius: 12px; box-shadow: 0 30px 60px rgba(0,0,0,0.8), 0 0 0 1px #1F2937; z-index: 2; overflow: hidden; display: flex; flex-direction: column;"> | |
| <!-- Browser Bar --> | |
| <div | |
| style="height: 40px; background-color: #111827; display: flex; align-items: center; padding: 0 20px; border-bottom: 1px solid #1F2937; flex-shrink: 0;"> | |
| <div style="display: flex; gap: 8px; margin-right: 20px;"> | |
| <div style="width: 12px; height: 12px; background-color: #EF4444; border-radius: 50%;"> | |
| </div> | |
| <div style="width: 12px; height: 12px; background-color: #F59E0B; border-radius: 50%;"> | |
| </div> | |
| <div style="width: 12px; height: 12px; background-color: #10B981; border-radius: 50%;"> | |
| </div> | |
| </div> | |
| <!-- Mock URL Bar --> | |
| <div | |
| style="flex-grow: 1; height: 24px; background: #1F2937; border-radius: 4px; display: flex; align-items: center; justify-content: center;"> | |
| <span | |
| style="font-size: 12px; color: #94A3B8; font-family: monospace;">https://helpdesk-ai-app.vercel.app</span> | |
| </div> | |
| </div> | |
| <!-- Integrated Google Drive Player (Optimized Alignment) --> | |
| <div | |
| style="flex-grow: 1; width: 100%; position: relative; background: #000; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 10px; overflow: hidden;"> | |
| <iframe src="https://drive.google.com/file/d/1vNUE8wWm3n-XFw6k_3IM6SuRkHmJKVfF/preview" | |
| style="width: 100%; aspect-ratio: 16 / 9; max-height: 100%; border: none; border-radius: 4px;" allow="autoplay"> | |
| </iframe> | |
| <div style="margin-top: 10px; text-align: center;"> | |
| <a href="https://drive.google.com/file/d/1vNUE8wWm3n-XFw6k_3IM6SuRkHmJKVfF/view?usp=sharing" | |
| target="_blank" | |
| style="display: inline-block; padding: 10px 20px; background: #3B82F6; color: white; text-decoration: none; border-radius: 6px; font-weight: 600; font-size: 14px; transition: background 0.3s; box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);"> | |
| <i class="fa-solid fa-arrow-up-right-from-square" style="margin-right: 8px;"></i> Watch | |
| on Google Drive | |
| </a> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Focus Items (Repositioned to bottom neatly) --> | |
| <div | |
| style="position: absolute; top: 690px; left: 0; width: 1280px; display: flex; justify-content: center; align-items: center; gap: 40px; z-index: 10;"> | |
| <div style="display: flex; align-items: center; gap: 10px;"> | |
| <i class="fa-solid fa-wand-magic-sparkles" style="color: #10B981;"></i> | |
| <p style="margin: 0; font-size: 16px; font-weight: 500; color: #94A3B8;">Chaos to Clarity Flow | |
| </p> | |
| </div> | |
| <div style="width: 1px; height: 20px; background-color: #334155;"></div> | |
| <div style="display: flex; align-items: center; gap: 10px;"> | |
| <i class="fa-solid fa-eye" style="color: #10B981;"></i> | |
| <p style="margin: 0; font-size: 16px; font-weight: 500; color: #94A3B8;">AI Visual Simulator</p> | |
| </div> | |
| <div style="width: 1px; height: 20px; background-color: #334155;"></div> | |
| <div style="display: flex; align-items: center; gap: 10px;"> | |
| <i class="fa-solid fa-lock" style="color: #10B981;"></i> | |
| <p style="margin: 0; font-size: 16px; font-weight: 500; color: #94A3B8;">4-Layer Authorization | |
| </p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Slide 12: Challenges & Resiliency --> | |
| <div class="slide-wrapper"> | |
| <div class="slide-container slide-12"> | |
| <!-- Background Decor --> | |
| <div | |
| style="position: absolute; top: 0; right: 0; width: 600px; height: 100%; opacity: 0.03; z-index: 1; pointer-events: none;"> | |
| <svg width="100%" height="100%" viewBox="0 0 600 720"> | |
| <pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse"> | |
| <path d="M 40 0 L 0 0 0 40" fill="none" stroke="#10B981" stroke-width="1" /> | |
| </pattern> | |
| <rect width="100%" height="100%" fill="url(#grid)" /> | |
| </svg> | |
| </div> | |
| <!-- Slide Title --> | |
| <div style="position: absolute; top: 40px; left: 80px; width: 1120px; z-index: 10;"> | |
| <div style="display: flex; align-items: baseline; gap: 20px;"> | |
| <p style="margin: 0; font-size: 48px; font-weight: 700; color: #FFFFFF; line-height: 1.1;"> | |
| Challenges & Resiliency</p> | |
| <p | |
| style="margin: 0; font-size: 18px; font-weight: 400; color: #64748B; font-family: 'JetBrains Mono', monospace;"> | |
| [SYSTEM_LOG: STABLE]</p> | |
| </div> | |
| <div style="width: 80px; height: 4px; background: #10B981; margin-top: 15px; border-radius: 2px;"> | |
| </div> | |
| </div> | |
| <style> | |
| .slide-12 .challenge-dashboard { | |
| position: absolute; | |
| top: 180px; | |
| left: 80px; | |
| width: 1120px; | |
| height: 480px; | |
| display: grid; | |
| grid-template-columns: repeat(3, 1fr); | |
| gap: 30px; | |
| z-index: 10; | |
| } | |
| .slide-12 .resilience-pillar { | |
| background: #111827; | |
| border: 1px solid #1F2937; | |
| border-radius: 20px; | |
| display: flex; | |
| flex-direction: column; | |
| overflow: hidden; | |
| transition: transform 0.3s ease, border-color 0.3s ease; | |
| position: relative; | |
| } | |
| .slide-12 .resilience-pillar:hover { | |
| transform: translateY(-5px); | |
| border-color: #334155; | |
| } | |
| .slide-12 .pillar-status { | |
| height: 60px; | |
| background: #0F172A; | |
| padding: 0 20px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| border-bottom: 1px solid #1E293B; | |
| } | |
| .slide-12 .status-dot { | |
| width: 10px; | |
| height: 10px; | |
| border-radius: 50%; | |
| background: #EF4444; | |
| box-shadow: 0 0 10px #EF4444; | |
| animation: pulse-red 2s infinite; | |
| } | |
| @keyframes pulse-red { | |
| 0% { | |
| opacity: 1; | |
| transform: scale(1); | |
| } | |
| 50% { | |
| opacity: 0.5; | |
| transform: scale(1.2); | |
| } | |
| 100% { | |
| opacity: 1; | |
| transform: scale(1); | |
| } | |
| } | |
| .slide-12 .pillar-label { | |
| font-size: 12px; | |
| font-weight: 700; | |
| color: #94A3B8; | |
| text-transform: uppercase; | |
| letter-spacing: 1.5px; | |
| } | |
| .slide-12 .problem-zone { | |
| padding: 25px; | |
| flex-grow: 1; | |
| } | |
| .slide-12 .problem-title { | |
| font-size: 20px; | |
| font-weight: 700; | |
| color: #F8FAFC; | |
| margin: 0 0 15px 0; | |
| } | |
| .slide-12 .terminal-box { | |
| background: #020617; | |
| border-radius: 8px; | |
| padding: 15px; | |
| font-family: 'JetBrains Mono', monospace; | |
| font-size: 13px; | |
| color: #94A3B8; | |
| line-height: 1.6; | |
| border: 1px solid #1E293B; | |
| } | |
| .slide-12 .resolution-zone { | |
| padding: 25px; | |
| background: rgba(16, 185, 129, 0.03); | |
| border-top: 1px solid rgba(16, 185, 129, 0.1); | |
| } | |
| .slide-12 .resolution-pill { | |
| display: inline-flex; | |
| align-items: center; | |
| background: rgba(16, 185, 129, 0.1); | |
| color: #10B981; | |
| padding: 4px 12px; | |
| border-radius: 20px; | |
| font-size: 11px; | |
| font-weight: 800; | |
| text-transform: uppercase; | |
| margin-bottom: 12px; | |
| border: 1px solid rgba(16, 185, 129, 0.2); | |
| } | |
| .slide-12 .resolution-text { | |
| font-size: 16px; | |
| font-weight: 400; | |
| color: #CBD5E1; | |
| line-height: 1.5; | |
| margin: 0; | |
| } | |
| </style> | |
| <div class="challenge-dashboard"> | |
| <!-- Pillar 1 --> | |
| <div class="resilience-pillar"> | |
| <div class="pillar-status"> | |
| <span class="pillar-label">Challenge 01</span> | |
| <div class="status-dot"></div> | |
| </div> | |
| <div class="problem-zone"> | |
| <p class="problem-title">Semantic Distribution Disparity</p> | |
| <div class="terminal-box"> | |
| <span style="color: #64748B;">$ analysis --weights</span><br /> | |
| > ERR: High-frequency "General" noise distorting minority class vectors.<br /> | |
| > Bias detected in specific hardware partitions. | |
| </div> | |
| </div> | |
| <div class="resolution-zone"> | |
| <div class="resolution-pill"><i class="fa-solid fa-shield-halved" | |
| style="margin-right: 6px;"></i> Solution</div> | |
| <p class="resolution-text">Applied <strong style="color: #10B981;">Synthetic | |
| Augmentation</strong> & stratified sampling to ensure robust detection of rare | |
| failure modes.</p> | |
| </div> | |
| </div> | |
| <!-- Pillar 2 --> | |
| <div class="resilience-pillar"> | |
| <div class="pillar-status"> | |
| <span class="pillar-label">Challenge 02</span> | |
| <div class="status-dot"></div> | |
| </div> | |
| <div class="problem-zone"> | |
| <p class="problem-title">Serverless Inference Latency</p> | |
| <div class="terminal-box"> | |
| <span style="color: #64748B;">$ ping api.inference.hf</span><br /> | |
| > 110M Params loading...<br /> | |
| > TIMEOUT: Cold-start delay > 12s on sporadic requests. | |
| </div> | |
| </div> | |
| <div class="resolution-zone"> | |
| <div class="resolution-pill"><i class="fa-solid fa-bolt" style="margin-right: 6px;"></i> | |
| Optimized</div> | |
| <p class="resolution-text">Integrated <strong style="color: #10B981;">FastAPI Lifespan | |
| Hooks</strong> to pre-cache model in RAM, slashing cold-start latency by 95%.</p> | |
| </div> | |
| </div> | |
| <!-- Pillar 3 --> | |
| <div class="resilience-pillar"> | |
| <div class="pillar-status"> | |
| <span class="pillar-label">Challenge 03</span> | |
| <div class="status-dot"></div> | |
| </div> | |
| <div class="problem-zone"> | |
| <p class="problem-title">Colloquial Context Ambiguity</p> | |
| <div class="terminal-box"> | |
| <span style="color: #64748B;">$ process "jira dead"</span><br /> | |
| > UnknownToken: "Hinglish" mix & enterprise jargon.<br /> | |
| > Confidence Score: 0.42 [WEAK] | |
| </div> | |
| </div> | |
| <div class="resolution-zone"> | |
| <div class="resolution-pill"><i class="fa-solid fa-brain" style="margin-right: 6px;"></i> | |
| Normalized</div> | |
| <p class="resolution-text">Fine-tuned on a <strong style="color: #10B981;">Technical | |
| Colloquial Corpus</strong> to resolve mixed-lanuage slang and organization jargon. | |
| </p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Slide 13: Conclusion & Future Scope --> | |
| <div class="slide-wrapper"> | |
| <div class="slide-container slide-13"> | |
| <!-- Background Decor --> | |
| <div style="position: absolute; top: 0; right: 0; width: 400px; height: 300px; opacity: 0.05; z-index: 1;"> | |
| <svg fill="none" height="100%" viewBox="0 0 400 300" width="100%"> | |
| <circle cx="300" cy="150" r="120" stroke="#06B6D4" stroke-dasharray="10 10" stroke-width="2"></circle> | |
| <circle cx="300" cy="150" r="80" stroke="#10B981" stroke-width="1"></circle> | |
| </svg> | |
| </div> | |
| <!-- Slide Title --> | |
| <div style="position: absolute; top: 35px; left: 80px; width: 1120px; height: 75px; z-index: 10;"> | |
| <p style="margin: 0; font-size: 48px; font-weight: 700; color: #FFFFFF; line-height: 1.1;">Conclusion and Future Scope</p> | |
| </div> | |
| <!-- Vertical Divider --> | |
| <div style="position: absolute; top: 160px; left: 639px; width: 2px; height: 480px; background-color: #10B981; opacity: 0.3; z-index: 2;"></div> | |
| <style> | |
| .slide-13 .sec-label { font-size: 28px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 40px; } | |
| .slide-13 .list-card { position: absolute; left: 80px; width: 500px; background-color: #111827; border-radius: 16px; border: 1px solid #1F2937; z-index: 2; padding: 30px; box-sizing: border-box; display: flex; flex-direction: column; gap: 30px;} | |
| .slide-13 .list-card-right { left: 700px; border-left: 4px solid #06B6D4; background: linear-gradient(135deg, #111827 0%, #0F172A 100%);} | |
| .slide-13 .list-item { display: flex; align-items: flex-start; gap: 15px; } | |
| .slide-13 .list-icon { width: 40px; height: 40px; background-color: rgba(16, 185, 129, 0.1); border-radius: 10px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 2px; border: 1px solid rgba(16,185,129,0.2);} | |
| .slide-13 .list-icon-right { background-color: rgba(6, 182, 212, 0.1); border: 1px solid rgba(6,182,212,0.2); } | |
| .slide-13 .item-title { margin: 0; font-size: 19px; font-weight: 700; color: #FFFFFF; } | |
| .slide-13 .item-desc { margin: 8px 0 0 0; font-size: 14.5px; font-weight: 400; color: #94A3B8; line-height: 1.5; } | |
| </style> | |
| <!-- LEFT: CONCLUSION --> | |
| <div style="position: absolute; top: 160px; left: 80px;"> | |
| <p class="sec-label" style="color: #10B981;">Conclusion</p> | |
| </div> | |
| <div class="list-card" style="top: 230px; height: 400px; border-left: 4px solid #10B981;"> | |
| <div class="list-item"> | |
| <div class="list-icon"><i class="fa-solid fa-check-double" style="color: #10B981; font-size: 18px;"></i></div> | |
| <div> | |
| <p class="item-title">End-to-End Triage Automation</p> | |
| <p class="item-desc">Successfully transformed unstructured natural language input into structured, actionable service tickets.</p> | |
| </div> | |
| </div> | |
| <div class="list-item"> | |
| <div class="list-icon"><i class="fa-solid fa-brain" style="color: #10B981; font-size: 18px;"></i></div> | |
| <div> | |
| <p class="item-title">High-Precision Intelligence</p> | |
| <p class="item-desc">Achieved accurate categorization and priority assignment using fine-tuned transformer models.</p> | |
| </div> | |
| </div> | |
| <div class="list-item"> | |
| <div class="list-icon"><i class="fa-solid fa-bolt" style="color: #10B981; font-size: 18px;"></i></div> | |
| <div> | |
| <p class="item-title">Operational Efficiency</p> | |
| <p class="item-desc">Streamlined workflows with multimodal OCR and semantic duplicate detection, operating at sub-400ms inference speeds.</p> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- RIGHT: FUTURE SCOPE --> | |
| <div style="position: absolute; top: 160px; left: 700px;"> | |
| <p class="sec-label" style="color: #06B6D4;">Future Scope</p> | |
| </div> | |
| <div class="list-card list-card-right" style="top: 230px; height: 400px;"> | |
| <div class="list-item"> | |
| <div class="list-icon list-icon-right"><i class="fa-solid fa-arrows-rotate" style="color: #06B6D4; font-size: 18px;"></i></div> | |
| <div> | |
| <p class="item-title">Adaptive Retraining</p> | |
| <p class="item-desc">Establish continuous learning loops powered by the integrated admin feedback and correction system.</p> | |
| </div> | |
| </div> | |
| <div class="list-item"> | |
| <div class="list-icon list-icon-right"><i class="fa-solid fa-eye" style="color: #06B6D4; font-size: 18px;"></i></div> | |
| <div> | |
| <p class="item-title">Complex Multimodal Support</p> | |
| <p class="item-desc">Expand vision capabilities to interpret technical diagrams and video-based issue reports.</p> | |
| </div> | |
| </div> | |
| <div class="list-item"> | |
| <div class="list-icon list-icon-right"><i class="fa-solid fa-wrench" style="color: #06B6D4; font-size: 18px;"></i></div> | |
| <div> | |
| <p class="item-title">Autonomous Remediation</p> | |
| <p class="item-desc">Integrate with enterprise APIs to enable the AI to perform direct technical fixes like account resets.</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Slide 14: Thank You --> | |
| <div class="slide-wrapper"> | |
| <div class="slide-container slide-14"> | |
| <!-- Background Decor --> | |
| <div | |
| style="position: absolute; top: 0; left: 0; width: 300px; height: 300px; opacity: 0.05; z-index: 1;"> | |
| <svg fill="none" height="100%" viewBox="0 0 300 300" width="100%"> | |
| <circle cx="0" cy="0" r="250" stroke="#10B981" stroke-dasharray="20 10" stroke-width="2"> | |
| </circle> | |
| </svg> | |
| </div> | |
| <div | |
| style="position: absolute; bottom: 0; right: 0; width: 300px; height: 300px; opacity: 0.05; z-index: 1;"> | |
| <svg fill="none" height="100%" viewBox="0 0 300 300" width="100%"> | |
| <rect height="200" stroke="#10B981" stroke-width="2" width="200" x="100" y="100"></rect> | |
| </svg> | |
| </div> | |
| <!-- Content Area --> | |
| <div | |
| style="position: absolute; top: 0; left: 0; width: 1280px; height: 720px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; z-index: 10;"> | |
| <p style="margin: 0; font-size: 64px; font-weight: 700; color: #FFFFFF; letter-spacing: -1px;">Thank | |
| You!</p> | |
| <div | |
| style="width: 200px; height: 4px; background-color: #10B981; border-radius: 2px; margin: 25px 0;"> | |
| </div> | |
| <p style="margin: 0; font-size: 28px; font-weight: 400; color: #94A3B8;">Questions & Answers</p> | |
| <div style="width: 512px; height: 1px; background-color: #10B981; opacity: 0.3; margin: 50px 0;"> | |
| </div> | |
| <!-- Links --> | |
| <div style="display: flex; flex-direction: column; gap: 40px; text-align: left;"> | |
| <div style="display: flex; align-items: center; gap: 20px;"> | |
| <div | |
| style="width: 48px; height: 48px; background-color: rgba(16, 185, 129, 0.1); border-radius: 12px; display: flex; align-items: center; justify-content: center;"> | |
| <i class="fa-solid fa-globe" style="color: #10B981; font-size: 24px;"></i> | |
| </div> | |
| <div> | |
| <p style="margin: 0; font-size: 20px; font-weight: 700; color: #FFFFFF;">Live Tech Demo | |
| </p> | |
| <a href="https://helpdeskaiv1.vercel.app/" target="_blank" | |
| style="margin: 0; font-size: 18px; color: #10B981; text-decoration: none;">helpdeskaiv1.vercel.app</a> | |
| </div> | |
| </div> | |
| <div style="display: flex; align-items: center; gap: 20px;"> | |
| <div | |
| style="width: 48px; height: 48px; background-color: rgba(16, 185, 129, 0.1); border-radius: 12px; display: flex; align-items: center; justify-content: center;"> | |
| <i class="fa-brands fa-github" style="color: #10B981; font-size: 24px;"></i> | |
| </div> | |
| <div> | |
| <p style="margin: 0; font-size: 20px; font-weight: 700; color: #FFFFFF;">GitHub | |
| Repository | |
| </p> | |
| <a href="https://github.com/ritesh-1918/HELPDESK.AI" target="_blank" | |
| style="margin: 0; font-size: 18px; color: #10B981; text-decoration: none;">github.com/ritesh-1918/HELPDESK.AI | |
| </a> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Footer --> | |
| <div style="position: absolute; bottom: 40px; left: 0; width: 1280px; text-align: center;"> | |
| <p style="margin: 0; font-size: 14px; font-weight: 500; color: #475569; letter-spacing: 2px;"> | |
| HELPDESK.AI • INFOSYS SPRINGBOARD INTERNSHIP 6.0</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <script> | |
| // Interactive Presentation Logic | |
| const slides = document.querySelectorAll('.slide-container'); | |
| let currentSlide = 0; | |
| let isPresentationMode = false; | |
| let isRotated = false; | |
| function updateScale() { | |
| const windowWidth = window.innerWidth; | |
| const windowHeight = window.innerHeight; | |
| if (isPresentationMode) { | |
| // Determine if we need to force rotate (Portrait Mobile) | |
| if (windowHeight > windowWidth) { | |
| isRotated = true; | |
| // Treat Height as the virtual width for the 16:9 slide | |
| const scaleX = windowHeight / 1280; | |
| const scaleY = windowWidth / 720; | |
| const scale = Math.min(scaleX, scaleY) * 0.98; | |
| document.body.style.setProperty('--scale-factor', scale); | |
| document.body.style.setProperty('--rotation', '90deg'); | |
| } else { | |
| isRotated = false; | |
| const scaleX = windowWidth / 1280; | |
| const scaleY = windowHeight / 720; | |
| const scale = Math.min(scaleX, scaleY) * 0.98; | |
| document.body.style.setProperty('--scale-factor', scale); | |
| document.body.style.setProperty('--rotation', '0deg'); | |
| } | |
| } else { | |
| // Normal scroll mode scaling (Center-aligned PDF style) | |
| const scale = Math.min(1, (windowWidth - 40) / 1280); | |
| slides.forEach(slide => { | |
| slide.style.transform = `scale(${scale})`; | |
| const wrapper = slide.closest('.slide-wrapper'); | |
| if (wrapper) { | |
| wrapper.style.height = (720 * scale) + "px"; | |
| wrapper.style.marginBottom = (40 * scale) + "px"; | |
| } | |
| }); | |
| document.querySelector('.page-wrapper').style.height = 'auto'; | |
| } | |
| } | |
| // Trigger scaling immediately | |
| updateScale(); | |
| window.addEventListener('resize', updateScale); | |
| window.addEventListener('load', updateScale); | |
| document.addEventListener('DOMContentLoaded', updateScale); | |
| let previousSlide = -1; | |
| let isTransitioning = false; | |
| function updateSlides(direction = 'none') { | |
| if (isTransitioning) return; | |
| isTransitioning = true; | |
| const prevIndex = previousSlide; | |
| const currIndex = currentSlide; | |
| slides.forEach((slide, index) => { | |
| slide.classList.remove('slide-next', 'slide-prev', 'exit-left', 'exit-right'); | |
| if (index === currIndex) { | |
| if (direction === 'next') slide.classList.add('slide-next'); | |
| if (direction === 'prev') slide.classList.add('slide-prev'); | |
| void slide.offsetWidth; | |
| slide.classList.add('active'); | |
| slide.classList.remove('slide-next', 'slide-prev'); | |
| } else if (index === prevIndex) { | |
| if (direction === 'next') slide.classList.add('exit-left'); | |
| if (direction === 'prev') slide.classList.add('exit-right'); | |
| slide.classList.remove('active'); | |
| } else { | |
| slide.classList.remove('active'); | |
| } | |
| }); | |
| previousSlide = currentSlide; | |
| setTimeout(() => { | |
| isTransitioning = false; | |
| slides.forEach(s => s.classList.remove('exit-left', 'exit-right')); | |
| }, 800); | |
| } | |
| function togglePresentation() { | |
| isPresentationMode = !isPresentationMode; | |
| document.body.classList.toggle('presentation-mode'); | |
| const btnIcon = document.querySelector('#mobile-toggle i'); | |
| // Clear all inline transforms and height adjustments first to avoid conflicts | |
| slides.forEach(slide => { | |
| slide.style.removeProperty('transform'); | |
| if (slide.parentElement && !isPresentationMode) { | |
| slide.parentElement.style.removeProperty('height'); | |
| slide.parentElement.style.removeProperty('margin-bottom'); | |
| } | |
| }); | |
| if (isPresentationMode) { | |
| currentSlide = 0; | |
| previousSlide = -1; | |
| updateScale(); | |
| updateSlides('next'); | |
| if (btnIcon) btnIcon.className = 'fa-solid fa-xmark'; | |
| if (document.documentElement.requestFullscreen) { | |
| document.documentElement.requestFullscreen().catch(() => { }); | |
| } | |
| } else { | |
| if (btnIcon) btnIcon.className = 'fa-solid fa-play'; | |
| updateScale(); // Reset to normal scale | |
| if (document.fullscreenElement) { | |
| document.exitFullscreen().catch(() => { }); | |
| } | |
| } | |
| } | |
| document.addEventListener('keydown', (e) => { | |
| if (e.key === 'p' || e.key === 'P') { | |
| togglePresentation(); | |
| } | |
| if (isPresentationMode && !isTransitioning) { | |
| if (e.key === 'ArrowRight' || e.key === ' ' || e.key === 'PageDown') { | |
| if (currentSlide < slides.length - 1) { currentSlide++; updateSlides('next'); } | |
| } else if (e.key === 'ArrowLeft' || e.key === 'PageUp') { | |
| if (currentSlide > 0) { currentSlide--; updateSlides('prev'); } | |
| } else if (e.key === 'Escape') { | |
| if (isPresentationMode) togglePresentation(); | |
| } | |
| } | |
| }); | |
| // Touch Navigation Support | |
| let touchStartX = 0; | |
| let touchStartY = 0; | |
| let touchEndX = 0; | |
| let touchEndY = 0; | |
| document.addEventListener('touchstart', e => { | |
| touchStartX = e.changedTouches[0].screenX; | |
| touchStartY = e.changedTouches[0].screenY; | |
| }, false); | |
| document.addEventListener('touchend', e => { | |
| touchEndX = e.changedTouches[0].screenX; | |
| touchEndY = e.changedTouches[0].screenY; | |
| if (isPresentationMode && !isTransitioning) { | |
| const diffX = touchStartX - touchEndX; | |
| const diffY = touchStartY - touchEndY; | |
| // Orientation-aware navigation | |
| if (isRotated) { | |
| // When rotated 90deg clockwise: | |
| // Physically sliding 'up' on screen feels like sliding 'right' relative to the slide content | |
| if (diffY > 50) { // Swipe Up (Next) | |
| if (currentSlide < slides.length - 1) { currentSlide++; updateSlides('next'); } | |
| } else if (diffY < -50) { // Swipe Down (Prev) | |
| if (currentSlide > 0) { currentSlide--; updateSlides('prev'); } | |
| } | |
| } else { | |
| if (diffX > 50) { // Swipe Left (Next) | |
| if (currentSlide < slides.length - 1) { currentSlide++; updateSlides('next'); } | |
| } else if (diffX < -50) { // Swipe Right (Prev) | |
| if (currentSlide > 0) { currentSlide--; updateSlides('prev'); } | |
| } | |
| } | |
| } | |
| }, false); | |
| // Add FAB | |
| const fab = document.createElement('button'); | |
| fab.id = "mobile-toggle"; | |
| fab.innerHTML = '<i class="fa-solid fa-play"></i>'; | |
| fab.title = "Toggle Presentation Mode (P)"; | |
| fab.onclick = togglePresentation; | |
| document.body.appendChild(fab); | |
| // Add hint helper | |
| const hint = document.createElement('div'); | |
| hint.innerHTML = 'Press <strong>P</strong> or use the Play button to Present'; | |
| hint.id = "presentation-hint"; | |
| document.body.appendChild(hint); | |
| </script> | |
| </body> | |
| </html> |