{"id":44664724,"url":"https://github.com/omerakben/omer-akben","last_synced_at":"2026-02-15T00:17:47.344Z","repository":{"id":321272089,"uuid":"1073307427","full_name":"omerakben/omer-akben","owner":"omerakben","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-03T17:33:29.000Z","size":43611,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-03T18:24:05.962Z","etag":null,"topics":["portfolio-website","webapp","website"],"latest_commit_sha":null,"homepage":"https://omerakben.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/omerakben.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-10-09T23:19:46.000Z","updated_at":"2026-02-03T17:40:39.000Z","dependencies_parsed_at":"2025-10-28T20:28:05.230Z","dependency_job_id":null,"html_url":"https://github.com/omerakben/omer-akben","commit_stats":null,"previous_names":["omerakben/omer-akben"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/omerakben/omer-akben","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omerakben%2Fomer-akben","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omerakben%2Fomer-akben/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omerakben%2Fomer-akben/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omerakben%2Fomer-akben/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/omerakben","download_url":"https://codeload.github.com/omerakben/omer-akben/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omerakben%2Fomer-akben/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29461641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T22:42:09.113Z","status":"ssl_error","status_checked_at":"2026-02-14T22:42:05.053Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["portfolio-website","webapp","website"],"created_at":"2026-02-15T00:17:45.831Z","updated_at":"2026-02-15T00:17:47.333Z","avatar_url":"https://github.com/omerakben.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# omerakben.com\n\n### AI-Powered Portfolio with Proactive Visitor Engagement\n\n[![Live Demo](https://img.shields.io/badge/🚀_Live_Demo-omerakben.com-brightgreen?style=for-the-badge)](https://omerakben.com)\n[![Build Status](https://img.shields.io/github/actions/workflow/status/omerakben/omer-akben/quality-gates.yml?branch=pre-deployment\u0026style=for-the-badge\u0026label=Quality%20Gates)](https://github.com/omerakben/omer-akben/actions)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue?style=for-the-badge\u0026logo=typescript)](https://www.typescriptlang.org/)\n![License](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge)\n\n[![Next.js](https://img.shields.io/badge/Next.js-15-black?style=for-the-badge\u0026logo=next.js)](https://nextjs.org/)\n[![React](https://img.shields.io/badge/React-19-blue?style=for-the-badge\u0026logo=react)](https://react.dev/)\n[![Tests](https://img.shields.io/badge/Tests-814/814_passing-success?style=for-the-badge)](package.json)\n[![Bundle](https://img.shields.io/badge/Bundle-7.66KB/40KB-success?style=for-the-badge)](package.json)\n\n[View Live Site](https://omerakben.com) | [Download Resume](https://drive.google.com/file/d/1La3VElM0vVNJDz867bUIXDb1HggHFYQL/view) | [Contact Me](mailto:me@omerakben.com)\n\n\u003c/div\u003e\n\n---\n\n## 📖 Table of Contents\n\n- [About](#-about)\n- [Key Features](#-key-features)\n- [Tech Stack](#-tech-stack)\n- [AI Features](#-ai-features-ozzy-assistant)\n- [Getting Started](#-getting-started)\n- [Project Highlights](#-project-highlights)\n- [Quality Metrics](#-quality-metrics)\n- [Documentation](#-documentation)\n- [Contact](#-contact)\n- [License](#-license)\n\n---\n\n## 🎯 About\n\n**The Challenge**: Traditional portfolios are static resumes that hiring managers scan in 6 seconds. Standing out in a crowded market requires more than just listing projects—it demands demonstrating skills in action.\n\n**The Solution**: This portfolio transforms passive browsing into active engagement. An AI assistant (Ozzy) understands visitor intent through engagement scoring, proactively offers to collect contact information, and maintains context across conversations using episodic memory with semantic search.\n\n**The Impact**: Built with Next.js 15, React 19, and TypeScript, this project demonstrates production-ready code quality with enterprise-level standards:\n\n- **🤖 AI-Powered Engagement**: \"Ozzy\" AI assistant with 12 specialized tools that don't just showcase capabilities—they provide them\n- **📧 Smart Contact Collection**: Permission-based outreach triggered by engagement scoring (message count, topics explored, time spent)\n- **🧠 Episodic Memory**: Semantic search across conversation history using 1536-dim OpenAI embeddings—conversations that remember\n- **♿ Accessibility Innovation**: WCAG 2A compliant with unique 8-mode brightness system (darkest to brightest)\n- **⚡ Performance Excellence**: 90% bundle reduction (2.33MB → 236KB) through intelligent icon manifesting\n- **✅ Zero Technical Debt**: 814 automated tests, 0 TypeScript errors, 0 ESLint errors—production-ready from day one\n\n---\n\n## ✨ Key Features\n\n### 🤖 Intelligent AI Assistant\n\n- **12 Server-Side Tools** enabling intelligent assistance—from resume downloads to semantic project search with vector embeddings. Each tool validates inputs server-side, ensuring security while providing rich functionality.\n- **Proactive Engagement** - detects organic interest through engagement scoring (message count, topics explored, time spent) and asks permission to collect contact information—permission-based, never pushy\n- **Follow-Up Suggestions** - contextual question chips generated from conversation analysis, guiding users to relevant topics they haven't explored\n- **Thread Persistence** - maintains conversation context across sessions using episodic memory with semantic search, creating continuous conversations that remember\n\n### 🎨 Innovative Design\n\n- **8-Mode Brightness System** - accessibility feature with brightness levels from -3 (darkest) to +3 (brightest)\n- **Responsive Sidebar** - pin/unpin with width resizing (320-800px) and localStorage persistence\n- **Design System** - 40+ shadcn/ui components with CSS custom properties for theming\n- **Global Chat Access** - floating button on all pages with keyboard shortcuts (Cmd/Ctrl+Shift+N)\n\n### 📧 Contact Collection System\n\n- **Intelligent Email Delivery** - Resend integration with React Email templates that include meeting links and resume downloads, sent only after explicit permission\n- **Smart Triggers** - activates when engagement score ≥60 (organic interest threshold), explicit meeting request, or high-value user detected (recruiter + 3+ messages + multiple topics explored)\n- **Professional Outreach** - branded emails that feel personal, not automated, with clear next steps for scheduling\n- **Security \u0026 Privacy** - email validation, PII redaction in logs, 7-day TTL on stored contacts, 5 requests per IP per 24h rate limit prevents abuse\n\n### 🧠 Memory Systems\n\n- **Episodic Memory** - semantic search across conversation history using Upstash Vector with 1536-dimensional OpenAI embeddings. Ozzy can reference discussions from weeks ago, answering \"What were those Python projects you mentioned?\" without users repeating themselves.\n- **Thread Memory** - conversation state persists across sessions using localStorage, creating continuous dialogue that picks up exactly where you left off\n- **Dual Vector Search** - separate optimized paths for projects (Redis FT.SEARCH for keyword matching) and conversations (Upstash Vector for semantic similarity)\n\n### ⚡ Performance \u0026 Quality\n\n- **Bundle Optimization** - 90% reduction (2.33MB → 236KB) via icon manifest system, achieving sub-second page loads and Lighthouse scores 95+\n- **Comprehensive Test Coverage** - 814 automated tests across 53 files (100% pass rate) covering API routes, components, integrations, and edge cases\n- **Automated Quality Gates** - 6 gates enforced on every commit: TypeScript (0 errors), ESLint (0 warnings), Tests (100%), Build, Bundle Size, E2E\n- **Zero-Downtime Deployment** - Vercel hosting with automated CI/CD pipeline, production-ready from day one\n\n---\n\n## 🛠 Tech Stack\n\n### Frontend\n\n- **Next.js 15** - App Router with React Server Components\n- **React 19** - Latest features and optimizations\n- **TypeScript 5** - Strict mode with zero-error policy\n- **Tailwind CSS 4** - Utility-first styling with CSS custom properties\n- **shadcn/ui** - 40+ accessible UI primitives\n- **Framer Motion** - Smooth animations and transitions\n- **Lucide Icons** - Tree-shaken icon system\n\n### AI \u0026 Backend\n\n- **Vercel AI SDK v5** - Streaming AI responses with tool calling\n- **XAI (Grok)** - Primary LLM with OpenAI fallback for reliability\n- **OpenAI** - Fallback LLM + embeddings for semantic search\n- **Upstash Redis** - Rate limiting and caching\n- **Upstash Vector** - Episodic memory with semantic search\n- **Resend** - Email delivery service\n- **React Email** - Email template system\n\n### Development \u0026 Testing\n\n- **Vitest** - Unit testing framework (814 tests)\n- **Playwright** - E2E testing and accessibility validation\n- **ESLint** - Code quality and consistency\n- **Size Limit** - Bundle size monitoring\n- **GitHub Actions** - CI/CD with automated quality gates\n\n---\n\n## 🤖 AI Features (Ozzy Assistant)\n\nOzzy is an intelligent AI assistant powered by XAI (Grok) with OpenAI fallback and 12 specialized tools for visitor engagement.\n\n### Available Tools\n\n| Tool                       | Description                                   | Rate Limit       |\n| -------------------------- | --------------------------------------------- | ---------------- |\n| `download_resume`          | Download resume in PDF format                 | 60/min           |\n| `download_certificate`     | Download AWS/NSS certifications               | 60/min           |\n| `list_projects`            | Browse portfolio projects with filters        | 60/min           |\n| `open_project`             | Get detailed project information              | 60/min           |\n| `get_contact`              | Retrieve contact information                  | 60/min           |\n| `collect_contact`          | Proactive contact collection + email delivery | 5 per IP per 24h |\n| `navigate_page`            | Navigate to specific pages                    | 60/min           |\n| `provide_navigation_links` | Get site navigation structure                 | 60/min           |\n| `extract_summary`          | Extract concise content summaries             | 60/min           |\n| `profile_performance`      | Performance profiling utilities               | 60/min           |\n| `search_projects_semantic` | Semantic vector search using OpenAI embeddings | 60/min          |\n| `trigger_workflow`         | Execute predefined workflows                  | 60/min           |\n\n### Proactive Engagement\n\nOzzy intelligently offers to collect contact information when:\n\n1. **Explicit Request** - user asks to schedule a meeting\n2. **Engagement Score ≥60** - based on message count, topics discussed, projects viewed\n3. **High-Value User** - recruiter/hiring manager + 3+ messages + multiple topics explored\n\nUpon permission, Ozzy:\n\n- Collects name, email, company, purpose\n- Validates email format and blocks disposable addresses\n- Sends professional email with Zoom link and resume downloads\n- Stores contact securely in Redis with 7-day TTL\n- Returns meeting link immediately in chat\n\n### Memory \u0026 Context\n\n- **Episodic Memory** - semantic search across past conversations using vector embeddings\n- **Thread Persistence** - conversation history maintained across sessions\n- **Follow-Up Suggestions** - contextual questions based on detected topics\n\nFor complete AI architecture details, see [AGENTS.md](AGENTS.md).\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- **Node.js** 18.17 or later\n- **npm** or **yarn** package manager\n- **OpenAI API Key** - for AI assistant functionality\n- **Upstash Account** - for Redis and Vector services (optional for development)\n\n### Installation\n\n1. **Clone the repository**\n\n   ```bash\n   git clone https://github.com/omerakben/omer-akben.git\n   cd omer-akben\n   ```\n\n2. **Install dependencies**\n\n   ```bash\n   npm install\n   ```\n\n3. **Set up environment variables**\n\n   ```bash\n   cp .env.example .env.local\n   ```\n\n   Add your API keys to `.env.local`:\n\n   ```bash\n   # Required\n   OPENAI_API_KEY=sk-...\n\n   # Optional (for full functionality)\n   UPSTASH_REDIS_REST_URL=https://...\n   UPSTASH_REDIS_REST_TOKEN=...\n   UPSTASH_VECTOR_REST_URL=https://...\n   UPSTASH_VECTOR_REST_TOKEN=...\n   RESEND_API_KEY=re_...\n   OMER_EMAIL=me@omerakben.com\n   OMER_ZOOM_LINK=https://calendly.com/.../30min\n   CRON_SECRET=your-random-secret-key  # For Vercel cron job authentication\n\n   # Optional - Monitoring\n   SENTRY_AUTH_TOKEN=sntryu_...         # Error tracking and monitoring\n   ```\n\n4. **Run development server**\n\n   ```bash\n   npm run dev\n   ```\n\n   Open [http://localhost:3001](http://localhost:3001) in your browser.\n\n### Development Commands\n\n```bash\nnpm run dev          # Start development server (Turbopack)\nnpm test             # Run all unit tests (544 tests)\nnpm test -- --watch  # Run tests in watch mode\nnpm run build        # Create production build\nnpm run lint         # Run ESLint\nnpx tsc --noEmit     # Check TypeScript errors\nnpm run size         # Check bundle size limits\nnpm run test:e2e     # Run E2E tests with Playwright\nnpm run analyze      # Analyze bundle composition\n```\n\n---\n\n## 🎯 Project Highlights\n\n### Production-Ready Quality\n\n- **814 Unit Tests** - 100% pass rate across 53 test files\n- **8 E2E Tests** - WCAG 2A accessibility compliance on all routes\n- **Zero Errors** - TypeScript strict mode, ESLint zero-error policy\n- **CI/CD Pipeline** - 6 quality gates enforced on every commit\n- **Bundle Optimization** - 90% reduction (2.33MB → 236KB homepage)\n\n### Technical Achievements\n\n| Achievement       | Metric          | Status  |\n| ----------------- | --------------- | ------- |\n| Test Coverage     | 814/814 passing | ✅ 100%  |\n| TypeScript Errors | 0               | ✅ Clean |\n| ESLint Errors     | 0               | ✅ Clean |\n| WCAG Compliance   | 8/8 routes      | ✅ 2A    |\n| Bundle Size       | 7.66 KB / 40 KB | ✅ 19%   |\n| Page Load         | \u003c 1s            | ✅ Fast  |\n\n### Unique Features\n\n- **8-Mode Brightness** - innovative accessibility feature (darkest to brightest)\n- **Icon Optimization** - manifest system reduced bundle by 90%\n- **Episodic Memory** - semantic search across conversation history\n- **Proactive Engagement** - AI assistant initiates contact collection\n- **Rate Limiting** - Redis-backed, configured per route pattern\n\n---\n\n## 🔬 Technical Challenges \u0026 Solutions\n\nBuilding a production-ready AI portfolio required solving complex engineering problems:\n\n### Challenge 1: Episodic Memory Without Context Loss\n\n**Problem**: Traditional chat systems lose context between sessions, forcing users to repeat themselves and breaking conversation flow.\n\n**Solution**: Implemented semantic search using Upstash Vector with OpenAI embeddings (1536-dim). Conversations are vectorized and stored, enabling similarity-based retrieval across sessions. The system maintains a rolling window of recent context while searching historical conversations for relevant information.\n\n**Result**: Ozzy can reference discussions from weeks ago, creating a continuous conversation experience. For example, if a recruiter asks \"What were those Python projects you mentioned?\" days later, Ozzy retrieves the relevant context automatically.\n\n### Challenge 2: 90% Bundle Size Reduction\n\n**Problem**: Initial bundle size was 2.33MB, resulting in 49-second load times—unacceptable for a portfolio's first impression.\n\n**Solution**: Created an icon manifest system with tree-shaking, curating 42 essential icons instead of importing the entire simple-icons library (11,000+ icons). Implemented lazy loading for non-critical components and aggressive code splitting.\n\n**Result**: Bundle reduced to 236KB (90% reduction), achieving sub-second page loads with Lighthouse scores consistently above 95.\n\n### Challenge 3: Proactive Engagement Without Being Intrusive\n\n**Problem**: How to collect visitor contact information without annoying pop-ups or aggressive tactics that damage user experience?\n\n**Solution**: Built an engagement scoring system that considers message count, topics explored, time spent, and conversation depth. Contact collection is only triggered when:\n- Engagement score reaches ≥60 (organic interest threshold)\n- User explicitly requests a meeting\n- High-value user detected (recruiter + 3+ messages + multiple topics)\n\n**Result**: Permission-based outreach that feels helpful rather than pushy. Ozzy asks, \"I notice we've been discussing several projects. Would you like me to collect your contact information to schedule a meeting?\" This approach respects user autonomy while maximizing conversion opportunities.\n\n### Challenge 4: Time Awareness for LLM Accuracy\n\n**Problem**: LLMs with January 2025 knowledge cutoff couldn't accurately reference current dates or understand temporal context. When users asked \"What's today's date?\" or \"Can we meet this week?\", responses relied on potentially outdated training data.\n\n**Solution**: Implemented server-authoritative time context injection with explicit anti-hallucination directives. Every agent response includes:\n- Current UTC timestamp\n- Portfolio timezone context (EST/EDT, America/New_York)\n- Clear instructions to trust server time over learned dates\n\n**Result**: Ozzy now accurately handles scheduling requests, understands \"today\", \"this week\", \"next month\" correctly, and provides business hours context (e.g., \"It's after hours—Omer may respond slower tomorrow morning\").\n\n---\n\n## 🎯 Featured Projects\n\nShowcasing 5 production-ready projects with live demos and professional screenshots:\n\n### 1. [North Glass LLC](https://omerakben.com/projects/north-glass) • **LIVE PRODUCTION**\n\nModern e-commerce site for glass installation company serving North Carolina.\n\n- **Stack**: Next.js 15, React 19, TypeScript, Tailwind CSS 4\n- **Features**: Product catalog, service area mapping, contact forms, mobile-responsive\n- **Live Demo**: [northglassnc.com](https://www.northglassnc.com/)\n- **Status**: Production deployment serving real customers\n\n### 2. [DEADLINE - Developer Command Center](https://omerakben.com/projects/capstone-deadline)\n\nCentralized workspace management system for developers (**A- Capstone Grade: 92/100 UI/UX**).\n\n- **Stack**: Django 5 + PostgreSQL (Railway) | Next.js 15 + React 19 (Vercel)\n- **Features**: ENV variables, AI prompts, docs, multi-environment support, audit logs\n- **Testing**: 64/64 backend tests passing, Playwright visual testing\n- **Live Demos**: [Frontend](https://deadline-demo.vercel.app) | [API](https://deadline-production.up.railway.app/api/v1/)\n- **Source**: [GitHub](https://github.com/omerakben/deadline)\n\n### 3. [ElonGPT - Campus AI Assistant](https://omerakben.com/projects/elongpt) • **LIVE @ ELON UNIVERSITY**\n\nAI-powered chatbot serving Elon University students and faculty.\n\n- **Stack**: Next.js 14, TypeScript, OpenAI API, Vercel AI SDK\n- **Features**: Campus information, academic resources, event lookup\n- **Live Demo**: [elon.edu/ai/elongpt](https://www.elon.edu/u/ai/elongpt/)\n- **IP Notice**: Elon University property (part of 4-project AI initiative)\n\n### 4. [LSB AI Studio](https://omerakben.com/projects/lsb-ai-studio) • **LIVE @ ELON UNIVERSITY**\n\nBusiness education platform with AI-powered learning tools.\n\n- **Stack**: Next.js 14, Azure deployment, OpenAI integration\n- **Features**: Business AI education, case studies, interactive learning\n- **Live Demo**: [lsb-ai.azurewebsites.net](https://lsb-ai.azurewebsites.net/)\n- **IP Notice**: Elon University property (part of 4-project AI initiative)\n\n### 5. [Tuel AI Chatbot Builder](https://omerakben.com/projects/tuel-chatbot)\n\nMulti-provider chatbot platform with drag-and-drop interface.\n\n- **Stack**: Next.js 14, React, OpenAI + Claude + Gemini integration\n- **Features**: Visual chatbot builder, multi-LLM support, conversation management\n- **Screenshots**: Professional UI showcasing builder interface\n- **Portfolio**: [View Project Page](https://omerakben.com/projects/tuel-chatbot)\n\n**View All 12 Projects**: [omerakben.com/projects](https://omerakben.com/projects)\n\n**Project Categories**: AI/ML (5 projects) • Web Development (4 projects) • Tools \u0026 Frameworks (3 projects)\n\n---\n\n## 📊 Quality Metrics\n\n### Test Distribution\n\n| Category    | Files  | Tests   | Coverage                        |\n| ----------- | ------ | ------- | ------------------------------- |\n| API Routes  | 12     | 268     | Tool validation, error handling |\n| Components  | 8      | 155     | UI behavior, interactions       |\n| Integration | 7      | 121     | Workflows, memory, follow-ups   |\n| **Total**   | **53** | **814** | **100% pass rate**              |\n\n### Bundle Sizes\n\n| Page     | Size    | Limit | Status |\n| -------- | ------- | ----- | ------ |\n| Homepage | 7.66 KB | 40 KB | ✅ 19%  |\n| Skills   | 3.55 KB | 10 KB | ✅ 35%  |\n| Projects | 7.91 KB | 15 KB | ✅ 53%  |\n| Contact  | 4.31 KB | 10 KB | ✅ 43%  |\n\n### Build Performance\n\n- **Compilation Time**: 8.6s\n- **Static Pages**: 40/40 generated\n- **First Load JS** (shared): 102 KB\n- **Lighthouse Score**: ≥95 (mobile \u0026 desktop)\n\n---\n\n## 📚 Documentation\n\n- **[AGENTS.md](AGENTS.md)** - Agent architecture, tools, and implementation details\n- **[CLAUDE.md](CLAUDE.md)** - Development guidelines and Claude Code workflows\n\n### Internal Documentation\n\n- **[PRD](claudedocs/PRD.md)** - Product requirements document\n- **[Ozzy Implementation Guide](claudedocs/ozzy-implementation-guide.md)** - Step-by-step agent setup\n\n### Key Files Reference\n\n```\nsrc/\n├── app/api/tools/          # 12 AI agent tools (server-side)\n├── components/chat/        # Sidebar assistant components\n├── data/                   # Source of truth (facts, projects)\n├── lib/\n│   ├── agent-tools/        # Tool schemas and validation\n│   ├── mastra/memory/      # Episodic memory system\n│   └── redis/              # Vector search + rate limiting\n└── config/                 # Configuration files\n```\n\n---\n\n## 📈 Results \u0026 Impact\n\n### What This Project Demonstrates\n\n**Production-Ready Development Practices**\n- **814 automated tests** (100% pass rate) across 53 test files—every feature validated\n- **Zero TypeScript errors, zero ESLint warnings**—strict quality gates enforced\n- **CI/CD pipeline with 6 quality gates**—automated testing, linting, building, bundle analysis\n- **WCAG 2A compliance** on all 8 routes—accessibility built in, not bolted on\n\n**AI Engineering Expertise**\n- **Multi-provider LLM strategy**: XAI (Grok) as primary for cost efficiency (~60% savings vs GPT-4), intelligent fallback to OpenAI for reliability\n- **Episodic memory with semantic search**: 1536-dimensional vector embeddings enabling context retention across sessions\n- **12 server-side tools** with proper Zod validation, rate limiting, and error handling\n- **Cost optimization**: Intelligent retry vs. fallback logic based on error classification\n\n**Performance Optimization**\n- **90% bundle reduction** (2.33MB → 236KB) through icon manifesting and tree-shaking\n- **Sub-second page loads** with Lighthouse scores consistently 95+\n- **Smart caching strategies**: Redis for rate limiting, Upstash Vector for semantic search\n- **Core Web Vitals compliance**: Optimized for LCP, FID, CLS metrics\n\n**Product Thinking \u0026 UX Design**\n- **Engagement scoring system**: Permission-based contact collection triggered by organic interest (score ≥60)\n- **Accessibility innovation**: 8-mode brightness system serving users with photosensitivity or vision impairments\n- **Conversation continuity**: Cross-session memory persistence creates seamless experience\n- **Proactive assistance**: AI that anticipates needs without being intrusive\n\n### Key Learnings\n\n**1. Cost Optimization Through Provider Strategy**\n\nSwitching from OpenAI to XAI (Grok) as primary LLM reduced costs by ~60% while maintaining quality through intelligent fallback. Error classification determines whether to retry XAI or fallback to OpenAI:\n- **Transient errors** (rate limits, timeouts) → Retry with XAI\n- **Persistent errors** (model failures) → Fallback to OpenAI\n\nThis dual-provider approach balances cost efficiency with reliability.\n\n**2. Engagement Scoring for Proactive Features**\n\nThe engagement score threshold of 60 was discovered through experimentation:\n- **Too low (\u003c 40)**: Felt pushy, interrupted natural conversation flow\n- **Too high (\u003e 80)**: Missed conversion opportunities, users expected prompting\n- **Sweet spot (60)**: Respects user autonomy while maximizing helpfulness\n\nThis demonstrates the importance of tuning AI interactions to human expectations.\n\n**3. Testing as a Development Accelerator**\n\n814 tests might seem excessive, but they enable **fearless refactoring**. Recent example: Refactoring the memory system required touching 15 files. Tests caught 8 edge cases that would have been production bugs. Time saved in debugging far exceeded time spent writing tests.\n\n**4. Accessibility as Innovation Opportunity**\n\nThe 8-mode brightness system started as a \"nice to have\" feature. User feedback revealed it's essential for:\n- Users with photosensitivity who can't use standard dark mode\n- Users with low vision who need higher contrast than standard light mode\n- Users working in varying ambient light conditions\n\nAccessibility features often benefit a broader audience than initially intended.\n\n**5. Time Awareness Solves Real Problems**\n\nBefore implementing server-authoritative time context, Ozzy would sometimes reference dates incorrectly (\"Let's meet next week\" when \"next week\" was already past based on knowledge cutoff). This eroded trust. Server-side timestamps with anti-hallucination directives solved this completely—a reminder that LLMs need external context for temporal accuracy.\n\n---\n\n## 📧 Contact\n\n**Omer \"Ozzy\" Akben**\n\n- **Email**: [me@omerakben.com](mailto:me@omerakben.com)\n- **Website**: [omerakben.com](https://omerakben.com)\n- **LinkedIn**: [omerakben](https://linkedin.com/in/omerakben)\n- **GitHub**: [@omerakben](https://github.com/omerakben)\n\n### Download Resume\n\n- **[Original Resume (PDF)](https://drive.google.com/file/d/1La3VElM0vVNJDz867bUIXDb1HggHFYQL/view)** - Concise 2-page version\n- **[Extended Resume (PDF)](https://drive.google.com/file/d/1LiK6Q6BpnbfitPR-diaWR3ckGFv7yNFo/view)** - Detailed work history\n\n### Schedule a Meeting\n\nVisit the [live site](https://omerakben.com) and chat with Ozzy to schedule a meeting automatically!\n\n---\n\n## 📄 License\n\nThis project is licensed under the **MIT License**.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Built with ❤️ using Next.js 15, React 19, TypeScript, and AI**\n\n[⬆ Back to Top](#omerakbencom)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomerakben%2Fomer-akben","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomerakben%2Fomer-akben","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomerakben%2Fomer-akben/lists"}