BuildMyResume is an AI-powered resume and portfolio engineering platform, multi-version master resume manager, ATS resume optimization suite, and live web portfolio studio. It enables developers and professionals to maintain a protected Master Resume single source of truth, generate unlimited custom named resume versions, execute vector-matched RAG AI tailoring against job descriptions, and publish live web portfolios deployed globally to the Cloudflare Edge Network.
- Single Source of Truth: Protects one primary "Master Resume" (
isPrimary: true) that serves as the non-deletable core baseline for all portfolio generation and career evidence. - Unlimited Named Custom Versions: Create targeted resume versions (e.g., "Frontend Engineer Version", "Backend SDE Version") that automatically clone full Master Resume data upon creation.
- Isolated Editing & Auto-Sync: Modify individual bullet points, skill categories, education entries, and section ordering per version without altering the baseline Master Resume.
- Live ATS PDF Preview: Real-time side-by-side ATS PDF compiler built on standard typography standards (Jake Resume style, Times New Roman, custom line height, font sizing, and page budget limits).
- Version Management: Top header dropdown switcher with instant selection, non-deletable Master Resume badge protection, and custom version deletion with automatic fallback.
- Two-Stage RAG Pipeline:
- Stage 1 (Vector Match & Evidence Retrieval): Evaluates job descriptions using vector embeddings and semantic similarity matching across all saved resume versions and user projects to retrieve top relevant evidence.
- Stage 2 (LangChain + Groq Synthesis): Employs
llama-3.3-70b-versatilevia LangChain structured output chains to rewrite project bullets, optimize technical skill buckets, and insert high-impact ATS keywords while strictly preserving truthful claims.
- Base Resume Profile Selector: Tailor directly from "⚡ Auto-Select Most Appropriate Resume (AI Vector Match)" or pick any specific named resume version.
- ATS Keyword Density Analysis: Real-time match percentage calculation (Current vs. Projected ATS Score) and requirement breakdown.
- Multi-Resume Data Aggregation: Aggregates projects, work experiences, education entries, skill categories, and achievements across MongoDB
Projectdatabase models, Master Profile, and all saved Master Resume versions. - Item-Level Selection Checklists: Interactive checklists for all 5 career categories allowing users to explicitly grant or revoke inclusion (
included: true/false) for every project, work experience, education item, and skill. - Section Rank & Display Order: Custom drag-and-drop / rank button controls for reordering section display priority (
Summary,Experience,Projects,Skills,Education,Achievements). - Automated Vite Production Compiler & Cloudflare Deployment: Generates standalone Vite React portfolio source code, builds minified production dist assets, and deploys globally to Cloudflare Pages edge network with real-time status polling.
- Live Publishing Banner & Page Lockdown: Displays real-time progress bar (0% to 100%), active build step readout, and elapsed timer, while locking down page interaction during active deployment to prevent state corruption.
- GitHub Source Exporter: One-click GitHub export modal generating a standalone Vite React portfolio repository directly under the user's GitHub account using GitHub Personal Access Tokens.
- Showcase technical projects with tech stack tags, live demo URLs, GitHub repository links, and bullet points.
- Auto-populates projects into Master Resume versions and portfolio generators.
- Step-by-Step Onboarding: Guided workflow for profile setup, social handles (LinkedIn, GitHub), skill categorizations, education history, and work experience.
- Profile Settings: Manage display name, avatar photo, headline, bio summary, and social links with AI description generation helpers.
- Firebase Token Auto-Refresh: Listens to
onIdTokenChangedand features a self-healingapiRequestinterceptor that automatically callsfirebaseAuth.currentUser.getIdToken(true)to refresh expired tokens seamlessly without interrupting user sessions. - AI Rate-Limit (429) Handling: Detects Groq API quota and rate-limit pressures, throwing structured
ApiError(429)responses that trigger clear 24-hour retry toast alerts ("Cannot perform AI actions right now as our backend servers are experiencing high pressure. Please try again after 24 hours."). - Mongoose Schema Resilience: Uses
mongoose.Schema.Types.Mixedfor flexible, error-free nested JSON resume data storage and state synchronization.
The following architecture diagram outlines the complete end-to-end data flow across client components, authentication layers, microservices, AI pipelines, database schemas, and edge deployment providers:
- Core Framework: React 18, Vite 5, JavaScript (ES6+)
- Styling & UI: TailwindCSS, Radix UI Primitives, Lucide Icons
- Animations: Framer Motion
- Authentication: Firebase Web Auth SDK
- Notifications: Sonner Toasts
- Runtime: Node.js v22 (ESM)
- Web Framework: Express 4
- Database: MongoDB & Mongoose ODM
- AI & RAG Engine: Groq SDK (
llama-3.3-70b-versatile), LangChain (@langchain/groq,@langchain/core) - Deployment & Source Control: Cloudflare Pages API, Octokit / GitHub REST API
BuildMyResume/
├── backend/ # Express Node.js Backend Server
│ ├── src/
│ │ ├── app.js # Express Application Setup & Middleware
│ │ ├── index.js # Server Entry Point & Database Connection
│ │ ├── config/ # Environment Variables & Configuration
│ │ ├── controllers/ # Route Controllers
│ │ │ ├── ai.controller.js # Two-Stage RAG AI Tailoring Handlers
│ │ │ ├── auth.controller.js # Authentication & User Profile Handlers
│ │ │ ├── dashboard.controller.js # Overview Dashboard Analytics & Stats
│ │ │ ├── master-resume.controller.js # Multi-Version Master Resume CRUD
│ │ │ ├── portfolio.controller.js # Portfolio GitHub Export & Publishing
│ │ │ └── project.controller.js # Projects Management Handlers
│ │ ├── models/ # Mongoose Schemas
│ │ │ ├── master-resume.models.js # Multi-Version Master Resume Schema
│ │ │ ├── portfolio.models.js # Portfolio & ContentConfig Schema
│ │ │ ├── project.models.js # User Project Schema
│ │ │ └── user.models.js # User Profile Schema
│ │ ├── routes/ # Express API Route Registries
│ │ └── services/ # Core Business Logic & Microservices
│ │ ├── deployToCloudflare.js # Cloudflare Pages Direct Deployment Service
│ │ ├── generatePortfolio.js # Vite Portfolio Source Code Generator
│ │ ├── github-export.service.js # Octokit GitHub Repo Exporter
│ │ ├── groq.service.js # Groq SDK Integration & Rate Limit Handling
│ │ ├── langchain-tailor.service.js # LangChain Structured Output Tailoring
│ │ ├── portfolio-build.service.js # In-Memory Vite Build & Dist Compiler
│ │ ├── portfolioService.js # Portfolio Publishing Pipeline
│ │ └── rag-tailor.service.js # Vector Retrieval & Evidence Match Engine
│ └── package.json
│
└── frontend/ # React Vite Frontend Web Application
├── src/
│ ├── components/ # Reusable UI Components
│ │ ├── resume/ # ATS Resume PDF Preview & Layout Engine
│ │ └── ui/ # Radix UI Component Library
│ ├── contexts/ # React Context Providers (AuthContext, Theme)
│ ├── lib/ # API Utilities & Interceptors (apiRequest)
│ ├── pages/ # Top-Level Page Views
│ │ ├── AiTailor.jsx # RAG AI Resume Tailoring Studio
│ │ ├── DashboardHome.jsx # Overview Dashboard & Impact Stats
│ │ ├── DashboardLayout.jsx # Authenticated App Shell & Sidebar
│ │ ├── Landing.jsx # Marketing Landing Page
│ │ ├── OnboardingFlow.jsx # Multi-Step Profile Setup Flow
│ │ ├── Portfolios.jsx # Portfolio Studio, Checklists & Publisher
│ │ ├── Projects.jsx # Projects Showcase Manager
│ │ ├── Resumes.jsx # Multi-Version Master Resume Studio
│ │ └── SettingsPage.jsx # User Profile & Preferences Settings
│ ├── App.jsx # Client Routing Setup
│ └── main.jsx # Application Entry Point
└── package.json
- Node.js:
v18.0.0or higher - MongoDB: Local MongoDB instance or MongoDB Atlas cluster URI
- Firebase Project: Firebase Auth project with Google Sign-In enabled
- Groq API Key: API key from Groq Console
- Cloudflare Account: Cloudflare Account ID and API Token (for live portfolio deployments)
git clone https://github.com/your-username/BuildMyResume.git
cd BuildMyResumeNavigate to the backend directory and install dependencies:
cd backend
npm installCreate a .env file in the backend directory:
PORT=8000
NODE_ENV=development
API_PREFIX=/api/v1
CORS_ORIGIN=http://localhost:5173
MONGODB_URI=mongodb://127.0.0.1:27017/buildmyresume
# Firebase Service Account Auth
FIREBASE_PROJECT_ID=your_firebase_project_id
FIREBASE_API_KEY=your_firebase_api_key
FIREBASE_STORAGE_BUCKET=your_project.firebasestorage.app
FIREBASE_SERVICE_ACCOUNT_JSON={"type": "service_account", ...}
# Groq AI Engine
GROQ_API_KEY=your_groq_api_key_here
GROQ_MODEL=llama-3.3-70b-versatile
# Cloudflare Pages Edge Deployment Config
CF_ACCOUNT_ID=your_cloudflare_account_id
CF_API_TOKEN=your_cloudflare_api_tokenStart the backend dev server with hot reloading:
npm run devBackend server will run at: http://localhost:8000
Open a new terminal window, navigate to the frontend directory, and install dependencies:
cd frontend
npm installCreate a .env file in the frontend directory:
VITE_API_URL=http://localhost:8000/api/v1
# Firebase Auth Configuration
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
VITE_FIREBASE_APP_ID=your_app_idStart the frontend Vite dev server:
npm run devFrontend app will run at: http://localhost:5173
To verify that the application compiles cleanly for production:
# Build Frontend
cd frontend
npm run build
# Build Backend (if applicable)
cd ../backend
npm run build| Method | Endpoint | Description |
|---|---|---|
GET |
/api/v1/master-resumes |
Fetch all saved Master Resume versions for the authenticated user |
POST |
/api/v1/master-resumes |
Create a new named custom version (auto-cloned from Master Resume) |
PUT |
/api/v1/master-resumes/:id |
Update specific resume version data |
DELETE |
/api/v1/master-resumes/:id |
Delete a custom resume version (Master Resume protected) |
POST |
/api/v1/ai/tailor-rag |
Execute Two-Stage Vector RAG tailoring against a job description |
GET |
/api/v1/portfolio/status/:jobId |
Poll portfolio compilation and Cloudflare deployment progress |
POST |
/api/v1/portfolio/publish |
Queue portfolio source compilation & Cloudflare deployment |
POST |
/api/v1/portfolio/github |
Export standalone portfolio source code repository to GitHub |
GET |
/api/v1/dashboard/summary |
Fetch Overview dashboard statistics and active portfolio status |
GET |
/api/v1/projects |
Fetch all user projects from MongoDB |
POST |
/api/v1/projects |
Create a new user project entry |
This project is licensed under the MIT License.
