Complete setup guide to test the TailorCV platform with UI.
✅ GeminiService (Port 8002)
- Structure CV
- Find missing keywords
- Calculate CV score
✅ StoringService (Port 8001)
- Store CVs in MongoDB
- Retrieve CVs
- List all CVs
✅ API Gateway (Port 8000)
- Upload CV (text or PDF)
- Get keywords analysis
- Get CV score
- List CVs
✅ Frontend (Browser)
- Clean, modern UI
- CV upload (text/PDF)
- CV selection dropdown
- Keyword analysis
- CV scoring
API Gateway:
cd api_gateway
pip install -r requirements.txt
cd ..All Services:
# Gemini and Storing already have dependencies installedCopy .env.example to .env and add your API keys:
cp env.example .envEdit .env and add:
# Required
GEMINI_API_KEY_STRUCTURE=your_structure_key_here
GEMINI_API_KEY_KEYWORDS=your_keywords_key_here
GEMINI_API_KEY_SCORE=your_score_key_here
MONGODB_URI=mongodb+srv://user:pass@cluster.mongodb.net/
# Optional (use defaults)
STORING_SERVICE_URL=http://localhost:8001
GEMINI_SERVICE_URL=http://localhost:8002Terminal 1 - StoringService:
cd storing_service
python -m uvicorn app.main:app --reload --port 8001Terminal 2 - GeminiService:
cd gemini_service
python -m uvicorn app.main:app --reload --port 8002Terminal 3 - API Gateway:
cd api_gateway
python -m uvicorn app.main:app --reload --port 8000Terminal 4 - Frontend (Optional):
cd frontend
python -m http.server 3000Or just open frontend/index.html in your browser!
Open frontend/index.html in your browser and:
- Upload a CV (text or PDF)
- Select CV from dropdown
- Paste job description
- Click "Find Keywords" or "Get Score"
- See results!
- Open frontend
- Click "Paste Text" tab
- Paste Erik's CV (already in database) or new CV
- Click "Upload CV"
- ✅ See success message with CV ID
- Dropdown automatically loads CVs
- Select "erik_cupsa.pdf" or your uploaded CV
- ✅ See selected CV info below dropdown
- Paste this job description:
We need a Backend Engineer with Python, Java, AWS, and Kubernetes experience.
Must have strong communication skills and leadership abilities.
- Click "Find Keywords"
- Wait ~1 minute
- ✅ See keywords you HAVE (green pills)
- ✅ See keywords you're MISSING (yellow pills)
- Same job description
- Click "Get Score"
- Wait ~1 minute
- ✅ See overall score (e.g., 72/100)
- ✅ See category breakdowns
- ✅ See strengths, gaps, recommendations
http://localhost:8000/docs
Available:
GET /api/my_cvs- List all CVsPOST /api/upload_cv_text- Upload CV as textPOST /api/upload_cv_pdf- Upload CV as PDFPOST /api/keywords- Get missing keywordsPOST /api/score- Get CV score
StoringService:
http://localhost:8001/docs
GeminiService:
http://localhost:8002/docs
- ✅ Text input (paste directly)
- ✅ PDF upload (automatic extraction)
- ✅ Loading indicators
- ✅ Success/error messages
- ✅ Dropdown with all CVs
- ✅ Shows filename and CV ID
- ✅ Auto-refresh button
- ✅ Green pills for keywords you HAVE
- ✅ Yellow pills for keywords you're MISSING
- ✅ Categorized (technical vs soft skills)
- ✅ Circular score display (0-100)
- ✅ Rating tier (Excellent, Good, Decent, Fair, Poor)
- ✅ Category breakdowns with progress bars
- ✅ Strengths, gaps, and recommendations
Check:
- Is StoringService running? (
http://localhost:8001/health) - Is API Gateway running? (
http://localhost:8000/health) - MongoDB connection working?
Fix:
# Check StoringService logs
# Ensure MongoDB URI is correct in .envNormal: 1-2 minutes for free tier Gemini API
If longer:
- Check Gemini API key is valid
- Check rate limits (10 req/min per key)
- Check GeminiService logs
Fix: API Gateway already has CORS enabled. If issues persist:
# In api_gateway/app/main.py, allow_origins is set to ["*"]Check:
pip install PyPDF2==3.0.1✅ Upload CVs (text or PDF) ✅ Select CVs from dropdown ✅ Keyword Analysis (with AI) ✅ CV Scoring (with AI) ✅ MongoDB Storage (automatic) ✅ Deduplication (hash-based) ✅ Clean UI (responsive)
⏳ RabbitMQ - Async embedding ⏳ VectorService - Semantic search ⏳ Redis - Caching ⏳ Similar CVs endpoint ⏳ Tailored Bullet Points endpoint
Open frontend/index.html and start analyzing CVs! 🚀
Questions?
- Check logs in each terminal
- Visit Swagger docs:
http://localhost:8000/docs - MongoDB Atlas: Check data in
tailorcv_db.cvscollection