AI-Powered Job Search Platform - Discover, analyze, and translate job opportunities with intelligent insights. JobAio combines web scraping, AI analysis, and multi-language support to provide the most comprehensive job search experience.
- ✨ Features
- 🏛️ Architecture Overview
- 🚀 Quick Start
- 🤝 Contributing
- 🛠️ Tech Stack
- 🐛 Troubleshooting
- 📄 License
- Automated scraping from multiple Finnish job sites (Duunitori, Jobly)
- Intelligent deduplication and categorization
- Job description analysis with details extraction
- Industry classification and salary insights
- Multiple AI providers (Google Gemini, OpenAI, Cerebras, Ollama)
- Hybrid analysis engine combining multiple AI models
- Automatic translation to multiple languages
- Finnish job postings translated worldwide
- Responsive React Router frontend with Tailwind CSS
- Dark/light theme support
- Advanced filtering and search capabilities
- Job bookmarking and personalized recommendations
- Monorepo structure with Bun workspaces
- Microservices architecture (Web + API + Scraper)
- MongoDB for flexible data storage
- RESTful API with comprehensive endpoints
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Web App │ │ API Service │ │ Python Scraper │
│ (React) │◄──►│ (Node.js) │◄──►│ (Scrapy) │
│ │ │ │ │ │
│ • Job Search UI │ │ • REST API │ │ • Job Scraping │
│ • Filtering │ │ • AI Processing │ │ • Deduplication │
│ • Bookmarks │ │ • Translation │ │ • Data Cleaning │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
┌─────────────────┐
│ MongoDB │
│ Database │
└─────────────────┘
Modern Development Environment:
- Node.js 18+ (with npm/bun)
- Python 3.11+
- Git
- MongoDB (local or cloud)
# Clone and setup everything automatically
git clone https://github.com/Lion504/JobAio
cd JobAio
# Install all dependencies (handles Python venv automatically)
bun install
# Copy environment configuration
cp .env.example .env
# Configure your API keys and database settings
# Edit .env with your credentials
# Start job scraping pipeline
bun run jobs
# Start all services (frontend + backend)
bun dev
# Open browser
[JobAio(default)](http://localhost:5173)JobAio is an open source project and we welcome contributions from everyone! All contributions must go through the fork-and-pull-request workflow.
-
Fork the repository
Click the "Fork" button at the top right of this page to create your own copy. -
Clone your fork
git clone https://github.com/YOUR_USERNAME/JobAio.git cd JobAio -
Add upstream remote (to sync with the original repo)
git remote add upstream https://github.com/Lion504/JobAio.git -
Create a feature branch
git checkout -b feature/your-feature -
Set up development environment
Follow the Quick Start section above to install dependencies and configure your environment. -
Make your changes
- Write clean, well-documented code
- Follow the project's code style
-
Commit your changes
Use conventional commits (see Commit Conventions below) -
Push to your fork
git push origin feature/your-feature -
Open a Pull Request
- Go to your fork on GitHub
- Click "Compare & pull request"
- Fill out the PR template with a clear title and description
- Link any related issues
JobAio/
├── apps/ # Applications
│ ├── web/ # React Router frontend
│ ├── api/ # Node.js API service
│ └── scraper-py/ # Python scraping service
├── packages/ # Shared packages
│ ├── ai/ # AI/ML processing
│ ├── db/ # Database models & client
│ ├── search/ # Search algorithms
│ └── shared/ # Common utilities
├── tests/ # Integration tests
└── [config files] # Monorepo configuration
Job Endpoints
# Get jobs
GET /api/jobs
# Get jobs with search and filters
GET /api/jobs?q=searchTerm&filters={"location":"helsinki"}&lang=fi&ai=true
# Get job by ID with optional translation
GET /api/jobs/:id?lang=fi
# Fast autocomplete suggestions
GET /api/jobs/suggestions?q=searchTerm&limit=10&lang=fiNote: All PRs require approval before merging.
- Update documentation for any new features
- Add tests for new functionality
- Ensure all tests pass
- Update CHANGELOG.md if needed
- Submit PR with detailed description
If you're working on a long-term feature, sync your fork regularly:
# Fetch changes from upstream
git fetch upstream
# Switch to your main branch
git checkout main
# Merge upstream changes
git merge upstream/main
# Push updates to your fork
git push origin main
- PRs are typically reviewed within 2-3 days
- Complex features may take longer
- Feel free to ping @Lion504 if your PR hasn't been reviewed after a week
Once your development environment is set up, use these commands during development:
# Start all services (frontend + backend)
bun dev
# Start specific services
bun dev:web # Frontend only
bun dev:api # Backend only
# Run job scraping pipeline
bun run jobs# Run all tests
bun run test
# Run specific test suites
bun run test:ai # AI package tests
bun run test:py # Python scraper tests# Linting
bun lint # Check all packages
bun lint:web # Frontend only
bun lint:api # Backend only
# Auto-fix linting issues
bun lint:fix
# Code formatting
bun format # Format all code
bun format:check # Check formatting only# Clean all node_modules and build artifacts
bun cleanfeat:New featuresfix:Bug fixesdocs:Documentation updatesstyle:Code style changesrefactor:Code refactoringtest:Adding testschore:Maintenance tasks
- React 19 with React Router 7
- TypeScript for type safety
- Tailwind CSS for styling
- React i18next for internationalization
- Radix UI for accessible components
- Node.js 20+ with Express.js
- MongoDB with Mongoose ODM
- Google Gemini (Primary AI provider)
- OpenAI GPT (Alternative AI provider)
- Cerebras (High-performance inference)
- Ollama (Local AI models)
- Python 3.11+ for scraping
- BeautifulSoup4 for HTML parsing
- Requests for HTTP calls
- Bun workspaces for monorepo
- Docker for containerization
- Jest for testing
- ESLint + Prettier for code quality
- GitHub Actions CI/CD
- MongoDB for document storage
Python Virtual Environment Issues:
# Recreate venv if corrupted
cd apps/scraper-py
rm -rf venv
python -m venv venv
venv\Scripts\activate # Windows
pip install -r requirements.txtMongoDB Connection Issues:
- Ensure MongoDB is running locally or connection string is correct
- Check network connectivity for cloud databases
AI API Key Issues:
- Verify API keys are set in
.env - Check API quotas and billing status
- Test with different AI providers
Port Conflicts:
- Default ports: Web (5173), API (5001), MongoDB (27017)
- Change ports in
.envif needed
- Check Instruction.md for detailed guides (currently not visible)
- Open an issue on GitHub
- Join our Discord community (coming soon)
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ for job seekers worldwide
