Spaces:
Sleeping
Sleeping
| # Quick Start Guide - JD2GH Mini-ATS | |
| ## Installation (5 minutes) | |
| ```bash | |
| # 1. Navigate to project | |
| cd /Users/amirsh/Documents/Repo/hack | |
| # 2. Activate virtual environment (already created) | |
| source venv/bin/activate | |
| # 3. Verify installation | |
| pip list | grep -E "streamlit|sqlmodel|pypdf|python-docx" | |
| # If any missing, install: | |
| pip install -r requirements.txt | |
| # 4. Check environment variables | |
| cat .env | |
| # Should contain: | |
| # GEMINI_API_KEY=your_key_here | |
| # GITHUB_TOKEN=your_token_here | |
| ``` | |
| ## First Run (2 minutes) | |
| ```bash | |
| # Start the app | |
| ./run_streamlit.sh | |
| # Or manually: | |
| streamlit run streamlit_app.py | |
| # Opens automatically at http://localhost:8501 | |
| ``` | |
| ## Quick Test (10 minutes) | |
| ### 1. Create a Job (3 min) | |
| 1. Click **Job Postings** in sidebar | |
| 2. Go to **New Job** tab | |
| 3. Fill in: | |
| - **Title:** "Senior Python Developer" | |
| - **City:** "Rome" | |
| - **City Synonyms:** "Roma" | |
| - **Min Repos:** 5 | |
| 4. Paste this sample JD: | |
| ``` | |
| We're looking for a Senior Python Developer with FastAPI experience. | |
| Required: | |
| - 5+ years Python | |
| - FastAPI or Django | |
| - PostgreSQL | |
| - Docker | |
| - Git | |
| Nice to have: | |
| - React | |
| - AWS | |
| - GraphQL | |
| ``` | |
| 5. Click **🔍 Extract & Preview** | |
| 6. Review extracted languages/topics | |
| 7. Adjust weight sliders if needed (default: 60/25/10/5) | |
| 8. Click **💾 Save Job Posting** | |
| ### 2. Find Candidates (3 min) | |
| 1. Click **Candidates** in sidebar | |
| 2. Select your job from dropdown | |
| 3. Click **🔍 Run / Refresh Discovery Now** | |
| 4. Wait ~30 seconds for GitHub search | |
| 5. See results table with scores | |
| 6. Try filters: | |
| - Check "Has all must-haves" | |
| - Adjust "Top N" slider to 5 | |
| ### 3. Invite a Candidate (1 min) | |
| 1. Scroll to top candidate | |
| 2. Click **✉️ Invite** button | |
| 3. Copy the generated link: | |
| ``` | |
| http://localhost:8501/?page=Candidate%20Portal&token=... | |
| ``` | |
| 4. Open link in new browser tab (simulates candidate) | |
| ### 4. Candidate Flow (3 min) | |
| 1. In the new tab (Candidate Portal): | |
| 2. Fill profile form: | |
| - Name: "Test Candidate" | |
| - Email: "test@example.com" | |
| - LinkedIn: "linkedin.com/in/test" | |
| - Years: 5 | |
| 3. Click **💾 Save Profile** | |
| 4. Click **▶️ Start Soft Skills Test** | |
| 5. Answer 5 questions (any answers) | |
| 6. Click **✅ Submit Assessment** | |
| 7. Click **▶️ Start Technical Test** | |
| 8. Answer 8 questions | |
| 9. Submit | |
| ### 5. Review Results (2 min) | |
| 1. Go back to original tab | |
| 2. Click **Tests** in sidebar | |
| 3. Select your job | |
| 4. See test results table with: | |
| - Scores (Soft/Tech) | |
| - Duration | |
| - Anti-cheat counters | |
| ### 6. Check Dashboard (1 min) | |
| 1. Click **Dashboard** in sidebar | |
| 2. See metrics: | |
| - 1 Job Post | |
| - X Candidates found | |
| - 1 Applied | |
| - 1 Tested | |
| ## Common Commands | |
| ```bash | |
| # Start app | |
| ./run_streamlit.sh | |
| # Stop app | |
| # Press Ctrl+C in terminal | |
| # Reset database | |
| rm ats.db | |
| # Then restart app | |
| # View database | |
| sqlite3 ats.db | |
| sqlite> .tables | |
| sqlite> SELECT * FROM jobposting; | |
| sqlite> .exit | |
| # Check logs | |
| # Streamlit shows logs in terminal | |
| # Update dependencies | |
| pip install -r requirements.txt --upgrade | |
| ``` | |
| ## Troubleshooting | |
| ### App won't start | |
| ```bash | |
| # Check Python version (need 3.9+) | |
| python --version | |
| # Reinstall dependencies | |
| pip install -r requirements.txt | |
| # Check for port conflicts | |
| lsof -i :8501 | |
| # Kill if needed: kill -9 <PID> | |
| ``` | |
| ### API Errors | |
| **Gemini API Error:** | |
| ```bash | |
| # Check .env file | |
| cat .env | grep GEMINI | |
| # Should show: GEMINI_API_KEY=... | |
| # Test key | |
| python -c "import os; from dotenv import load_dotenv; load_dotenv(); print('Key:', os.getenv('GEMINI_API_KEY')[:10]+'...')" | |
| ``` | |
| **GitHub Rate Limit:** | |
| - Wait 60 minutes | |
| - Or use a different GitHub token | |
| - Discovery is limited to ~30 candidates per run (by design) | |
| ### Database Issues | |
| ```bash | |
| # Check if database exists | |
| ls -lh ats.db | |
| # Reset completely | |
| rm ats.db | |
| streamlit run streamlit_app.py | |
| # Database recreated automatically | |
| ``` | |
| ### File Upload Not Working | |
| ```bash | |
| # Install file parsing libraries | |
| pip install pypdf python-docx | |
| # Verify installation | |
| python -c "import pypdf; import docx; print('OK')" | |
| ``` | |
| ## Tips | |
| 1. **First Job:** Use the sample JD provided in the form | |
| 2. **Test Portal:** Open invite links in incognito/private window | |
| 3. **Anti-Cheat:** Switch tabs during test to see counters increment | |
| 4. **Export:** Download CSV from Candidates page for Excel analysis | |
| 5. **Multiple Jobs:** Create 2-3 jobs to see Dashboard metrics | |
| 6. **Filters:** Use "Has all must-haves" to find perfect matches | |
| ## Next Steps | |
| 1. **Read Full Docs:** See README.md for complete features | |
| 2. **Implementation Details:** See IMPLEMENTATION.md for architecture | |
| 3. **Customize Tests:** Edit `seed_assessment_templates()` in streamlit_app.py | |
| 4. **Add Questions:** Modify the questions list in the function | |
| 5. **Change Weights:** Adjust default weights in job creation form | |
| ## File Locations | |
| ``` | |
| streamlit_app.py # Main app (edit this) | |
| ats.db # Database (auto-created) | |
| .env # API keys (NEVER commit) | |
| requirements.txt # Dependencies | |
| README.md # Full documentation | |
| IMPLEMENTATION.md # Technical details | |
| ``` | |
| ## Support | |
| - Check errors in terminal where Streamlit is running | |
| - Use browser console (F12) to see JavaScript anti-cheat logs | |
| - Database schema: See IMPLEMENTATION.md | |
| - API docs: See README.md | |
| ## Production Notes | |
| This is a **development/demo** setup. For production: | |
| 1. Change database to PostgreSQL | |
| 2. Add authentication (Streamlit auth or OAuth) | |
| 3. Use environment-specific configs | |
| 4. Add email service (SendGrid, AWS SES) | |
| 5. Deploy to Streamlit Cloud, Heroku, or AWS | |
| 6. Add logging and monitoring | |
| 7. Implement proper security (HTTPS, CSP headers) | |
| 8. Rate limiting on API calls | |
| 9. Data backup strategy | |
| 10. GDPR compliance (data retention, deletion) | |