Skip to content

AI-Resume is a containerized web application that acts as your digital professional proxy. Transform your CV into a conversational agent.

License

Notifications You must be signed in to change notification settings

schwichtgit/ai-resume

Repository files navigation

AI Resume Screenshot

AI Resume Agent

Turn a static resume into an AI-powered conversation.

AI-Resume is a containerized web application that acts as your digital professional proxy. It provides a "30-second scan" layout for speed, backed by a semantic AI agent that recruiters can "interview" in real-time. Using natural language, they can query specific experience (e.g., "How has she handled MLOps at scale?") and receive a synthesized, evidence-based summary derived from your personal semantic knowledge base.

ai-resume-walkthrough-2026-02-04.mp4

A recruiter asks about AI experience, tests job fit with a real job description, and explores leadership style — all without scheduling a call.

Live Demo

Try it with a fictional candidate: jane-doe-ai-resume.schwichtenberg.us

Suggested things to try:

  • Ask about specific skills or experience
  • Paste a real job description into the Fit Assessment tab
  • Ask a question the resume can't answer (watch the honest response)

Who Is This For?

You are a... What you get
Resume Owner Deploy your resume as an always-available AI agent. Visitors get thoughtful answers about your experience without you being in the room.
Recruiter / Hiring Manager Instant, detailed answers about a candidate. Ask about specific skills, experience depth, or job fit. No more scanning PDFs or scheduling screening calls.
Engineer / Architect A reference implementation of a production RAG system: Rust gRPC service, Python FastAPI, React frontend, semantic search with cross-encoder re-ranking, container deployment.

What It Does

AI Chat — Ask anything about the candidate's background. The agent retrieves relevant resume context via hybrid search (BM25 + vector embeddings + cross-encoder re-ranking) and generates grounded, citation-backed answers. It won't hallucinate or make things up.

Fit Assessment — Paste a real job description and get an honest analysis: key matches, gaps, and a recommendation. Pre-analyzed examples show strong and weak fit scenarios so you know what calibrated output looks like.

Experience Cards — Structured view of roles, projects, and skills loaded dynamically from a single portable data file.

How It Works

master_resume.md        Python ingest         .mv2 file          Rust gRPC        Python API       React SPA
(your resume)     ───►  (chunk + embed)  ───► (vector DB)   ───► (search)    ───►  (LLM + SSE) ───► (chat UI)
                                                                  <5ms              streaming        responsive

All content comes from a single Markdown file with YAML frontmatter. No hardcoded data in the frontend — everything flows through the API from the .mv2 vector database.

Architecture

Three containers behind a reverse proxy:

Service Stack Role
memvid-service Rust, Tonic gRPC, memvid-core Semantic search, state lookup, Ask mode with re-ranking
api-service Python, FastAPI, OpenRouter LLM orchestration, fit assessment, SSE streaming
frontend React, TypeScript, Tailwind, shadcn/ui Chat UI, experience cards, fit assessment

Key technical decisions:

  • Hybrid search: BM25 lexical + vector semantic + cross-encoder re-ranking (Reciprocal Rank Fusion)
  • Honest by design: System prompts enforce factual grounding; guardrails block prompt injection
  • Single-file portability: One .mv2 file contains all embeddings, metadata, and profile data
  • Read-only containers: All services run rootless with read-only filesystems

Quick Start

# 1. Create your resume
cp data/example_resume.md data/master_resume.md
# Edit with your information (see docs/MASTER_DOCUMENT_SCHEMA.md for format)

# 2. Ingest into vector database
cd ingest && uv run python ingest.py --verify

# 3. Configure secrets
cp deployment/.env.example deployment/.env
# Add your OPENROUTER_API_KEY

# 4. Deploy
cd deployment && podman-compose up -d

See docs/SETUP.md for complete instructions including multi-arch container builds.

Documentation

Document Description
Setup Installation, building, deployment
Architecture System design, data flow, network topology
PRD Product requirements, success metrics
Development Contributing guide, workflows
Master Document Schema Resume markdown format
Agentic Flow LLM orchestration and prompt design
Security Security hardening, vulnerability management
Test Coverage Test strategy and coverage reports
TODO Roadmap and task breakdown

About This Project

This is a reference project by Frank Schwichtenberg — built to solve a real problem (making resumes interactive) while demonstrating production engineering practices across the stack:

  • Systems design: Rust + Python hybrid architecture with gRPC boundaries
  • Search & retrieval: Semantic search, BM25, cross-encoder re-ranking, metadata filtering
  • LLM engineering: RAG pipeline, prompt design, guardrails, streaming responses
  • Infrastructure: Multi-arch containers, rootless deployment, read-only filesystems
  • Security: Prompt injection defense, rate limiting, input validation, container hardening

License

PolyForm Noncommercial License 1.0.0 — See LICENSE file.