Skyler Assistant
Skyler is the public portfolio assistant for Patrick Araujo, focused on project context, technical stack, professional experience, and contact guidance.
The assistant is designed for predictable orchestration: simple greeting local reply, manual RAG usage, and LLM calls only when needed.
System Architecture
Skyler separates responsibilities clearly. The frontend handles interaction and voice. The Worker orchestrates memory, intent-aware RAG, and provider calls. The model handles direct answers for off-topic prompts and portfolio-guided answers when portfolio intent is detected.
Runtime Decision Flow
Frontend Experience
- Floating icon launcher on site pages using
/images/icon_skyler.webp - Dedicated interactive demo at /projects/skyler-assistant/demo/
- Enter sends message, Shift+Enter adds line break
- Optional streaming output and voice output toggle
- Guest/public usage without mandatory login
Worker and Data Details
- Entry:
src/chatbot/worker/src/index.ts - Manual RAG:
src/chatbot/worker/src/manual-rag.ts - KV cache: response cache, embedding cache, site context cache
- D1: users, conversations, messages, analytics events, prompt versions
- Bindings:
DB,CACHE,SESSIONS
RAG Coverage
Manual RAG includes identity, role focus, stack, links, companies, impact metrics, and current credential context. It is merged with cached public site pages only when the user is asking about portfolio topics, which keeps off-topic answers direct and reduces unwanted grounding.
- Identity and positioning (backend, integrations, architecture)
- Project and blog discoverability guidance
- Contact and profile references (GitHub, LinkedIn, email)
- Known credentials, companies, and projects from internal context plus public pages
- Plain-text response rules for course, company, and project answers
Reliability and Fallback Strategy
- Primary provider execution path with retry attempts
- Automatic fallback provider when primary fails
- Local greeting path plus intent-aware RAG to reduce unnecessary model calls
- Response caching to minimize repeated token spend
Main Paths
- Live assistant demo: /projects/skyler-assistant/demo/
- Global widget example page: /about/
- Projects listing: /projects/
- Worker source:
src/chatbot/worker/src/index.ts - Manual RAG:
src/chatbot/worker/src/manual-rag.ts