This project provides a set of tools to help with the job application process. It can:
- Scrape job listings: Fetch the latest job postings from various job boards based on your search criteria.
- Generate cover letters: Automatically create tailored cover letters using AI, based on a job description and your resume.
This application is built using the Davia framework, which helps create a complete app directly from your Python backend logic. You can find more information about Davia in our official documentation.
- Searches for jobs on multiple platforms (e.g., Indeed, Glassdoor).
- Filters jobs by title, location, and how recently they were posted.
- Parses PDF resumes to extract relevant information.
- Uses a Gemini AI model to generate professional and customized cover letters.
- Provides API endpoints for easy integration and usage.
.
├── .env_example # Example environment variables file
├── .gitignore
├── .python-version # Python version specification
├── README.md
├── pyproject.toml # Project configuration and dependencies
├── requirements.txt # Detailed dependencies list
├── uv.lock # Lock file for dependencies
└── src/ # Source code directory
└── job_app/ # Main application package
├── __init__.py
├── job_search.py # Main application logic with FastAPI endpoints
├── models.py # Pydantic models (e.g., Job)
└── utils.py # Utility functions (e.g., PDF reader, AI prompt)
- Davia: A framework that creates a complete app (including UI) directly from your Python backend. See Davia Documentation.
- Underlying API built with FastAPI.
- JobSpy: For scraping job listings. (GitHub Repository)
- Pydantic & Pydantic-AI: For data validation and AI model interaction.
- Google Gemini: As the AI model for cover letter generation.
- PyMuPDF: For reading PDF resumes.
- Pandas: For data manipulation.
-
Clone the repository:
git clone https://github.com/davialabs/job-app cd job-app -
Create and activate a virtual environment (recommended):
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Set up environment variables:
- Rename
.env_exampleto.env.mv .env_example .env # On Windows: rename .env_example .env - Open the
.envfile and add your Gemini API Key:You can obtain a Gemini API key from Google AI Studio.GEMINI_API_KEY=YOUR_ACTUAL_GEMINI_API_KEY
- Rename
To start the backend application, run:
python -m src.job_app.job_searchThis will typically start a Uvicorn server, and you should see output indicating the address where the API is running.
Davia is designed to create a visual application around your Python tasks, so you can also interact with the application's functionalities through the Davia interface once it's set up with your Davia account.
The application's core logic is exposed as backend tasks, which Davia can build a user interface around. You can also interact with them directly as API endpoints:
- To search for jobs: Trigger the
display_latest_jobstask/endpoint with your desired job title and location. - To generate a cover letter: Trigger the
generate_cover_lettertask/endpoint, providing the job description text and uploading your resume PDF.
- Start the backend application as described in the "Running the Application" section.
- Interact with the application:
- Via Davia's Visual Interface: If you have connected this project to your Davia account, you can use the visual editor and the generated app to run the tasks.
- Via API Client: Alternatively, use an API client (like Postman, Insomnia, or
curl) to interact with the backend endpoints directly as described above.