Automated Portfolio & Resume System

A portfolio site with an AI chatbot that answers questions about my work. Built a RAG pipeline (Qdrant + sentence-transformers + Gemini) so visitors can ask about projects and experience. Includes a multi-provider LLM client with automatic fallback, real-time SSE streaming through Cloudflare Workers, parallel function-calling for follow-up suggestions, and client-side chat history. Also generates three resume variants from shared JSON data via CI/CD.

Tech Stack

Astro React TypeScript TailwindCSS Python Jinja2 Gemini API Qdrant FastAPI GitHub Actions
Automated Portfolio & Resume System

Project Insights

Challenges

  • Building a RAG pipeline with Qdrant vector search and sentence-transformers embeddings
  • Real-time SSE streaming through Cloudflare Worker proxy
  • Multi-provider LLM client (Gemini, OpenAI, Llama) with automatic fallback
  • Zero-latency follow-up suggestions via parallel function-calling
  • Single source of truth for resume data across website and PDF generation

Outcomes

  • AI assistant answers questions with cited sources from portfolio content
  • Sub-second first-token streaming via Gemini + Cloudflare Workers
  • Follow-up suggestions appear instantly with the response
  • Chat history persists across page reloads (1-hour TTL)
  • 100/100 Lighthouse performance score

Architecture & Design

Problem

I wanted a tool to manage both my online portfolio and resume PDFs.

Keeping a portfolio and resume in sync is annoying. Every time I updated my resume PDF, the portfolio website lagged behind. Every new project added to the website meant manually reformatting the same content for my LaTeX resume. With three resume variants (Full-Stack, Backend, AI), this became tedious.

The pain points:

  • Duplicate Content Management - Editing the same information in multiple places (website JSON, LaTeX file, multiple resume variants)
  • Format Fragmentation - Different technologies (React, LaTeX, JSON) with no shared data layer
  • Manual Deployment - Updating resumes required local LaTeX compilation, then manual upload to hosting
  • Version Control - Hard to find the latest version of resume PDFs

I wanted a system where I could edit content once, and have both the portfolio website and all resume PDFs update automatically.

Constraints

  • Single Source of Truth: All content (profile, experience, projects, skills) lives in JSON files that feed both the website and resumes
  • Multi-Variant Resumes: Support for 3 resume types (Full-Stack, Backend, AI) with variant-specific content overrides
  • Automated PDF Generation: Resume PDFs auto-generate on every commit - no local LaTeX compilation
  • SEO Optimized: Website scores 100/100 on Lighthouse and generates proper structured data
  • Minimal Infrastructure: No databases, no servers - just static files and GitHub Actions
  • ATS Compatibility: Generated PDFs are machine-readable for Applicant Tracking Systems