ApplyAI is a cloud-native, AI-powered assistant that helps streamline the job search. The MVP focuses on shortening application time, increasing application volume, and improving the quality of each submission by providing AI-driven resume tailoring and conversational career guidance.
- Overview & Goals
- Architecture & Tech Stack
- Core Features
- Data Model (Firestore)
- Getting Started (Local Development)
- Testing Suite
- Roadmap
- License
ApplyAI helps job seekers automate and improve their job applications. The MVP aims to:
- Reduce application time by automating tailored materials.
- Increase application throughput by making it easy to generate high-quality applications.
- Maximize job-fit relevance by emphasizing the most relevant skills in tailored resumes using state-of-the-art LLMs.
This project is a full-stack, decoupled application following a modern serverless-first architecture.
graph TD;
User((User)) -->|Next.js/React| FE[Frontend Client];
FE -->|Auth| FB_Auth[Firebase Auth];
FE -->|JSON/REST| BE[FastAPI Backend];
BE -->|Query/Write| FS[(Cloud Firestore)];
BE -->|Prompt/Text| Gemini[Google Gemini AI];
To ensure VS Code recognizes the formatting immediately, I have placed the remaining content inside a single block. Copy everything from the box below and paste it directly after your Mermaid diagram.
Markdown
- Frontend: React (Next.js 15) + TypeScript + Tailwind CSS
- Modern, type-safe UI with efficient client-side routing and global state management via React Context.
- Auth: Firebase Authentication (Google OAuth)
- Secure identity management that provides unique UIDs to link data across the stack.
- Backend: Python 3.12 + FastAPI
- High-performance, asynchronous framework optimized for I/O-bound tasks like AI model inference.
- AI Model: Google Gemini 2.5 Flash
- Utilized for both conversational "Career Coach" interactions and complex "Resume Tailoring" logic.
- Database: Google Firestore (NoSQL)
- A serverless document database used to persist user-specific chat history and resume generation sessions.
- DevOps: GitHub Actions + Pytest
- Automated CI/CD pipeline ensuring code quality and 100% mocked backend testing.
- Authentication & Security
- Secure Google Sign-In with persistent session management.
- Environment-driven configuration for API keys and Cloud credentials.
- Persistent AI Chat History
POST /chatandGET /chats/{user_id}endpoints.- Career guidance that persists across sessions, allowing users to pick up where they left off.
- Resume Tailoring Engine
POST /resumesandGET /resumes/{user_id}endpoints.- Intelligent rewriting of resumes based on job descriptions, saved to the cloud for future reference.
-
chats (collection)
doc_id(auto-generated)user_id(string)messages(array of{ role: 'user'|'ai', content: string })timestamp(serverTimestamp)
-
tailored_resumes (collection)
doc_id(auto-generated)user_id(string)jobDescription(string)originalResume(string)tailoredResume(string - Markdown)createdAt(timestamp)
- Python 3.12+ / Node.js 18+
- Google Cloud Service Account with Firestore and Gemini API access.
cd server && python3 -m venv .venv && source .venv/bin/activatepip install -r requirements.txt- Create
.envwithGEMINI_API_KEYandGOOGLE_APPLICATION_CREDENTIALS. - Run:
PYTHONPATH=. uvicorn main:app --reload --port 8000
cd client && npm install- Create
.env.localwith your Firebase config andNEXT_PUBLIC_API_URL. - Run:
npm run dev
The backend includes a robust unit testing suite using Pytest and mocker. To maintain speed and zero-cost CI, all external calls to Gemini and Firestore are fully mocked to prevent network dependency and unnecessary API costs.
To run tests:
cd server
pytestThe backend is deployed to Google Cloud Run. The frontend is currently local but configured for deployment to Vercel or Firebase Hosting.
- CORS: The FastAPI app allows requests from
http://localhost:3000. For production, updateserver/main.pywith the deployed frontend domain.
- Phase 1: Core AI Tailoring Logic & Form UI.
- Phase 2: Firebase Authentication & Global Context.
- Phase 3: Backend Persistence (Firestore) & Naming Convention Alignment.
- Phase 4: Mocked Test Infrastructure & History API Endpoints.
- Phase 5: Frontend Hydration (Displaying historical chats/resumes in the UI).
- Phase 6: Production Deployment (Cloud Run & Vercel).
See the LICENSE file for details.