{"id":120,"date":"2026-05-06T11:44:00","date_gmt":"2026-05-06T11:44:00","guid":{"rendered":"https:\/\/gurusfolio.com\/?page_id=120"},"modified":"2026-05-07T15:28:40","modified_gmt":"2026-05-07T15:28:40","slug":"ai-projects","status":"publish","type":"page","link":"https:\/\/gurusfolio.com\/?page_id=120","title":{"rendered":"AI Projects"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>AI Projects \u2014 Guru&#8217;s Folio<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Syne:wght@400;600;700;800&#038;family=DM+Sans:ital,wght@0,300;0,400;0,500;1,300&#038;family=DM+Mono:wght@400;500&#038;display=swap\" rel=\"stylesheet\">\n<style>\n:root {\n  --bg: #0d0f14;\n  --surface: #13161d;\n  --surface2: #1a1e28;\n  --border: #1e2535;\n  --blue: #3b82f6;\n  --blue-dim: rgba(59,130,246,0.12);\n  --cyan: #06b6d4;\n  --purple: #8b5cf6;\n  --green: #10b981;\n  --amber: #f59e0b;\n  --coral: #f43f5e;\n  --text: #e2e8f0;\n  --muted: #64748b;\n  --muted2: #94a3b8;\n}\n* { box-sizing: border-box; margin: 0; padding: 0; }\nbody { background: var(--bg); color: var(--text); font-family: 'DM Sans', sans-serif; font-weight: 300; line-height: 1.7; min-height: 100vh; }\nbody::before { content: ''; position: fixed; inset: 0; background-image: url(\"data:image\/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.03'\/%3E%3C\/svg%3E\"); pointer-events: none; z-index: 0; }\n.hero { position: relative; padding: 80px 48px 60px; overflow: hidden; border-bottom: 1px solid var(--border); }\n.hero-glow { position: absolute; top: -120px; left: -120px; width: 500px; height: 500px; background: radial-gradient(circle, rgba(59,130,246,0.07) 0%, transparent 65%); pointer-events: none; }\n.hero-glow2 { position: absolute; top: -60px; right: 0; width: 400px; height: 400px; background: radial-gradient(circle, rgba(139,92,246,0.05) 0%, transparent 65%); pointer-events: none; }\n.hero-label { font-family: 'DM Mono', monospace; font-size: 11px; letter-spacing: 3px; text-transform: uppercase; color: var(--blue); margin-bottom: 20px; position: relative; display: flex; align-items: center; gap: 10px; }\n.hero-label::before { content: ''; width: 24px; height: 1px; background: var(--blue); }\n.hero h1 { font-family: 'Syne', sans-serif; font-size: clamp(36px, 6vw, 64px); font-weight: 800; line-height: 1.05; margin-bottom: 20px; position: relative; }\n.hero h1 span { background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 50%, #06b6d4 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }\n.hero-sub { font-size: 17px; color: var(--muted2); max-width: 580px; font-weight: 300; position: relative; line-height: 1.8; }\n.hero-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 32px; position: relative; }\n.hero-tag { font-family: 'DM Mono', monospace; font-size: 11px; padding: 5px 12px; border-radius: 20px; border: 1px solid var(--border); color: var(--muted2); background: var(--surface); }\n.section-wrap { max-width: 1100px; margin: 0 auto; padding: 64px 48px; position: relative; z-index: 1; }\n.section-header { display: flex; align-items: center; gap: 16px; margin-bottom: 40px; }\n.section-badge { font-family: 'DM Mono', monospace; font-size: 10px; letter-spacing: 2px; text-transform: uppercase; padding: 5px 12px; border-radius: 4px; white-space: nowrap; }\n.badge-enterprise { background: rgba(59,130,246,0.12); color: var(--blue); border: 1px solid rgba(59,130,246,0.25); }\n.badge-lab { background: rgba(139,92,246,0.12); color: var(--purple); border: 1px solid rgba(139,92,246,0.25); }\n.section-title { font-family: 'Syne', sans-serif; font-size: 22px; font-weight: 700; color: var(--text); }\n.section-line { flex: 1; height: 1px; background: var(--border); }\n.projects-grid { display: flex; flex-direction: column; gap: 32px; }\n.project-card { background: var(--surface); border: 1px solid var(--border); border-radius: 16px; overflow: hidden; transition: border-color 0.3s, transform 0.3s; position: relative; }\n.project-card:hover { border-color: rgba(59,130,246,0.3); transform: translateY(-2px); }\n.project-card.lab:hover { border-color: rgba(139,92,246,0.3); }\n.card-accent { height: 3px; background: linear-gradient(90deg, var(--blue), var(--cyan)); }\n.card-accent.purple { background: linear-gradient(90deg, var(--purple), var(--blue)); }\n.card-accent.green { background: linear-gradient(90deg, var(--green), var(--cyan)); }\n.card-accent.amber { background: linear-gradient(90deg, var(--amber), var(--coral)); }\n.card-accent.lab-accent { background: linear-gradient(90deg, var(--purple), var(--cyan)); }\n.card-body { padding: 32px; display: grid; grid-template-columns: 1fr 1fr; gap: 40px; }\n@media (max-width: 768px) { .card-body { grid-template-columns: 1fr; gap: 24px; } .section-wrap { padding: 48px 24px; } .hero { padding: 60px 24px 48px; } }\n.card-meta { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; flex-wrap: wrap; }\n.pattern-tag { font-family: 'DM Mono', monospace; font-size: 10px; padding: 3px 9px; border-radius: 3px; letter-spacing: 0.5px; }\n.tag-rag { background: rgba(6,182,212,0.12); color: var(--cyan); border: 1px solid rgba(6,182,212,0.2); }\n.tag-llm { background: rgba(59,130,246,0.12); color: var(--blue); border: 1px solid rgba(59,130,246,0.2); }\n.tag-voice { background: rgba(139,92,246,0.12); color: var(--purple); border: 1px solid rgba(139,92,246,0.2); }\n.tag-multi { background: rgba(16,185,129,0.12); color: var(--green); border: 1px solid rgba(16,185,129,0.2); }\n.tag-modal { background: rgba(245,158,11,0.12); color: var(--amber); border: 1px solid rgba(245,158,11,0.2); }\n.status-badge { font-family: 'DM Mono', monospace; font-size: 10px; padding: 3px 9px; border-radius: 20px; display: flex; align-items: center; gap: 5px; }\n.status-live { background: rgba(16,185,129,0.12); color: var(--green); border: 1px solid rgba(16,185,129,0.25); }\n.status-progress { background: rgba(245,158,11,0.12); color: var(--amber); border: 1px solid rgba(245,158,11,0.25); }\n.status-prototype { background: rgba(100,116,139,0.12); color: var(--muted2); border: 1px solid rgba(100,116,139,0.25); }\n.status-dot { width: 5px; height: 5px; border-radius: 50%; }\n.dot-live { background: var(--green); animation: pulse-dot 2s ease-in-out infinite; }\n.dot-progress { background: var(--amber); }\n.dot-proto { background: var(--muted2); }\n@keyframes pulse-dot { 0%,100%{opacity:1} 50%{opacity:0.4} }\n.card-title { font-family: 'Syne', sans-serif; font-size: 20px; font-weight: 700; color: var(--text); margin-bottom: 10px; line-height: 1.2; }\n.card-challenge { margin-bottom: 14px; }\n.card-challenge-label { font-family: 'DM Mono', monospace; font-size: 10px; letter-spacing: 2px; text-transform: uppercase; color: var(--muted); margin-bottom: 5px; }\n.card-challenge p { font-size: 13px; color: var(--muted2); line-height: 1.7; }\n.card-desc { font-size: 14px; color: var(--muted2); line-height: 1.75; margin-bottom: 20px; }\n.tech-stack { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 20px; }\n.tech-pill { font-family: 'DM Mono', monospace; font-size: 11px; padding: 4px 10px; border-radius: 4px; background: var(--surface2); border: 1px solid var(--border); color: var(--muted2); }\n.card-links { display: flex; gap: 10px; flex-wrap: wrap; }\n.card-link { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-family: 'DM Mono', monospace; padding: 6px 14px; border-radius: 6px; text-decoration: none; border: 1px solid var(--border); color: var(--muted2); background: var(--surface2); transition: all 0.2s; }\n.card-link:hover { border-color: var(--blue); color: var(--blue); }\n.card-link.live-link { border-color: rgba(16,185,129,0.3); color: var(--green); background: rgba(16,185,129,0.06); }\n.card-link.live-link:hover { background: rgba(16,185,129,0.12); }\n.card-right { display: flex; flex-direction: column; }\n.arch-label { font-family: 'DM Mono', monospace; font-size: 10px; letter-spacing: 2px; text-transform: uppercase; color: var(--muted); margin-bottom: 12px; }\n.arch-box { background: var(--surface2); border: 1px solid var(--border); border-radius: 10px; padding: 20px; flex: 1; display: flex; flex-direction: column; gap: 0; }\n.arch-node { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border-radius: 6px; background: var(--surface); border: 1px solid var(--border); font-size: 12px; color: var(--muted2); font-family: 'DM Mono', monospace; }\n.arch-node.highlight { border-color: rgba(59,130,246,0.3); background: rgba(59,130,246,0.06); color: var(--blue); }\n.arch-node.highlight-purple { border-color: rgba(139,92,246,0.3); background: rgba(139,92,246,0.06); color: var(--purple); }\n.arch-node.highlight-green { border-color: rgba(16,185,129,0.3); background: rgba(16,185,129,0.06); color: var(--green); }\n.arch-node.highlight-amber { border-color: rgba(245,158,11,0.3); background: rgba(245,158,11,0.06); color: var(--amber); }\n.arch-arrow { display: flex; align-items: center; justify-content: center; padding: 3px 0; color: var(--muted); font-size: 11px; }\n.arch-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }\n.arch-divider { height: 1px; background: var(--border); margin: 10px 0; }\n.page-footer { border-top: 1px solid var(--border); padding: 40px 48px; display: flex; align-items: center; justify-content: space-between; position: relative; z-index: 1; }\n.footer-text { font-size: 13px; color: var(--muted); }\n.footer-link { font-family: 'DM Mono', monospace; font-size: 12px; color: var(--blue); text-decoration: none; }\n.footer-link:hover { text-decoration: underline; }\n@media (max-width: 600px) { .page-footer { flex-direction: column; gap: 12px; padding: 32px 24px; } }\n<\/style>\n<\/head>\n<body>\n\n<!-- HERO -->\n<div class=\"hero\">\n  <div class=\"hero-glow\"><\/div>\n  <div class=\"hero-glow2\"><\/div>\n  <h1>AI <span>Projects<\/span><\/h1>\n  <p class=\"hero-sub\">A collection of AI systems I&#8217;ve designed, built, and deployed \u2014 from enterprise production platforms to personal explorations in agentic AI, RAG pipelines, and voice-driven interfaces.<\/p>\n  <div class=\"hero-tags\">\n    <span class=\"hero-tag\">RAG Pipelines<\/span>\n    <span class=\"hero-tag\">Agentic AI<\/span>\n    <span class=\"hero-tag\">Voice AI<\/span>\n    <span class=\"hero-tag\">LangGraph<\/span>\n    <span class=\"hero-tag\">Multi-Agent Systems<\/span>\n    <span class=\"hero-tag\">Azure OpenAI<\/span>\n    <span class=\"hero-tag\">Multimodal AI<\/span>\n    <span class=\"hero-tag\">ChromaDB<\/span>\n    <span class=\"hero-tag\">FastAPI<\/span>\n    <span class=\"hero-tag\">Human-in-the-Loop<\/span>\n  <\/div>\n<\/div>\n\n<!-- ENTERPRISE AI WORK -->\n<div class=\"section-wrap\">\n  <div class=\"section-header\">\n    <div class=\"section-badge badge-enterprise\">Enterprise AI Work<\/div>\n    <div class=\"section-title\">Production Systems<\/div>\n    <div class=\"section-line\"><\/div>\n  <\/div>\n\n  <div class=\"projects-grid\">\n\n    <!-- PROJECT 1: LLM Chatbot -->\n    <div class=\"project-card\">\n      <div class=\"card-accent\"><\/div>\n      <div class=\"card-body\">\n        <div class=\"card-left\">\n          <div class=\"card-meta\">\n            <span class=\"pattern-tag tag-llm\">LLM Integration<\/span>\n            <span class=\"pattern-tag tag-voice\">Conversational AI<\/span>\n            <div class=\"status-badge status-prototype\"><span class=\"status-dot dot-proto\"><\/span>Enterprise<\/div>\n          <\/div>\n          <div class=\"card-title\">Intelligent Virtual Mentor<\/div>\n          <div class=\"card-challenge\">\n            <div class=\"card-challenge-label\">The Challenge<\/div>\n            <p>Enterprise training relied on scripted, static content that couldn&#8217;t adapt to individual learner questions or needs \u2014 creating disengaging, one-size-fits-all experiences.<\/p>\n          <\/div>\n          <p class=\"card-desc\">Built a conversational AI support assistant powered by Azure OpenAI \u2014 connecting directly to an LLM via API with a carefully engineered system prompt to create an adaptive virtual mentor. Users can ask natural language questions and receive contextually accurate, role-appropriate responses in real time, replacing rigid scripted flows with intelligent conversation.<\/p>\n          <div class=\"tech-stack\">\n            <span class=\"tech-pill\">Azure OpenAI<\/span>\n            <span class=\"tech-pill\">GPT-4<\/span>\n            <span class=\"tech-pill\">System Prompts<\/span>\n            <span class=\"tech-pill\">Unity C#<\/span>\n            <span class=\"tech-pill\">REST API<\/span>\n          <\/div>\n          <div class=\"card-links\">\n            <span class=\"card-link\">\ud83d\udd12 Enterprise \u2014 Private<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"card-right\">\n          <div class=\"arch-label\">Architecture<\/div>\n          <div class=\"arch-box\">\n            <div class=\"arch-node highlight\">\ud83d\udcac User Query (Voice \/ Text)<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node\">\ud83e\udde0 System Prompt Engineering<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight\">\u26a1 Azure OpenAI API (GPT-4)<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node\">\ud83d\udcdd Response Generation<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight-green\">\ud83d\udd0a Azure TTS \u2192 User<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- PROJECT 2: VR AI Bot -->\n    <div class=\"project-card\">\n      <div class=\"card-accent purple\"><\/div>\n      <div class=\"card-body\">\n        <div class=\"card-left\">\n          <div class=\"card-meta\">\n            <span class=\"pattern-tag tag-llm\">Context Injection<\/span>\n            <span class=\"pattern-tag tag-voice\">Voice AI<\/span>\n            <span class=\"pattern-tag tag-modal\">Real-Time XR<\/span>\n            <div class=\"status-badge status-prototype\"><span class=\"status-dot dot-proto\"><\/span>Enterprise<\/div>\n          <\/div>\n          <div class=\"card-title\">VR-Embedded AI Assistant<\/div>\n          <div class=\"card-challenge\">\n            <div class=\"card-challenge-label\">The Challenge<\/div>\n            <p>Industrial training in VR lacked intelligent, context-aware assistance \u2014 users interacting with complex machinery had no way to get immediate, object-specific information without breaking immersion.<\/p>\n          <\/div>\n          <p class=\"card-desc\">Built a context-aware AI system embedded directly into a VR environment. When a user clicks a product or machine component, the system fetches its metadata, dynamically injects it as context into an LLM prompt, generates a relevant explanation, and converts it to natural speech via Azure TTS \u2014 all in real time without breaking immersion.<\/p>\n          <div class=\"tech-stack\">\n            <span class=\"tech-pill\">Unity C#<\/span>\n            <span class=\"tech-pill\">Azure OpenAI<\/span>\n            <span class=\"tech-pill\">Azure TTS<\/span>\n            <span class=\"tech-pill\">Metadata Injection<\/span>\n            <span class=\"tech-pill\">Meta Quest<\/span>\n            <span class=\"tech-pill\">REST API<\/span>\n          <\/div>\n          <div class=\"card-links\">\n            <span class=\"card-link\">\ud83d\udd12 Enterprise \u2014 Private<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"card-right\">\n          <div class=\"arch-label\">Architecture<\/div>\n          <div class=\"arch-box\">\n            <div class=\"arch-node highlight-purple\">\ud83e\udd7d User Clicks Object (VR)<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node\">\ud83c\udff7\ufe0f Fetch Component Metadata<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight\">\u26a1 Dynamic Context \u2192 LLM Prompt<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node\">\ud83e\udde0 Azure OpenAI Response<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight-green\">\ud83d\udd0a Azure TTS \u2192 Spatial Audio<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- PROJECT 3: eLearning Generator -->\n    <div class=\"project-card\">\n      <div class=\"card-accent amber\"><\/div>\n      <div class=\"card-body\">\n        <div class=\"card-left\">\n          <div class=\"card-meta\">\n            <span class=\"pattern-tag tag-rag\">RAG<\/span>\n            <span class=\"pattern-tag tag-modal\">Multimodal<\/span>\n            <span class=\"pattern-tag tag-multi\">Content Pipeline<\/span>\n            <div class=\"status-badge status-prototype\"><span class=\"status-dot dot-proto\"><\/span>Enterprise<\/div>\n          <\/div>\n          <div class=\"card-title\">eLearning Content Generation Platform<\/div>\n          <div class=\"card-challenge\">\n            <div class=\"card-challenge-label\">The Challenge<\/div>\n            <p>Creating professional eLearning content is slow, expensive, and requires specialist writers, designers, and developers. Organisations needed a faster path from subject matter to publishable courseware.<\/p>\n          <\/div>\n          <p class=\"card-desc\">Built a multimodal AI content generation platform where a user provides a topic or subject, and the system generates complete eLearning content grounded in internal documents and existing eLearning content via RAG. The pipeline generates narration scripts, splits them into scene-level audio segments, generates contextual image prompts, and presents a human review step before packaging everything as SCORM-compatible courseware ready for any LMS.<\/p>\n          <div class=\"tech-stack\">\n            <span class=\"tech-pill\">RAG Pipeline<\/span>\n            <span class=\"tech-pill\">Azure OpenAI<\/span>\n            <span class=\"tech-pill\">Vector Search<\/span>\n            <span class=\"tech-pill\">Image Generation<\/span>\n            <span class=\"tech-pill\">Azure TTS<\/span>\n            <span class=\"tech-pill\">SCORM<\/span>\n            <span class=\"tech-pill\">Human-in-the-Loop<\/span>\n          <\/div>\n          <div class=\"card-links\">\n            <span class=\"card-link\">\ud83d\udd12 Enterprise \u2014 Private<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"card-right\">\n          <div class=\"arch-label\">Architecture<\/div>\n          <div class=\"arch-box\">\n            <div class=\"arch-node highlight-amber\">\ud83d\udcdd User Input (Topic \/ Subject)<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight\">\ud83d\udcda RAG \u2014 Internal Docs + eLearning Content<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node\">\ud83e\udde0 LLM Narration Generation<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-row\">\n              <div class=\"arch-node\" style=\"font-size:11px\">\ud83d\udd0a Audio Script Split<\/div>\n              <div class=\"arch-node\" style=\"font-size:11px\">\ud83d\uddbc\ufe0f Image Prompts<\/div>\n            <\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight-purple\">\ud83d\udc41\ufe0f Human Review &#038; Approval<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight-green\">\ud83d\udce6 SCORM Export \u2192 LMS<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- PROJECT 4: AI Tutoring App -->\n    <div class=\"project-card\">\n      <div class=\"card-accent green\"><\/div>\n      <div class=\"card-body\">\n        <div class=\"card-left\">\n          <div class=\"card-meta\">\n            <span class=\"pattern-tag tag-multi\">Multi-Agent<\/span>\n            <span class=\"pattern-tag tag-rag\">RAG<\/span>\n            <span class=\"pattern-tag tag-voice\">Voice AI<\/span>\n            <span class=\"pattern-tag tag-modal\">Emotion AI<\/span>\n            <div class=\"status-badge status-progress\"><span class=\"status-dot dot-progress\"><\/span>In Progress<\/div>\n          <\/div>\n          <div class=\"card-title\">AI Tutoring Platform \u2014 Ms. Nova<\/div>\n          <div class=\"card-challenge\">\n            <div class=\"card-challenge-label\">The Challenge<\/div>\n            <p>Quality personalised tutoring is inaccessible to most children globally due to cost and availability. The goal: make adaptive, intelligent one-on-one tutoring available to every child, everywhere.<\/p>\n          <\/div>\n          <p class=\"card-desc\">Building a full-stack AI tutoring platform for Grades 6\u20137 Math featuring Ms. Nova \u2014 a 3D conversational teacher avatar with real-time voice AI and emotion-aware responses. Pre-generated curriculum content stored in a database is retrieved via RAG when a student selects a topic. LangGraph orchestrates multiple agents \u2014 a tutoring agent, an evaluation agent, and an emotion monitoring agent \u2014 to deliver adaptive, personalised learning sessions via STT \u2192 LLM \u2192 TTS.<\/p>\n          <div class=\"tech-stack\">\n            <span class=\"tech-pill\">LangGraph<\/span>\n            <span class=\"tech-pill\">Claude API<\/span>\n            <span class=\"tech-pill\">RAG + ChromaDB<\/span>\n            <span class=\"tech-pill\">Deepgram STT<\/span>\n            <span class=\"tech-pill\">ElevenLabs TTS<\/span>\n            <span class=\"tech-pill\">Hume AI<\/span>\n            <span class=\"tech-pill\">Unity 2023<\/span>\n            <span class=\"tech-pill\">Agora SDK<\/span>\n            <span class=\"tech-pill\">Node.js<\/span>\n            <span class=\"tech-pill\">PostgreSQL<\/span>\n          <\/div>\n          <div class=\"card-links\">\n            <span class=\"card-link\">\ud83d\udea7 Launching 2026<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"card-right\">\n          <div class=\"arch-label\">Architecture<\/div>\n          <div class=\"arch-box\">\n            <div class=\"arch-node highlight-green\">\ud83c\udf99\ufe0f Student Voice Input (STT)<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight\">\u26a1 LangGraph Orchestrator<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-row\">\n              <div class=\"arch-node highlight-purple\" style=\"font-size:10px\">\ud83e\udde0 Tutor Agent<\/div>\n              <div class=\"arch-node highlight-amber\" style=\"font-size:10px\">\ud83d\udcca Eval Agent<\/div>\n            <\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node\">\ud83d\ude0a Hume AI Emotion Detection<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node\">\ud83d\udcda RAG \u2014 Curriculum Knowledge<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight-green\">\ud83d\udd0a Nova TTS \u2192 3D Avatar Response<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n  <\/div>\n<\/div>\n\n<!-- AI LAB -->\n<div style=\"background: linear-gradient(180deg, transparent, rgba(139,92,246,0.03)); border-top: 1px solid var(--border);\">\n<div class=\"section-wrap\">\n  <div class=\"section-header\">\n    <div class=\"section-badge badge-lab\">AI Lab<\/div>\n    <div class=\"section-title\">Personal Explorations<\/div>\n    <div class=\"section-line\"><\/div>\n  <\/div>\n  <p style=\"font-size:14px; color:var(--muted2); margin-bottom:36px; max-width:600px;\">Hands-on projects built to explore and deepen AI engineering concepts \u2014 each one targeting a specific pattern or capability in the agentic AI stack.<\/p>\n\n  <div class=\"projects-grid\">\n\n    <!-- BidIQ \u2014 NEW PROJECT -->\n    <div class=\"project-card lab\">\n      <div class=\"card-accent lab-accent\"><\/div>\n      <div class=\"card-body\">\n        <div class=\"card-left\">\n          <div class=\"card-meta\">\n            <span class=\"pattern-tag tag-multi\">Multi-Agent<\/span>\n            <span class=\"pattern-tag tag-rag\">RAG<\/span>\n            <span class=\"pattern-tag tag-llm\">LangGraph<\/span>\n            <span class=\"pattern-tag tag-modal\">Human-in-the-Loop<\/span>\n            <div class=\"status-badge status-live\"><span class=\"status-dot dot-live\"><\/span>Live<\/div>\n          <\/div>\n          <div class=\"card-title\">BidIQ \u2014 AI RFP Proposal Generator<\/div>\n          <div class=\"card-challenge\">\n            <div class=\"card-challenge-label\">The Challenge<\/div>\n            <p>Responding to enterprise RFPs takes 20\u201340 person-hours per submission. Companies waste days writing proposals manually, pulling from scattered past work, with no systematic way to match requirements to capabilities.<\/p>\n          <\/div>\n          <p class=\"card-desc\">Built a full-stack multi-agent AI system that automates enterprise proposal generation. Upload an RFP document and BidIQ&#8217;s five-agent LangGraph pipeline extracts requirements, searches a RAG knowledge base of past proposals and case studies, checks compliance coverage, pauses for human review, then drafts proposal sections grounded in your company&#8217;s actual capabilities. Exports to Word or PDF. Supports Groq, OpenAI, and Anthropic via configurable provider settings.<\/p>\n          <div class=\"tech-stack\">\n            <span class=\"tech-pill\">Python<\/span>\n            <span class=\"tech-pill\">LangGraph<\/span>\n            <span class=\"tech-pill\">LangChain LCEL<\/span>\n            <span class=\"tech-pill\">ChromaDB<\/span>\n            <span class=\"tech-pill\">FastAPI<\/span>\n            <span class=\"tech-pill\">RAG Pipeline<\/span>\n            <span class=\"tech-pill\">Groq LLM<\/span>\n            <span class=\"tech-pill\">React + Vite<\/span>\n            <span class=\"tech-pill\">TailwindCSS<\/span>\n            <span class=\"tech-pill\">Docker<\/span>\n            <span class=\"tech-pill\">Hugging Face Spaces<\/span>\n            <span class=\"tech-pill\">Vercel<\/span>\n          <\/div>\n          <div class=\"card-links\">\n            <a href=\"https:\/\/bidiq-frontend-61kgbgj1h-demiurgicgamers-projects.vercel.app\" class=\"card-link live-link\" target=\"_blank\">\ud83d\udfe2 Live Demo<\/a>\n            <a href=\"https:\/\/huggingface.co\/spaces\/Gurunathan\/bidiq-backend\" class=\"card-link\" target=\"_blank\">\ud83e\udd17 HF Backend<\/a>\n            <a href=\"https:\/\/github.com\/demiurgicgamer\/bidiq-backend\" class=\"card-link\" target=\"_blank\">\u2325 GitHub<\/a>\n          <\/div>\n        <\/div>\n        <div class=\"card-right\">\n          <div class=\"arch-label\">Architecture \u2014 5 Agent Pipeline<\/div>\n          <div class=\"arch-box\">\n            <div class=\"arch-node highlight-amber\">\ud83d\udcc4 RFP Document Upload (PDF\/DOCX)<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight\">\ud83d\udd0d Extraction Agent \u2014 Requirements JSON<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight-purple\">\ud83d\udcda Research Agent \u2014 RAG Knowledge Base<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight-amber\">\u2705 Compliance Agent \u2014 Gap Analysis<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight-purple\">\ud83d\udc41\ufe0f Human-in-the-Loop Review<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight\">\u270d\ufe0f Writing Agent \u2014 Proposal Drafts<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight-green\">\ud83d\udce5 Export Word \/ PDF<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Nova RAG -->\n    <div class=\"project-card lab\">\n      <div class=\"card-accent lab-accent\"><\/div>\n      <div class=\"card-body\">\n        <div class=\"card-left\">\n          <div class=\"card-meta\">\n            <span class=\"pattern-tag tag-rag\">RAG Pipeline<\/span>\n            <span class=\"pattern-tag tag-llm\">FastAPI<\/span>\n            <span class=\"pattern-tag tag-voice\">Portfolio AI<\/span>\n            <div class=\"status-badge status-live\"><span class=\"status-dot dot-live\"><\/span>Live<\/div>\n          <\/div>\n          <div class=\"card-title\">Nova \u2014 AI Portfolio Assistant<\/div>\n          <div class=\"card-challenge\">\n            <div class=\"card-challenge-label\">The Challenge<\/div>\n            <p>Portfolio sites are static \u2014 visitors can&#8217;t ask questions or explore your work interactively. How do you make a portfolio that actually converses with visitors?<\/p>\n          <\/div>\n          <p class=\"card-desc\">Built a production RAG-powered AI assistant embedded on this portfolio. Nova answers visitor questions about my experience, skills, and projects by retrieving relevant context from a knowledge base and generating grounded responses via Groq LLM. Built with Python, FastAPI, LangChain LCEL pipeline, ChromaDB for vector storage, and FastEmbed for local embeddings. Deployed free on Hugging Face Spaces with a keep-alive cron job. The chat widget is embedded directly into WordPress.<\/p>\n          <div class=\"tech-stack\">\n            <span class=\"tech-pill\">Python<\/span>\n            <span class=\"tech-pill\">FastAPI<\/span>\n            <span class=\"tech-pill\">LangChain LCEL<\/span>\n            <span class=\"tech-pill\">ChromaDB<\/span>\n            <span class=\"tech-pill\">Groq LLM<\/span>\n            <span class=\"tech-pill\">FastEmbed<\/span>\n            <span class=\"tech-pill\">Hugging Face Spaces<\/span>\n            <span class=\"tech-pill\">Docker<\/span>\n          <\/div>\n          <div class=\"card-links\">\n            <a href=\"https:\/\/gurusfolio.com\" class=\"card-link live-link\" target=\"_blank\">\ud83d\udfe2 Live Demo<\/a>\n            <a href=\"https:\/\/huggingface.co\/spaces\/Gurunathan\/nova-portfolio-ai\" class=\"card-link\" target=\"_blank\">\ud83e\udd17 HF Space<\/a>\n          <\/div>\n        <\/div>\n        <div class=\"card-right\">\n          <div class=\"arch-label\">Architecture<\/div>\n          <div class=\"arch-box\">\n            <div class=\"arch-node highlight-purple\">\ud83d\udcc4 guru_profile.txt (Knowledge Base)<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-row\">\n              <div class=\"arch-node\" style=\"font-size:11px\">\u2702\ufe0f Text Chunking<\/div>\n              <div class=\"arch-node\" style=\"font-size:11px\">\ud83d\udd22 FastEmbed<\/div>\n            <\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight\">\ud83d\uddc4\ufe0f ChromaDB Vector Store<\/div>\n            <div class=\"arch-divider\"><\/div>\n            <div class=\"arch-node highlight-purple\">\ud83d\udcac User Question \u2192 POST \/chat<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node\">\ud83d\udd0d Similarity Search \u2192 Top 4 Chunks<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight\">\u26a1 Groq LLM (llama-3.1-8b)<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight-green\">\ud83d\udce4 JSON Response \u2192 Widget<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- PDF Analyzer -->\n    <div class=\"project-card lab\">\n      <div class=\"card-accent lab-accent\"><\/div>\n      <div class=\"card-body\">\n        <div class=\"card-left\">\n          <div class=\"card-meta\">\n            <span class=\"pattern-tag tag-rag\">RAG Pipeline<\/span>\n            <span class=\"pattern-tag tag-llm\">Document AI<\/span>\n            <div class=\"status-badge status-prototype\"><span class=\"status-dot dot-proto\"><\/span>Prototype<\/div>\n          <\/div>\n          <div class=\"card-title\">PDF Analyzer \u2014 Document RAG<\/div>\n          <div class=\"card-challenge\">\n            <div class=\"card-challenge-label\">The Challenge<\/div>\n            <p>LLMs have knowledge cutoffs and can&#8217;t access private documents \u2014 users needed a way to have intelligent conversations with their own PDF content without sending sensitive data to be trained on.<\/p>\n          <\/div>\n          <p class=\"card-desc\">Built a document intelligence tool where users upload any PDF and ask natural language questions about its contents. The system chunks the document, generates embeddings, stores them in ChromaDB, and retrieves the most semantically relevant passages to ground the LLM&#8217;s response \u2014 eliminating hallucination by anchoring every answer in the actual document.<\/p>\n          <div class=\"tech-stack\">\n            <span class=\"tech-pill\">Python<\/span>\n            <span class=\"tech-pill\">LangChain<\/span>\n            <span class=\"tech-pill\">ChromaDB<\/span>\n            <span class=\"tech-pill\">FastEmbed<\/span>\n            <span class=\"tech-pill\">pypdf<\/span>\n            <span class=\"tech-pill\">FastAPI<\/span>\n            <span class=\"tech-pill\">Azure OpenAI<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"card-right\">\n          <div class=\"arch-label\">Architecture<\/div>\n          <div class=\"arch-box\">\n            <div class=\"arch-node highlight-amber\">\ud83d\udcc4 PDF Upload<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node\">\u2702\ufe0f RecursiveCharacterTextSplitter<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node\">\ud83d\udd22 Embeddings \u2192 ChromaDB<\/div>\n            <div class=\"arch-divider\"><\/div>\n            <div class=\"arch-node highlight-purple\">\ud83d\udcac User Question<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight\">\ud83d\udd0d Semantic Retrieval \u2192 Top K Chunks<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node\">\ud83d\udcdd Prompt = Context + Question<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight-green\">\ud83e\udde0 LLM \u2192 Grounded Answer<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Resume Improver Agent -->\n    <div class=\"project-card lab\">\n      <div class=\"card-accent lab-accent\"><\/div>\n      <div class=\"card-body\">\n        <div class=\"card-left\">\n          <div class=\"card-meta\">\n            <span class=\"pattern-tag tag-multi\">Multi-Agent<\/span>\n            <span class=\"pattern-tag tag-llm\">LangGraph<\/span>\n            <span class=\"pattern-tag tag-rag\">Human-in-the-Loop<\/span>\n            <div class=\"status-badge status-prototype\"><span class=\"status-dot dot-proto\"><\/span>Prototype<\/div>\n          <\/div>\n          <div class=\"card-title\">Resume Analyzer &#038; Job Search Agent<\/div>\n          <div class=\"card-challenge\">\n            <div class=\"card-challenge-label\">The Challenge<\/div>\n            <p>Job seekers spend hours manually tailoring resumes for each role and searching for matching opportunities \u2014 a repetitive, time-consuming process that an agentic AI system can automate intelligently.<\/p>\n          <\/div>\n          <p class=\"card-desc\">Built a LangGraph multi-agent system to analyze a resume, search for matching job postings, and suggest targeted improvements. Implemented core agentic concepts including conditional routing between nodes, tool use for job search API calls, human-in-the-loop checkpoints for user approval before actions, and persistent state management across the workflow.<\/p>\n          <div class=\"tech-stack\">\n            <span class=\"tech-pill\">Python<\/span>\n            <span class=\"tech-pill\">LangGraph<\/span>\n            <span class=\"tech-pill\">LangChain<\/span>\n            <span class=\"tech-pill\">Conditional Routing<\/span>\n            <span class=\"tech-pill\">Tool Use<\/span>\n            <span class=\"tech-pill\">Human-in-the-Loop<\/span>\n            <span class=\"tech-pill\">MemorySaver<\/span>\n            <span class=\"tech-pill\">Groq<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"card-right\">\n          <div class=\"arch-label\">Architecture<\/div>\n          <div class=\"arch-box\">\n            <div class=\"arch-node highlight-amber\">\ud83d\udcc4 Resume Input<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight\">\u26a1 LangGraph Orchestrator<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-row\">\n              <div class=\"arch-node highlight-purple\" style=\"font-size:10px\">\ud83d\udd0d Analyzer Agent<\/div>\n              <div class=\"arch-node highlight\" style=\"font-size:10px\">\ud83c\udf10 Job Search Agent<\/div>\n            <\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node\">\ud83d\udd00 Conditional Routing<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight-purple\">\ud83d\udc41\ufe0f Human-in-the-Loop Review<\/div>\n            <div class=\"arch-arrow\">\u2193<\/div>\n            <div class=\"arch-node highlight-green\">\u2705 Resume Improvement Output<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n  <\/div>\n<\/div>\n<\/div>\n\n<!-- FOOTER -->\n<div class=\"page-footer\">\n  <span class=\"footer-text\">Gurunathan Lakshmanan \u00b7 AI Solutions Architect<\/span>\n  <a href=\"https:\/\/gurusfolio.com\" class=\"footer-link\">\u2190 Back to Portfolio<\/a>\n<\/div>\n\n<\/body>\n<\/html>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>AI Projects \u2014 Guru&#8217;s Folio AI Projects A collection of AI systems I&#8217;ve designed, built, and deployed \u2014 from enterprise production platforms to personal explorations in agentic AI, RAG pipelines, and voice-driven interfaces. RAG Pipelines Agentic AI Voice AI LangGraph Multi-Agent Systems Azure OpenAI Multimodal AI ChromaDB FastAPI Human-in-the-Loop Enterprise AI Work Production Systems LLM [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-120","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/gurusfolio.com\/index.php?rest_route=\/wp\/v2\/pages\/120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gurusfolio.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gurusfolio.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gurusfolio.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gurusfolio.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=120"}],"version-history":[{"count":8,"href":"https:\/\/gurusfolio.com\/index.php?rest_route=\/wp\/v2\/pages\/120\/revisions"}],"predecessor-version":[{"id":157,"href":"https:\/\/gurusfolio.com\/index.php?rest_route=\/wp\/v2\/pages\/120\/revisions\/157"}],"wp:attachment":[{"href":"https:\/\/gurusfolio.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}