A full-stack web application that automates the extraction of job postings from career websites and generates personalized cold emails using AI agents. Built with React frontend and FastAPI backend powered by CrewAI and LangChain.
- Overview
- Features
- Architecture
- Tech Stack
- Quick Start
- Installation
- Usage
- API Documentation
- Development
- Contributing
- License
This project combines web scraping, AI-powered job analysis, and automated email generation to streamline the process of reaching out to potential clients. The system uses multiple AI agents working together to:
- Extract job postings from career websites
- Analyze job requirements and match them with portfolio data
- Generate personalized cold emails using AI agents
- Provide a modern web interface for easy interaction
- Web Scraping: Extract job postings from any career website URL
- Text Processing: Clean and structure raw web content
- Job Analysis: Identify roles, skills, experience requirements, and work types
- JSON Output: Structured data extraction for further processing
- Multi-Agent System: Uses CrewAI with specialized agents for different tasks
- Portfolio Matching: Automatically matches relevant portfolio projects with job requirements
- Personalized Content: Generates context-aware, professional cold emails
- Skill-Based Recommendations: Suggests relevant team compositions and experience
- React Frontend: Clean, responsive UI built with React 18
- Tailwind CSS: Modern styling with utility-first approach
- Real-time Processing: Live email generation with progress indicators
- History Tracking: Save and review previously generated emails
- FastAPI: High-performance, async API with automatic documentation
- CORS Support: Cross-origin resource sharing enabled
- Error Handling: Comprehensive error handling and logging
- Health Checks: API health monitoring endpoints
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β React β β FastAPI β β CrewAI β
β Frontend βββββΊβ Backend βββββΊβ Agents β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Tailwind CSS β β Web Scraping β β ChromaDB β
β UI Components β β & Cleaning β β Vector Store β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
- Job Analyst Agent: Extracts and structures job postings
- Portfolio Analyst Agent: Matches portfolio data with requirements
- Email Writer Agent: Generates personalized cold emails
- Team Coordinator Agent: Orchestrates the entire workflow
- React 18.2.0 - Modern UI framework
- React Router DOM - Client-side routing
- Tailwind CSS - Utility-first CSS framework
- Axios - HTTP client for API calls
- Lucide React - Icon library
- FastAPI - Modern, fast web framework
- Uvicorn - ASGI server
- Pydantic - Data validation
- CrewAI - Multi-agent orchestration
- LangChain - LLM framework
- ChatGroq - Language model service
- ChromaDB - Vector database
- Pandas - Data manipulation
- Selenium - Web scraping
- Groq API - High-performance LLM inference
- Vector Embeddings - Semantic search and matching
- Prompt Engineering - Structured AI interactions
- Python 3.8+
- Node.js 16+
- Groq API key
git clone https://github.com/yourusername/Cold-Email-Automations.git
cd Cold-Email-Automations
cd backend
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -r requirements.txt
# Create .env file
echo "GROQ_API_KEY=your_groq_api_key_here" > .env
# Start the backend server
python main.py
cd frontend
npm install
npm start
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
- Environment Setup
cd backend
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
- Install Dependencies
pip install -r requirements.txt
- Environment Variables
Create a
.env
file in the backend directory:
GROQ_API_KEY=your_groq_api_key_here
- Run Tests
python test.py
- Install Dependencies
cd frontend
npm install
-
Configuration The frontend is configured to proxy API calls to
http://localhost:8000
(seepackage.json
). -
Start Development Server
npm start
-
Navigate to the Application
- Open http://localhost:3000 in your browser
-
Generate Emails
- Go to the "Generate Emails" page
- Enter a career website URL or paste a job description
- Click "Generate Emails"
- View the generated personalized cold emails
-
Review History
- Check the "History" page to see previously generated emails
curl -X POST "http://localhost:8000/generate-emails" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/careers"
}'
curl -X POST "http://localhost:8000/generate-emails" \
-H "Content-Type: application/json" \
-d '{
"job_description": "We are looking for a Python developer with 3+ years of experience in machine learning and data analysis."
}'
curl "http://localhost:8000/health"
Generate cold emails from job URLs or descriptions.
Request Body:
{
"url": "https://example.com/careers",
"job_description": "Optional job description text"
}
Response:
{
"success": true,
"message": "Successfully generated 2 emails",
"emails": [
{
"job_title": "Senior Python Developer",
"job_description": "We are looking for...",
"required_skills": ["Python", "Django", "Machine Learning"],
"experience_level": "3+ years",
"email_content": "Dear Hiring Manager...",
"portfolio_matches": ["project1", "project2"],
"location": "Remote",
"work_type": "Full-time"
}
],
"total_jobs": 2
}
Health check endpoint.
Response:
{
"status": "healthy",
"message": "API is running"
}
API information endpoint.
Response:
{
"message": "Cold Email Generator API",
"version": "1.0.0",
"usage": "POST /generate-emails with URL or job_description"
}
Cold-Email-Automations/
βββ backend/
β βββ src/
β β βββ agents.py # CrewAI agents implementation
β β βββ portfolio.py # Portfolio management
β β βββ prompt.py # Prompt templates
β β βββ utils.py # Utility functions
β βββ main.py # FastAPI application
β βββ requirements.txt # Python dependencies
β βββ test.py # Test suite
βββ frontend/
β βββ src/
β β βββ components/ # React components
β β βββ pages/ # Page components
β β βββ App.js # Main app component
β βββ package.json # Node.js dependencies
β βββ tailwind.config.js # Tailwind configuration
βββ README.md # This file
# Backend tests
cd backend
python test.py
# Frontend tests
cd frontend
npm test
- Python: Follow PEP 8 guidelines
- JavaScript: Use ESLint configuration
- React: Follow React best practices
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m 'Add some amazing feature'
- Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Write clear commit messages
- Add tests for new features
- Update documentation as needed
- Follow the existing code style
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues:
- Check the Architecture Fixes document for known issues
- Review the API documentation at http://localhost:8000/docs
- Check the logs for detailed error messages
- Open an issue on GitHub with detailed information
- CrewAI for the multi-agent orchestration framework
- LangChain for the LLM integration tools
- Groq for high-performance language model inference
- FastAPI for the modern Python web framework
- React for the frontend framework
Made with β€οΈ for automating cold email outreach